OSDN Git Service

ADD: 管理画面用スキン/テンプレートの新規作成の際に名前が「admin/」で始まっているかのチェック
authorsakamocchi <o-takashi@sakamocchi.jp>
Fri, 4 May 2012 03:17:01 +0000 (12:17 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Fri, 4 May 2012 03:17:01 +0000 (12:17 +0900)
こうしないと追加したスキン/テンプレートは通常スキン/テンプレートとして一覧表に掲載されてしまう。

nucleus/libs/ADMIN.php
nucleus/locales/ja_Jpan_JP.UTF-8.php

index 4d5a979..e8fab51 100644 (file)
@@ -3577,7 +3577,11 @@ class Admin
                {\r
                        self::error(_ERROR_BADTEMPLATENAME);\r
                }\r
-               if ( Template::exists($name) )\r
+               else if ( !preg_match('#^admin/#', $name) )\r
+               {\r
+                       self::error(_ERROR_BADADMINTEMPLATENAME);\r
+               }\r
+               else if ( Template::exists($name) )\r
                {\r
                        self::error(_ERROR_DUPTEMPLATENAME);\r
                }\r
@@ -3604,7 +3608,7 @@ class Admin
                $desc = Template::getDesc($templateid);\r
                \r
                // 2. create desc thing\r
-               $name = "cloned" . $name;\r
+               $name = $name . "cloned";\r
                \r
                // if a template with that name already exists:\r
                if ( Template::exists($name) )\r
@@ -3617,11 +3621,11 @@ class Admin
                        $name .= $i;\r
                }\r
                \r
-               $newid = Template::admincreateNew($name, $desc);\r
+               $newid = Template::createNew($name, $desc);\r
                \r
                // 3. create clone\r
                // go through parts of old template and add them to the new one\r
-               $query = "SELECT tpartname, tcontent FROM %sWHERE tdesc=%d;";\r
+               $query = "SELECT tpartname, tcontent FROM %s WHERE tdesc=%d;";\r
                $query = sprintf($query, sql_table('template'), (integer) $templateid);\r
                \r
                $res = sql_query($query);\r
@@ -3984,14 +3988,16 @@ class Admin
                // 1. read skin to clone\r
                $skin = new Skin($skinid);\r
                \r
-               $name = "clone_{$skin->getName()}";\r
+               $name = "{$skin->getName()}_clone";\r
                \r
                // if a skin with that name already exists:\r
                if ( Skin::exists($name) )\r
                {\r
                        $i = 1;\r
-                       while (Skin::exists($name . $i))\r
+                       while ( Skin::exists($name . $i) )\r
+                       {\r
                                $i++;\r
+                       }\r
                        $name .= $i;\r
                }\r
                \r
@@ -4033,6 +4039,9 @@ class Admin
                \r
                if ( $content )\r
                {\r
+                       $content = sql_real_escape_string($content);\r
+                       $type = sql_real_escape_string($type);\r
+                       \r
                        $query = "INSERT INTO %s (sdesc, scontent, stype) VALUES (%d, '%s', '%s')";\r
                        $query = sprintf($query, sql_table('skin'), (integer) $newid, $content, $type);\r
                        sql_query($query);\r
@@ -4075,7 +4084,11 @@ class Admin
                {\r
                        self::error(_ERROR_BADSKINNAME);\r
                }\r
-               if ( Skin::exists($name) )\r
+               else if ( !preg_match('#^admin/#', $name) )\r
+               {\r
+                       self::error(_ERROR_BADADMINSKINNAME);\r
+               }\r
+               else if ( Skin::exists($name) )\r
                {\r
                        self::error(_ERROR_DUPSKINNAME);\r
                }\r
@@ -4352,7 +4365,7 @@ class Admin
                \r
                // 1. read skin to clone\r
                $skin = new Skin($skinid, 'Admin', 'AdminSkin');\r
-               $name = "clone_{$skin->getName()}";\r
+               $name = "{$skin->getName()}_clone";\r
                \r
                // if a skin with that name already exists:\r
                if ( Skin::exists($name) )\r
@@ -4374,13 +4387,14 @@ class Admin
                        $skin->getIncludePrefix()\r
                );\r
                \r
+               // 3. clone\r
                $query = "SELECT stype FROM %s WHERE sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), (integer) $skinid);\r
                \r
                $res = sql_query($query);\r
                while ( $row = sql_fetch_assoc($res) )\r
                {\r
-                       self::$skinclonetype($skin, $newid, $row['stype']);\r
+                       self::skinclonetype($skin, $newid, $row['stype']);\r
                }\r
                self::action_adminskinoverview();\r
                return;\r
index 782a1ed..e4a64ae 100644 (file)
@@ -30,6 +30,8 @@
  /********************************************
  *        Start New for 4.0                *
  ********************************************/
+define('_ERROR_BADADMINSKINNAME', '管理画面用スキン名は先頭が「admin/」で始まっている必要があります。');
+define('_ERROR_BADADMINTEMPLATENAME', '管理画面用スキンのテンプレート名は先頭が「admin/」で始まっている必要があります。');
 define('_SKINIE_INVALID_NAMES_DETECTED', 'Invalid skin or templates names detected. Valid names consist of only a-z, A-Z, 0-9, -, and _'); 
 define('_LISTS_AUTHOR', '著者');
 define('_OVERVIEW_OTHER_DRAFTS', 'その他のドラフト');