function execute($user_id) { wfProfileIn(__METHOD__); global $wgUser, $wgOut, $wgExtensionsPath, $wgResourceBasePath, $wgSupressPageTitle, $wgRequest, $wgJsMimeType, $wgCityId, $wgExternalSharedDB; global $wgEnableAchievementsStoreLocalData; // set basic headers $this->setHeaders(); if (wfReadOnly()) { $wgOut->readOnlyPage(); wfProfileOut(__METHOD__); return; } if (!$this->userCanExecute($wgUser)) { $this->displayRestrictionError(); return; } $wgSupressPageTitle = true; $errorMsg = null; $successMsg = null; if ($wgRequest->wasPosted()) { $jsonObj = json_decode($wgRequest->getVal('json-data')); $dbw = null; foreach ($jsonObj->messages as $mKey => $mVal) { $tokens = explode('_', $mKey); if (!isset($tokens[2])) { $tokens[2] = null; } list(, $badgeTypeId, $lap) = $tokens; $badge = new AchBadge($badgeTypeId, $lap); if ($badge->getName() != $mVal) { $article = new Article(Title::newFromText(AchConfig::getInstance()->getBadgeNameKey($badgeTypeId, $lap), NS_MEDIAWIKI)); $article->doEdit($mVal, ''); } } $cond = array(); if (empty($wgEnableAchievementsStoreLocalData)) { $dbw = wfGetDB(DB_MASTER, array(), $wgExternalSharedDB); $cond['wiki_id'] = $wgCityId; } else { $dbw = wfGetDB(DB_MASTER); } if (count($jsonObj->statusFlags)) { foreach ($jsonObj->statusFlags as $mKey => $mVal) { $tokens = explode('_', $mKey); $where = array_merge(array('id' => $tokens[1]), $cond); $dbw->update('ach_custom_badges', array('enabled' => (int) $mVal), $where); } } $successMsg = wfMsg('achievements-special-saved'); if ($wgRequest->getVal('add_edit_plus_category_track') == '1') { $catName = $wgRequest->getVal('edit_plus_category_name'); $category = Category::newFromName($catName); if (!$category || !$category->getID()) { $errorMsg = wfMsg('achievements-non-existing-category'); } else { $safeCatName = $category->getTitle()->getText(); if (strtolower($safeCatName) == 'stub' || stripos($safeCatName, 'stub ') === 0 || stripos($safeCatName, ' stub ') !== false || strripos($safeCatName, ' stub') === strlen($safeCatName) - 5) { $errorMsg = wfMsg('achievements-no-stub-category'); } else { $existingTrack = AchConfig::getInstance()->trackForCategoryExists($safeCatName); if ($existingTrack !== false) { $errorMsg = wfMsg('achievements-edit-plus-category-track-exists', $existingTrack); } else { $dbw->insert('ach_custom_badges', array('wiki_id' => $wgCityId, 'type' => BADGE_TYPE_INTRACKEDITPLUSCATEGORY, 'cat' => $safeCatName)); $jsonObj->sectionId = $badge_type_id = $dbw->insertId(); } } } } } AchConfig::getInstance()->refreshData(true); $template = new EasyTemplate(dirname(__FILE__) . '/templates'); $template->set_vars(array('config' => AchConfig::getInstance(), 'scrollTo' => isset($jsonObj->sectionId) ? $jsonObj->sectionId : null, 'successMsg' => $successMsg, 'errorMsg' => $errorMsg)); $wgOut->addHTML($template->render('SpecialCustomize')); $wgOut->addStyle("common/article_sidebar.css"); $wgOut->addExtensionStyle("{$wgExtensionsPath}/wikia/AchievementsII/css/customize.css"); // FIXME: create a module with all these JS files $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgResourceBasePath}/resources/wikia/libraries/jquery/scrollto/jquery.scrollTo-1.4.2.js\"></script>\n"); $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgExtensionsPath}/wikia/AchievementsII/js/achievements.js\"></script>\n"); $wgOut->addScript("<script type=\"{$wgJsMimeType}\" src=\"{$wgResourceBasePath}/resources/wikia/libraries/aim/jquery.aim.js\"></script>\n"); wfProfileOut(__METHOD__); }
?> <li class="<?php echo $lap == $inTrackBadgesCount - 1 ? ' last' : null; ?> "> <div class="content-form"> <p class="input"> <input class="c-message" type="text" name="msg_<?php echo $badgeTypeId; ?> _<?php echo $lap; ?> " value="<?php echo htmlspecialchars($badge->getName()); ?> "> </p> <p><?php echo $config->getLevelName($badge->getLevel()); ?> (<?php echo wfMsg('achievements-points', $config->getLevelScore($badge->getLevel())); ?> )</p> <p><?php echo $badge->getGiveFor(); ?> </p> </div>