From: shizuki Date: Tue, 13 Mar 2007 05:03:23 +0000 (+0000) Subject: Sync ORIGINAL 3.3 Rev.1121 X-Git-Tag: release-3-3~72 X-Git-Url: http://git.sourceforge.jp/view?p=nucleus-jp%2Fnucleus-jp-ancient.git;a=commitdiff_plain;h=270d89be75faa7dfa04cfc3ab73835aae81c532a Sync ORIGINAL 3.3 Rev.1121 function doItemVar() added to the plugin class Keep the amount of database queries down when lots of plugins are installed (radek) bug fix getAllItemOptions() [http://nucleus-jp.sourceforge.jp/tracker/?do=details&id=49] git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk@218 1ca29b6e-896d-4ea0-84a5-967f57386b96 --- diff --git a/utf8/nucleus/libs/PLUGIN.php b/utf8/nucleus/libs/PLUGIN.php index 8eaf4d0..071b2de 100755 --- a/utf8/nucleus/libs/PLUGIN.php +++ b/utf8/nucleus/libs/PLUGIN.php @@ -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.8 2007-02-19 22:29:31 kmorimatsu Exp $ - * $NucleusJP: PLUGIN.php,v 1.7 2007/02/04 06:28:46 kimitake Exp $ + * @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 $ */ class NucleusPlugin { @@ -59,6 +59,7 @@ } function doAction($type) { return 'No Such Action'; } function doIf($key,$value) { return false; } + function doItemVar () {} /** * Checks if a plugin supports a certain feature. @@ -154,7 +155,26 @@ /** * Retrieves the current value for an option */ - function getOption($name) { + 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 return $this->_getOption('global', 0, $name); } function getBlogOption($blogid, $name) { @@ -280,6 +300,7 @@ var $_aOptionValues; // oid_contextid => value var $_aOptionToInfo; // context_name => array('oid' => ..., 'default' => ...) + var $plugin_options; // see getOption() var $plugid; // plugin id @@ -287,6 +308,7 @@ function NucleusPlugin() { $this->_aOptionValues = array(); // oid_contextid => value $this->_aOptionToInfo = array(); // context_name => array('oid' => ..., 'default' => ...) + $this->plugin_options = 0; } // private @@ -418,6 +440,9 @@ case 'member': $r = sql_query('SELECT mnumber as contextid FROM ' . sql_table('member')); break; + case 'item': + $r = sql_query('SELECT inumber as contextid FROM ' . sql_table('item')); + break; } if ($r) { while ($o = mysql_fetch_object($r)) @@ -600,4 +625,4 @@ } } -?> +?> \ No newline at end of file