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; }
$wiki = WikiFactory::getWikiById( $wgCityId ); if ( !empty($wiki) && $wiki->city_public == 1 ) { $dbname = $wiki->city_dbname; echo " ($dbname): \n"; $total = 0; $add = 0; $dup = 0; $user = User::newFromName('WikiaBot'); $markers = array( RelatedVideosNamespaceData::WHITELIST_MARKER, RelatedVideosNamespaceData::BLACKLIST_MARKER ); echo "GlobalList: \n"; $globalList = RelatedVideosNamespaceData::newFromGeneralMessage(); // get all global videos $globalVideos = array(); if ( empty($globalList) ) { $globalList = RelatedVideosNamespaceData::createGlobalList(); } else { $globalData = $globalList->getData(); foreach( $markers as $marker ) { foreach( $globalData['lists'][$marker] as $video ) { $globalVideos[] = $video['title']; } echo "\tTotal $marker videos: ".count($globalData['lists'][$marker])."\n"; } }
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); }
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";