public function testNormalizeInstanceParameters() { $userId = 1; $username = '******'; $timestamp = 999; $task = new HAWelcomeTask(); $params = array('iUserId' => $userId, 'sUserName' => $username, 'iTimestamp' => $timestamp); $task->normalizeInstanceParameters($params); $this->assertEquals($userId, $task->getRecipientId()); $this->assertEquals($username, $task->getRecipientUserName()); $this->assertEquals($timestamp, $task->getTimestamp()); }
/** * Queue the HAWelcome communication using the new task system. This function * will toggle between the old and the new based on the configuration in TaskRunner. * * This will be removed once the system is fully migrated. * * @param int $wgCityId the city id * @param Title $oTitle * @param array $aParams * @return void */ public static function queueHAWelcomeTask($wgCityId, $oTitle, $aParams) { $task = new HAWelcomeTask(); $task->call('sendWelcomeMessage', $aParams); $task->wikiId($wgCityId); $task->title($oTitle); // use $this->title in the job $task->prioritize(); $task->queue(); }
/** * revisionInsertComplete * * static method called as hook * * @static * @access public * * @param Revision $revision revision object * @param string $url url to external object * @param string $flags flags for this revision * * @return true means process other hooks */ public static function revisionInsertComplete(&$revision, $url, $flags) { global $wgUser, $wgCityId, $wgCommandLineMode, $wgSharedDB, $wgErrorLog, $wgMemc, $wgRequest; wfProfileIn(__METHOD__); /** * Do not create task when DB is locked (rt#12229) * Do not create task when we are in $wgCommandLineMode */ $oldValue = $wgErrorLog; $wgErrorLog = true; if (!wfReadOnly() && !$wgCommandLineMode) { /** * Revision has valid Title field but sometimes not filled */ $Title = $revision->getTitle(); if (!$Title) { $Title = Title::newFromId($revision->getPage(), Title::GAID_FOR_UPDATE); $revision->setTitle($Title); } /** * get groups for user rt#12215 */ $groups = $wgUser->getEffectiveGroups(); $invalid = array("bot" => true, "bot-global" => true, "staff" => true, "helper" => true, "sysop" => true, "bureaucrat" => true, "vstf" => true); $canWelcome = true; foreach ($groups as $group) { if (isset($invalid[$group]) && $invalid[$group]) { $canWelcome = false; Wikia::log(__METHOD__, $wgUser->getId(), "Skip welcome, user is at least in group: " . $group); break; } } /** * put possible welcomer into memcached, RT#14067 */ if ($wgUser->getId() && self::isWelcomer($wgUser)) { // BugId:41817 - if ( 1 == $wgUser->getId() ) { notify Mix } if (1 == $wgUser->getId()) { $oTo = $oFrom = new MailAddress('*****@*****.**'); UserMailer::send($oTo, $oFrom, 'BugId:41817 Occurrence Report', sprintf("File: %s\nLine: %s, Date: %s\nOutput: %s", __FILE__, __LINE__, date('Y-m-d H:i:s'), var_export($wgUser->getId(), true))); } $wgMemc->set(wfMemcKey("last-sysop-id"), $wgUser->getId(), 86400); Wikia::log(__METHOD__, $wgUser->getId(), "Store possible welcomer in memcached"); } if ($Title && $canWelcome && !empty($wgSharedDB)) { Wikia::log(__METHOD__, "title", $Title->getFullURL()); $welcomer = trim(wfMsgForContent("welcome-user")); Wikia::log(__METHOD__, "welcomer", $welcomer); if ($welcomer !== "@disabled" && $welcomer !== "-") { /** * check if talk page for wgUser exists * * @todo check editcount for user */ Wikia::log(__METHOD__, "user", $wgUser->getName()); $talkPage = $wgUser->getUserPage()->getTalkPage(); if ($talkPage) { $talkArticle = new Article($talkPage, 0); if (!self::isPosted($talkArticle, $wgUser)) { $welcomeJob = new HAWelcomeJob($Title, array("is_anon" => $wgUser->isAnon(), "user_id" => $wgUser->getId(), "user_ip" => $wgRequest->getIP(), "user_name" => $wgUser->getName())); $welcomeJob->insert(); Wikia::log(__METHOD__, "job"); /** * inform task manager */ $Task = new HAWelcomeTask(); $taskId = $Task->createTask(array("city_id" => $wgCityId), TASK_QUEUED); Wikia::log(__METHOD__, "task", $taskId); } else { Wikia::log(__METHOD__, "exists", sprintf("Talk page for user %s already exits", $wgUser->getName())); } } } else { Wikia::log(__METHOD__, "disabled"); } } } $wgErrorLog = $oldValue; wfProfileOut(__METHOD__); return true; }