summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDavid Rothstein <drothstein@gmail.com>2015-10-12 15:23:37 -0400
committerDavid Rothstein <drothstein@gmail.com>2015-10-12 15:23:37 -0400
commit00206a4d7f87981b3b1212942ce65f371c0cb3ae (patch)
tree5cbe78d538838718714e3ece07deecf21b49db68 /modules
parentd2900abc52256190275b1ed7c3d75e88d14c48c4 (diff)
downloadbrdo-00206a4d7f87981b3b1212942ce65f371c0cb3ae.tar.gz
brdo-00206a4d7f87981b3b1212942ce65f371c0cb3ae.tar.bz2
Issue #1647440 by chrisrockwell, Dave Reid, greggles: Fix PHP notice if invalid format ID requested at filter/tips/format-id
Diffstat (limited to 'modules')
-rw-r--r--modules/filter/filter.module8
-rw-r--r--modules/filter/filter.pages.inc7
-rw-r--r--modules/filter/filter.test21
3 files changed, 32 insertions, 4 deletions
diff --git a/modules/filter/filter.module b/modules/filter/filter.module
index 83876808b..edf7aa98b 100644
--- a/modules/filter/filter.module
+++ b/modules/filter/filter.module
@@ -93,6 +93,14 @@ function filter_menu() {
'type' => MENU_SUGGESTED_ITEM,
'file' => 'filter.pages.inc',
);
+ $items['filter/tips/%filter_format'] = array(
+ 'title' => 'Compose tips',
+ 'page callback' => 'filter_tips_long',
+ 'page arguments' => array(2),
+ 'access callback' => 'filter_access',
+ 'access arguments' => array(2),
+ 'file' => 'filter.pages.inc',
+ );
$items['admin/config/content/formats'] = array(
'title' => 'Text formats',
'description' => 'Configure how content input by users is filtered, including allowed HTML tags. Also allows enabling of module-provided filters.',
diff --git a/modules/filter/filter.pages.inc b/modules/filter/filter.pages.inc
index e602bcef0..0f13da842 100644
--- a/modules/filter/filter.pages.inc
+++ b/modules/filter/filter.pages.inc
@@ -14,10 +14,9 @@
* @see filter_menu()
* @see theme_filter_tips()
*/
-function filter_tips_long() {
- $format_id = arg(2);
- if ($format_id) {
- $output = theme('filter_tips', array('tips' => _filter_tips($format_id, TRUE), 'long' => TRUE));
+function filter_tips_long($format = NULL) {
+ if (!empty($format)) {
+ $output = theme('filter_tips', array('tips' => _filter_tips($format->format, TRUE), 'long' => TRUE));
}
else {
$output = theme('filter_tips', array('tips' => _filter_tips(-1, TRUE), 'long' => TRUE));
diff --git a/modules/filter/filter.test b/modules/filter/filter.test
index 547118515..1565c0c57 100644
--- a/modules/filter/filter.test
+++ b/modules/filter/filter.test
@@ -555,6 +555,27 @@ class FilterFormatAccessTestCase extends DrupalWebTestCase {
$this->assertTrue(isset($options[$this->allowed_format->format]), 'The allowed text format appears as an option when adding a new node.');
$this->assertFalse(isset($options[$this->disallowed_format->format]), 'The disallowed text format does not appear as an option when adding a new node.');
$this->assertTrue(isset($options[filter_fallback_format()]), 'The fallback format appears as an option when adding a new node.');
+
+ // Check regular user access to the filter tips pages.
+ $this->drupalGet('filter/tips/' . $this->allowed_format->format);
+ $this->assertResponse(200);
+ $this->drupalGet('filter/tips/' . $this->disallowed_format->format);
+ $this->assertResponse(403);
+ $this->drupalGet('filter/tips/' . filter_fallback_format());
+ $this->assertResponse(200);
+ $this->drupalGet('filter/tips/invalid-format');
+ $this->assertResponse(404);
+
+ // Check admin user access to the filter tips pages.
+ $this->drupalLogin($this->admin_user);
+ $this->drupalGet('filter/tips/' . $this->allowed_format->format);
+ $this->assertResponse(200);
+ $this->drupalGet('filter/tips/' . $this->disallowed_format->format);
+ $this->assertResponse(200);
+ $this->drupalGet('filter/tips/' . filter_fallback_format());
+ $this->assertResponse(200);
+ $this->drupalGet('filter/tips/invalid-format');
+ $this->assertResponse(404);
}
/**