OSDN Git Service

CHANGE: getBlogIDFromItemID()を使わずにManager::getItem()を使うよう変更
[nucleus-jp/nucleus-next.git] / nucleus / libs / ITEMACTIONS.php
index 8109137..b1de395 100644 (file)
@@ -93,15 +93,15 @@ class ItemActions extends BaseActions
                'plugin',
                'query',
                'relevance',
-               'smartbody',
-               'syndicate_description',
-               'syndicate_title',
-               'time',
-               'title',
-       /* actions defined in BodyAction class */
+               'smartbody',\r
+               'syndicate_description',\r
+               'syndicate_title',\r
+               'time',\r
+               'title',\r
+       /* actions defined in BodyAction class */\r
                'image',\r
-               'media',
-               'popup',\r
+               'media',\r
+               'popup'\r
        );\r
        \r
        /**\r
@@ -112,6 +112,7 @@ class ItemActions extends BaseActions
        public function __construct(&$blog)\r
        {\r
                global $catid, $member;\r
+               \r
                // call constructor of superclass first\r
                parent::__construct();
                \r
@@ -128,17 +129,16 @@ class ItemActions extends BaseActions
        }\r
        \r
        /**\r
-        * ItemActions::getDefinedActions()\r
+        * ItemActions::getAvailableActions()\r
         * Returns an array with the actions that are defined\r
         * in the ItemActions class\r
         * \r
-        * @static
         * @param       void\r
         * @return      void\r
         */\r
