本文整理汇总了PHP中Title::newFromDBkey方法的典型用法代码示例。如果您正苦于以下问题:PHP Title::newFromDBkey方法的具体用法?PHP Title::newFromDBkey怎么用?PHP Title::newFromDBkey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Title
的用法示例。
在下文中一共展示了Title::newFromDBkey方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
/**
* Execute special page. Only available to wikihow staff.
*/
function execute()
{
global $wgRequest, $wgOut, $wgUser, $wgLang;
# don't stop execution
set_time_limit(0);
print "querying database...<br>\n";
$dbr = wfGetDB(DB_SLAVE);
$titles = array();
$sql = 'SELECT page_title FROM page WHERE page_namespace=' . NS_MAIN . ' AND page_is_redirect=0';
$res = $dbr->query($sql);
while ($obj = $res->fetchObject()) {
$titles[] = Title::newFromDBkey($obj->page_title);
}
$wgOut->clearHTML();
$file = '/tmp/out.csv';
print "writing output to {$file}...<br>\n";
$fp = fopen($file, 'w');
fputs($fp, "url,new,new-format,old\n");
foreach ($titles as $title) {
$tt = TitleTests::newFromTitle($title);
if (!$tt) {
continue;
}
list($new, $format) = $tt->getTitle();
list($old, ) = $tt->getOldTitle();
$url = 'http://www.wikihow.com/' . $title->getPartialURL();
$out = array($url, $new, $format, $old);
fputcsv($fp, $out);
}
fclose($fp);
print "done.<br>\n";
exit;
}
示例2: execute
/**
* Show the special page
*
* @param $params Mixed: parameter(s) passed to the page or null
*/
public function execute($params)
{
global $wgOut, $wgUser;
// Check permissions
if (!in_array('staff', $wgUser->getEffectiveGroups())) {
throw new ErrorPageError('error', 'badaccess');
}
// Show a message if the database is in read-only mode
if (wfReadOnly()) {
$wgOut->readOnlyPage();
return;
}
// If user is blocked, they don't need to access this page
if ($wgUser->isBlocked()) {
$wgOut->blockedPage();
return;
}
$dbw = wfGetDB(DB_MASTER);
$res = $dbw->select('page', array('page_title'), array('page_namespace' => NS_USER), __METHOD__);
$count = 0;
// To avoid an annoying PHP notice
foreach ($res as $row) {
$user_name_title = Title::newFromDBkey($row->page_title);
$user_name = $user_name_title->getText();
$user_id = User::idFromName($user_name);
if ($user_id > 0) {
$s = $dbw->selectRow('user_profile', array('up_user_id'), array('up_user_id' => $user_id), __METHOD__);
if ($s === false) {
$dbw->insert('user_profile', array('up_user_id' => $user_id, 'up_type' => 0), __METHOD__);
$count++;
}
}
}
$wgOut->addHTML(wfMsgExt('populate-user-profile-done', 'parsemag', $count));
}
示例3: NotifyOnSubPageChange
/**
* Adds users to watchlist if:
* - User is watching parent page
* - User has 'watchlistsubpages' turned on
*
* @param $watchers array of user ID
* @param $title Title object
* @param $editor User object
* @param $notificationTimeoutSql string timeout to the watchlist
*
* @author Jakub Kurcek <jakub@wikia-inc.com>
*/
public static function NotifyOnSubPageChange($watchers, $title, $editor, $notificationTimeoutSql)
{
wfProfileIn(__METHOD__);
// Gets parent data
$arrTitle = explode('/', $title->getDBkey());
if (empty($arrTitle)) {
wfProfileOut(__METHOD__);
return true;
}
// make Title
$t = reset($arrTitle);
$newTitle = Title::newFromDBkey($t);
if (!$newTitle instanceof Title) {
return true;
}
$dbw = wfGetDB(DB_MASTER);
/** @var $dbw Database */
$res = $dbw->select(array('watchlist'), array('wl_user'), array('wl_title' => $newTitle->getDBkey(), 'wl_namespace' => $newTitle->getNamespace(), 'wl_user != ' . intval($editor->getID()), $notificationTimeoutSql), __METHOD__);
// Gets user settings
$parentpageWatchers = array();
while ($row = $dbw->fetchObject($res)) {
$userId = intval($row->wl_user);
$tmpUser = User::newFromId($userId);
if ($tmpUser->getBoolOption(self::PREFERENCES_ENTRY)) {
$parentpageWatchers[] = $userId;
}
unset($tmpUser);
}
// Updates parent watchlist timestamp for $parentOnlyWatchers.
$parentOnlyWatchers = array_diff($parentpageWatchers, $watchers);
$wl = WatchedItem::fromUserTitle($editor, $newTitle);
$wl->updateWatch($parentOnlyWatchers);
wfProfileOut(__METHOD__);
return true;
}
示例4: reprocessAllArticles
/**
* Add meta descriptions for all pages on site. Convert all to the
* given style.
*
* Commenting out this function because it's dangerous. It could delete
* all user-generated descriptions from the table.
*
*/
public static function reprocessAllArticles($style)
{
// pull all pages from DB
$dbw = wfGetDB(DB_MASTER);
$rows = $dbw->select('page', 'page_title', array('page_is_redirect' => 0, 'page_namespace' => NS_MAIN), __METHOD__);
//array('LIMIT' => 100));
$pages = array();
foreach ($rows as $obj) {
$pages[] = $obj->page_title;
}
// delete all existing meta descriptions not of the chosen style
//$dbw->delete('article_meta_info', '*', __METHOD__);
//$dbw->update('article_meta_info',
// array('ami_desc_style = ' . $style,
// "ami_desc = ''"),
// array('ami_desc_style <> ' . $style),
// __METHOD__);
// process all pages, adding then chosen style description to them
foreach ($pages as $page) {
$title = Title::newFromDBkey($page);
if ($title) {
$ami = new ArticleMetaInfo($title, true);
$ami->refreshMetaData($style);
if (@$count++ % 10000 == 0 && $count > 0) {
print date('r') . " done {$count}\n";
}
sleep(2);
// roll out slowly to prevent overwhelming servers with new image requests
} else {
print "title not found: {$page}\n";
}
}
}
示例5: wfSajaxSearch
function wfSajaxSearch($term)
{
global $wgContLang, $wgOut;
$limit = 16;
$l = new Linker();
$term = str_replace(' ', '_', $wgContLang->ucfirst($wgContLang->checkTitleEncoding($wgContLang->recodeInput(js_unescape($term)))));
if (strlen(str_replace('_', '', $term)) < 3) {
return;
}
$db =& wfGetDB(DB_SLAVE);
$res = $db->select('page', 'page_title', array('page_namespace' => 0, "page_title LIKE '" . $db->strencode($term) . "%'"), "wfSajaxSearch", array('LIMIT' => $limit + 1));
$r = "";
$i = 0;
while (($row = $db->fetchObject($res)) && ++$i <= $limit) {
$nt = Title::newFromDBkey($row->page_title);
$r .= '<li>' . $l->makeKnownLinkObj($nt) . "</li>\n";
}
if ($i > $limit) {
$more = '<i>' . $l->makeKnownLink($wgContLang->specialPage("Allpages"), wfMsg('moredotdotdot'), "namespace=0&from=" . wfUrlEncode($term)) . '</i>';
} else {
$more = '';
}
$subtitlemsg = Title::newFromText($term) ? 'searchsubtitle' : 'searchsubtitleinvalid';
$subtitle = $wgOut->parse(wfMsg($subtitlemsg, wfEscapeWikiText($term)));
#FIXME: parser is missing mTitle !
$term = htmlspecialchars($term);
$html = '<div style="float:right; border:solid 1px black;background:gainsboro;padding:2px;"><a onclick="Searching_Hide_Results();">' . wfMsg('hideresults') . '</a></div>' . '<h1 class="firstHeading">' . wfMsg('search') . '</h1><div id="contentSub">' . $subtitle . '</div><ul><li>' . $l->makeKnownLink($wgContLang->specialPage('Search'), wfMsg('searchcontaining', $term), "search={$term}&fulltext=Search") . '</li><li>' . $l->makeKnownLink($wgContLang->specialPage('Search'), wfMsg('searchnamed', $term), "search={$term}&go=Go") . "</li></ul><h2>" . wfMsg('articletitles', $term) . "</h2>" . '<ul>' . $r . '</ul>' . $more;
$response = new AjaxResponse($html);
$response->setCacheDuration(30 * 60);
return $response;
}
示例6: checkDupImage
/**
* Check to see if an image was already uploaded for wikiphoto
*/
public static function checkDupImage($filename)
{
$dbr = self::getDB('read');
$contents = @file_get_contents($filename);
if ($contents) {
$sha1 = sha1($contents);
$db_title = $dbr->selectField('images_sha1', 'is_page_title', array('is_sha1' => $sha1), __METHOD__);
if ($db_title) {
$title = Title::newFromDBkey('Image:' . $db_title);
if ($title && $title->exists()) {
$file = wfFindFile($title);
if ($file) {
$path = $file->getPath();
if ($path && @file_exists($path)) {
$contents = @file_get_contents($path);
if ($contents) {
$sha1_orig = sha1($contents);
if ($sha1_orig == $sha1) {
return $title->getText();
}
}
}
}
}
}
}
return '';
}
示例7: getSelection
public static function getSelection($maxUrls, $minImages)
{
$output = array();
$dbr = wfGetDB(DB_SLAVE);
$sql = 'SELECT pr_title FROM page_randomizer';
$rows = parent::loadRows($dbr, $sql, '', __METHOD__);
shuffle($rows);
foreach ($rows as $row) {
$wikitext = '';
$steps = '';
$titleDBkey = $row['pr_title'];
$title = Title::newFromDBkey($titleDBkey);
if ($title) {
$wikitext = parent::getWikitext($dbr, $title);
}
if ($wikitext) {
list($steps, ) = Wikitext::getStepsSection($wikitext);
}
if ($steps) {
$images = parent::getNumStepsImages($steps);
if ($images >= $minImages) {
$output[] = $title->getPartialURL();
if (count($output) >= $maxUrls) {
break;
}
}
}
}
return $output;
}
示例8: addAll404Redirects
function addAll404Redirects()
{
$rows = DatabaseHelper::batchSelect('page', array('page_title', 'page_id'), array('page_namespace' => NS_MAIN, 'page_is_redirect' => 0), __METHOD__);
foreach ($rows as $row) {
$title = Title::newFromDBkey($row->page_title);
if ($title) {
Misc::modify404Redirect($row->page_id, $title);
}
}
}
示例9: setUser2
function setUser2($username)
{
$title1 = Title::newFromDBkey($username);
$this->challenge_username2 = $title1->getText();
$dbr =& wfGetDB(DB_SLAVE);
$s = $dbr->selectRow('user', array('user_id'), array('user_name' => $this->challenge_username2), $fname);
if ($s === false) {
$this->challenge_user_id_2 = 0;
} else {
$this->challenge_user_id_2 = $s->user_id;
}
}
示例10: __construct
/**
* Constructor
*
* @param $username String: username (usually $wgUser's username)
* @param $filter String: passed to setFilter(); can be either 'user',
* 'friends', 'foes' or 'all', depending on what
* kind of information is wanted
* @param $item_max Integer: maximum amount of items to display in the feed
*/
public function __construct( $username, $filter, $item_max ) {
if ( $username ) {
$title1 = Title::newFromDBkey( $username );
$this->user_name = $title1->getText();
$this->user_id = User::idFromName( $this->user_name );
}
$this->setFilter( $filter );
$this->item_max = $item_max;
$this->now = time();
$this->three_days_ago = $this->now - ( 60 * 60 * 24 * 3 );
$this->items_grouped = array();
}
示例11: searchHTML
private static function searchHTML($terms)
{
$html = '';
$html .= '<style>tr:nth-child(even) {background: #EEE}</style>';
$html .= '<table>';
$dbr = wfGetDB(DB_SLAVE);
$terms = trim(strip_tags($terms));
$terms = '%' . join('%', preg_split('@\\s+@', $terms)) . '%';
$res = $dbr->select('page', array('page_title', 'page_is_redirect', 'page_id'), array('page_namespace' => NS_MAIN, 'LOWER(page_title) LIKE ' . $dbr->addQuotes($terms)), __METHOD__);
foreach ($res as $row) {
$id = $row->page_id;
$title = Title::newFromDBkey($row->page_title);
$html .= "<tr id='row_{$id}'>";
$html .= '<td><a href="' . htmlspecialchars($title->getFullURL('redirect=no')) . '" target="_new">' . htmlspecialchars($title->getText()) . '</a>' . ($row->page_is_redirect ? ' <i>redirect</i>' : '') . '</td>';
$html .= '<td><a href="#" class="delete" id="rm_' . $id . '">delete</a></td>';
$html .= "</tr>\n";
}
$html .= "</table>";
return $html;
}
示例12: computeLatestAll
/**
* Compute the latest good revisions table for all articles.
*/
public static function computeLatestAll()
{
$dbw = wfGetDB(DB_MASTER);
$one_week_ago = wfTimestamp(TS_MW, time() - 7 * 24 * 60 * 60);
$corrected = array();
$updateRevFunc = function ($page_id, $page_title, $rev_id) {
$title = Title::newFromDBkey($page_title);
$goodRev = GoodRevision::newFromTitle($title, $page_id);
if ($goodRev) {
return $goodRev->updateRev($rev_id, true);
} else {
return false;
}
};
// Clear from good_revision table all the deleted articles,
// articles moved to other namespaces and articles
// turned into redirects.
$sql = 'DELETE good_revision FROM good_revision
LEFT JOIN page ON gr_page = page_id
WHERE page_is_redirect <> 0 OR
page_namespace <> 0 OR
page_title IS NULL';
$dbw->query($sql, __METHOD__);
$count = $dbw->affectedRows();
print __METHOD__ . ": removed " . $dbw->affectedRows() . " non-article rows from good_revision table\n";
// List all articles patrolled over the last week and
// compute good_rev on them
$sql = 'SELECT page_title, page_id, MAX(rc_id) AS rc_id
FROM page, recentchanges
WHERE page_id = rc_cur_id AND
page_namespace = 0 AND
page_is_redirect = 0 AND
rc_patrolled = 1 AND
page_touched >= ' . $dbw->addQuotes($one_week_ago) . '
GROUP BY rc_cur_id';
$patrolled = array();
$res = $dbw->query($sql, __METHOD__);
foreach ($res as $obj) {
$patrolled[$obj->page_id] = (array) $obj;
}
// Store recently patrolled articles with their patrolled revision
foreach ($patrolled as $row) {
$rev_id = GoodRevision::getRevFromRC($row['page_id'], $row['rc_id']);
$updated = $updateRevFunc($row['page_id'], $row['page_title'], $rev_id);
if ($updated) {
$corrected[] = $row['page_id'];
}
}
$count = count($corrected);
print __METHOD__ . ": updated {$count} recently patrolled articles in good_revision table\n";
// List all articles that haven't been touched in the last week
// and correct their good revision if need
$sql = 'SELECT page_title, page_id, page_latest
FROM page
WHERE page_namespace = 0 AND
page_is_redirect = 0 AND
page_touched < ' . $dbw->addQuotes($one_week_ago);
$rows = array();
$res = $dbw->query($sql, __METHOD__);
foreach ($res as $obj) {
$rows[] = (array) $obj;
}
// Store latest revision of all articles not edited in the last week
foreach ($rows as $row) {
if (!isset($patrolled[$row['page_id']])) {
$updated = $updateRevFunc($row['page_id'], $row['page_title'], $row['page_latest']);
if ($updated) {
$corrected[] = $row['page_id'];
}
}
}
print __METHOD__ . ": updated " . (count($corrected) - $count) . " older articles in good_revision table\n";
// Call out to DailyEdits to let Titus and others know what should be recomputed
foreach ($corrected as $aid) {
DailyEdits::onGoodRevisionFixed($aid);
}
}
示例13: execute
/**
* Show the special page
*
* @param $params Mixed: parameter(s) passed to the page or null
*/
public function execute( $params ) {
global $wgUser, $wgOut, $wgRequest, $wgUserRelationshipScripts;
// Can't use $this->setHeaders(); here because then it'll set the page
// title to <removerelationship> and we don't want that, we'll be
// messing with the page title later on in the code
$wgOut->setArticleRelated( false );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addExtensionStyle( $wgUserRelationshipScripts . '/UserRelationship.css' );
$usertitle = Title::newFromDBkey( $wgRequest->getVal( 'user' ) );
if ( !$usertitle ) {
$wgOut->setPageTitle( wfMsgHtml( 'ur-error-title' ) );
$wgOut->addWikiText( wfMsgNoTrans( 'ur-add-no-user' ) );
return false;
}
$this->user_name_to = $usertitle->getText();
$this->user_id_to = User::idFromName( $this->user_name_to );
$this->relationship_type = UserRelationship::getUserRelationshipByID(
$this->user_id_to,
$wgUser->getID()
);
if ( $this->relationship_type == 1 ) {
$confirmTitle = wfMsg( 'ur-remove-relationship-title-confirm-friend', $this->user_name_to );
$confirmMsg = wfMsg( 'ur-remove-relationship-message-confirm-friend', $this->user_name_to );
$error = wfMsg( 'ur-remove-error-not-loggedin-friend' );
$pending = wfMsg( 'ur-remove-error-message-pending-friend-request', $this->user_name_to );
} else {
$confirmTitle = wfMsg( 'ur-remove-relationship-title-confirm-foe', $this->user_name_to );
$confirmMsg = wfMsg( 'ur-remove-relationship-message-confirm-foe', $this->user_name_to );
$error = wfMsg( 'ur-remove-error-not-loggedin-foe' );
$pending = wfMsg( 'ur-remove-error-message-pending-foe-request', $this->user_name_to );
}
$out = '';
if ( $wgUser->getID() == $this->user_id_to ) {
$wgOut->setPageTitle( wfMsg( 'ur-error-title' ) );
$out .= '<div class="relationship-error-message">' .
wfMsg( 'ur-remove-error-message-remove-yourself' ) .
'</div>
<div>
<input type="button" class="site-button" value="' . wfMsg( 'ur-main-page' ) . '" size="20" onclick=\'window.location="index.php?title=' . wfMsgForContent( 'mainpage' ) . '"\' />';
if ( $wgUser->isLoggedIn() ) {
$out .= '<input type="button" class="site-button" value="' . wfMsg( 'ur-your-profile' ) . '" size="20" onclick=\'window.location="' . $wgUser->getUserPage()->escapeFullURL() . '"\' />';
}
$out .= '</div>';
$wgOut->addHTML( $out );
} elseif ( $this->relationship_type == false ) {
$wgOut->setPageTitle( wfMsg( 'ur-error-title' ) );
$out .= '<div class="relationship-error-message">' .
wfMsg( 'ur-remove-error-message-no-relationship', $this->user_name_to ) .
'</div>
<div>
<input type="button" class="site-button" value="' . wfMsg( 'ur-main-page' ) . '" size="20" onclick=\'window.location="index.php?title="' . wfMsgForContent( 'mainpage' ) . '"\' />';
if ( $wgUser->isLoggedIn() ) {
$out .= '<input type="button" class="site-button" value="' . wfMsg( 'ur-your-profile' ) . '" size="20" onclick=\'window.location="' . $wgUser->getUserPage()->escapeFullURL() . '"\' />';
}
$out .= '</div>';
$wgOut->addHTML( $out );
} elseif ( UserRelationship::userHasRequestByID( $this->user_id_to, $wgUser->getID() ) == true ) {
$wgOut->setPageTitle( wfMsg( 'ur-error-title' ) );
$out .= '<div class="relationship-error-message">' .
$pending .
'</div>
<div>
<input type="button" class="site-button" value="' . wfMsg( 'ur-main-page' ) . '" size="20" onclick=\'window.location="index.php?title="' . wfMsgForContent( 'mainpage' ) . '"\' />';
if ( $wgUser->isLoggedIn() ) {
$out .= '<input type="button" class="site-button" value="' . wfMsg( 'ur-your-profile' ) . '" size="20" onclick=\'window.location="' . $wgUser->getUserPage()->escapeFullURL() . '"\' />';
}
$out .= '</div>';
$wgOut->addHTML( $out );
} elseif ( $wgUser->getID() == 0 ) {
$wgOut->setPageTitle( wfMsg( 'ur-error-title' ) );
$out .= '<div class="relationship-error-message">' .
$error .
'</div>
<div>
<input type="button" class="site-button" value="' . wfMsg( 'ur-main-page' ) . '" size="20" onclick=\'window.location="index.php?title="' . wfMsgForContent( 'mainpage' ) . '"\' />';
if ( $wgUser->isLoggedIn() ) {
$out .= '<input type="button" class="site-button" value="' . wfMsg( 'ur-your-profile' ) . '" size="20" onclick=\'window.location="' . $wgUser->getUserPage()->escapeFullURL() . '"\' />';
}
$out .= '</div>';
$wgOut->addHTML( $out );
} else {
$rel = new UserRelationship( $wgUser->getName() );
if ( $wgRequest->wasPosted() && $_SESSION['alreadysubmitted'] == false ) {
$_SESSION['alreadysubmitted'] = true;
$rel->removeRelationshipByUserID(
//.........这里部分代码省略.........
示例14: findDataItemForExpElement
/**
* Try to find an SMWDataItem that the given SMWExpElement might
* represent. Returns null if this attempt failed.
*
* @param SMWExpElement $expElement
* @return SMWDataItem or null
*/
public static function findDataItemForExpElement(SMWExpElement $expElement)
{
global $wgContLang;
$dataItem = null;
if ($expElement instanceof SMWExpResource) {
$uri = $expElement->getUri();
$wikiNamespace = self::getNamespaceUri('wiki');
if (strpos($uri, $wikiNamespace) === 0) {
$localName = substr($uri, strlen($wikiNamespace));
$dbKey = urldecode(self::decodeURI($localName));
$parts = explode('-23', $dbKey, 2);
if (count($parts) == 2) {
$subobjectname = $parts[1];
} else {
$subobjectname = '';
}
$parts = explode(':', $dbKey, 2);
if (count($parts) == 1) {
$dataItem = new SMWDIWikiPage($dbKey, NS_MAIN, '', $subobjectname);
} else {
// try the by far most common cases directly before using Title
$namespaceName = str_replace('_', ' ', $parts[0]);
$namespaceId = -1;
foreach (array(SMW_NS_PROPERTY, NS_CATEGORY, NS_USER, NS_HELP) as $nsId) {
if ($namespaceName == $wgContLang->getNsText($nsId)) {
$namespaceId = $nsId;
break;
}
}
if ($namespaceId != -1) {
$dataItem = new SMWDIWikiPage($parts[1], $namespaceId, '', $subobjectname);
} else {
$title = Title::newFromDBkey($dbKey);
if (!is_null($title)) {
$dataItem = new SMWDIWikiPage($title->getDBkey(), $title->getNamespace(), $title->getInterwiki(), $subobjectname);
}
}
}
}
// else: not in wiki namespace -- TODO: this could be an imported URI
} else {
// TODO (currently not needed, but will be useful for displaying external SPARQL results)
}
return $dataItem;
}
示例15: toggle
public static function toggle($pagename)
{
global $wgUser;
$title = Title::newFromDBkey($pagename);
if (!$title) {
return self::returnMsg(self::TITLE_INVALID, $protectState);
}
$aid = $title->getArticleID();
// title must exist!
if ($aid == 0) {
return self::returnMsg(self::TITLE_INVALID, $protectState);
}
// user must have the required clearance
if (!$wgUser->isAllowed('protect')) {
return self::returnMsg(self::USER_INSUFFICIENT_RIGHT, $protectState);
}
$protectState = $title->isProtected('edit');
// format the restriction
// whilst inverting the state...
$group = $protectState ? '' : 'sysop';
$restriction = array('edit' => $group);
// update!
$article = new Article($title);
$code = $article->updateRestrictions($restriction);
$msg = $code ? self::SUCCESS : self::FAILURE;
// update protection status
$protectState = $code ? !$protectState : $protectState;
return self::returnMsg($msg, $protectState);
}