/** * 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__); }
protected function executeBuildAndPostWallMessage($defaultWelcomeUser, $welcomeMessage, $recipientName, $textMessage) { $wallMessage = WallMessage::buildNewMessageAndPost($welcomeMessage, $recipientName, $defaultWelcomeUser, $textMessage, false, array(), false, false); return $wallMessage; }
/** * 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; }