From c4a6f69c983f5f173cb346b96f446ae725d27c19 Mon Sep 17 00:00:00 2001 From: sakamocchi Date: Sun, 27 May 2012 11:48:28 +0900 Subject: [PATCH] =?utf8?q?CHANGE:=20new=20Skin=E3=81=A7=E3=81=AF=E3=81=AA?= =?utf8?q?=E3=81=8FManager:getSkin()=E3=82=92=E7=94=A8=E3=81=84=E3=82=8B?= =?utf8?q?=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 前回のコミットで追加した、Managerクラスのスキンオブジェクトキャッシュ機構を利用するように修正。 --- action.php | 2 +- nucleus/bookmarklet.php | 2 +- nucleus/index.php | 2 +- nucleus/libs/ADMIN.php | 43 ++++++++++++++++++++-------------------- nucleus/libs/AdminActions.php | 26 ++++++++++++++---------- nucleus/libs/MANAGER.php | 7 ++++++- nucleus/libs/SKIN.php | 4 +--- nucleus/libs/globalfunctions.php | 10 +++++----- nucleus/libs/showlist.php | 4 ++-- nucleus/libs/skinie.php | 6 ++++-- nucleus/xmlrpc/server.php | 4 ++-- 11 files changed, 61 insertions(+), 49 deletions(-) diff --git a/action.php b/action.php index 6cf854a..6cbe25e 100644 --- a/action.php +++ b/action.php @@ -28,7 +28,7 @@ $errorInfo = $a->doAction($action); if ( $errorInfo ) { - $skin = new SKIN($errorInfo['skinid']); + $skin =& $manager->getSkin($errorInfo['skinid']); doError($errorInfo['message'], $skin); } diff --git a/nucleus/bookmarklet.php b/nucleus/bookmarklet.php index 6c2bee1..a7ddd84 100644 --- a/nucleus/bookmarklet.php +++ b/nucleus/bookmarklet.php @@ -32,7 +32,7 @@ if ( !Skin::existsID($skinid) ) echo _ERROR_SKIN; exit; } -$skin = new Skin($skinid, 'AdminActions', 'AdminSkin'); +$skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin'); // check logged-in or pass through $action = requestVar('action'); diff --git a/nucleus/index.php b/nucleus/index.php index a2b5368..cad6257 100644 --- a/nucleus/index.php +++ b/nucleus/index.php @@ -83,7 +83,7 @@ if ( !Admin::initialize() ) /* TODO: this is a bad way... */ sendContentType('text/html', 'admin-' . $action); - $skin = new Skin(0, 'AdminActions', 'AdminSkin'); + $skin =& $manager->getSkin(0, 'AdminActions', 'AdminSkin'); if ( $bNeedsLogin ) { $skin->parse('fileparse', $DIR_SKINS . 'admin/showlogin.skn'); diff --git a/nucleus/libs/ADMIN.php b/nucleus/libs/ADMIN.php index 1800e68..8fa7310 100644 --- a/nucleus/libs/ADMIN.php +++ b/nucleus/libs/ADMIN.php @@ -151,7 +151,7 @@ class Admin static public function initialize() { - global $CONF, $DIR_LIBS; + global $CONF, $DIR_LIBS, $manager; /* NOTE: 1. decide which skinid to use */ $skinid = $CONF['AdminSkin']; @@ -174,7 +174,7 @@ class Admin } /* NOTE: 3. initializing each members */ - self::$skin = new Skin($skinid, 'AdminActions', 'AdminSkin'); + self::$skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin'); self::$action = ''; self::$extrahead = ''; self::$passvar = ''; @@ -250,7 +250,7 @@ class Admin } elseif ( $id != $CONF['AdminSkin'] ) { - self::$skin = new Skin($CONF['AdminSkin'], 'AdminActions'); + self::$skin =& $manager->getSkin($CONF['AdminSkin'], 'AdminActions'); if ( self::$skin && self::existsSkinContents('adminerrorpage') ) { self::error(_BADACTION . ENTITY::hsc($action)); @@ -3719,7 +3719,7 @@ class Admin */ static private function action_skineditgeneral() { - global $member; + global $manager, $member; $skinid = intRequestVar('skinid'); @@ -3731,7 +3731,7 @@ class Admin $inc_mode = postVar('inc_mode'); $inc_prefix = postVar('inc_prefix'); - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); // 1. Some checks if ( !isValidSkinName($name) ) @@ -3793,7 +3793,7 @@ class Admin */ static private function action_skinupdate() { - global $member; + global $manager, $member; $skinid = intRequestVar('skinid'); $content = trim(postVar('content')); @@ -3801,7 +3801,7 @@ class Admin $member->isAdmin() or self::disallow(); - $skin = new SKIN($skinid); + $skin =& $manager->getSKIN($skinid); $skin->update($type, $content); self::action_skinedittype(_SKIN_UPDATED); @@ -3816,7 +3816,7 @@ class Admin */ static private function action_skindelete() { - global $member, $manager, $CONF; + global $manager, $member, $CONF; $skinid = intRequestVar('skinid'); @@ -3978,14 +3978,14 @@ class Admin */ static private function action_skinclone() { - global $member; + global $manager, $member; $member->isAdmin() or self::disallow(); $skinid = intRequestVar('skinid'); // 1. read skin to clone - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); $name = "{$skin->getName()}_clone"; @@ -4115,7 +4115,7 @@ class Admin */ static private function action_adminskineditgeneral() { - global $member; + global $manager, $member; $skinid = intRequestVar('skinid'); @@ -4127,7 +4127,7 @@ class Admin $inc_mode = postVar('inc_mode'); $inc_prefix = postVar('inc_prefix'); - $skin = new Skin($skinid, 'AdminActions', 'AdminSkin'); + $skin =& $manager->getSkin($skinid, 'AdminActions', 'AdminSkin'); // 1. Some checks if ( !isValidSkinName($name) ) @@ -4189,14 +4189,15 @@ class Admin */ static private function action_adminskinupdate() { - global $member; - $skinid = intRequestVar('skinid'); - $content = trim(postVar('content')); - $type = postVar('type'); + global $manager, $member; + + $skinid = intRequestVar('skinid'); + $content = trim(postVar('content')); + $type = postVar('type'); $member->isAdmin() or self::disallow(); - $skin = new Skin($skinid, 'Admin', 'AdminSkin'); + $skin =& $manager->getSkin($skinid, 'Admin', 'AdminSkin'); $skin->update($type, $content); self::action_adminskinedittype(_SKIN_UPDATED); return; @@ -4343,14 +4344,14 @@ class Admin */ static private function action_adminskinclone() { - global $member; + global $manager, $member; $member->isAdmin() or self::disallow(); $skinid = intRequestVar('skinid'); // 1. read skin to clone - $skin = new Skin($skinid, 'Admin', 'AdminSkin'); + $skin =& $manager->getSkin($skinid, 'Admin', 'AdminSkin'); $name = "{$skin->getName()}_clone"; // if a skin with that name already exists: @@ -4504,7 +4505,7 @@ class Admin */ static private function action_adminskiniedoimport() { - global $DIR_LIBS, $DIR_SKINS, $member; + global $DIR_LIBS, $DIR_SKINS, $manager, $member; $member->isAdmin() or self::disallow(); @@ -4558,7 +4559,7 @@ class Admin $query = "UPDATE %s SET value = %d WHERE name = 'AdminSkin'"; $query = sprintf($query, sql_table('config'), $res); DB::execute($query); - $skin = new Skin(0, 'AdminActions', 'AdminSkin'); + $skin =& $manager->Skin(0, 'AdminActions', 'AdminSkin'); $skin->parse('importAdmin', $DIR_SKINS . 'admin/defaultimporter.skn'); } else diff --git a/nucleus/libs/AdminActions.php b/nucleus/libs/AdminActions.php index 7651600..0e1aca6 100644 --- a/nucleus/libs/AdminActions.php +++ b/nucleus/libs/AdminActions.php @@ -1076,17 +1076,19 @@ class AdminActions extends BaseActions */ public function parse_allowedskinactions() { + global $manager; + $type = strtolower(trim(requestVar('type'))); $skinid = intRequestVar('skinid'); if ( !preg_match('#^admin#', $this->skintype) ) { - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); $tag = 'skinvar'; } else { - $skin = new Skin($skinid, 'AdminActions'); + $skin =& $manager->getSkin($skinid, 'AdminActions'); $tag = 'adminskinvar'; } @@ -1899,13 +1901,13 @@ class AdminActions extends BaseActions if ( !preg_match('#^admin#', $this->skintype) ) { - $skin = new Skin($CONF['BaseSkin']); + $skin =& $manager->getSkin($CONF['BaseSkin']); /* TODO: removeaction? */ $template['editaction'] = 'skinedittype'; } else { - $skin = new Skin($CONF['AdminSkin'], 'AdminActions'); + $skin =& $manager->getSkin($CONF['AdminSkin'], 'AdminActions'); $template['editaction'] = 'adminskinedittype'; /* TODO: removeaction? */ } @@ -2375,15 +2377,17 @@ class AdminActions extends BaseActions */ public function parse_editskin($type = 'id') { + global $manager; + $skinid = intRequestVar('skinid'); if ( !preg_match('#^admin#', $this->skintype) ) { - $skin = new SKIN($skinid); + $skin =& $manager->getSKIN($skinid); } else { - $skin = new SKIN($skinid, 'AdminActions'); + $skin =& $manager->getSKIN($skinid, 'AdminActions'); } switch ( $type ) @@ -2420,6 +2424,8 @@ class AdminActions extends BaseActions */ public function parse_editskintype($stype = 'id') { + global $manager; + static $skin = NULL; static $types = array(); @@ -2429,11 +2435,11 @@ class AdminActions extends BaseActions if ( !preg_match('#^admin#', $this->skintype) ) { - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); } else { - $skin = new Skin($skinid, 'AdminActions'); + $skin =& $manager->getSkin($skinid, 'AdminActions'); } $types = $skin->getDefaultTypes(); @@ -4225,13 +4231,13 @@ class AdminActions extends BaseActions if ( !preg_match('#^admin#', $this->skintype) ) { - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); $template['editaction'] = 'skinedittype'; $template['removeaction'] = 'skinremovetype'; } else { - $skin = new Skin($skinid, 'AdminActions'); + $skin =& $manager->getSkin($skinid, 'AdminActions'); $template['editaction'] = 'adminskinedittype'; $template['removeaction'] = 'adminskinremovetype'; } diff --git a/nucleus/libs/MANAGER.php b/nucleus/libs/MANAGER.php index e1fe1d4..1fc1c65 100644 --- a/nucleus/libs/MANAGER.php +++ b/nucleus/libs/MANAGER.php @@ -225,9 +225,14 @@ class Manager } /** + * Manager::getSkin() * + * @param integer $skinid ID for skin + * @param string $action_class action class for handling skin variables + * @param string $event_identifier identifier for event name + * @return object instance of Skin class */ - public function &getSkin($skinid, $action_class='', $event_identifier='') + public function &getSkin($skinid, $action_class='Actions', $event_identifier='Skin') { if ( !array_key_exists($skinid, $this->skins) ) { diff --git a/nucleus/libs/SKIN.php b/nucleus/libs/SKIN.php index b4abe0c..82e73a6 100644 --- a/nucleus/libs/SKIN.php +++ b/nucleus/libs/SKIN.php @@ -54,9 +54,7 @@ class Skin $this->id = (integer) $id; - /* - * NOTE: include needed action class - */ + /* NOTE: include needed action class */ if ( $action_class != 'Actions' ) { if ( !class_exists($action_class, FALSE) diff --git a/nucleus/libs/globalfunctions.php b/nucleus/libs/globalfunctions.php index 7e7fee6..420f1c1 100644 --- a/nucleus/libs/globalfunctions.php +++ b/nucleus/libs/globalfunctions.php @@ -1246,7 +1246,7 @@ function selector() $type = strtolower($special); } - $skin = new SKIN($skinid); + $skin =& $manager->get($skinid); if ( !$skin->isValid() ) { @@ -1297,7 +1297,7 @@ function doError($msg, $skin = '') // this statement should actually never be executed $id = $CONF['BaseSkin']; } - $skin = new Skin($id); + $skin =& $manager->getSkin($id); } $errormessage = $msg; @@ -1367,15 +1367,15 @@ function removeBreaks($var) */ function parseFile($filename, $includeMode = 'normal', $includePrefix = '') { - global $skinid; + global $manager, $skinid; if ( !$skinid || !existsID($skinid) ) { - $skin = new Skin($CONF['BaseSkin']); + $skin =& $manager->getSkin($CONF['BaseSkin']); } else { - $skin = new Skin($skinid); + $skin =& $manager->getSkin($skinid); } $oldIncludeMode = Parser::getProperty('IncludeMode'); diff --git a/nucleus/libs/showlist.php b/nucleus/libs/showlist.php index efe6aab..14b2929 100644 --- a/nucleus/libs/showlist.php +++ b/nucleus/libs/showlist.php @@ -1741,11 +1741,11 @@ function listplug_table_skinlist($vars, $type, $template_name = '') if ( !preg_match('#^admin#', $current['sdname']) ) { - $skin = new Skin($current['sdnumber']); + $skin =& $manager->getSkin($current['sdnumber']); } else { - $skin = new Skin($current['sdnumber'], 'AdminActions'); + $skin =& $manager->getSkin($current['sdnumber'], 'AdminActions'); } $available_types = $skin->getAvailableTypes(); diff --git a/nucleus/libs/skinie.php b/nucleus/libs/skinie.php index e15d0bd..30e55e3 100644 --- a/nucleus/libs/skinie.php +++ b/nucleus/libs/skinie.php @@ -210,6 +210,8 @@ class SkinImport */ public function writeToDatabase($allowOverwrite = 0) { + global $manager; + $existingSkins = $this->checkSkinNameClashes(); $existingTemplates = $this->checkTemplateNameClashes(); $invalidSkinNames = $this->checkSkinNamesValid(); @@ -270,7 +272,7 @@ class SkinImport $data['includeMode'], $data['includePrefix'] ); - $skinObj = new SKIN($skinid); + $skinObj =& $manager->getSkin($skinid); } // 2. add parts @@ -698,7 +700,7 @@ class SkinExport foreach ($this->skins as $skinId => $skinName) { $skinId = intval($skinId); - $skinObj = new SKIN($skinId); + $skinObj =& $manager->getSkin($skinId); echo "\t" . '' . "\n"; echo "\t\t" . Entity::hsc($skinObj->getDescription()) . "\n"; diff --git a/nucleus/xmlrpc/server.php b/nucleus/xmlrpc/server.php index 462e340..ead2bf2 100644 --- a/nucleus/xmlrpc/server.php +++ b/nucleus/xmlrpc/server.php @@ -282,7 +282,7 @@ function _getSkinPart($blogid, $username, $password, $type) { // 3. return skin part $blog =& $manager->getBlog($blogid); - $skin = new SKIN($blog->getDefaultSkin()); + $skin =& $manager->getSkin($blog->getDefaultSkin()); return new xmlrpcresp(new xmlrpcval($skin->getContentFromDB($type),"string")); } @@ -303,7 +303,7 @@ function _setSkinPart($blogid, $username, $password, $content, $type) { // 3. update skin part $blog =& $manager->getBlog($blogid); - $skin = new SKIN($blog->getDefaultSkin()); + $skin =& $manager->getSkin($blog->getDefaultSkin()); $skin->update($type, $content); return new xmlrpcresp(new xmlrpcval(1,'boolean')); -- 2.11.0