From 32f9cd908ff40d78f04d32277654d7e16a3b9567 Mon Sep 17 00:00:00 2001 From: sakamocchi Date: Wed, 30 May 2012 20:25:28 +0900 Subject: [PATCH] =?utf8?q?FIX:=20Admin=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE?= =?utf8?q?=E5=90=84=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=81=8C=E5=88=B6?= =?utf8?q?=E5=BE=A1=E3=82=92=E6=88=BB=E3=81=99=E3=82=88=E3=81=86=E4=BF=AE?= =?utf8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit エラーページ表示の際、処理が戻っていなかったために続きの処理が行われ、ページが重複して表示されていたバグの修正。今後の機能拡張に備える目的で、exitを使わずに処理を呼び出しファイルに戻すようにした。 --- nucleus/libs/ADMIN.php | 130 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 118 insertions(+), 12 deletions(-) diff --git a/nucleus/libs/ADMIN.php b/nucleus/libs/ADMIN.php index 79fba52..766b4ed 100644 --- a/nucleus/libs/ADMIN.php +++ b/nucleus/libs/ADMIN.php @@ -229,6 +229,7 @@ class Admin if (!$manager->checkTicket()) { self::error(_ERROR_BADTICKET); + return; } } @@ -246,6 +247,7 @@ class Admin else if ( self::existsSkinContents('adminerrorpage') ) { self::error(_BADACTION . ENTITY::hsc($action)); + return; } elseif ( $id != $CONF['AdminSkin'] ) { @@ -253,13 +255,15 @@ class Admin if ( self::$skin && self::existsSkinContents('adminerrorpage') ) { self::error(_BADACTION . ENTITY::hsc($action)); + return; } } else { self::error(_BADACTION . ENTITY::hsc($action)); + return; } - exit; + return; } /** @@ -335,7 +339,7 @@ class Admin if ( $member->isLoggedIn() && $member->canLogin() ) { self::action_overview(); - exit; + return; } /* TODO: needless variable??? */ @@ -425,6 +429,7 @@ class Admin if ( !is_array($selected) || sizeof($selected) == 0 ) { self::error(_BATCH_NOSELECTION); + return; } // On move: when no destination blog/category chosen, show choice now @@ -463,6 +468,7 @@ class Admin if ( !is_array($selected) || sizeof($selected) == 0 ) { self::error(_BATCH_NOSELECTION); + return; } // On delete: check if confirmation has been given @@ -506,6 +512,7 @@ class Admin if ( !is_array($selected) || sizeof($selected) == 0 ) { self::error(_BATCH_NOSELECTION); + return; } // On delete: check if confirmation has been given @@ -538,6 +545,7 @@ class Admin if ( !is_array($selected) || sizeof($selected) == 0 ) { self::error(_BATCH_NOSELECTION); + return; } // On delete: check if confirmation has been given @@ -568,6 +576,7 @@ class Admin if ( !is_array($selected) || sizeof($selected) == 0 ) { self::error(_BATCH_NOSELECTION); + return; } // On move: when no destination blog chosen, show choice now @@ -997,6 +1006,7 @@ class Admin if ( !$manager->existsItem($itemid,1,1) ) { self::error(_ERROR_NOSUCHITEM); + return; } self::$skin->parse('itemdelete'); @@ -1199,6 +1209,7 @@ class Admin if ( $result['status'] == 'error' ) { self::error($result['message']); + return; } $item =& $manager->getItem($result['itemid'], 0, 0); @@ -1261,17 +1272,20 @@ class Admin if (preg_match('#[a-zA-Z0-9|\.,;:!\?=\/\\\\]{90,90}#', $body) != FALSE) { self::error(_ERROR_COMMENT_LONGWORD); + return; } // check length if ( i18n::strlen($body) < 3 ) { self::error(_ERROR_COMMENT_NOCOMMENT); + return; } if ( i18n::strlen($body) > 5000 ) { self::error(_ERROR_COMMENT_TOOLONG); + return; } // prepare body @@ -1495,21 +1509,25 @@ class Admin if ( !isValidDisplayName($name) ) { self::error(_ERROR_BADNAME); + return; } if ( ($name != $mem->getDisplayName()) && Member::exists($name) ) { self::error(_ERROR_NICKNAMEINUSE); + return; } if ( $password != $repeatpassword ) { self::error(_ERROR_PASSWORDMISMATCH); + return; } if ( $password && (i18n::strlen($password) < 6) ) { self::error(_ERROR_PASSWORDTOOSHORT); + return; } if ( $password ) @@ -1527,6 +1545,7 @@ class Admin if ( !$pwdvalid ) { self::error($pwderror); + return; } } } @@ -1534,14 +1553,17 @@ class Admin if ( !NOTIFICATION::address_validation($email) ) { self::error(_ERROR_BADMAILADDRESS); + return; } if ( !$realname ) { self::error(_ERROR_REALNAMEMISSING); + return; } if ( ($locale != '') && (!in_array($locale, i18n::get_available_locale_list())) ) { self::error(_ERROR_NOSUCHTRANSLATION); + return; } // check if there will remain at least one site member with both the logon and admin rights @@ -1554,6 +1576,7 @@ class Admin if ( $r->rowCount() < 2 ) { self::error(_ERROR_ATLEASTONEADMIN); + return; } } @@ -1645,11 +1668,13 @@ class Admin if ( postVar('password') != postVar('repeatpassword') ) { self::error(_ERROR_PASSWORDMISMATCH); + return; } if ( i18n::strlen(postVar('password')) < 6 ) { self::error(_ERROR_PASSWORDTOOSHORT); + return; } $res = Member::create( @@ -1666,6 +1691,7 @@ class Admin if ( $res != 1 ) { self::error($res); + return; } // fire PostRegister event @@ -1725,6 +1751,7 @@ class Admin if ( !$info ) { self::error(_ERROR_ACTIVATE); + return; } $mem =& $manager->getMember($info->vmember); @@ -1732,6 +1759,7 @@ class Admin if ( !$mem ) { self::error(_ERROR_ACTIVATE); + return; } /* TODO: we should consider to use the other way insterad of this */ @@ -1869,6 +1897,7 @@ class Admin if ( !$blog->addTeamMember($memberid, $admin) ) { self::error(_ERROR_ALREADYONTEAM); + return; } self::action_manageteam(); @@ -1915,6 +1944,7 @@ class Admin if ( $error ) { self::error($error); + return; } self::action_manageteam(); return; @@ -2003,6 +2033,7 @@ class Admin if ( $r->rowCount() == 1 ) { self::error(_ERROR_ATLEASTONEBLOGADMIN); + return; } } @@ -2074,6 +2105,7 @@ class Admin if ( !isValidCategoryName($cname) ) { self::error(_ERROR_BADCATEGORYNAME); + return; } $query = "SELECT * FROM %s WHERE cname=%s AND cblog=%d;"; @@ -2082,6 +2114,7 @@ class Admin if ( $res->rowCount() > 0 ) { self::error(_ERROR_DUPCATEGORYNAME); + return; } $blog =& $manager->getBlog($blogid); @@ -2151,6 +2184,7 @@ class Admin if ( !isValidCategoryName($cname) ) { self::error(_ERROR_BADCATEGORYNAME); + return; } $query = "SELECT * FROM %s WHERE cname=%s AND cblog=%d AND not(catid=%d);"; @@ -2159,6 +2193,7 @@ class Admin if ( $res->rowCount() > 0 ) { self::error(_ERROR_DUPCATEGORYNAME); + return; } $query = "UPDATE %s SET cname=%s, cdesc=%s WHERE catid=%d;"; @@ -2177,12 +2212,11 @@ class Admin if ( $desturl ) { redirect($desturl); - exit; - } - else - { - self::action_blogsettings(); + return; } + + self::action_blogsettings(); + return; } @@ -2207,12 +2241,14 @@ class Admin if ( !$blog->isValidCategory($catid) ) { self::error(_ERROR_NOSUCHCATEGORY); + return; } // don't allow deletion of default category if ( $blog->getDefaultCategory() == $catid ) { self::error(_ERROR_DELETEDEFCATEGORY); + return; } // check if catid is the only category left for blogid @@ -2222,6 +2258,7 @@ class Admin if ( $res->rowCount() == 1 ) { self::error(_ERROR_DELETELASTCATEGORY); + return; } self::$skin->parse('categorydelete'); @@ -2247,6 +2284,7 @@ class Admin if ( $error ) { self::error($error); + return; } self::action_blogsettings(); @@ -2452,21 +2490,25 @@ class Admin if ( $notify_address && !NOTIFICATION::address_validation($notify_address) ) { self::error(_ERROR_BADNOTIFY); + return; } if ( !isValidShortName($shortname) ) { self::error(_ERROR_BADSHORTBLOGNAME); + return; } if ( ($blog->getShortName() != $shortname) && $manager->existsBlog($shortname) ) { self::error(_ERROR_DUPSHORTBLOGNAME); + return; } // check if update file is writable if ( $updatefile && !is_writeable($updatefile) ) { self::error(_ERROR_UPDATEFILE); + return; } $blog->setName(trim(postVar('name'))); @@ -2521,6 +2563,7 @@ class Admin if ( $CONF['DefaultBlog'] == $blogid ) { self::error(_ERROR_DELDEFBLOG); + return; } $blog =& $manager->getBlog($blogid); @@ -2551,6 +2594,7 @@ class Admin if ( $CONF['DefaultBlog'] == $blogid ) { self::error(_ERROR_DELDEFBLOG); + return; } // delete all comments @@ -2625,15 +2669,18 @@ class Admin if ( $error ) { self::error($error); + return; } if ( $member->isAdmin() ) { self::action_usermanagement(); + return; } else { self::action_overview(_DELETED_MEMBER); + return; } return; } @@ -2726,11 +2773,13 @@ class Admin if ( !isValidShortName($bshortname) ) { self::error(_ERROR_BADSHORTBLOGNAME); + return; } if ( $manager->existsBlog($bshortname) ) { self::error(_ERROR_DUPSHORTBLOGNAME); + return; } $data = array( @@ -2907,6 +2956,7 @@ class Admin if ( $error ) { self::error($error); + return; } self::$skin->parse('skinieimport'); @@ -2958,6 +3008,7 @@ class Admin if ( $error ) { self::error($error); + return; } $error = $importer->writeToDatabase($allowOverwrite); @@ -2965,6 +3016,7 @@ class Admin if ( $error ) { self::error($error); + return; } /* TODO: we should consider to use the other way insterad of this */ @@ -3084,11 +3136,13 @@ class Admin if ( !isValidTemplateName($name) ) { self::error(_ERROR_BADTEMPLATENAME); + return; } if ( (Template::getNameFromId($templateid) != $name) && Template::exists($name) ) { self::error(_ERROR_DUPTEMPLATENAME); + return; } // 1. Remove all template parts @@ -3247,11 +3301,13 @@ class Admin if ( !isValidTemplateName($name) ) { self::error(_ERROR_BADTEMPLATENAME); + return; } if ( Template::exists($name) ) { self::error(_ERROR_DUPTEMPLATENAME); + return; } $newTemplateId = Template::createNew($name, $desc); @@ -3362,11 +3418,13 @@ class Admin if ( !isValidTemplateName($name) ) { self::error(_ERROR_BADTEMPLATENAME); + return; } if ( (Template::getNameFromId($templateid) != $name) && Template::exists($name) ) { self::error(_ERROR_DUPTEMPLATENAME); + return; } // 1. Remove all template parts @@ -3592,14 +3650,17 @@ class Admin if ( !isValidTemplateName($name) ) { self::error(_ERROR_BADTEMPLATENAME); + return; } else if ( !preg_match('#^admin/#', $name) ) { self::error(_ERROR_BADADMINTEMPLATENAME); + return; } else if ( Template::exists($name) ) { self::error(_ERROR_DUPTEMPLATENAME); + return; } $newTemplateId = Template::createNew($name, $desc); @@ -3688,11 +3749,13 @@ class Admin if ( !isValidSkinName($name) ) { self::error(_ERROR_BADSKINNAME); + return; } if ( SKIN::exists($name) ) { self::error(_ERROR_DUPSKINNAME); + return; } $newId = SKIN::createNew($name, $desc); @@ -3743,11 +3806,13 @@ class Admin if ( !isValidSkinName($name) ) { self::error(_ERROR_BADSKINNAME); + return; } if ( ($skin->getName() != $name) && SKIN::exists($name) ) { self::error(_ERROR_DUPSKINNAME); + return; } if ( !$type ) @@ -3785,6 +3850,7 @@ class Admin if ( !isValidShortName($type) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_FORMAT); + return; } self::$skin->parse('skinedittype'); @@ -3832,6 +3898,7 @@ class Admin if ( $skinid == $CONF['BaseSkin'] ) { self::error(_ERROR_DEFAULTSKIN); + return; } // don't allow deletion of default skins for blogs @@ -3842,6 +3909,7 @@ class Admin if ( $name ) { self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name)); + return; } self::$skin->parse('skindelete'); @@ -3866,6 +3934,7 @@ class Admin if ( $skinid == $CONF['BaseSkin'] ) { self::error(_ERROR_DEFAULTSKIN); + return; } // don't allow deletion of default skins for blogs @@ -3876,6 +3945,7 @@ class Admin if ( $name ) { self::error(_ERROR_SKINDEFDELETE . Entity::hsc($name)); + return; } $data = array('skinid' => $skinid); @@ -3916,6 +3986,7 @@ class Admin if ( !isValidShortName($skintype) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } // don't allow default skinparts to be deleted @@ -3923,6 +3994,7 @@ class Admin if ( in_array($skintype, array('index', 'item', 'archivelist', 'archive', 'search', 'error', 'member', 'imagepopup')) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } self::$skin->parse('skinremovetype'); @@ -3947,6 +4019,7 @@ class Admin if ( !isValidShortName($skintype) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } // don't allow default skinparts to be deleted @@ -3954,6 +4027,7 @@ class Admin if ( in_array($skintype, array('index', 'item', 'archivelist', 'archive', 'search', 'error', 'member', 'imagepopup')) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } $data = array( @@ -4083,14 +4157,17 @@ class Admin if ( !isValidSkinName($name) ) { self::error(_ERROR_BADSKINNAME); + return; } else if ( !preg_match('#^admin/#', $name) ) { self::error(_ERROR_BADADMINSKINNAME); + return; } else if ( Skin::exists($name) ) { self::error(_ERROR_DUPSKINNAME); + return; } /* TODO: $newId is not reused... */ $newId = Skin::createNew($name, $desc); @@ -4139,10 +4216,12 @@ class Admin if ( !isValidSkinName($name) ) { self::error(_ERROR_BADSKINNAME); + return; } if ( ($skin->getName() != $name) && Skin::exists($name) ) { self::error(_ERROR_DUPSKINNAME); + return; } if ( !$type ) { @@ -4181,6 +4260,7 @@ class Admin if ( !isValidShortName($type) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_FORMAT); + return; } self::$skin->parse('adminskinedittype'); @@ -4243,7 +4323,7 @@ class Admin if ( $skinid == $CONF['AdminSkin'] ) { self::error(_ERROR_DEFAULTSKIN); - exit; + return; } /* @@ -4259,9 +4339,9 @@ class Admin if ( count($members) ) { self::error(_ERROR_SKINDEFDELETE . implode(' ' . _AND . ' ', $members)); - exit; + return; } - + $manager->notify('PreDeleteAdminSkin', array('skinid' => (integer) $skinid)); // 1. delete description @@ -4298,6 +4378,7 @@ class Admin if ( !isValidShortName($skintype) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } self::$skin->parse('adminskinremovetype'); @@ -4322,6 +4403,7 @@ class Admin if ( !isValidShortName($skintype) ) { self::error(_ERROR_SKIN_PARTS_SPECIAL_DELETE); + return; } $data =array( @@ -4478,6 +4560,7 @@ class Admin if ( $error ) { self::error($error); + return; } /* TODO: we should consider to use the other way instead of this */ @@ -4546,12 +4629,14 @@ class Admin if ( $error ) { self::error($error); + return; } $error = $importer->writeToDatabase($allowOverwrite); if ( $error ) { self::error($error); + return; } /* TODO: we should consider to use the other way instead of this */ @@ -4654,6 +4739,7 @@ class Admin if ( !NOTIFICATION::address_validation(postVar('AdminEmail')) ) { self::error(_ERROR_BADMAILADDRESS); + return; } // save settings @@ -4885,6 +4971,7 @@ class Admin if ( sizeof($deleted) == 0 ) { self::error(_ERROR_DELETEBAN); + return; } /* TODO: we should use other ways */ @@ -4966,6 +5053,7 @@ class Admin if ( !Ban::addBan($blogid, $iprange, $reason) ) { self::error(_ERROR_ADDBAN); + return; } } else @@ -4983,6 +5071,7 @@ class Admin if ( $failed ) { self::error(_ERROR_ADDBAN); + return; } } self::action_banlist(); @@ -5047,7 +5136,7 @@ class Admin @set_time_limit(1200); Backup::do_backup($useGzip); - exit; + return; } /** @@ -5066,6 +5155,7 @@ class Admin if ( intPostVar('letsgo') != 1 ) { self::error(_ERROR_BACKUP_NOTSURE); + return; } include($DIR_LIBS . 'backup.php'); @@ -5078,6 +5168,7 @@ class Admin if ( $message != '' ) { self::error($message); + return; } self::$skin->parse('backuprestore'); return; @@ -5120,6 +5211,7 @@ class Admin if ( !$manager->pidInstalled($plugid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } self::$skin->parse('pluginhelp'); @@ -5145,11 +5237,13 @@ class Admin if ( $manager->pluginInstalled($name) ) { self::error(_ERROR_DUPPLUGIN); + return; } if ( !checkPlugin($name) ) { self::error(_ERROR_PLUGFILEERROR . ' (' . Entity::hsc($name) . ')'); + return; } // get number of currently installed plugins @@ -5183,6 +5277,7 @@ class Admin $manager->clearCachedInfo('installedPlugins'); self::error(_ERROR_PLUGIN_LOAD); + return; } // check if plugin needs a newer Nucleus version @@ -5193,6 +5288,7 @@ class Admin // ...and show error self::error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc($plugin->getMinNucleusVersion())); + return; } // check if plugin needs a newer Nucleus version @@ -5203,6 +5299,7 @@ class Admin // ...and show error self::error(_ERROR_NUCLEUSVERSIONREQ . Entity::hsc( $plugin->getMinNucleusVersion() . ' patch ' . $plugin->getMinNucleusPatchLevel() ) ); + return; } $pluginList = $plugin->getPluginDep(); @@ -5214,6 +5311,7 @@ class Admin // uninstall plugin again... self::deleteOnePlugin($plugin->getID()); self::error(sprintf(_ERROR_INSREQPLUGIN, Entity::hsc($pluginName))); + return; } } @@ -5284,6 +5382,7 @@ class Admin if ( !$manager->pidInstalled($pid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } self::$skin->parse('plugindelete'); @@ -5309,6 +5408,7 @@ class Admin if ( $error ) { self::error($error); + return; } redirect($CONF['AdminURL'] . '?action=pluginlist'); @@ -5418,6 +5518,7 @@ class Admin if ( !$manager->pidInstalled($plugid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } // 1. get old order number @@ -5453,6 +5554,7 @@ class Admin if ( !$manager->pidInstalled($plugid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } // 1. get old order number @@ -5495,6 +5597,7 @@ class Admin if ( !$manager->pidInstalled($pid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } if ( isset($message) ) @@ -5530,6 +5633,7 @@ class Admin if ( !$manager->pidInstalled($pid) ) { self::error(_ERROR_NOSUCHPLUGIN); + return; } $aOptions = requestArray('plugoption'); @@ -5692,11 +5796,13 @@ class Admin if ( $error ) { self::error($error); + return; } $error = $importer->writeToDatabase($allowOverwrite); if ( $error ) { self::error($error); + return; } $_REQUEST['skininfo'] = $importer->getInfo(); @@ -5704,6 +5810,6 @@ class Admin $_REQUEST['tpltnames'] = $importer->getTemplateNames(); header('Location: ' . $CONF['AdminURL']); - exit; + return; } } -- 2.11.0