aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/admin/plugins/activate.php2
-rw-r--r--actions/admin/plugins/activate_all.php4
-rw-r--r--actions/admin/plugins/deactivate.php4
-rw-r--r--actions/admin/plugins/deactivate_all.php4
-rw-r--r--actions/admin/plugins/set_priority.php4
-rw-r--r--actions/admin/plugins/simple_update_states.php2
-rw-r--r--actions/plugins/settings/save.php2
-rw-r--r--actions/plugins/usersettings/save.php2
-rw-r--r--engine/classes/ElggPlugin.php74
-rw-r--r--engine/classes/ElggPluginPackage.php4
-rw-r--r--engine/lib/admin.php4
-rw-r--r--engine/lib/deprecated-1.8.php2
-rw-r--r--engine/lib/plugins.php39
-rw-r--r--install/ElggInstaller.php4
-rw-r--r--views/default/admin/plugin_settings.php2
-rw-r--r--views/default/admin/plugins/advanced.php2
-rw-r--r--views/default/core/settings/tools.php2
-rw-r--r--views/default/forms/admin/plugins/simple_update_states.php4
-rw-r--r--views/default/object/plugin/advanced.php24
-rw-r--r--views/default/object/plugin/elements/dependencies.php2
-rw-r--r--views/default/object/plugin/simple.php10
21 files changed, 100 insertions, 97 deletions
diff --git a/actions/admin/plugins/activate.php b/actions/admin/plugins/activate.php
index 0d930b27f..e04ee6298 100644
--- a/actions/admin/plugins/activate.php
+++ b/actions/admin/plugins/activate.php
@@ -29,7 +29,7 @@ foreach ($plugin_guids as $guid) {
if ($plugin->activate()) {
$activated_guids[] = $guid;
} else {
- register_error(elgg_echo('admin:plugins:activate:no', array($plugin->manifest->getName())));
+ register_error(elgg_echo('admin:plugins:activate:no', array($plugin->getManifest()->getName())));
}
}
diff --git a/actions/admin/plugins/activate_all.php b/actions/admin/plugins/activate_all.php
index 25802ce2e..0f0352877 100644
--- a/actions/admin/plugins/activate_all.php
+++ b/actions/admin/plugins/activate_all.php
@@ -13,9 +13,9 @@ $plugins = elgg_get_plugins('inactive');
foreach ($plugins as $plugin) {
if ($plugin->activate()) {
- //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->manifest->getName())));
+ //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->getManifest()->getName())));
} else {
- register_error(elgg_echo('admin:plugins:activate:no', array($plugin->manifest->getName())));
+ register_error(elgg_echo('admin:plugins:activate:no', array($plugin->getManifest()->getName())));
}
}
diff --git a/actions/admin/plugins/deactivate.php b/actions/admin/plugins/deactivate.php
index 74c78e0fc..9ec620e13 100644
--- a/actions/admin/plugins/deactivate.php
+++ b/actions/admin/plugins/deactivate.php
@@ -26,9 +26,9 @@ foreach ($plugin_guids as $guid) {
}
if ($plugin->deactivate()) {
- //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->manifest->getName())));
+ //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->getManifest()->getName())));
} else {
- register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->manifest->getName())));
+ register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->getManifest()->getName())));
}
}
diff --git a/actions/admin/plugins/deactivate_all.php b/actions/admin/plugins/deactivate_all.php
index f1bea0a2c..446cad8c0 100644
--- a/actions/admin/plugins/deactivate_all.php
+++ b/actions/admin/plugins/deactivate_all.php
@@ -13,9 +13,9 @@ $plugins = elgg_get_plugins('active');
foreach ($plugins as $plugin) {
if ($plugin->deactivate()) {
- //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->manifest->getName())));
+ //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->getManifest()->getName())));
} else {
- register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->manifest->getName())));
+ register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->getManifest()->getName())));
}
}
diff --git a/actions/admin/plugins/set_priority.php b/actions/admin/plugins/set_priority.php
index fd7857e49..702aae91b 100644
--- a/actions/admin/plugins/set_priority.php
+++ b/actions/admin/plugins/set_priority.php
@@ -25,9 +25,9 @@ if (!($plugin instanceof ElggPlugin)) {
}
if ($plugin->setPriority($priority)) {
- //system_message(elgg_echo('admin:plugins:set_priority:yes', array($plugin->manifest->getName())));
+ //system_message(elgg_echo('admin:plugins:set_priority:yes', array($plugin->getManifest()->getName())));
} else {
- register_error(elgg_echo('admin:plugins:set_priority:no', array($plugin->manifest->getName())));
+ register_error(elgg_echo('admin:plugins:set_priority:no', array($plugin->getManifest()->getName())));
}
// don't regenerate the simplecache because the plugin won't be
diff --git a/actions/admin/plugins/simple_update_states.php b/actions/admin/plugins/simple_update_states.php
index 662a5c3dd..7601013a7 100644
--- a/actions/admin/plugins/simple_update_states.php
+++ b/actions/admin/plugins/simple_update_states.php
@@ -22,7 +22,7 @@ $success = TRUE;
foreach ($installed_plugins as $plugin) {
// this is only for simple plugins.
- if ($plugin->manifest->getAdminInterface() != 'simple') {
+ if ($plugin->getManifest()->getAdminInterface() != 'simple') {
continue;
}
diff --git a/actions/plugins/settings/save.php b/actions/plugins/settings/save.php
index f3c865b9f..3b5694039 100644
--- a/actions/plugins/settings/save.php
+++ b/actions/plugins/settings/save.php
@@ -21,7 +21,7 @@ if (!($plugin instanceof ElggPlugin)) {
forward(REFERER);
}
-$plugin_name = $plugin->manifest->getName();
+$plugin_name = $plugin->getManifest()->getName();
$result = false;
diff --git a/actions/plugins/usersettings/save.php b/actions/plugins/usersettings/save.php
index 9c1657388..c6214f68d 100644
--- a/actions/plugins/usersettings/save.php
+++ b/actions/plugins/usersettings/save.php
@@ -29,7 +29,7 @@ if (!($user instanceof ElggUser)) {
forward(REFERER);
}
-$plugin_name = $plugin->manifest->getName();
+$plugin_name = $plugin->getManifest()->getName();
// make sure we're admin or the user
if (!$user->canEdit()) {
diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php
index 20a8673de..eb911455a 100644
--- a/engine/classes/ElggPlugin.php
+++ b/engine/classes/ElggPlugin.php
@@ -9,8 +9,8 @@
* @subpackage Plugins.Settings
*/
class ElggPlugin extends ElggObject {
- public $package;
- public $manifest;
+ private $package;
+ private $manifest;
private $path;
private $pluginID;
@@ -76,18 +76,6 @@ class ElggPlugin extends ElggObject {
// load the rest of the plugin
parent::__construct($existing_guid);
}
-
- // We have to let the entity load so we can manipulate it with the API.
- // If the path is wrong or would cause an exception, catch it,
- // disable the plugin, and emit an error.
- try {
- $this->package = new ElggPluginPackage($this->path, false);
- $this->manifest = $this->package->getManifest();
- } catch (Exception $e) {
- // we always have to allow the entity to load.
- elgg_log("Failed to load $this->guid as a plugin. " . $e->getMessage(), 'WARNING');
- $this->errorMsg = $e->getmessage();
- }
}
/**
@@ -152,7 +140,7 @@ class ElggPlugin extends ElggObject {
* @return array
*/
public function getAvailableTextFiles() {
- $filenames = $this->package->getTextFilenames();
+ $filenames = $this->getPackage()->getTextFilenames();
$files = array();
foreach ($filenames as $filename) {
@@ -562,13 +550,13 @@ class ElggPlugin extends ElggObject {
return false;
}
- if (!$this->package instanceof ElggPluginPackage) {
+ if (!$this->getPackage() instanceof ElggPluginPackage) {
$this->errorMsg = elgg_echo('ElggPlugin:NoPluginPackagePackage', array($this->getID(), $this->guid));
return false;
}
- if (!$this->package->isValid()) {
- $this->errorMsg = $this->package->getError();
+ if (!$this->getPackage()->isValid()) {
+ $this->errorMsg = $this->getPackage()->getError();
return false;
}
@@ -607,8 +595,8 @@ class ElggPlugin extends ElggObject {
* @return bool
*/
public function canActivate($site_guid = null) {
- if ($this->package) {
- return $this->package->isValid() && $this->package->checkDependencies();
+ if ($this->getPackage()) {
+ return $this->getPackage()->isValid() && $this->getPackage()->checkDependencies();
}
return false;
@@ -708,9 +696,9 @@ class ElggPlugin extends ElggObject {
* @throws PluginException
*/
public function start($flags) {
- if (!$this->canActivate()) {
- return false;
- }
+// if (!$this->canActivate()) {
+// return false;
+// }
// include start file
if ($flags & ELGG_PLUGIN_INCLUDE_START) {
@@ -958,4 +946,44 @@ class ElggPlugin extends ElggObject {
public function getError() {
return $this->errorMsg;
}
+
+ /**
+ * Returns this plugin's ElggPluginManifest object
+ *
+ * @return ElggPluginManifest
+ */
+ public function getManifest() {
+ if ($this->manifest instanceof ElggPluginManifest) {
+ return $this->manifest;
+ }
+
+ try {
+ $this->manifest = $this->getPackage()->getManifest();
+ } catch (Exception $e) {
+ elgg_log("Failed to load manifest for plugin $this->guid. " . $e->getMessage(), 'WARNING');
+ $this->errorMsg = $e->getmessage();
+ }
+
+ return $this->manifest;
+ }
+
+ /**
+ * Returns this plugin's ElggPluginPackage object
+ *
+ * @return ElggPluginPackage
+ */
+ public function getPackage() {
+ if ($this->package instanceof ElggPluginPackage) {
+ return $this->package;
+ }
+
+ try {
+ $this->package = new ElggPluginPackage($this->path, false);
+ } catch (Exception $e) {
+ elgg_log("Failed to load package for $this->guid. " . $e->getMessage(), 'WARNING');
+ $this->errorMsg = $e->getmessage();
+ }
+
+ return $this->package;
+ }
}
diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php
index 4daab381e..bad99362f 100644
--- a/engine/classes/ElggPluginPackage.php
+++ b/engine/classes/ElggPluginPackage.php
@@ -334,13 +334,13 @@ class ElggPluginPackage {
// first, check if any active plugin conflicts with us.
foreach ($enabled_plugins as $plugin) {
- $temp_conflicts = $plugin->manifest->getConflicts();
+ $temp_conflicts = $plugin->getManifest()->getConflicts();
foreach ($temp_conflicts as $conflict) {
if ($conflict['type'] == 'plugin' && $conflict['name'] == $this_id) {
$result = $this->checkDepPlugin($conflict, $enabled_plugins, false);
// rewrite the conflict to show the originating plugin
- $conflict['name'] = $plugin->manifest->getName();
+ $conflict['name'] = $plugin->getManifest()->getName();
if (!$full_report && !$result['status']) {
return $result['status'];
diff --git a/engine/lib/admin.php b/engine/lib/admin.php
index 06418c44f..61f64c8b3 100644
--- a/engine/lib/admin.php
+++ b/engine/lib/admin.php
@@ -329,7 +329,7 @@ function elgg_admin_add_plugin_settings_menu() {
elgg_register_menu_item('page', array(
'name' => $plugin_id,
'href' => "admin/plugin_settings/$plugin_id",
- 'text' => $plugin->manifest->getName(),
+ 'text' => $plugin->getManifest()->getName(),
'parent_name' => 'settings',
'context' => 'admin',
'section' => 'configure',
@@ -541,7 +541,7 @@ function admin_markdown_page_handler($pages) {
return true;
}
- $title = $plugin->manifest->getName() . ": $filename";
+ $title = $plugin->getManifest()->getName() . ": $filename";
$text = Markdown($file_contents);
$body = elgg_view_layout('admin', array(
diff --git a/engine/lib/deprecated-1.8.php b/engine/lib/deprecated-1.8.php
index bb52881cd..595b12aea 100644
--- a/engine/lib/deprecated-1.8.php
+++ b/engine/lib/deprecated-1.8.php
@@ -1667,7 +1667,7 @@ function get_installed_plugins($status = 'all') {
if ($include) {
$installed_plugins[$plugin->getID()] = array(
'active' => $plugin->isActive(),
- 'manifest' => $plugin->manifest->getManifest()
+ 'manifest' => $plugin->getManifest()->getManifest()
);
}
}
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php
index 0947b7a8e..5aed3065a 100644
--- a/engine/lib/plugins.php
+++ b/engine/lib/plugins.php
@@ -266,9 +266,9 @@ function elgg_is_active_plugin($plugin_id, $site_guid = null) {
/**
* Loads all active plugins in the order specified in the tool admin panel.
*
- * @note This is called on every page load and includes additional checking that plugins
- * are fit to be loaded. If a plugin is active and problematic, it will be disabled
- * and a visible error emitted.
+ * @note This is called on every page load. If a plugin is active and problematic, it
+ * will be disabled and a visible error emitted. This does not check the deps system because
+ * that was too slow.
*
* @return bool
*/
@@ -307,17 +307,6 @@ function elgg_load_plugins() {
$plugins = elgg_get_plugins('active');
if ($plugins) {
foreach ($plugins as $plugin) {
- // check if plugin can be started and try to start it.
- // if anything is bad, disable it and emit a message.
- if (!$plugin->isValid()) {
- $plugin->deactivate();
- $msg = elgg_echo('PluginException:MisconfiguredPlugin', array($plugin->getID(), $plugin->guid));
- register_error($msg);
- $return = false;
-
- continue;
- }
-
try {
$plugin->start($start_flags);
} catch (Exception $e) {
@@ -345,11 +334,10 @@ function elgg_load_plugins() {
* Returns an ordered list of plugins
*
* @param string $status The status of the plugins. active, inactive, or all.
- * @param bool $include_bad Include physically deleted and invalid plugins?
* @param mixed $site_guid Optional site guid
* @return array
*/
-function elgg_get_plugins($status = 'active', $include_bad = false, $site_guid = NULL) {
+function elgg_get_plugins($status = 'active', $site_guid = null) {
$db_prefix = get_config('dbprefix');
$priority = elgg_namespace_plugin_private_setting('internal', 'priority');
@@ -388,22 +376,9 @@ function elgg_get_plugins($status = 'active', $include_bad = false, $site_guid =
break;
}
- if ($include_bad) {
- $old_ia = elgg_set_ignore_access(true);
- }
-
+ $old_ia = elgg_set_ignore_access(true);
$plugins = elgg_get_entities_from_relationship($options);
-
- if ($include_bad) {
- elgg_set_ignore_access($old_ia);
- } else {
- // remove bad plugins
- foreach ($plugins as $i => $plugin) {
- if (!$plugin->isValid()) {
- unset ($plugins[$i]);
- }
- }
- }
+ elgg_set_ignore_access($old_ia);
return $plugins;
}
@@ -573,7 +548,7 @@ function elgg_get_plugins_provides($type = null, $name = null) {
$provides = array();
foreach ($active_plugins as $plugin) {
- if ($plugin_provides = $plugin->manifest->getProvides()) {
+ if ($plugin_provides = $plugin->getManifest()->getProvides()) {
foreach ($plugin_provides as $provided) {
$provides[$provided['type']][$provided['name']] = array(
'version' => $provided['version'],
diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php
index 1bf4808ef..62d3f6567 100644
--- a/install/ElggInstaller.php
+++ b/install/ElggInstaller.php
@@ -1344,8 +1344,8 @@ class ElggInstaller {
elgg_generate_plugin_entities();
$plugins = elgg_get_plugins('any');
foreach ($plugins as $plugin) {
- if ($plugin->manifest) {
- if ($plugin->manifest->getActivateOnInstall()) {
+ if ($plugin->getManifest()) {
+ if ($plugin->getManifest()->getActivateOnInstall()) {
$plugin->activate();
}
}
diff --git a/views/default/admin/plugin_settings.php b/views/default/admin/plugin_settings.php
index 7473768c0..c75492270 100644
--- a/views/default/admin/plugin_settings.php
+++ b/views/default/admin/plugin_settings.php
@@ -17,7 +17,7 @@ $vars['entity'] = $plugin;
$settings = false;
if (elgg_view_exists("settings/$plugin_id/edit") || elgg_view_exists("plugins/$plugin_id/settings")) {
- $title = $plugin->manifest->getName();
+ $title = $plugin->getManifest()->getName();
$params = array('id' => "$plugin_id-settings");
$body = elgg_view_form("plugins/settings/save", $params, $vars);
diff --git a/views/default/admin/plugins/advanced.php b/views/default/admin/plugins/advanced.php
index 02e9ae58b..550154fcd 100644
--- a/views/default/admin/plugins/advanced.php
+++ b/views/default/admin/plugins/advanced.php
@@ -22,7 +22,7 @@ foreach ($installed_plugins as $id => $plugin) {
continue;
}
- $plugin_categories = $plugin->manifest->getCategories();
+ $plugin_categories = $plugin->getManifest()->getCategories();
// handle plugins that don't declare categories
// unset them here because this is the list we foreach
diff --git a/views/default/core/settings/tools.php b/views/default/core/settings/tools.php
index ff02c9183..87c98902f 100644
--- a/views/default/core/settings/tools.php
+++ b/views/default/core/settings/tools.php
@@ -29,7 +29,7 @@ foreach ($installed_plugins as $plugin) {
if (elgg_view_exists("usersettings/$plugin_id/edit")
|| elgg_view_exists("plugins/$plugin_id/usersettings")) {
- $title = $plugin->manifest->getName();
+ $title = $plugin->getManifest()->getName();
$body = elgg_view_form('plugins/usersettings/save', array(), array('entity' => $plugin));
echo elgg_view_module('info', $title, $body);
}
diff --git a/views/default/forms/admin/plugins/simple_update_states.php b/views/default/forms/admin/plugins/simple_update_states.php
index 12b2cd616..cc1c1a710 100644
--- a/views/default/forms/admin/plugins/simple_update_states.php
+++ b/views/default/forms/admin/plugins/simple_update_states.php
@@ -16,9 +16,9 @@ foreach ($installed_plugins as $plugin) {
if (!$plugin->isValid()) {
continue;
}
- $interface = $plugin->manifest->getAdminInterface();
+ $interface = $plugin->getManifest()->getAdminInterface();
if ($interface == 'simple') {
- $plugin_list[$plugin->manifest->getName()] = $plugin;
+ $plugin_list[$plugin->getManifest()->getName()] = $plugin;
}
}
diff --git a/views/default/object/plugin/advanced.php b/views/default/object/plugin/advanced.php
index a346d4ff1..4c8bc8c17 100644
--- a/views/default/object/plugin/advanced.php
+++ b/views/default/object/plugin/advanced.php
@@ -13,7 +13,7 @@ $plugin = $vars['entity'];
$priority = $plugin->getPriority();
$active = $plugin->isActive();
-$name = $plugin->manifest->getName();
+$name = $plugin->getManifest()->getName();
$can_activate = $plugin->canActivate();
$max_priority = elgg_get_max_plugin_priority();
$actions_base = '/action/admin/plugins/';
@@ -123,7 +123,7 @@ if ($categories) {
}
$screenshots_html = '';
-$screenshots = $plugin->manifest->getScreenshots();
+$screenshots = $plugin->getManifest()->getScreenshots();
if ($screenshots) {
$base_url = elgg_get_plugins_path() . $plugin->getID() . '/';
foreach ($screenshots as $screenshot) {
@@ -138,17 +138,17 @@ if ($screenshots) {
}
// metadata
-$description = elgg_view('output/longtext', array('value' => $plugin->manifest->getDescription()));
+$description = elgg_view('output/longtext', array('value' => $plugin->getManifest()->getDescription()));
$author = '<span>' . elgg_echo('admin:plugins:label:author') . '</span>: '
- . elgg_view('output/text', array('value' => $plugin->manifest->getAuthor()));
-$version = htmlspecialchars($plugin->manifest->getVersion());
+ . elgg_view('output/text', array('value' => $plugin->getManifest()->getAuthor()));
+$version = htmlspecialchars($plugin->getManifest()->getVersion());
$website = elgg_view('output/url', array(
- 'href' => $plugin->manifest->getWebsite(),
- 'text' => $plugin->manifest->getWebsite()
+ 'href' => $plugin->getManifest()->getWebsite(),
+ 'text' => $plugin->getManifest()->getWebsite()
));
-$copyright = elgg_view('output/text', array('value' => $plugin->manifest->getCopyright()));
-$license = elgg_view('output/text', array('value' => $plugin->manifest->getLicense()));
+$copyright = elgg_view('output/text', array('value' => $plugin->getManifest()->getCopyright()));
+$license = elgg_view('output/text', array('value' => $plugin->getManifest()->getLicense()));
// show links to text files
$files = $plugin->getAvailableTextFiles();
@@ -189,11 +189,11 @@ if (elgg_view_exists($settings_view)) {
}
?>
<div class="elgg-head">
- <h3><?php echo $plugin->manifest->getName(). " $version $settings_link"; ?></h3>
+ <h3><?php echo $plugin->getManifest()->getName(). " $version $settings_link"; ?></h3>
</div>
<?php
- if ($plugin->manifest->getApiVersion() < 1.8) {
- $reqs = $plugin->manifest->getRequires();
+ if ($plugin->getManifest()->getApiVersion() < 1.8) {
+ $reqs = $plugin->getManifest()->getRequires();
if (!$reqs) {
$message = elgg_echo('admin:plugins:warning:elgg_version_unknown');
echo "<p class=\"elgg-state-error\">$message</p>";
diff --git a/views/default/object/plugin/elements/dependencies.php b/views/default/object/plugin/elements/dependencies.php
index 11a441a4a..b5cdaf8b6 100644
--- a/views/default/object/plugin/elements/dependencies.php
+++ b/views/default/object/plugin/elements/dependencies.php
@@ -9,7 +9,7 @@
*/
$plugin = elgg_extract('plugin', $vars, false);
-$deps = $plugin->package->checkDependencies(true);
+$deps = $plugin->getPackage()->checkDependencies(true);
$columns = array('type', 'name', 'expected_value', 'local_value', 'comment');
diff --git a/views/default/object/plugin/simple.php b/views/default/object/plugin/simple.php
index d57d81934..5f5b08f10 100644
--- a/views/default/object/plugin/simple.php
+++ b/views/default/object/plugin/simple.php
@@ -5,11 +5,11 @@ $plugin_guid = $plugin->guid;
$plugin_id = $plugin->getID();
$active = $plugin->isActive();
$can_activate = $plugin->canActivate();
-$name = $plugin->manifest->getName();
-$author = $plugin->manifest->getAuthor();
-$version = $plugin->manifest->getVersion();
-$website = $plugin->manifest->getWebsite();
-$description = $plugin->manifest->getDescription();
+$name = $plugin->getManifest()->getName();
+$author = $plugin->getManifest()->getAuthor();
+$version = $plugin->getManifest()->getVersion();
+$website = $plugin->getManifest()->getWebsite();
+$description = $plugin->getManifest()->getDescription();
if ($active) {
$active_class = 'elgg-state-active';