-       static public function getDefinedActions()
+       public function getAvailableActions()\r
        {\r
-               return array_merge(self::$defined_actions, parent::getDefinedActions());
+               return array_merge(self::$defined_actions, parent::getAvailableActions());\r
        }\r
        \r
        /**\r
@@ -154,18 +154,6 @@ class ItemActions extends BaseActions
        }\r
        \r
        /**\r
-        * ItemActions::setParser()\r
-        * \r
-        * @param       object  &$parser        instance of Parser class\r
-        * @return      void\r
-        */\r
-       public function setParser(&$parser)\r
-       {\r
-               $this->parser =& $parser;\r
-               return;\r
-       }\r
-       \r
-       /**\r
         * ItemActions::setCurrentItem()\r
         * \r
         * @param       object  $item   instance of Item class\r
@@ -175,7 +163,7 @@ class ItemActions extends BaseActions
        {\r
                global $currentitemid;\r
                $this->currentItem =& $item;\r
-               $currentitemid = $this->currentItem->itemid;\r
+               $currentitemid = $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -236,7 +224,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_body()\r
        {\r
-               $this->highlightAndParse($this->currentItem->body);\r
+               $this->highlightAndParse($this->currentItem['body']);\r
                return;\r
        }\r
        \r
@@ -249,7 +237,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_more()\r
        {\r
-               $this->highlightAndParse($this->currentItem->more);\r
+               $this->highlightAndParse($this->currentItem['more']);\r
                return;\r
        }\r
        \r
@@ -262,7 +250,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_itemid()\r
        {\r
-               echo $this->currentItem->itemid;\r
+               echo $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -275,7 +263,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_category()\r
        {\r
-               echo $this->currentItem->category;\r
+               echo $this->currentItem['category'];\r
                return;\r
        }\r
        \r
@@ -288,7 +276,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_categorylink()\r
        {\r
-               echo Link::create_link('category', array('catid' => $this->currentItem->catid, 'name' => $this->currentItem->category));\r
+               echo Link::create_link('category', array('catid' => $this->currentItem['catid'], 'name' => $this->currentItem['category']));\r
                return;\r
        }\r
        \r
@@ -301,7 +289,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_catid()\r
        {\r
-               echo $this->currentItem->catid;\r
+               echo $this->currentItem['catid'];\r
                return;\r
        }\r
        \r
@@ -314,7 +302,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_authorid()\r
        {\r
-               echo $this->currentItem->authorid;\r
+               echo $this->currentItem['authorid'];\r
                return;\r
        }\r
        \r
@@ -328,8 +316,8 @@ class ItemActions extends BaseActions
        public function parse_authorlink()\r
        {\r
                $data = array(\r
-                               'memberid' => $this->currentItem->authorid,\r
-                               'name' => $this->currentItem->author,\r
+                               'memberid' => $this->currentItem['authorid'],\r
+                               'name' => $this->currentItem['author'],\r
                                'extra' => $this->linkparams\r
                        );\r
                \r
@@ -360,9 +348,9 @@ class ItemActions extends BaseActions
        public function parse_itemlink()\r
        {\r
                $data = array(\r
-                       'itemid'        => $this->currentItem->itemid,\r
-                       'title'         => $this->currentItem->title,\r
-                       'timestamp'     => $this->currentItem->timestamp,\r
+                       'itemid'        => $this->currentItem['itemid'],\r
+                       'title'         => $this->currentItem['title'],\r
+                       'timestamp'     => $this->currentItem['timestamp'],\r
                        'extra'         => $this->linkparams\r
                );\r
                \r
@@ -392,7 +380,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_closed()\r
        {\r
-               echo $this->currentItem->closed;\r
+               echo $this->currentItem['closed'];\r
                return;\r
        }\r
        \r
@@ -405,7 +393,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_relevance()\r
        {\r
-               echo round($this->currentItem->score,2);\r
+               echo round($this->currentItem['score'], 2);\r
                return;\r
        }\r
        \r
@@ -422,10 +410,6 @@ class ItemActions extends BaseActions
                {\r
                        $itemtitle = $this->currentItem['title'];\r
                }\r
-               elseif ( is_object($this->currentItem) )\r
-               {\r
-                       $itemtitle = $this->currentItem->title;\r
-               }\r
                switch ( $format )\r
                {\r
                        case 'xml':\r
@@ -456,7 +440,7 @@ class ItemActions extends BaseActions
                global $manager;\r
                \r
                // get karma object\r
-               $karma =& $manager->getKarma($this->currentItem->itemid);\r
+               $karma =& $manager->getKarma($this->currentItem['itemid']);\r
                \r
                switch ( $type )\r
                {\r
@@ -497,20 +481,20 @@ class ItemActions extends BaseActions
                switch ( $which )\r
                {\r
                        case 'realname':\r
-                               echo $this->currentItem->authorname;\r
+                               echo $this->currentItem['authorname'];\r
                                break;\r
                        case 'id':\r
-                               echo $this->currentItem->authorid;\r
+                               echo $this->currentItem['authorid'];\r
                                break;\r
                        case 'email':\r
-                               echo $this->currentItem->authormail;\r
+                               echo $this->currentItem['authormail'];\r
                                break;\r
                        case 'url':\r
-                               echo $this->currentItem->authorurl;\r
+                               echo $this->currentItem['authorurl'];\r
                                break;\r
                        case 'name':\r
                        default:\r
-                               echo $this->currentItem->author;\r
+                               echo $this->currentItem['author'];\r
                }\r
                return;\r
        }\r
@@ -524,13 +508,13 @@ class ItemActions extends BaseActions
         */\r
        public function parse_smartbody()\r
        {\r
-               if ( !$this->currentItem->more )\r
+               if ( !$this->currentItem['more'] )\r
                {\r
-                       $this->highlightAndParse($this->currentItem->body);\r
+                       $this->highlightAndParse($this->currentItem['body']);\r
                }\r
                else\r
                {\r
-                       $this->highlightAndParse($this->currentItem->more);\r
+                       $this->highlightAndParse($this->currentItem['more']);\r
                }\r
                return;\r
        }\r
@@ -541,7 +525,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_morelink()\r
        {\r
-               if ( $this->currentItem->more )\r
+               if ( $this->currentItem['more'] )\r
                {\r
                        $this->parser->parse($this->template['MORELINK']);\r
                }\r
@@ -578,7 +562,7 @@ class ItemActions extends BaseActions
                        $offset = $this->blog->getTimeOffset() * 3600;\r
                }\r
                \r
-               echo i18n::formatted_datetime($format, $this->currentItem->timestamp, $offset);\r
+               echo i18n::formatted_datetime($format, $this->currentItem['timestamp'], $offset);\r
                return;\r
        }\r
        \r
@@ -605,7 +589,7 @@ class ItemActions extends BaseActions
                {\r
                        $format = $this->template['FORMAT_TIME'];\r
                }\r
-               echo i18n::formatted_datetime($format, $this->currentItem->timestamp);\r
+               echo i18n::formatted_datetime($format, $this->currentItem['timestamp']);\r
                return;\r
        }\r
        \r
