]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #3915. Added ElggPlugin->getFriendlyName() to check for manifest->getName(...
authorBrett Profitt <brett.profitt@gmail.com>
Sun, 2 Oct 2011 18:18:55 +0000 (11:18 -0700)
committerBrett Profitt <brett.profitt@gmail.com>
Sun, 2 Oct 2011 18:18:55 +0000 (11:18 -0700)
actions/admin/plugins/activate.php
actions/admin/plugins/activate_all.php
actions/admin/plugins/deactivate.php
actions/admin/plugins/deactivate_all.php
actions/admin/plugins/set_priority.php
engine/classes/ElggPlugin.php
engine/classes/ElggPluginPackage.php
languages/en.php

index 0049878e38428480af7dc7bb4888a7b1ac1f7d9f..224b5a2ae23d79673eb574ba1e1543ba911c52b8 100644 (file)
@@ -29,7 +29,9 @@ foreach ($plugin_guids as $guid) {
        if ($plugin->activate()) {
                $activated_guids[] = $guid;
        } else {
-               register_error(elgg_echo('admin:plugins:activate:no', array($plugin->getManifest()->getName())));
+               $msg = $plugin->getError();
+               $string = ($msg) ? 'admin:plugins:activate:no_with_msg' : 'admin:plugins:activate:no';
+               register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
        }
 }
 
index 19eb821421caa74c9685d885fe27a60078c22074..19c142346c00070b22373aa4d24f8fa3efa4ebb8 100644 (file)
@@ -18,7 +18,9 @@ foreach ($guids as $guid) {
                if ($plugin->activate()) {
                        //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->getManifest()->getName())));
                } else {
-                       register_error(elgg_echo('admin:plugins:activate:no', array($plugin->getManifest()->getName())));
+                       $msg = $plugin->getError();
+                       $string = ($msg) ? 'admin:plugins:activate:no_with_msg' : 'admin:plugins:activate:no';
+                       register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
                }
        }
 }
index f5eca3aaa1c17d3900ce053aa15f9ff627f48004..2ce796eff728f9f43cb6dc4255e910a34446a4e8 100644 (file)
@@ -28,7 +28,9 @@ foreach ($plugin_guids as $guid) {
        if ($plugin->deactivate()) {
                //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->getManifest()->getName())));
        } else {
-               register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->getManifest()->getName())));
+               $msg = $plugin->getError();
+               $string = ($msg) ? 'admin:plugins:deactivate:no_with_msg' : 'admin:plugins:deactivate:no';
+               register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
        }
 }
 
index 436a3ad30fd35119fd6b3238e327286dc246ff6d..479e9c60775ea52a509b8a9efeb7b9df59de0cf0 100644 (file)
@@ -18,7 +18,9 @@ foreach ($guids as $guid) {
                if ($plugin->deactivate()) {
                        //system_message(elgg_echo('admin:plugins:activate:yes', array($plugin->getManifest()->getName())));
                } else {
-                       register_error(elgg_echo('admin:plugins:deactivate:no', array($plugin->getManifest()->getName())));
+                       $msg = $plugin->getError();
+                       $string = ($msg) ? 'admin:plugins:deactivate:no_with_msg' : 'admin:plugins:deactivate:no';
+                       register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
                }
        }
 }
index 1f8bc24af381f64d537def346252c5c9fc2291e7..79b1c4c53430a9947adadb01f359cc7f888a353e 100644 (file)
@@ -26,7 +26,9 @@ if (!($plugin instanceof ElggPlugin)) {
 if ($plugin->setPriority($priority)) {
        //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->getManifest()->getName())));
+       $msg = $plugin->getError();
+       $string = ($msg) ? 'admin:plugins:set_priority:no_with_msg' : 'admin:plugins:set_priority:no';
+       register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
 }
 
 // don't regenerate the simplecache because the plugin won't be
index d837431fce555c22192ba418653c35ad0fec3bc9..4aee1e8984a3a3da8be58bebb14aa6593a49d08e 100644 (file)
@@ -115,6 +115,21 @@ class ElggPlugin extends ElggObject {
                return $this->title;
        }
 
+       /**
+        * Returns the manifest's name if available, otherwise the ID.
+        * 
+        * @return string
+        * @since 1.8.1
+        */
+       public function getFriendlyName() {
+               $manifest = $this->getManifest();
+               if ($manifest) {
+                       return $manifest->getName();
+               }
+
+               return $this->getID();
+       }
+
        /**
         * Returns the plugin's full path with trailing slash.
         *
@@ -597,7 +612,12 @@ class ElggPlugin extends ElggObject {
         */
        public function canActivate($site_guid = null) {
                if ($this->getPackage()) {
-                       return $this->getPackage()->isValid() && $this->getPackage()->checkDependencies();
+                       $result = $this->getPackage()->isValid() && $this->getPackage()->checkDependencies();
+                       if (!$result) {
+                               $this->errorMsg = $this->getPackage()->getError();
+                       }
+
+                       return $result;
                }
 
                return false;
index 02b9852859347732da2d4d2eb7a3ce948be18b2a..145f71fcd43963a40ad18352339c3600d8a0c0b4 100644 (file)
@@ -347,6 +347,7 @@ class ElggPluginPackage {
                                        $conflict['name'] = $plugin->getManifest()->getName();
 
                                        if (!$full_report && !$result['status']) {
+                                               $this->errorMsg = "Conflicts with plugin \"{$plugin->getManifest()->getName()}\".";
                                                return $result['status'];
                                        } else {
                                                $report[] = array(
@@ -399,6 +400,7 @@ class ElggPluginPackage {
 
                                // unless we're doing a full report, break as soon as we fail.
                                if (!$full_report && !$result['status']) {
+                                       $this->errorMsg = "Missing dependencies.";
                                        return $result['status'];
                                } else {
                                        // build report element and comment
index 27b07d11c6e58c48ecd746d53cad9254ade70461..c4eb212c4e2c6b21d6c6232df2df2499d8ddd52c 100644 (file)
@@ -69,6 +69,7 @@ $english = array(
        'PluginException:InvalidManifest' => 'Invalid manifest file for plugin %s',
        'PluginException:InvalidPlugin' => '%s is not a valid plugin.',
        'PluginException:InvalidPlugin:Details' => '%s is not a valid plugin: %s',
+       'PluginException:NullInstantiated' => 'ElggPlugin cannot be null instantiated. You must pass a GUID, a plugin ID, or a full path.',
 
        'ElggPlugin:MissingID' => 'Missing plugin ID (guid %s)',
        'ElggPlugin:NoPluginPackagePackage' => 'Missing ElggPluginPackage for plugin ID %s (guid %s)',
@@ -663,10 +664,13 @@ $english = array(
 
        'admin:plugins:set_priority:yes' => "Reordered %s.",
        'admin:plugins:set_priority:no' => "Could not reorder %s.",
+       'admin:plugins:set_priority:no_with_msg' => "Could not reorder %s. Error: %s",
        'admin:plugins:deactivate:yes' => "Deactivated %s.",
        'admin:plugins:deactivate:no' => "Could not deactivate %s.",
+       'admin:plugins:deactivate:no_with_msg' => "Could not deactivate %s. Error: %s",
        'admin:plugins:activate:yes' => "Activated %s.",
        'admin:plugins:activate:no' => "Could not activate %s.",
+       'admin:plugins:activate:no_with_msg' => "Could not activate %s. Error: %s",
        'admin:plugins:categories:all' => 'All categories',
        'admin:plugins:plugin_website' => 'Plugin website',
        'admin:plugins:author' => '%s',