OSDN Git Service

FIX:カテゴリーのバッチ削除・移動の修正
authorshizuki <shizuki@kinezumi.net>
Sun, 6 May 2012 14:01:55 +0000 (23:01 +0900)
committershizuki <shizuki@kinezumi.net>
Sun, 6 May 2012 14:01:55 +0000 (23:01 +0900)
 ADD:Admin::moveOneCategory()の追加
 CHANGE:AdminActions::parse_batchmovelist()での「name」値の設定方法を変更
 FIX:デフォルトの管理画面スキン内で、<%text%>に対する引数「_BATCH_CATEGORIES」の最初の「_」が抜けていたので修正

nucleus/libs/ADMIN.php
nucleus/libs/AdminActions.php
skins/admin/default/skinbackup.xml

index be2e28d..e11b6d8 100644 (file)
@@ -693,7 +693,7 @@ class Admin
         *      member is on the blog team (-1 = none)\r
         * @return      void\r
         */\r
-       static private function selectBlog($name, $mode='blog', $selected = 0, $tabindex = 0, $showNewCat = 0, $iForcedBlogInclude = -1)\r
+       static public function selectBlog($name, $mode='blog', $selected = 0, $tabindex = 0, $showNewCat = 0, $iForcedBlogInclude = -1)\r
        {\r
                global $member, $CONF;\r
                \r
@@ -2354,6 +2354,96 @@ class Admin
        }\r
        \r
        /**\r
+        * Admin::moveOneCategory()\r
+        * Delete a category by its id\r
+        * \r
+        * @param       int     $catid          category id for move\r
+        * @param       int     $destblogid     blog id for destination\r
+        * @return      void\r
+        */\r
+       static public function moveOneCategory($catid, $destblogid)\r
+       {\r
+               global $manager, $member;\r
+               $catid      = intval($catid);\r
+               $destblogid = intval($destblogid);\r
+               $blogid     = getBlogIDFromCatID($catid);\r
+               // mover should have admin rights on both blogs\r
+               if (!$member->blogAdminRights($blogid)) {\r
+                       return _ERROR_DISALLOWED;\r
+               }\r
+               if (!$member->blogAdminRights($destblogid)) {\r
+                       return _ERROR_DISALLOWED;\r
+               }\r
+               // cannot move to self\r
+               if ($blogid == $destblogid) {\r
+                       return _ERROR_MOVETOSELF;\r
+               }\r
+               // get blogs\r
+               $blog     =& $manager->getBlog($blogid);\r
+               $destblog =& $manager->getBlog($destblogid);\r
+               // check if the category is valid\r
+               if (!$blog || !$blog->isValidCategory($catid)) {\r
+                       return _ERROR_NOSUCHCATEGORY;\r
+               }\r
+               // don't allow default category to be moved\r
+               if ($blog->getDefaultCategory() == $catid) {\r
+                       return _ERROR_MOVEDEFCATEGORY;\r
+               }\r
+               $manager->notify(\r
+                               'PreMoveCategory',\r
+                               array(\r
+                                               'catid'      => &$catid,\r
+                                               'sourceblog' => &$blog,\r
+                                               'destblog'   => &$destblog\r
+                               )\r
+               );\r
+               // update comments table (cblog)\r
+               $query = 'SELECT '\r
+               . '    inumber '\r
+               . 'FROM '\r
+               .      sql_table('item') . ' '\r
+               . 'WHERE '\r
+               . '    icat = %d';\r
+               $items = sql_query(sprintf($query, $catid));\r
+               while ($oItem = sql_fetch_object($items)) {\r
+                       $query = 'UPDATE '\r
+                       .      sql_table('comment') . ' '\r
+                       . 'SET '\r
+                       . '    cblog = %d' . ' '\r
+                       . 'WHERE '\r
+                       . '    citem = %d';\r
+                       sql_query(sprintf($query, $destblogid, $oItem->inumber));\r
+               }\r
+       \r
+               // update items (iblog)\r
+               $query = 'UPDATE '\r
+               .      sql_table('item') . ' '\r
+               . 'SET '\r
+               . '    iblog = %d '\r
+               . 'WHERE '\r
+               . '    icat = %d';\r
+               sql_query(sprintf($query, $destblogid, $catid));\r
+       \r
+               // move category\r
+               $query = 'UPDATE '\r
+               .      sql_table('category') . ' '\r
+               . 'SET '\r
+               . '    cblog = %d' . ' '\r
+               . 'WHERE '\r
+               . '    catid = %d';\r
+               sql_query(sprintf($query, $destblogid, $catid));\r
+               $manager->notify(\r
+                               'PostMoveCategory',\r
+                               array(\r
+                                               'catid'      => &$catid,\r
+                                               'sourceblog' => &$blog,\r
+                                               'destblog'   => $destblog\r
+                               )\r
+               );\r
+               return;\r
+       }\r
+\r
+       /**\r
         * Admin::action_blogsettingsupdate\r
         * Updating blog settings\r
         * \r
@@ -4723,7 +4813,7 @@ class Admin
         * @param       string  $msg    message that will be shown\r
         * @return      void\r
         */\r