@@ -617,7 +601,7 @@ class ItemActions extends BaseActions
         * @return      string  syndicated      title\r
         */\r
        public function parse_syndicate_title($maxLength = 100) {\r
-               $syndicated = strip_tags($this->currentItem->title);\r
+               $syndicated = strip_tags($this->currentItem['title']);\r
                echo Entity::hsc(Entity::shorten($syndicated,$maxLength,'...'));\r
        }\r
        \r
@@ -631,7 +615,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_syndicate_description($maxLength = 250, $addHighlight = 0)\r
        {\r
-               $syndicated = strip_tags($this->currentItem->body);\r
+               $syndicated = strip_tags($this->currentItem['body']);\r
                if ( $addHighlight )\r
                {\r
                        $tmp_highlight = Entity::hsc(Entity::shorten($syndicated,$maxLength,'...'));\r
@@ -654,7 +638,7 @@ class ItemActions extends BaseActions
        public function parse_karmaposlink($text = '')\r
        {\r
                global $CONF;\r
-               $link = $CONF['ActionURL'] . '?action=votepositive&itemid=' . $this->currentItem->itemid;\r
+               $link = $CONF['ActionURL'] . '?action=votepositive&itemid=' . $this->currentItem['itemid'];\r
                if ( !$text )\r
                {\r
                        echo '<a href="'.$link.'">' . $text . '</a>';\r
@@ -677,7 +661,7 @@ class ItemActions extends BaseActions
        public function parse_karmaneglink($text = '')\r
        {\r
                global $CONF;\r
-               $link = $CONF['ActionURL'] . '?action=votenegative&amp;itemid='.$this->currentItem->itemid;\r
+               $link = $CONF['ActionURL'] . '?action=votenegative&amp;itemid='.$this->currentItem['itemid'];\r
                \r
                if ( !$text )\r
                {\r
@@ -700,7 +684,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_new()\r
        {\r
-               if ( ($this->lastVisit != 0) && ($this->currentItem->timestamp > $this->lastVisit) )\r
+               if ( ($this->lastVisit != 0) && ($this->currentItem['timestamp'] > $this->lastVisit) )\r
                {\r
                        echo $this->template['NEW'];\r
                }\r
@@ -716,7 +700,7 @@ class ItemActions extends BaseActions
         */\r
        public function parse_daylink()\r
        {\r
-               echo Link::create_archive_link($this->blog->getID(), i18n::formatted_datetime('%Y-%m-%d', $this->currentItem->timestamp), $this->linkparams);\r
+               echo Link::create_archive_link($this->blog->getID(), i18n::formatted_datetime('%Y-%m-%d', $this->currentItem['timestamp']), $this->linkparams);\r
                return;\r
        }\r
        \r
@@ -737,9 +721,9 @@ class ItemActions extends BaseActions
                // add comments\r
                if ( $this->showComments && $this->blog->commentsEnabled() )\r
                {\r
-                       $comments = new Comments($this->currentItem->itemid);\r
+                       $comments = new Comments($this->currentItem['itemid']);\r
                        $comments->setItemActions($this);\r
-                       $comments->showComments($this->template, $maxToShow, $this->currentItem->closed ? 0 : 1, $this->strHighlight);\r
+                       $comments->showComments($this->template, $maxToShow, $this->currentItem['closed'] ? 0 : 1, $this->strHighlight);\r
                }\r
                return;\r
        }\r
@@ -785,7 +769,7 @@ class ItemActions extends BaseActions
        public function parse_edit()\r
        {\r
                global $member, $CONF;\r
-               if ( $this->allowEditAll || ($member->isLoggedIn() && ($member->getID() == $this->currentItem->authorid)) )\r
+               if ( $this->allowEditAll || ($member->isLoggedIn() && ($member->getID() == $this->currentItem['authorid'])) )\r
                {\r
                        $this->parser->parse($this->template['EDITLINK']);\r
                }\r
@@ -799,7 +783,7 @@ class ItemActions extends BaseActions
        public function parse_editlink()\r
        {\r
                global $CONF;\r
-               echo $CONF['AdminURL'] . 'bookmarklet.php?action=edit&amp;itemid=' . $this->currentItem->itemid;\r
+               echo $CONF['AdminURL'] . 'bookmarklet.php?action=edit&amp;itemid=' . $this->currentItem['itemid'];\r
                return;\r
        }\r
        \r
@@ -827,12 +811,13 @@ class ItemActions extends BaseActions
         */\r
        public function highlightAndParse(&$data)\r
        {\r
-               $actions = new BodyActions($this->blog);\r
-               $parser = new Parser($actions->getDefinedActions(), $actions);\r
-               $actions->setTemplate($this->template);\r
-               $actions->setHighlight($this->strHighlight);\r
-               $actions->setCurrentItem($this->currentItem);\r
-               $parser->parse($actions->highlight($data));\r
+               $handler = new BodyActions($this->blog);
+               $handler->setTemplate($this->template);
+               $handler->setHighlight($this->strHighlight);
+               $handler->setCurrentItem($this->currentItem);
+               \r
+               $parser = new Parser($handler);\r
+               $parser->parse($handler->highlight($data));
                return;\r
        }\r
        \r
@@ -862,8 +847,9 @@ class ItemActions extends BaseActions
                                $condition = ($blog && ($blog->getSetting($name) == $value));\r
                                break;\r
                        case 'itemblogsetting':\r
-                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
-                               $condition = ($b && ($b->getSetting($name) == $value));\r
+                               $item =& $manager->getItem($this->currentItem['itemid'], 1, 1);\r
+                               $t_blog =& $manager->getBlog($item['blogid']);\r
+                               $condition = ($t_blog && ($t_blog->getSetting($name) == $value));\r
                                break;\r
                        case 'loggedin':\r
                                $condition = $member->isLoggedIn();\r
@@ -935,19 +921,17 @@ class ItemActions extends BaseActions
        {\r
                global $member, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
-               \r
                // when no parameter is defined, just check if author is current visitor\r
                if ( ($key != 'isadmin' && $key != 'name') || ($key == 'name' && $value == '') )\r
                {\r
-                       return (boolean) ((integer) $member->getID() > 0 && (integer) $member->getID() == (integer) $this->currentItem->authorid);\r
+                       return (boolean) ((integer) $member->getID() > 0 && (integer) $member->getID() == (integer) $this->currentItem['authorid']);\r
                }\r
                \r
                // check author name\r
                if ( $key == 'name' )\r
                {\r
                        $value = strtolower($value);\r
-                       if ( $value == strtolower($this->currentItem->author) )\r
+                       if ( $value == strtolower($this->currentItem['author']) )\r
                        {\r
                                return TRUE;\r
                        }\r
@@ -956,14 +940,12 @@ class ItemActions extends BaseActions
                // check if author is admin\r
                if ( ($key == 'isadmin') )\r
                {\r
-                       $aid = intval($this->currentItem->authorid);\r
-                       $blogid = intval($b->getID());                  \r
-                       $amember =& $manager->getMember($aid);\r
-                       if ( $amember->isAdmin() )\r
+                       $i_author =& $manager->getMember($this->currentItem['authorid']);\r
+                       if ( $i_author->isAdmin() )\r
                        {\r
                                return TRUE;\r
                        }\r
-                       return (boolean) $amember->isBlogAdmin($blogid);\r
+                       return (boolean) $i_author->isBlogAdmin($this->currentItem['blogid']);\r
                }\r
                \r
                return FALSE;\r
@@ -981,30 +963,30 @@ class ItemActions extends BaseActions
        {\r
                global $catid, $manager;\r
                \r
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid));\r
+               $blog =& $manager->getBlog($this->currentItem['blogid']);\r
                \r
                // when no parameter is defined, just check if a category is selected\r
                if ( ($key != 'catname' && $key != 'catid') || ($value == '') )\r
                {\r
-                       return (boolean) $b->isValidCategory($catid);\r
+                       return (boolean) $blog->isValidCategory($catid);\r
                }\r
                \r
-               $icatid = $this->currentItem->catid;\r
+               $icatid = $this->currentItem['catid'];\r
                \r
                // check category name\r
                if ( $key == 'catname' )\r
                {\r
-                       $value = $b->getCategoryIdFromName($value);\r
+                       $value = $blog->getCategoryIdFromName($value);\r
                        if ( $value == $icatid )\r
                        {\r
-                               return (boolean) $b->isValidCategory($icatid);\r
+                               return (boolean) $blog->isValidCategory($icatid);\r
                        }\r
                }\r
                \r
                // check category id\r
                if ( ($key == 'catid') && ($value == $icatid) )\r
                {\r
-                       return (boolean) $b->isValidCategory($icatid);\r
+                       return (boolean) $blog->isValidCategory($icatid);\r
                }\r
                return FALSE;\r
        }\r