/**
  * setWelcomeTalkPage
  *
  * @return boolean status
  */
 private function setWelcomeTalkPage()
 {
     global $wgUser, $wgEnableWallExt;
     $saveUser = $wgUser;
     $this->info('Setting welcome talk page on new wiki or Wall', ['sitename' => $this->wikiName, 'language' => $this->wikiLang]);
     /**
      * set apropriate staff member
      */
     $wgUser = \Wikia::staffForLang($this->wikiLang);
     $wgUser = $wgUser instanceof \User ? $wgUser : \User::newFromName(\CreateWiki::DEFAULT_STAFF);
     $talkParams = array($this->founder->getName(), $wgUser->getName(), $wgUser->getRealName(), $this->wikiName);
     $wallTitle = false;
     if (!empty($this->wikiLang)) {
         $wallTitle = wfMsgExt("autocreatewiki-welcometalk-wall-title", array('language' => $this->wikiLang));
     }
     if (!$wallTitle) {
         $wallTitle = wfMsg("autocreatewiki-welcometalk-wall-title");
     }
     if (!empty($wgEnableWallExt)) {
         $msg = "autocreatewiki-welcometalk-wall";
     } else {
         $msg = "autocreatewiki-welcometalk";
     }
     $talkBody = false;
     if (!empty($this->wikiLang)) {
         /**
          * custom lang translation
          */
         $talkBody = wfMsgExt($msg, array('language' => $this->wikiLang), $talkParams);
     }
     if (!$talkBody) {
         /**
          * wfMsgExt should always return message, but just in case...
          */
         $talkBody = wfMsg($msg, $talkParams);
     }
     if (!empty($wgEnableWallExt)) {
         $wallMessage = \WallMessage::buildNewMessageAndPost($talkBody, $this->founder->getName(), $wgUser, $wallTitle, false, array(), true, false);
         if ($wallMessage === false) {
             return false;
         }
         $this->info("wall message created", ['founder_name' => $this->founder->getName()]);
         return true;
     }
     $talkPage = $this->founder->getTalkPage();
     if ($talkPage) {
         /**
          * and now create talk article
          */
         $talkArticle = new \Article($talkPage, 0);
         if (!$talkArticle->exists()) {
             $talkArticle->doEdit($talkBody, wfMsg("autocreatewiki-welcometalk-log"), EDIT_SUPPRESS_RC | EDIT_MINOR | EDIT_FORCE_BOT);
         } else {
             $this->warning('talkpage already exists', ['url' => $talkPage->getFullURL()]);
         }
     } else {
         $this->error("Can't take talk page for user", ['founder_id' => $this->founder->getId()]);
     }
     $wgUser = $saveUser;
     // Restore user object after creating talk message
     return true;
 }
 public function postNewMessage()
 {
     wfProfileIn(__METHOD__);
     $relatedTopics = $this->request->getVal('relatedTopics', array());
     $this->response->setVal('status', true);
     /**
      * BugId:68629 XSS vulnerable. We DO NOT want to have
      * any HTML here. Hence the strip_tags call.
      */
     $titleMeta = strip_tags($this->request->getVal('messagetitle', null));
     $titleMeta = substr($titleMeta, 0, 200);
     $body = $this->getConvertedContent($this->request->getVal('body'));
     /**
      * @var $helper WallHelper
      */
     $helper = new WallHelper();
     if (empty($titleMeta)) {
         $titleMeta = $helper->getDefaultTitle();
     }
     if (empty($body)) {
         $this->response->setVal('status', false);
         wfProfileOut(__METHOD__);
         return true;
     }
     $ns = $this->request->getVal('pagenamespace');
     $notifyEveryone = false;
     if ($helper->isAllowedNotifyEveryone($ns, $this->wg->User)) {
         $notifyEveryone = $this->request->getVal('notifyeveryone', false) == 1;
     }
     $title = Title::newFromText($this->request->getVal('pagetitle'), $ns);
     $wallMessage = WallMessage::buildNewMessageAndPost($body, $title, $this->wg->User, $titleMeta, false, $relatedTopics, true, $notifyEveryone);
     if ($wallMessage === false) {
         error_log('WALL_NOAC_ON_POST');
         $this->response->setVal('status', false);
         wfProfileOut(__METHOD__);
         return true;
     }
     $wallMessage->load(true);
     $this->response->setVal('message', $this->app->renderView('WallController', 'message', array('new' => true, 'comment' => $wallMessage)));
     wfProfileOut(__METHOD__);
 }
