/** * axWFactoryRemoveVariable * * Ajax call, remove * * @access public * @author eloy@wikia * * @return string: json string with array of variables */ function axWFactoryRemoveVariable() { global $wgUser, $wgRequest; $error = 0; $return = ""; if (!$wgUser->isAllowed('wikifactory')) { $error++; $return = Wikia::errormsg("You are not allowed to change variable value"); } else { $cv_id = $wgRequest->getVal('varId'); $city_id = $wgRequest->getVal('cityid'); $tag_name = $wgRequest->getVal('tagName'); $tag_wiki_count = 0; $form_id = $wgRequest->getVal("formId", null); $reason = $wgRequest->getVal("reason", null); if (!WikiFactory::removeVarById($cv_id, $city_id, $reason)) { $error++; $return = Wikia::errormsg("Variable not removed because of problems with database. Try again."); } else { $return = Wikia::successmsg(" Value of variable was removed "); if (!empty($tag_name)) { // apply changes to all wikis with given tag $tagsQuery = new WikiFactoryTagsQuery($tag_name); foreach ($tagsQuery->doQuery() as $tagged_wiki_id) { if (WikiFactory::removeVarByID($cv_id, $tagged_wiki_id)) { $tag_wiki_count++; } } $return .= Wikia::successmsg(" ({$tag_wiki_count} wikis affected)"); } } } if (empty($form_id)) { $div_name = "wf-variable-parse"; } else { $div_name = "wf-variable-parse-{$form_id}"; } return json_encode(array("div-body" => $return, "is-error" => $error, "tag-name" => $tag_name, "tag-wikis" => $tag_wiki_count, "div-name" => $div_name)); }
/** * doMultiRemoveTags * * @access private * @author uberfuzzy@wikia-inc.com * * @return text message (use Wikia::*box functions) */ private function doMultiRemoveTags() { /* working data is stored in object prior to call $this->mRemoveTag; has the tag to remove $this->mRemoveTags; has int array of wiki id to remove from */ /* in theory, these should never trigger, but BSTS */ if (empty($this->mRemoveTag)) { return Wikia::errorbox("no tag to remove?"); } if (empty($this->mRemoveTags)) { return Wikia::errorbox("no items to remove?"); } /* turn the tag string into the tag id */ $tagID = WikiFactoryTags::idFromName($this->mRemoveTag); if ($tagID === false) { return Wikia::errorbox("tag [{$this->mRemoveTag}] doesnt exist"); } /* to get list of all wikis with this tag, and later, use this to cache clear */ $tagsQuery = new WikiFactoryTagsQuery($this->mRemoveTag); $fails = array(); foreach ($this->mRemoveTags as $wkid) { $oTag = new WikiFactoryTags($wkid); $ret = $oTag->removeTagsById(array($tagID)); if ($ret === false) { $fails[] = $wkid; } } /* force dump of the tag_map in memcache */ $tagsQuery->clearCache(); /* since we /hopefully/ removed some tags from wikis, force the search results for this pageload to be empty. */ $this->mTagWikiIds = array(); #print "(forcing mTagWikiIds to null at ".gmdate('r').")"; if (empty($fails)) { return Wikia::successbox("ok!"); } else { return Wikia::errorbox("ok, but failed at " . count($fails) . " wikis" . " (" . implode(", ", $fails) . ")"); } }