aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/classes/ElggMenuItem.php8
-rw-r--r--engine/classes/ElggPlugin.php86
-rw-r--r--engine/classes/ElggPluginManifest.php30
-rw-r--r--engine/classes/ElggPluginManifestParser18.php6
-rw-r--r--engine/lib/cache.php6
-rw-r--r--engine/lib/database.php21
-rw-r--r--engine/lib/entities.php2
-rw-r--r--engine/lib/metastrings.php4
-rw-r--r--engine/lib/navigation.php11
-rw-r--r--engine/lib/river.php4
-rw-r--r--languages/en.php6
-rw-r--r--mod/blog/manifest.xml1
-rw-r--r--mod/blog/start.php15
-rw-r--r--mod/categories/manifest.xml2
-rw-r--r--mod/categories/start.php21
-rw-r--r--views/default/page/layouts/content/header.php2
16 files changed, 84 insertions, 141 deletions
diff --git a/engine/classes/ElggMenuItem.php b/engine/classes/ElggMenuItem.php
index bf6cf2edc..61dbf539e 100644
--- a/engine/classes/ElggMenuItem.php
+++ b/engine/classes/ElggMenuItem.php
@@ -123,9 +123,9 @@ class ElggMenuItem {
unset($options['context']);
}
- if (isset($options['class'])) {
- $item->setLinkClass($options['class']);
- unset($options['class']);
+ if (isset($options['link_class'])) {
+ $item->setLinkClass($options['link_class']);
+ unset($options['link_class']);
}
if (isset($options['item_class'])) {
@@ -459,7 +459,7 @@ class ElggMenuItem {
if ($this->href) {
$vars['href'] = $this->href;
}
-
+
if ($this->linkClass) {
$vars['class'] = $this->getLinkClass();
}
diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php
index 55be2b887..34e8e6732 100644
--- a/engine/classes/ElggPlugin.php
+++ b/engine/classes/ElggPlugin.php
@@ -639,24 +639,14 @@ class ElggPlugin extends ElggObject {
// if there are any on_enable functions, start the plugin now and run them
// Note: this will not run re-run the init hooks!
- $functions = $this->manifest->getOnActivate();
- if ($return && $functions) {
- $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES
- | ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
-
- $this->start($flags);
- foreach ($functions as $function) {
- if (!is_callable($function)) {
- $return = false;
- } else {
- $result = call_user_func($function);
- // allow null to mean "I don't care" like other subsystems
- $return = ($result === false) ? false: true;
- }
-
- if ($return === false) {
- break;
- }
+ if ($return) {
+ if ($this->canIncludeFile('activate.php')) {
+ $flags = ELGG_PLUGIN_INCLUDE_START | ELGG_PLUGIN_REGISTER_CLASSES
+ | ELGG_PLUGIN_REGISTER_LANGUAGES | ELGG_PLUGIN_REGISTER_VIEWS;
+
+ $this->start($flags);
+
+ $return = $this->includeFile('activate.php');
}
}
@@ -690,27 +680,10 @@ class ElggPlugin extends ElggObject {
$return = elgg_trigger_event('deactivate', 'plugin', $params);
- // run any deactivate functions
- // check for the manifest in case we haven't fully loaded the plugin.
- if ($this->manifest) {
- $functions = $this->manifest->getOnDeactivate();
- } else {
- $functions = array();
- }
-
- if ($return && $functions) {
- foreach ($functions as $function) {
- if (!is_callable($function)) {
- $return = false;
- } else {
- $result = call_user_func($function);
- // allow null to mean "I don't care" like other subsystems
- $return = ($result === false) ? false : true;
- }
-
- if ($return === false) {
- break;
- }
+ // run any deactivate code
+ if ($return) {
+ if ($this->canIncludeFile('deactivate.php')) {
+ $return = $this->includeFile('deactivate.php');
}
}
@@ -736,7 +709,7 @@ class ElggPlugin extends ElggObject {
// include start file
if ($flags & ELGG_PLUGIN_INCLUDE_START) {
- $this->includeStart();
+ $this->includeFile('start.php');
}
// include views
@@ -761,24 +734,39 @@ class ElggPlugin extends ElggObject {
// start helpers
/**
- * Includes the plugin's start file
+ * Includes one of the plugins files
+ *
+ * @param string $filename The name of the file
*
* @throws PluginException
- * @return true
+ * @return mixed The return value of the included file (or 1 if there is none)
*/
- protected function includeStart() {
+ protected function includeFile($filename) {
// This needs to be here to be backwards compatible for 1.0-1.7.
// They expect the global config object to be available in start.php.
- global $CONFIG;
+ if ($filename == 'start.php') {
+ global $CONFIG;
+ }
+
+ $filepath = "$this->path/$filename";
- $start = "$this->path/start.php";
- if (!include($start)) {
- $msg = elgg_echo('ElggPlugin:Exception:CannotIncludeStart',
- array($this->getID(), $this->guid, $this->path));
+ if (!$this->canIncludeFile($filename)) {
+ $msg = elgg_echo('ElggPlugin:Exception:CannotIncludeFile',
+ array($filename, $this->getID(), $this->guid, $this->path));
throw new PluginException($msg);
}
- return true;
+ return include $filepath;
+ }
+
+ /**
+ * Checks whether a plugin file with the given name exists
+ *
+ * @param string $filename The name of the file
+ * @return bool
+ */
+ protected function canIncludeFile($filename) {
+ return file_exists($this->path.'/'.$filename);
}
/**
diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php
index a0ec478a9..0f3b1d7a8 100644
--- a/engine/classes/ElggPluginManifest.php
+++ b/engine/classes/ElggPluginManifest.php
@@ -577,36 +577,6 @@ class ElggPluginManifest {
}
/**
- * Returns the functions to run upon activation
- *
- * @return array
- */
- public function getOnActivate() {
- $functions = $this->parser->getAttribute('on_activate');
-
- if (!$functions) {
- $functions = array();
- }
-
- return $functions;
- }
-
- /**
- * Returns the functions to run upon deactivation
- *
- * @return array
- */
- public function getOnDeactivate() {
- $functions = $this->parser->getAttribute('on_deactivate');
-
- if (!$functions) {
- $functions = array();
- }
-
- return $functions;
- }
-
- /**
* Returns the admin interface to use.
*
* @return string simple or advanced
diff --git a/engine/classes/ElggPluginManifestParser18.php b/engine/classes/ElggPluginManifestParser18.php
index 38734f6b4..db8b3dc6a 100644
--- a/engine/classes/ElggPluginManifestParser18.php
+++ b/engine/classes/ElggPluginManifestParser18.php
@@ -15,8 +15,8 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
protected $validAttributes = array(
'name', 'author', 'version', 'blurb', 'description',
'website', 'copyright', 'license', 'requires', 'suggests',
- 'screenshot', 'category', 'conflicts', 'provides', 'on_activate',
- 'on_deactivate', 'admin_interface', 'activate_on_install'
+ 'screenshot', 'category', 'conflicts', 'provides',
+ 'admin_interface', 'activate_on_install'
);
/**
@@ -52,8 +52,6 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser {
break;
// arrays
- case 'on_activate':
- case 'on_deactivate':
case 'category':
$parsed[$element->name][] = $element->content;
break;
diff --git a/engine/lib/cache.php b/engine/lib/cache.php
index 8529ae7fa..11c95e78a 100644
--- a/engine/lib/cache.php
+++ b/engine/lib/cache.php
@@ -163,13 +163,15 @@ function elgg_register_simplecache_view($viewname) {
function elgg_get_simplecache_url($type, $view) {
global $CONFIG;
$lastcache = (int)$CONFIG->lastcache;
-
+ $viewtype = elgg_get_viewtype();
if (elgg_is_simplecache_enabled()) {
- $viewtype = elgg_get_viewtype();
$url = elgg_get_site_url() . "cache/$type/$viewtype/$view.$lastcache.$type";
} else {
$url = elgg_get_site_url() . "$type/$view.$lastcache.$type";
+ $elements = array("view" => $viewtype);
+ $url = elgg_http_add_url_query_elements($url, $elements);
}
+
return $url;
}
diff --git a/engine/lib/database.php b/engine/lib/database.php
index a9c4017a0..6b1b494b9 100644
--- a/engine/lib/database.php
+++ b/engine/lib/database.php
@@ -680,22 +680,31 @@ function sanitize_string($string) {
* Sanitises an integer for database use.
*
* @param int $int Integer
- *
+ * @param bool[optional] $signed Whether negative values should be allowed (true)
* @return int Sanitised integer
*/
-function sanitise_int($int) {
+function sanitise_int($int, $signed = true) {
+ $int = (int) $int;
+
+ if ($signed === false) {
+ if ($int < 0) {
+ $int = 0;
+ }
+ }
+
return (int) $int;
}
/**
- * Wrapper function for alternate English spelling
+ * Sanitises an integer for database use.
+ * Wrapper function for alternate English spelling (@see sanitise_int)
*
* @param int $int Integer
- *
+ * @param bool[optional] $signed Whether negative values should be allowed (true)
* @return int Sanitised integer
*/
-function sanitize_int($int) {
- return (int) $int;
+function sanitize_int($int, $signed = true) {
+ return sanitise_int($int, $signed);
}
/**
diff --git a/engine/lib/entities.php b/engine/lib/entities.php
index 685c68a5b..cb197b569 100644
--- a/engine/lib/entities.php
+++ b/engine/lib/entities.php
@@ -922,7 +922,7 @@ function elgg_get_entities(array $options = array()) {
if ($options['limit']) {
$limit = sanitise_int($options['limit']);
- $offset = sanitise_int($options['offset']);
+ $offset = sanitise_int($options['offset'], false);
$query .= " LIMIT $offset, $limit";
}
diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php
index 796655569..983716925 100644
--- a/engine/lib/metastrings.php
+++ b/engine/lib/metastrings.php
@@ -322,7 +322,7 @@ function elgg_get_metastring_based_objects($options) {
'metastring_owner_guid', 'metastring_id',
'select', 'where', 'join'
);
-
+
$options = elgg_normalise_plural_options_array($options, $singulars);
if (!$options) {
@@ -463,7 +463,7 @@ function elgg_get_metastring_based_objects($options) {
if ($options['limit']) {
$limit = sanitise_int($options['limit']);
- $offset = sanitise_int($options['offset']);
+ $offset = sanitise_int($options['offset'], false);
$query .= " LIMIT $offset, $limit";
}
diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php
index 953bbe59a..b51c63b49 100644
--- a/engine/lib/navigation.php
+++ b/engine/lib/navigation.php
@@ -61,12 +61,19 @@
* @param mixed $menu_item A ElggMenuItem object or an array of options in format:
* name => STR Menu item identifier (required)
* text => STR Menu item display text (required)
- * href => STR Menu item URL (required) (false for non-links)
+ * href => STR Menu item URL (required) (false for non-links.
+ * @warning If you disable the href the <a> tag will
+ * not appear, so the link_class will not apply. If you
+ * put <a> tags in manually through the 'text' option
+ * the default CSS selector .elgg-menu-$menu > li > a
+ * may affect formatting. Wrap in a <span> if it does.)
* contexts => ARR Page context strings
* section => STR Menu section identifier
* title => STR Menu item tooltip
* selected => BOOL Is this menu item currently selected
* parent_name => STR Identifier of the parent menu item
+ * link_class => STR A class or classes for the <a> tag
+ * item_class => STR A class or classes for the <li> tag
*
* Custom options can be added as key value pairs.
*
@@ -269,7 +276,7 @@ function elgg_river_menu_setup($hook, $type, $return, $params) {
'href' => "#comments-add-$object->guid",
'text' => elgg_view_icon('speech-bubble'),
'title' => elgg_echo('comment:this'),
- 'class' => "elgg-toggler",
+ 'link_class' => "elgg-toggler",
'priority' => 50,
);
$return[] = ElggMenuItem::factory($options);
diff --git a/engine/lib/river.php b/engine/lib/river.php
index 55d1c783a..80f285e50 100644
--- a/engine/lib/river.php
+++ b/engine/lib/river.php
@@ -302,7 +302,7 @@ function elgg_get_river(array $options = array()) {
if ($options['limit']) {
$limit = sanitise_int($options['limit']);
- $offset = sanitise_int($options['offset']);
+ $offset = sanitise_int($options['offset'], false);
$query .= " LIMIT $offset, $limit";
}
@@ -375,7 +375,7 @@ function elgg_row_to_elgg_river_item($row) {
function elgg_river_get_access_sql() {
// rewrite default access where clause to work with river table
return str_replace("and enabled='yes'", '',
- str_replace('owner_guid', 'rv.subject_guid',
+ str_replace('owner_guid', 'rv.subject_guid',
str_replace('access_id', 'rv.access_id', get_access_sql_suffix())));
}
diff --git a/languages/en.php b/languages/en.php
index 86fa9c7e7..6e24edb2d 100644
--- a/languages/en.php
+++ b/languages/en.php
@@ -78,7 +78,7 @@ $english = array(
'ElggPluginPackage:InvalidPlugin:InvalidProvides' => 'Invalid provides type "%s"',
'ElggPluginPackage:InvalidPlugin:CircularDep' => 'Invalid %s dependency "%s" in plugin %s. Plugins cannot conflict with or require something they provide!',
- 'ElggPlugin:Exception:CannotIncludeStart' => 'Cannot include start.php for plugin %s (guid: %s) at %s. Check permissions!',
+ 'ElggPlugin:Exception:CannotIncludeFile' => 'Cannot include %s for plugin %s (guid: %s) at %s. Check permissions!',
'ElggPlugin:Exception:CannotRegisterViews' => 'Cannot open views dir for plugin %s (guid: %s) at %s. Check permissions!',
'ElggPlugin:Exception:CannotRegisterLanguages' => 'Cannot register languages for plugin %s (guid: %s) at %s. Check permissions!',
'ElggPlugin:Exception:CannotRegisterClasses' => 'Cannot register classes for plugin %s (guid: %s) at %s. Check permissions!',
@@ -579,7 +579,7 @@ $english = array(
'This page is the Admin Dashboard and provides a quick overview of your system. '
. "You can <a class=\"elgg-toggler\" href=\"#widgets-add-panel\">add</a>"
. " and rearrange widgets to show the information you care about. The menu to the right is oranganized into"
-. " three areas:
+. " three areas:
<ul>
<li>Administer - Everyday tasks like monitoring reported content, checking online users, and viewing logs.</li>
<li>Configure - Configuration settings likes the site name, the active plugins, and plugin settings.</li>
@@ -597,7 +597,7 @@ $english = array(
. " <a href=\"http://docs.elgg.org/wiki/Category:Administration_FAQ\">FAQs</a>, <a href=\"http://docs.elgg.org/wiki/Administration_Manual\">"
. "manuals</a>, <a href=\"http://blog.elgg.org/\">Elgg news</a>, and <a href=\"http://community.elgg.org/pg/groups/world/\">support forums</a>"
. " at the <a href=\"http://community.elgg.org/\">Elgg Community</a>.",
-
+
'admin:widget:admin_welcome:outro' => 'Thank you for using Elgg!',
'admin:footer:faq' => 'Administration FAQ',
diff --git a/mod/blog/manifest.xml b/mod/blog/manifest.xml
index 4d853a9aa..f0ec96e8b 100644
--- a/mod/blog/manifest.xml
+++ b/mod/blog/manifest.xml
@@ -16,5 +16,4 @@
</requires>
<admin_interface>simple</admin_interface>
<activate_on_install>true</activate_on_install>
- <on_activate>blog_on_activate</on_activate>
</plugin_manifest>
diff --git a/mod/blog/start.php b/mod/blog/start.php
index 7d42e80b9..33c6ee20d 100644
--- a/mod/blog/start.php
+++ b/mod/blog/start.php
@@ -18,7 +18,7 @@ elgg_register_event_handler('init', 'system', 'blog_init');
* Init blog plugin.
*/
function blog_init() {
-
+
elgg_register_library('elgg:blog', elgg_get_plugins_path() . 'blog/lib/blog.php');
// add a site navigation item
@@ -101,14 +101,14 @@ function blog_page_handler($page) {
// @todo remove the forwarder in 1.9
// forward to correct URL for bookmarks pre-1.7.5
blog_url_forwarder($page);
-
+
// push all blogs breadcrumb
elgg_push_breadcrumb(elgg_echo('blog:blogs'), "blog/all");
if (!isset($page[0])) {
$page[0] = 'all';
}
-
+
$page_type = $page[0];
switch ($page_type) {
case 'owner':
@@ -143,7 +143,7 @@ function blog_page_handler($page) {
$params = blog_get_page_content_list();
break;
}
-
+
$params['sidebar'] .= elgg_view('blog/sidebar', array('page' => $page_type));
$body = elgg_view_layout('content', $params);
@@ -225,13 +225,6 @@ function blog_ecml_views_hook($hook, $entity_type, $return_value, $params) {
}
/**
- * Runs when blog plugin is activated. See manifest file.
- */
-function blog_on_activate() {
- add_subtype('object', 'blog', 'ElggBlog');
-}
-
-/**
* When upgrading, check if the ElggBlog class has been registered as this
* was added in Elgg 1.8
*/
diff --git a/mod/categories/manifest.xml b/mod/categories/manifest.xml
index f02d7a8cb..43df13d02 100644
--- a/mod/categories/manifest.xml
+++ b/mod/categories/manifest.xml
@@ -14,6 +14,4 @@
<version>2010030101</version>
</requires>
<admin_interface>advanced</admin_interface>
- <on_activate>categories_on_activate</on_activate>
- <on_deactivate>categories_on_deactivate</on_deactivate>
</plugin_manifest>
diff --git a/mod/categories/start.php b/mod/categories/start.php
index 190996d9b..ff5b01efc 100644
--- a/mod/categories/start.php
+++ b/mod/categories/start.php
@@ -54,24 +54,3 @@ function categories_save($event, $object_type, $object) {
}
return TRUE;
}
-
-/**
- * Add a reminder to set default categories.
- */
-function categories_on_activate() {
- $site = elgg_get_site_entity();
-
- if (!$site->categories) {
- $url = elgg_normalize_url('admin/plugin_settings/categories');
- $message = elgg_echo('categories:on_enable_reminder', array($url));
- elgg_add_admin_notice('categories_admin_notice_no_categories', $message);
- }
- return TRUE;
-}
-
-/**
- * Clean up admin notices on disable.
- */
-function categories_on_deactivate() {
- elgg_delete_admin_notice('categories_admin_notice_no_categories');
-}
diff --git a/views/default/page/layouts/content/header.php b/views/default/page/layouts/content/header.php
index 4c63009f4..403da8a0a 100644
--- a/views/default/page/layouts/content/header.php
+++ b/views/default/page/layouts/content/header.php
@@ -37,7 +37,7 @@ if ($context) {
'name' => 'add',
'href' => elgg_extract('new_link', $vars, "$context/add/$guid"),
'text' => elgg_echo("$context:add"),
- 'class' => 'elgg-button elgg-button-action',
+ 'link_class' => 'elgg-button elgg-button-action',
));
}
}