OSDN Git Service

Fix bug, getOption() values are not reflected after changing them by using admin...
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / PLUGIN.php
index 071b2de..060c254 100755 (executable)
@@ -17,8 +17,8 @@
         *
         * @license http://nucleuscms.org/license.txt GNU General Public License
         * @copyright Copyright (C) 2002-2007 The Nucleus Group
-        * @version $Id: PLUGIN.php,v 1.9 2007-03-13 05:03:23 shizuki Exp $
-        * $NucleusJP: PLUGIN.php,v 1.8 2007/02/19 22:29:31 kmorimatsu Exp $
+        * @version $Id: PLUGIN.php,v 1.11 2007-04-06 19:36:29 kmorimatsu Exp $
+        * $NucleusJP: PLUGIN.php,v 1.10 2007/03/30 22:18:28 kmorimatsu Exp $
         */
        class NucleusPlugin {
 
                /**
                  * Retrieves the current value for an option
                  */
-               function getOption($name)
-               {
-                       // only request the options the very first time. On subsequent requests
-                       // the static collection is used to save SQL queries.
-                       if ($this->plugin_options == 0)
-                       {
-                               $this->plugin_options = array();
-                               $query = mysql_query(
-                                        'SELECT d.oname as name, o.ovalue as value '.
-                                        'FROM '.
-                                        sql_table('plugin_option').' o, '.
-                                        sql_table('plugin_option_desc').' d '.
-                                        'WHERE d.opid='. intval($this->getID()).' AND d.oid=o.oid'
-                               );
-                               while ($row = mysql_fetch_object($query))
-                                       $this->plugin_options[strtolower($row->name)] = $row->value;
-                 }
-                 if (isset($this->plugin_options[strtolower($name)]))
-                               return $this->plugin_options[strtolower($name)];
-                 else
+               function getOption($name){
                        return $this->_getOption('global', 0, $name);
                }
                function getBlogOption($blogid, $name) {
                        $this->plugin_options = 0;
                }
 
+               function clearOptionValueCache(){
+                       $this->_aOptionValues = array();
+               }
+
                // private
                function _createOption($context, $name, $desc, $type, $defValue, $typeExtras = '') {
                        // create in plugin_option_desc
                                $res = sql_query($query);
                                if ($o = mysql_fetch_object($res))
                                {
-                                       foreach ($values as $contextid => $value) {
+                                       foreach ($values as $key => $value) {
+                                               // avoid overriding the key used by foreach statement
+                                               $contextid=$key;
+
                                                // retreive any metadata
                                                $meta = NucleusPlugin::getOptionMeta($o->oextra);
 
                                        }
                                }
                        }
+                       // clear option value cache if the plugin object is already loaded
+                       if (is_object($o)) {
+                               $plugin=& $manager->pidLoaded($o->opid);
+                               if ($plugin) $plugin->clearOptionValueCache();
+                       }
                }
 
        }