Exemplo n.º 1
0
 function insertVideo()
 {
     global $wgRequest, $wgUser;
     wfProfileIn(__METHOD__);
     if ($wgUser->isBlocked()) {
         header('X-screen-type: error');
         wfProfileOut(__METHOD__);
         return wfMessage('videos-error-blocked-user')->plain();
     }
     if (!$wgUser->isAllowed('videoupload')) {
         header('X-screen-type: error');
         wfProfileOut(__METHOD__);
         return wfMessage('videos-error-admin-only')->plain();
     }
     $url = $wgRequest->getVal('url');
     $tempname = 'Temp_video_' . $wgUser->getID() . '_' . rand(0, 1000);
     $title = Title::makeTitle(NS_FILE, $tempname);
     $nonPremiumException = null;
     try {
         $awf = ApiWrapperFactory::getInstance();
         /* @var $awf ApiWrapperFactory */
         $apiwrapper = $awf->getApiWrapper($url);
     } catch (Exception $e) {
         $nonPremiumException = $e;
     }
     $embedOptions = ['autoplay' => false, 'isAjax' => false];
     if (!empty($apiwrapper)) {
         // try ApiWrapper first - is it from a supported 3rd party ( non-premium ) provider?
         $provider = $apiwrapper->getMimeType();
         $file = new WikiaLocalFile($title, RepoGroup::singleton()->getLocalRepo());
         $file->forceMime($provider);
         $file->setVideoId($apiwrapper->getVideoId());
         $file->setProps(array('mime' => $provider));
         // Loading this to deal with video descriptions
         $vHelper = new VideoHandlerHelper();
         $props['id'] = $apiwrapper->getVideoId();
         $props['vname'] = $apiwrapper->getTitle();
         $props['metadata'] = '';
         $props['description'] = $vHelper->getVideoDescription($file);
         $props['provider'] = $provider;
         $embed_code = $file->getEmbedCode(VIDEO_PREVIEW, $embedOptions);
         $props['code'] = json_encode($embed_code);
     } else {
         // if not a supported 3rd party ( non-premium ) video, try to parse link for File:
         // get the video file
         $videoService = new VideoService();
         $file = $videoService->getVideoFileByUrl($url);
         if (!$file) {
             header('X-screen-type: error');
             if ($nonPremiumException) {
                 if (empty(F::app()->wg->allowNonPremiumVideos)) {
                     wfProfileOut(__METHOD__);
                     return wfMessage('videohandler-non-premium')->parse();
                 }
                 if ($nonPremiumException->getMessage() != '') {
                     wfProfileOut(__METHOD__);
                     return $nonPremiumException->getMessage();
                 }
             }
             wfProfileOut(__METHOD__);
             return wfMessage('vet-bad-url')->plain();
         }
         // Loading this to deal with video descriptions
         $vHelper = new VideoHandlerHelper();
         $embedCode = $file->getEmbedCode(VIDEO_PREVIEW, $embedOptions);
         $props['provider'] = 'FILE';
         $props['id'] = $file->getHandler()->getVideoId();
         $props['vname'] = $file->getTitle()->getText();
         $props['code'] = json_encode($embedCode);
         $props['metadata'] = '';
         $props['description'] = $vHelper->getVideoDescription($file);
         $props['premiumVideo'] = !$file->isLocal();
     }
     wfProfileOut(__METHOD__);
     return $this->detailsPage($props);
 }