diff options
-rw-r--r-- | engine/classes/ElggMenuItem.php | 8 | ||||
-rw-r--r-- | engine/classes/ElggPlugin.php | 86 | ||||
-rw-r--r-- | engine/classes/ElggPluginManifest.php | 30 | ||||
-rw-r--r-- | engine/classes/ElggPluginManifestParser18.php | 6 | ||||
-rw-r--r-- | engine/lib/cache.php | 6 | ||||
-rw-r--r-- | engine/lib/database.php | 21 | ||||
-rw-r--r-- | engine/lib/entities.php | 2 | ||||
-rw-r--r-- | engine/lib/metastrings.php | 4 | ||||
-rw-r--r-- | engine/lib/navigation.php | 11 | ||||
-rw-r--r-- | engine/lib/river.php | 4 | ||||
-rw-r--r-- | languages/en.php | 6 | ||||
-rw-r--r-- | mod/blog/manifest.xml | 1 | ||||
-rw-r--r-- | mod/blog/start.php | 15 | ||||
-rw-r--r-- | mod/categories/manifest.xml | 2 | ||||
-rw-r--r-- | mod/categories/start.php | 21 | ||||
-rw-r--r-- | views/default/page/layouts/content/header.php | 2 |
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', )); } } |