OSDN Git Service

FIX:MANAGER::instance()をstaticに
[nucleus-jp/nucleus-next.git] / nucleus / libs / MANAGER.php
index c8d9b01..ea9a5ad 100644 (file)
@@ -20,7 +20,7 @@
  *\r
  * @license http://nucleuscms.org/license.txt GNU General Public License\r
  * @copyright Copyright (C) 2002-2009 The Nucleus Group\r
- * @version $Id: MANAGER.php 1731 2012-04-08 15:10:35Z sakamocchi $\r
+ * @version $Id: MANAGER.php 1878 2012-06-17 07:42:07Z sakamocchi $\r
  */\r
 class Manager\r
 {\r
@@ -38,6 +38,7 @@ class Manager
        private $karma;\r
        private $templates;\r
        private $members;\r
+       private $skins;\r
        \r
        /**\r
         * cachedInfo to avoid repeated SQL queries (see pidInstalled/pluginInstalled/getPidFromName)\r
@@ -71,7 +72,7 @@ class Manager
         * $manager =& Manager::instance(); to get a reference to the object\r
         * instead of a copy\r
         */\r
-       public function &instance()\r
+       public static function &instance()\r
        {\r
                static $instance = array();\r
                if ( empty($instance) )\r
@@ -90,8 +91,11 @@ class Manager
                $this->blogs = array();\r
                $this->plugins = array();\r
                $this->karma = array();\r
+               $this->templates = array();\r
+               $this->skins = array();\r
                $this->parserPrefs = array();\r
                $this->cachedInfo = array();\r
+               $this->members = array();\r
                return;\r
        }\r
        \r
@@ -156,17 +160,12 @@ class Manager
         */\r
        public function &getBlog($blogid)\r
        {\r
-               $blog =& $this->blogs[$blogid];\r
-               \r
-               if ( !$blog )\r
+               if ( !array_key_exists($blogid, $this->blogs) )\r
                {\r
-                       // load class if needed\r
                        $this->_loadClass('BLOG','BLOG.php');\r
-                       // load blog object\r
-                       $blog = new Blog($blogid);\r
-                       $this->blogs[$blogid] =& $blog;\r
+                       $this->blogs[$blogid] = new Blog($blogid);\r
                }\r
-               return $blog;\r
+               return $this->blogs[$blogid];\r
        }\r
        \r
        /**\r
@@ -192,14 +191,12 @@ class Manager
         */\r
        public function &getTemplate($templateName)\r
        {\r
-               $template =& $this->templates[$templateName];\r
-               \r
-               if ( !$template )\r
+               if ( !array_key_exists($templateName, $this->templates) )\r
                {\r
-                       $template = Template::read($templateName);\r
-                       $this->templates[$templateName] =& $template;\r
+                       $this->_loadClass('Template','TEMPLATE.php');\r
+                       $this->templates[$templateName] =& Template::read($templateName);\r
                }\r
-               return $template;\r
+               return $this->templates[$templateName];\r
        }\r
        \r
        /**\r
@@ -207,17 +204,12 @@ class Manager
         */\r
        public function &getKarma($itemid)\r
        {\r
-               $karma =& $this->karma[$itemid];\r
-               \r
-               if ( !$karma )\r
+               if ( !array_key_exists($itemid, $this->karma) )\r
                {\r
-                       // load class if needed\r
-                       $this->_loadClass('KARMA','KARMA.php');\r
-                       // create KARMA object\r
-                       $karma = new Karma($itemid);\r
-                       $this->karma[$itemid] =& $karma;\r
+                       $this->_loadClass('Karma','KARMA.php');\r
+                       $this->karma[$itemid] = new Karma($itemid);\r
                }\r
-               return $karma;\r
+               return $this->karma[$itemid];\r
        }\r
        \r
        /**\r
@@ -225,17 +217,31 @@ class Manager
         */\r
        public function &getMember($memberid)\r
        {\r
-               $mem =& $this->members[$memberid];\r
-               \r
-               if ( !$mem )\r
+               if ( !array_key_exists($memberid, $this->members) )\r
                {\r
-                       // load class if needed\r
-                       $this->_loadClass('MEMBER','MEMBER.php');\r
-                       // create MEMBER object\r
-                       $mem =& Member::createFromID($memberid);\r
-                       $this->members[$memberid] =& $mem;\r
+                       $this->_loadClass('Member','MEMBER.php');\r
+                       $this->members[$memberid] =& Member::createFromID($memberid);;\r
                }\r
-               return $mem;\r
+               return $this->members[$memberid];\r
+       }\r
+       \r
+       /**\r
+        * Manager::getSkin()\r
+        * \r
+        * @param       integer $skinid                         ID for skin\r
+        * @param       string  $action_class           action class for handling skin variables\r
+        * @param       string  $event_identifier       identifier for event name\r
+        * @return      object  instance of Skin class\r
+        */\r
+       public function &getSkin($skinid, $action_class='Actions', $event_identifier='Skin')\r
+       {\r
+               if ( !array_key_exists($skinid, $this->skins) )\r
+               {\r
+                       $this->_loadClass('Skin', 'SKIN.php');\r
+                       $this->skins[$skinid] = new Skin($skinid, $action_class, $event_identifier);\r
+               }\r
+               \r
+               return $this->skins[$skinid];\r
        }\r
        \r
        /**\r
@@ -262,10 +268,11 @@ class Manager
         */\r
        private function _loadClass($name, $filename)\r
        {\r
+               global $DIR_LIBS;\r
+               \r
                if ( !class_exists($name) )\r
                {\r
-                               global $DIR_LIBS;\r
-                               include($DIR_LIBS . $filename);\r
+                       include($DIR_LIBS . $filename);\r
                }\r
                return;\r
        }\r
@@ -563,7 +570,7 @@ class Manager
                                  && !empty($this->plugins[$listener])\r
                                  && method_exists($this->plugins[$listener], 'event_' . $eventName) )\r
                                {\r
-                                       call_user_func(array(&$this->plugins[$listener],'event_' . $eventName), $data);\r
+                                       call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), array(&$data));\r
                                }\r
                        }\r
                }\r