Example #1
0
 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());
 }
Example #2
0
 /**
  * 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();
 }
Example #3
0
 /**
  * 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;
 }