OSDN Git Service

CHANGE: getBlogIDFromItemID()を使わずにManager::getItem()を使うよう変更
[nucleus-jp/nucleus-next.git] / nucleus / libs / MANAGER.php
index e288043..8dd1b6a 100644 (file)
@@ -32,12 +32,12 @@ class Manager
         * The $items, $blogs, ... arrays map an id to an object (for plugins, the name is used\r
         * rather than an ID)\r
         */\r
-       var $items;\r
-       var $blogs;\r
-       var $plugins;\r
-       var $karma;\r
-       var $templates;\r
-       var $members;\r
+       private $items;\r
+       private $blogs;\r
+       private $plugins;\r
+       private $karma;\r
+       private $templates;\r
+       private $members;\r
        \r
        /**\r
         * cachedInfo to avoid repeated SQL queries (see pidInstalled/pluginInstalled/getPidFromName)\r
@@ -98,36 +98,32 @@ class Manager
        /**\r
         * Returns the requested item object. If it is not in the cache, it will\r
         * first be loaded and then placed in the cache.\r
-        * Intended use: $item =& $manager->getItem(1234)\r
+        * Intended use: $item =& $manager->getItem(1234, 0, 0)\r
         */\r
        public function &getItem($itemid, $allowdraft, $allowfuture)\r
        {\r
                $item =& $this->items[$itemid];\r
                \r
-               // check the draft and future rules if the item was already cached\r
-               if ( $item )\r
+               /* confirm to cached */\r
+               if ( !array_key_exists($itemid, $this->items) )\r
                {\r
-                       if ( (!$allowdraft) && ($item['draft']) )\r
-                       {\r
-                               return 0;\r
-                       }\r
-                       \r
-                       $blog =& $this->getBlog(getBlogIDFromItemID($itemid));\r
-                       \r
-                       if ( (!$allowfuture) && ($item['timestamp'] > $blog->getCorrectTime()) )\r
-                       {\r
-                               return 0;\r
-                       }\r
-               }\r
-               \r
-               if ( !$item )\r
-               {\r
-                       // load class if needed\r
                        $this->loadClass('ITEM');\r
-                       // load item object\r
                        $item = Item::getitem($itemid, $allowdraft, $allowfuture);\r
                        $this->items[$itemid] = $item;\r
                }\r
+               \r
+               $item =& $this->items[$itemid];\r
+               if ( !$allowdraft && ($item['draft']) )\r
+               {\r
+                       return 0;\r
+               }\r
+               \r
+               $blog =& $this->getBlog($item['blogid']);\r
+               if ( !$allowfuture && ($item['timestamp'] > $blog->getCorrectTime()) )\r
+               {\r
+                       return 0;\r
+               }\r
+               \r
                return $item;\r
        }\r
        \r
@@ -449,6 +445,23 @@ class Manager
        }\r
        \r
        /**\r
+        * Manager::getPluginNameFromPid()\r
+        * \r
+        * @param       string  $pid    ID for plugin\r
+        * @return      string  name of plugin\r
+        */\r
+       public function getPluginNameFromPid($pid)\r
+       {\r
+               if ( !array_key_exists($pid, $this->cachedInfo['installedPlugins']) )\r
+               {\r
+                       $query = 'SELECT pfile FROM %s WHERE pid=%d;';\r
+                       $query = sprintf($query, sql_table('plugin'), (integer) $pid);\r
+                       return DB::getValue($query);\r
+               }\r
+               return $this->cachedInfo['installedPlugins'][$pid];\r
+       }\r
+       \r
+       /**\r
         * Manager::getUpperCaseName()\r
         * Retrieve the name of a plugin in the right capitalisation\r
         * \r
@@ -587,6 +600,19 @@ class Manager
        }\r
        \r
        /**\r
+        * Manager::getNumberOfSubscribers()\r
+        * \r
+        * @param       string  $event  name of events\r
+        * @return      integer number of event subscriber\r
+        */\r
+       public function getNumberOfSubscribers($event)\r
+       {\r
+               $query = 'SELECT COUNT(*) as count FROM %s WHERE event=%s;';\r
+               $query = sprintf($query, sql_table('plugin_event'), DB::quoteValue($event));\r
+               return (integer) DB::getValue($query);\r
+       }\r
+       \r
+       /**\r
         * Manager::addTicketToUrl()\r
         * GET requests: Adds ticket to URL (URL should NOT be html-encoded!, ticket is added at the end)\r
         * \r
@@ -701,8 +727,8 @@ class Manager
        {\r
                // remove tickets older than 1 hour\r
                $oldTime = time() - 60 * 60;\r
-               $query = "DELETE FROM %s WHERE ctime < '%s';";\r
-               $query = sprintf($query, sql_table('tickets'), date('Y-m-d H:i:s',$oldTime));\r
+               $query = 'DELETE FROM %s WHERE ctime < %s';\r
+               $query = sprintf($query, sql_table('tickets'), DB::formatDateTime($oldTime));\r
                DB::execute($query);\r
                return;\r
        }\r
@@ -739,9 +765,8 @@ class Manager
                                $ticket = md5(uniqid(rand(), true));\r
                                \r
                                // add in database as non-active\r
-                               $query = "INSERT INTO %s (ticket, member, ctime)"\r
-                                      . " VALUES (%s, %d, '%s');";\r
-                               $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, date('Y-m-d H:i:s',time()));\r
+                               $query = 'INSERT INTO %s (ticket, member, ctime) VALUES (%s, %d, %s)';\r
+                               $query = sprintf($query, sql_table('tickets'), DB::quoteValue($ticket), (integer) $memberId, DB::formatDateTime());\r
                                \r
                                if ( DB::execute($query) !== FALSE )\r
                                {\r