/** * @param $title Title * @param $forceOverwrite bool * @return bool */ function saveCollection($title, $forceOverwrite = false) { global $wgRequest, $wgUser; $article = new Article($title); if ($article->exists() && !$forceOverwrite) { return false; } $articleText = "{{" . wfMsgForContent('coll-savedbook_template') . "}}\n\n"; $collection = CollectionSession::getCollection(); if ($collection['title']) { $articleText .= '== ' . $collection['title'] . " ==\n"; } if ($collection['subtitle']) { $articleText .= '=== ' . $collection['subtitle'] . " ===\n"; } if (!empty($collection['items'])) { foreach ($collection['items'] as $item) { if ($item['type'] == 'chapter') { $articleText .= ';' . $item['title'] . "\n"; } elseif ($item['type'] == 'article') { if ($item['currentVersion'] == 1) { $articleText .= ":[[" . $item['title']; if (isset($item['displaytitle']) && $item['displaytitle']) { $articleText .= "|" . $item['displaytitle']; } $articleText .= "]]\n"; } else { $articleText .= ":[{{fullurl:" . $item['title']; $articleText .= "|oldid=" . $item['revision'] . "}} "; if (isset($item['displaytitle']) && $item['displaytitle']) { $articleText .= $item['displaytitle']; } else { $articleText .= $item['title']; } $articleText .= "]\n"; } } // $articleText .= $item['revision'] . "/" . $item['latest']."\n"; } } $t = wfMsgForContent('coll-bookscategory'); if (!wfEmptyMsg('coll-bookscategory', $t) && $t != '-') { $catTitle = Title::makeTitle(NS_CATEGORY, $t); if (!is_null($catTitle)) { $articleText .= "\n[[" . $catTitle->getPrefixedText() . "|" . wfEscapeWikiText($title->getSubpageText()) . "]]\n"; } } $req = new DerivativeRequest($wgRequest, array('action' => 'edit', 'title' => $title->getPrefixedText(), 'text' => $articleText, 'token' => $wgUser->editToken()), true); $api = new ApiMain($req, true); $api->execute(); return true; }
/** * Backend of several following SAJAX function handlers... * @param String $action provided by the specific handlers internally * @param String $article title passed in from client * @return AjaxResponse with JSON-encoded array including HTML fragment. */ function wfCollectionSuggestAction($action, $article) { $json = new Services_JSON(); $result = CollectionSuggest::refresh($action, $article); $undoLink = Xml::element('a', array('href' => SkinTemplate::makeSpecialUrl('Book', array('bookcmd' => 'suggest', 'undo' => $action, 'arttitle' => $article)), 'onclick' => "collectionSuggestCall('UndoArticle'," . Xml::encodeJsVar(array($action, $article)) . "); return false;", 'title' => wfMsg('coll-suggest_undo_tooltip')), wfMsg('coll-suggest_undo')); $result['last_action'] = wfMsg("coll-suggest_article_{$action}", htmlspecialchars($article), $undoLink); $result['collection'] = CollectionSession::getCollection(); $r = new AjaxResponse($json->encode($result)); $r->setContentType('application/json'); return $r; }