示例#3
0
 protected function executeBuildAndPostWallMessage($defaultWelcomeUser, $welcomeMessage, $recipientName, $textMessage)
 {
     $wallMessage = WallMessage::buildNewMessageAndPost($welcomeMessage, $recipientName, $defaultWelcomeUser, $textMessage, false, array(), false, false);
     return $wallMessage;
 }
示例#4
0
 /**
  * setWelcomeTalkPage
  *
  * @access private
  *
  * @return boolean status
  */
 private function setWelcomeTalkPage()
 {
     global $wgUser, $wgEnableWallExt;
     $saveUser = $wgUser;
     Wikia::log(__METHOD__, "talk", "Setting welcome talk page on new wiki or Wall");
     Wikia::log(__METHOD__, "vars", "sitename: {$this->wikiaName}; language: {$this->wikiaLang}");
     /**
      * set apropriate staff member
      */
     $wgUser = Wikia::staffForLang($this->wikiaLang);
     $wgUser = $wgUser instanceof User ? $wgUser : User::newFromName(CreateWiki::DEFAULT_STAFF);
     $talkParams = array($this->mFounder->getName(), $wgUser->getName(), $wgUser->getRealName(), $this->wikiaName);
     $wallTitle = false;
     if (!empty($this->wikiaLang)) {
         $wallTitle = wfMsgExt("autocreatewiki-welcometalk-wall-title", array('language' => $this->wikiaLang));
     }
     if (!$wallTitle) {
         $wallTitle = wfMsg("autocreatewiki-welcometalk-wall-title");
     }
     if (!empty($wgEnableWallExt)) {
         $msg = "autocreatewiki-welcometalk-wall";
     } else {
         $msg = "autocreatewiki-welcometalk";
     }
     $talkBody = false;
     if (!empty($this->wikiaLang)) {
         /**
          * custom lang translation
          */
         $talkBody = wfMsgExt($msg, array('language' => $this->wikiaLang), $talkParams);
     }
     if (!$talkBody) {
         /**
          * wfMsgExt should always return message, but just in case...
          */
         $talkBody = wfMsg($msg, $talkParams);
     }
     if (!empty($wgEnableWallExt)) {
         $wallMessage = WallMessage::buildNewMessageAndPost($talkBody, $this->mFounder->getName(), $wgUser, $wallTitle, false, array(), true, false);
         if ($wallMessage === false) {
             return false;
         }
         Wikia::log(__METHOD__, "wall", $this->mFounder->getName());
         return true;
     }
     $talkPage = $this->mFounder->getTalkPage();
     if ($talkPage) {
         Wikia::log(__METHOD__, "talk", $talkPage->getFullUrl());
         /**
          * and now create talk article
          */
         $talkArticle = new Article($talkPage, 0);
         if (!$talkArticle->exists()) {
             $talkArticle->doEdit($talkBody, wfMsg("autocreatewiki-welcometalk-log"), EDIT_SUPPRESS_RC | EDIT_MINOR | EDIT_FORCE_BOT);
         } else {
             Wikia::log(__METHOD__, "talkpage", sprintf("%s already exists", $talkPage->getFullURL()));
         }
     } else {
         Wikia::log(__METHOD__, "error", "Can't take talk page for user " . $this->mFounder->getId());
     }
     $wgUser = $saveUser;
     // Restore user object after creating talk message
     return true;
 }