コード例 #1
0
 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());
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
0
 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);
 }
コード例 #5
0
		$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;
コード例 #6
0
ファイル: maintenance.php プロジェクト: schwarer2006/wikia
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";