]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #2874: More removal of deprecated function user in plugins systems.
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Wed, 9 Feb 2011 21:44:12 +0000 (21:44 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Wed, 9 Feb 2011 21:44:12 +0000 (21:44 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8089 36083f99-b078-4883-b0ff-0f9b5a30f544

actions/plugins/settings/save.php
actions/plugins/usersettings/save.php
engine/lib/admin.php
engine/lib/deprecated-1.8.php
engine/lib/plugins.php
views/default/admin/components/plugin_settings.php
views/default/core/settings/tools.php
views/default/core/settings/tools/plugin.php
views/default/object/plugin.php

index 3fa45e0c1076bff7440684cd4a4c433934e5ad59..d768d36046a58433b37d0ed20ecfe85077332391 100644 (file)
@@ -1,34 +1,37 @@
 <?php
 /**
- * Elgg plugin settings save action.
+ * Saves global plugin settings.
  *
- * @package Elgg
- * @subpackage Core
+ * This action can be overriden for a specific plugin by creating the
+ * settings/<plugin_id>/save action in that plugin.
+ *
+ * @uses array $_REQUEST['params']    A set of key/value pairs to save to the ElggPlugin entity
+ * @uses int   $_REQUEST['plugin_id'] The ID of the plugin
+ *
+ * @package Elgg.Core
+ * @subpackage Plugins.Settings
  */
 
 $params = get_input('params');
-$plugin = get_input('plugin');
-if (!$plugin_info = load_plugin_manifest($plugin)) {
-       register_error(elgg_echo('plugins:settings:save:fail', array($plugin)));
+$plugin_id = get_input('plugin_id');
+$plugin = elgg_get_plugin_from_id($plugin_id);
+
+if (!($plugin instanceof ElggPlugin)) {
+       register_error(elgg_echo('plugins:settings:save:fail', array($plugin_id)));
        forward(REFERER);
 }
 
-$plugin_name = $plugin_info['name'];
+$plugin_name = $plugin->manifest->getName();
 
 $result = false;
 
-$options = array(
-       'plugin' => $plugin,
-       'manifest' => $plugin_info,
-       'settings' => $params
-);
-
 // allow a plugin to override the save action for their settings
-if (elgg_action_exist("settings/$plugin/save")) {
-       action("settings/$plugin/save");
+if (elgg_action_exist("settings/$plugin_id/save")) {
+       action("settings/$plugin_id/save");
 } else {
        foreach ($params as $k => $v) {
-               if (!$result = set_plugin_setting($k, $v, $plugin)) {
+               $result = $plugin->setSetting($k, $v);
+               if (!$result) {
                        register_error(elgg_echo('plugins:settings:save:fail', array($plugin_name)));
                        forward(REFERER);
                        exit;
@@ -37,21 +40,4 @@ if (elgg_action_exist("settings/$plugin/save")) {
 }
 
 system_message(elgg_echo('plugins:settings:save:ok', array($plugin_name)));
-forward(REFERER);
-//
-//$trigger = elgg_trigger_plugin_hook('plugin:save_settings', $plugin, $options, NULL);
-//if ($trigger === NULL) {
-//     foreach ($params as $k => $v) {
-//             if (!$result = set_plugin_setting($k, $v, $plugin)) {
-//                     register_error(elgg_echo('plugins:settings:save:fail', array($plugin_name)));
-//                     forward(REFERER);
-//                     exit;
-//             }
-//     }
-//} elseif ($trigger === FALSE) {
-//     register_error(elgg_echo('plugins:settings:save:fail', array($plugin_name)));
-//     forward(REFERER);
-//}
-//
-//system_message(elgg_echo('plugins:settings:save:ok', array($plugin_name)));
-//forward(REFERER);
\ No newline at end of file
+forward(REFERER);
\ No newline at end of file
index a54df627acbf234654b9475a24b6d4ef08e22ddc..794ce4046a3fb5fddab95c2ebeffaaa39ea7aad6 100644 (file)
@@ -1,27 +1,58 @@
 <?php
 /**
- * Elgg plugin user settings save action.
+ * Saves user-specific plugin settings.
  *
- * @package Elgg
- * @subpackage Core
+ * This action can be overriden for a specific plugin by creating the
+ * settings/<plugin_id>/save action in that plugin.
+ *
+ * @uses array $_REQUEST['params']    A set of key/value pairs to save to the ElggPlugin entity
+ * @uses int   $_REQUEST['plugin_id'] The id of the plugin
+ * @uses int   $_REQUEST['user_guid'] The GUID of the user to save settings for.
+ *
+ * @package Elgg.Core
+ * @subpackage Plugins.Settings
  */
 
 $params = get_input('params');
-$plugin = get_input('plugin');
+$plugin_id = get_input('plugin_id');
+$user_guid = get_input('user_guid', elgg_get_logged_in_user_guid());
+$plugin = elgg_get_plugin_from_id($plugin_id);
+$user = get_entity($user_guid);
+
+if (!($plugin instanceof ElggPlugin)) {
+       register_error(elgg_echo('plugins:usersettings:save:fail', array($plugin_id)));
+       forward(REFERER);
+}
+
+if (!($user instanceof ElggUser)) {
+       register_error(elgg_echo('plugins:usersettings:save:fail', array($plugin_id)));
+       forward(REFERER);
+}
+
+$plugin_name = $plugin->manifest->getName();
+
+// make sure we're admin or the user
+if (!$user->canEdit()) {
+       register_error(elgg_echo('plugins:usersettings:save:fail', array($plugin_name)));
+       forward(REFERER);
+}
 
 $result = false;
 
-foreach ($params as $k => $v) {
-       // Save
-       $result = set_plugin_usersetting($k, $v, elgg_get_logged_in_user_guid(), $plugin);
+if (elgg_action_exist("usersettings/$plugin_id/save")) {
+       action("usersettings/$plugin_id/save");
+} else {
+       foreach ($params as $k => $v) {
+               // Save
+               $result = $plugin->setUserSetting($k, $v, $user->guid);
 
-       // Error?
-       if (!$result) {
-               register_error(elgg_echo('plugins:usersettings:save:fail', array($plugin)));
-               forward(REFERER);
-               exit;
+               // Error?
+               if (!$result) {
+                       register_error(elgg_echo('plugins:usersettings:save:fail', array($plugin_name)));
+                       forward(REFERER);
+               }
        }
 }
 
-system_message(elgg_echo('plugins:usersettings:save:ok', array($plugin)));
+system_message(elgg_echo('plugins:usersettings:save:ok', array($plugin_name)));
 forward(REFERER);
index d076bbd3db8bf587256d48621776bce3a67dd619..0ec02cded80c12e109f8350c4a509bdcb8f13a9e 100644 (file)
@@ -202,8 +202,8 @@ function admin_settings_page_handler($page) {
                && elgg_view_exists("settings/{$page[1]}/edit")) {
 
                $view = '/admin/components/plugin_settings';
-               $vars['plugin'] = $page[1];
-               $vars['entity'] = find_plugin_settings($page[1]);
+               $plugin = elgg_get_plugin_from_id($page[1]);
+               $vars['plugin'] = $plugin;
                $title = elgg_echo("admin:plugin_settings:{$page[1]}");
                $title = elgg_echo("admin:{$page[0]}");
        } else {
index 684e8f9b361a05becee451055705af02f0738e77..ee3265a12a5486b839ab792c35c22177ef3eae7f 100644 (file)
@@ -2972,19 +2972,7 @@ function load_plugins() {
  */
 function find_plugin_usersettings($plugin_id = null, $user_guid = 0) {
        elgg_deprecated_notice('find_plugin_usersettings() is deprecated by elgg_get_all_plugin_user_settings()', 1.8);
-
-       $settings = elgg_get_all_plugin_user_settings($user_guid, $plugin_id);
-       $return = false;
-
-       if ($settings) {
-               $return = new stdClass;
-
-               foreach ($settings as $k => $v) {
-                       $return->$k = $v;
-               }
-       }
-
-       return $return;
+       return elgg_get_all_plugin_user_settings($user_guid, $plugin_id, true);
 }
 
 /**
index fc3dc8006163b661f57fa3925215eb3adc4a3b7b..b33b8d0ac8ee527b934c3004b51ee08100e22684 100644 (file)
@@ -772,13 +772,15 @@ function elgg_get_calling_plugin_entity() {
 /**
  * Returns an array of all plugin settings for a user.
  *
- * @param mixed  $user_guid The user GUID or null for the currently logged in user.
- * @param string $plugin_id The plugin ID
+ * @param mixed  $user_guid  The user GUID or null for the currently logged in user.
+ * @param string $plugin_id  The plugin ID
+ * @param bool   $return_obj Return settings as an object? This can be used to in reusable
+ *                           views where the settings are passed as $vars['entity'].
  * @return array
  *
  * @since 1.8
  */
-function elgg_get_all_plugin_user_settings($user_guid = null, $plugin_id = null) {
+function elgg_get_all_plugin_user_settings($user_guid = null, $plugin_id = null, $return_obj = false) {
        if ($plugin_id) {
                $plugin = elgg_get_plugin_from_id($plugin_id);
        } else {
@@ -789,7 +791,19 @@ function elgg_get_all_plugin_user_settings($user_guid = null, $plugin_id = null)
                return false;
        }
 
-       return $plugin->getAllUserSettings($user_guid);
+       $settings = $plugin->getAllUserSettings($user_guid);
+
+       if ($settings && $return_obj) {
+               $return = new stdClass;
+
+               foreach ($settings as $k => $v) {
+                       $return->$k = $v;
+               }
+
+               return $return;
+       } else {
+               return $settings;
+       }
 }
 
 /**
index d5e25b4c1ba98d8aa15cfdf832097ec50f3da5be..8179728edb65dca4d912889494885312c9ec8b17 100644 (file)
@@ -2,30 +2,33 @@
 /**
  * Elgg plugin settings
  *
- * @package Elgg
- * @subpackage Core
+ * @uses ElggPlugin $vars['plugin'] The plugin object to display settings for.
+ *
+ * @package Elgg.Core
+ * @subpackage Plugins.Settings
  */
 
 $plugin = $vars['plugin'];
-$plugin_info = load_plugin_manifest($plugin);
-
-$form_body = elgg_view("settings/{$plugin}/edit", $vars);
-$form_body .= elgg_view('input/hidden', array('internalname' => 'plugin', 'value' => $plugin));
-$form_body .= elgg_view('input/submit', array('value' => elgg_echo('save')));
-//$form_body .= elgg_view('input/reset', array('value' => elgg_echo('reset')));
+$plugin_id = $plugin->getID();
 
+if (elgg_view("settings/$plugin_id/edit")) {
 ?>
-<div class="elgg-module elgg-module-inline">
+
+<div class="elgg-module elgg-module-info">
        <div class="elgg-head">
-               <h3><?php echo $plugin_info['name']; ?></h3>
+               <h3><?php echo $plugin->manifest->getName(); ?></h3>
        </div>
        <div class="elgg-body">
-               <?php
-                       echo elgg_view('input/form', array(
-                               'body' => $form_body,
-                               'internalid' => 'plugin_settings',
-                               'action' => "action/plugins/settings/save",
+               <div id="<?php echo $plugin_id; ?>_settings">
+                       <?php echo elgg_view("object/plugin", array(
+                               'plugin' => $plugin,
+                               // in for backward compatibility
+                               'entity' => $plugin,
+                               'type' => 'admin'
                        ));
-               ?>
+                       ?>
+               </div>
        </div>
 </div>
+<?php
+}
\ No newline at end of file
index e280e0d8e195274c084228563f0c09da46fbac2c..73af8d738b80a7fd90766b90a45b5ed30986c405 100644 (file)
@@ -2,8 +2,10 @@
 /**
  * Elgg plugin specific user settings.
  *
- * @package Elgg
- * @subpackage Core
+ * @uses array $vars['installed_plugins'] An array of plugins as returned by elgg_get_plugins()
+ *
+ * @package Elgg.Core
+ * @subpackage Plugins.Settings
  */
 
 // Description of what's going on
index ab25e7fb816cda97d3b04601aa0c5115b95f4079..89e08bb64fad8696889cd2877b7819f2c4353567 100644 (file)
@@ -2,30 +2,34 @@
 /**
  * This displays a plugin's user settings.
  *
- * @package Elgg.Plugin
- * @subpackage Settings
+ * @uses ElggPlugin $vars['plugin'] The plugin to show settings for.
+ *
+ * @package Elgg.Core
+ * @subpackage Plugins.Settings
  */
 
 
 $plugin = $vars['plugin'];
 $plugin_id = $plugin->getID();
-$user_guid = $details['user_guid'];
+$user_guid = $vars['user_guid'];
+
 if (!$user_guid) {
        $user_guid = elgg_get_logged_in_user_guid();
 }
 
 if (elgg_view("usersettings/$plugin_id/edit")) {
 ?>
+
 <div class="elgg-module elgg-module-info">
        <div class="elgg-head">
                <h3><?php echo $plugin->manifest->getName(); ?></h3>
        </div>
        <div class="elgg-body">
-               <div id="<?php echo $plugin; ?>_settings">
+               <div id="<?php echo $plugin_id; ?>_settings">
                        <?php echo elgg_view("object/plugin", array(
                                'plugin' => $plugin,
                                'entity' => find_plugin_usersettings($plugin_id, $user_guid),
-                               'prefix' => 'user'
+                               'type' => 'user'
                        ));
                        ?>
                </div>
index 054931a38d1b06cdaf49994c7100e24b1858dc6a..b3bb6eb939b4f5a271efd564b88a9ff6998d2037 100644 (file)
@@ -1,21 +1,32 @@
 <?php
 /**
- * Elgg plugin
+ * Used to show plugin user settings.
  *
- * @package Elgg
- * @subpackage Core
+ * @package Elgg.Core
+ * @subpackage Plugins
  */
 
-$entity = $vars['entity'];
 $plugin = $vars['plugin'];
 $plugin_id = $plugin->getID();
-$prefix = $vars['prefix']; // Do we want to show admin settings (default) or user settings
+$user_guid = elgg_get_array_value('user_guid', $vars, elgg_get_logged_in_user_guid());
 
-$form_body = elgg_view("{$prefix}settings/{$plugin_id}/edit", $vars)
-       . "<p>" . elgg_view('input/hidden', array('internalname' => 'plugin', 'value' => $plugin_id))
+// Do we want to show admin settings or user settings
+$type = elgg_get_array_value('type', $vars, '');
+
+if ($type == 'user') {
+       $view = "{$type}settings/{$plugin_id}/edit";
+       $action = "action/plugins/usersettings/save";
+} else {
+       $view = "settings/{$plugin_id}/edit";
+       $action = "action/plugins/settings/save";
+}
+
+$form_body = elgg_view($view, $vars)
+       . "<p>" . elgg_view('input/hidden', array('internalname' => 'plugin_id', 'value' => $plugin_id))
+       . elgg_view('input/hidden', array('internalname' => 'user_guid', 'value' => $user_guid))
        . elgg_view('input/submit', array('value' => elgg_echo('save'))) . "</p>";
 
 ?>
 <div>
-       <?php echo elgg_view('input/form', array('body' => $form_body, 'action' => "action/plugins/{$prefix}settings/save")); ?>
+       <?php echo elgg_view('input/form', array('body' => $form_body, 'action' => $action)); ?>
 </div>
\ No newline at end of file