-       static private function error($msg)\r
+       static public function error($msg)\r
        {\r
                self::$headMess = $msg;\r
                self::pagehead();\r
@@ -4739,7 +4829,7 @@ class Admin
         * @param       void\r
         * @return      void\r
         */\r
-       static private function disallow()\r
+       static public function disallow()\r
        {\r
                ActionLog::add(WARNING, _ACTIONLOG_DISALLOWED . serverVar('REQUEST_URI'));\r
                self::error(_ERROR_DISALLOWED);\r
@@ -5945,7 +6035,7 @@ class Admin
        /**\r
         * Admin::getAdminextrahead()\r
         */\r
-       static function getAdminextrahead()\r
+       static public function getAdminextrahead()\r
        {\r
                return self::$extrahead;\r
        }\r
@@ -5953,7 +6043,7 @@ class Admin
        /**\r
         * Admin::getAdminpassvar()\r
         */\r
-       static function getAdminpassvar()\r
+       static public function getAdminpassvar()\r
        {\r
                return self::$passvar;\r
        }\r
@@ -5961,7 +6051,7 @@ class Admin
        /**\r
         * Admin::getAdminAction()\r
         */\r
-       static function getAdminAction()\r
+       static public function getAdminAction()\r
        {\r
                return self::$action;\r
        }\r
@@ -5969,7 +6059,7 @@ class Admin
        /**\r
         * Admin::getAdminaOption()\r
         */\r
-       static function getAdminaOption()\r
+       static public function getAdminaOption()\r
        {\r
                return self::$aOptions;\r
        }\r
index c13cef3..366ca40 100644 (file)
@@ -1055,10 +1055,8 @@ class AdminActions extends BaseActions
                // walk over all selectedids and perform action
                foreach ( $selected as $selectedid )
                {
-                       echo $selectedid;
                        $error = '';
                        $selectedid = intval($selectedid);
-                       
                        switch ( $action )
                        {
                                case 'delete':
@@ -1072,7 +1070,7 @@ class AdminActions extends BaseActions
                                        }
                                        break;
                                case 'move':
-                                       $error = call_user_func_array(array('Admin', $moveaction), array($selectedid));
+                                       $error = call_user_func_array(array('Admin', $moveaction), array($selectedid, $destid));
                                        break;
                                case 'setadmin':
                                        // always succeeds
@@ -1109,9 +1107,8 @@ class AdminActions extends BaseActions
                        $parser->parse($template);
                        $template = ob_get_contents();
                        ob_end_clean();
-                       
+                       echo Template::fill($template, $data);
                }
-               echo Template::fill($template, $data);
                return;
        }
        
@@ -1597,9 +1594,11 @@ class AdminActions extends BaseActions
        public function parse_batchmovelist()
        {
                $selected = requestIntArray('batch');
+               $count    = 0;
                foreach ( $selected as $select )
                {
-                       echo '<input type="hidden" name="batch[' . ($select++) . ']" value="' . intval($select) . "\" />\n";
+                       echo '<input type="hidden" name="batch[' . ($count) . ']" value="' . intval($select) . "\" />\n";
+                       $count++;
                }
                return;
        }
@@ -3691,7 +3690,7 @@ class AdminActions extends BaseActions
         */
        public function parse_insertpluginfo($type)
        {
-               $option = Admin::$aOptions;
+               $option = Admin::getAdminaOption();
                switch ( $type )
                {
                        case 'id':
@@ -3777,7 +3776,7 @@ class AdminActions extends BaseActions
         */
        public function parse_insplugoptcontent()
        {
-               $option = Admin::$aOption;
+               $option = Admin::getAdminaOption();
                
                $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
                if ( array_key_exists('access', $meta) && $meta['access'] != 'hidden' )
@@ -4063,7 +4062,7 @@ class AdminActions extends BaseActions
         */
        public function parse_listplugplugoptionrow($templateName = '')
        {
-               echo listplug_plugOptionRow(Admin::$aOptions, $templateName);
+               echo listplug_plugOptionRow(Admin::getAdminaOption(), $templateName);
                return;
        }
        
index db0e99f..10835d4 100644 (file)
@@ -591,7 +591,7 @@ selector();
         </form>
 ]]></part>
     <part name="batchcategory"><![CDATA[<a href="<%adminurl%>index.php?action=overview"><%text(_BACKHOME)%></a>
-        <h2><%text(BATCH_CATEGORIES)%></h2>
+        <h2><%text(_BATCH_CATEGORIES)%></h2>
         <p><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b></p>
         <ul>
         <%adminbatchlist%>
@@ -634,7 +634,7 @@ selector();
     <part name="batchmove"><![CDATA[<h2><%text(_MOVE_TITLE)%></h2>
         <form method="post" action="<%adminurl%>index.php">
             <div>
-                <input type="hidden" name="action" value="batch<%batchmovetype%>" />
+                <input type="hidden" name="action" value="<%batchmovetype%>" />
                 <input type="hidden" name="batchaction" value="move" />
                 <%ticket%>
                 <%batchmovelist%>
@@ -645,7 +645,7 @@ selector();
     <part name="batchmovecat"><![CDATA[<h2><%text(_MOVECAT_TITLE)%></h2>
         <form method="post" action="<%adminurl%>index.php">
             <div>
-                <input type="hidden" name="action" value="batch<%batchmovetype%>" />
+                <input type="hidden" name="action" value="<%batchmovetype%>" />
                 <input type="hidden" name="batchaction" value="move" />
                 <%ticket%>
                 <%batchmovelist%>