public function getLists() { $titleStr = $this->request->getVal('title', null); $title = Title::newFromText($titleStr, NS_RELATED_VIDEOS); $relatedVideosNSData = RelatedVideosNamespaceData::newFromTitle($title); $this->setVal('data', $relatedVideosNSData->getData()); }
public function addVideo($articleId, $url) { wfProfileIn(__METHOD__); if (empty($articleId)) { wfProfileOut(__METHOD__); return wfMsg('related-videos-error-no-article-id'); } /* $targetTitle = F::build('Title', array($articleId), 'newFromId'); if (!$targetTitle->exists()) { wfProfileOut( __METHOD__ ); return wfMsg('related-videos-error-unknown', 876462); } // check permission $permErrors = $targetTitle->getUserPermissionsErrors( 'edit', F::app()->wg->user ); if ($permErrors) { wfProfileOut( __METHOD__ ); return wfMsg('related-videos-error-permission-article'); }*/ $videoService = F::build('VideoService'); $retval = $videoService->addVideo($url); if (!is_array($retval)) { wfProfileOut(__METHOD__); return $retval; } list($videoTitle, $videoPageId, $videoProvider) = $retval; // add to article's whitelist //$rvn = F::build( 'RelatedVideosNamespaceData', array( $targetTitle ), 'newFromTargetTitle' ); $rvn = RelatedVideosNamespaceData::newFromGeneralMessage(); if (empty($rvn)) { $rvn = RelatedVideosNamespaceData::createGlobalList(); } $entry = $rvn->createEntry($videoTitle->getText(), $videoProvider == self::V_WIKIAVIDEO); $retval = $rvn->addToList(RelatedVideosNamespaceData::WHITELIST_MARKER, array($entry), $articleId); if (is_array($rvn->entries)) { $entry = end($rvn->entries); } if (is_object($retval)) { if ($retval->ok) { $data = $entry; $data['articleId'] = $videoPageId; $data['title'] = $videoTitle->getText(); $data['external'] = $videoProvider == self::V_WIKIAVIDEO; wfProfileOut(__METHOD__); return $data; } else { } } wfProfileOut(__METHOD__); return $retval; }
/** * Purge RelatedVideos namespace article after an edit * * @param WikiPage $article */ public static function onArticleSaveComplete(&$article, &$user, $text, $summary, $minoredit, $watchthis, $sectionanchor, &$flags, $revision, &$status, $baseRevId) { wfProfileIn(__METHOD__); $title = $article->getTitle(); if (!empty($title)) { switch ($title->getNamespace()) { case NS_RELATED_VIDEOS: $relatedVideosNSData = RelatedVideosNamespaceData::newFromTitle($title); $relatedVideosNSData->purge(); break; case NS_MEDIAWIKI: if (empty(F::app()->wg->relatedVideosPartialRelease)) { if ($title->getText() == RelatedVideosNamespaceData::GLOBAL_RV_LIST) { $relatedVideosNSData = RelatedVideosNamespaceData::newFromTitle($title); $relatedVideosNSData->purge(); } } break; } } wfProfileOut(__METHOD__); return true; }
public function getRVforArticleId($articleId) { $title = Title::newFromID($articleId); $videos = array(); $oLocalLists = RelatedVideosNamespaceData::newFromTargetTitle($title); $oEmbededVideosLists = RelatedVideosEmbededData::newFromTitle($title); $oGlobalLists = RelatedVideosNamespaceData::newFromGeneralMessage(); $blacklist = array(); foreach (array($oGlobalLists, $oEmbededVideosLists, $oLocalLists) as $oLists) { if (!empty($oLists) && $oLists->exists()) { $data = $oLists->getData(); if (isset($data['lists']) && isset($data['lists']['WHITELIST'])) { foreach ($data['lists']['WHITELIST'] as $page) { $videoData = $this->getRelatedVideoData($page); if (isset($videoData['uniqueId'])) { $videos[$videoData['uniqueId']] = $videoData; } } foreach ($data['lists']['BLACKLIST'] as $page) { $videoData = $this->getRelatedVideoData($page); if (isset($videoData['uniqueId'])) { $blacklist[$videoData['uniqueId']] = $videoData; } } } } } foreach ($blacklist as $key => $blElement) { unset($videos[$key]); } //uasort( $videos, array( $this, 'sortByDate') ); //return array_reverse( $videos, true ); // some magic to preserve keys (shuffle does not preserve them) $keys = array_keys($videos); shuffle($keys); return array_merge(array_flip($keys), $videos); }
$db = wfGetDB( DB_SLAVE, array(), $dbname ); $result = $db->select( array( 'page' ), array( 'page_id', 'page_title' ), array( 'page_namespace' => 1100 ), __METHOD__ ); while ( $row = $db->fetchObject($result) ) { echo "Article: $row->page_title\n"; $title = Title::newFromText( $row->page_title, NS_RELATED_VIDEOS ); $relatedVideoList = RelatedVideosNamespaceData::newFromTitle( $title ); if ( !empty($relatedVideoList) && $relatedVideoList->exists() ) { $totalNewVideos = 0; $videoData = $relatedVideoList->getData(); // get videos from RelatedVideos article foreach( $markers as $marker ) { echo "$marker: \n"; $videoList = array(); foreach( $videoData['lists'][$marker] as $video ) { // check if video is duplicate if ( !in_array($video['title'], $globalVideos) ) { printText( "\tNEW: $video[title]\n" ); $videoList[] = $video;
while ($row = $db->fetchObject($result)) { printText("Local Video: "); addVideo($videoList, $row->name); $total++; } // get related videos - RelatedVideos Articles $result = $db->select(array('page'), array('page_title'), array('page_namespace' => NS_RELATED_VIDEOS), __METHOD__); while ($row = $db->fetchObject($result)) { printText("RelatedVideos Article: {$row->page_title}\n"); $title = Title::newFromText($row->page_title, NS_RELATED_VIDEOS); $relatedVideosNSData = RelatedVideosNamespaceData::newFromTitle($title); $data = $relatedVideosNSData->getData(); foreach ($data['lists']['WHITELIST'] as $v) { printText('NS' . NS_RELATED_VIDEOS . ": "); addVideo($videoList, $v['title']); $total++; } } // get related videos - Global list $relatedVideosNSData = RelatedVideosNamespaceData::newFromGeneralMessage(); printText("MediaWiki:RelatedVideosGlobalList\n"); if (!empty($relatedVideosNSData)) { $data = $relatedVideosNSData->getData(); foreach ($data['lists']['WHITELIST'] as $v) { printText("GlobalList: "); addVideo($videoList, $v['title']); $total++; } } echo "Wiki {$wgCityId}: TOTAL: {$total}, ADDED: {$added}, DUPLICATE: {$duplicate}, DUPLICATE IN DB: {$dupInDb}, INVALID: {$invalid}\n"; echo "Total removed deleted videos: {$removed}\n";