private function execute3rdPartyVideo($url) { if (empty(F::app()->wg->allowNonPremiumVideos)) { $this->dieUsage('Only premium videos are allowed', 'onlyallowpremium'); } if (!preg_match('/^https?:\\/\\//', $url)) { $url = 'http://' . $url; } try { $apiwrapper = ApiWrapperFactory::getInstance()->getApiWrapper($url); } catch (Exception $e) { $this->dieUsage('There was an issue with ApiWrapper', 'apiwrapper-error'); } if (empty($apiwrapper)) { $this->dieUsageMsg('The supplied video does not exist'); } $duplicate = $this->getVideoDuplicate($apiwrapper->getProvider(), $apiwrapper->getVideoId()); $result = array('provider' => $apiwrapper->getProvider(), 'videoId' => $apiwrapper->getVideoId()); if ($duplicate) { $result['title'] = $duplicate->getTitle()->getText(); $result['url'] = $duplicate->getUrl(); } else { // Check whether upload is enabled if (!UploadBase::isEnabled()) { $this->dieUsageMsg('uploaddisabled'); } F::app()->wg->DisableProxy = true; $this->mUpload = new UploadFromUrl(); $this->mUpload->initializeFromRequest(new FauxRequest(array('wpUpload' => 1, 'wpSourceType' => 'web', 'wpUploadFileURL' => $apiwrapper->getThumbnailUrl()), true)); $this->mUpload->fetchFile(); $this->checkPermissions(); $this->verifyUpload(); $tempFile = $this->createTempFile($this->mUpload->getTempPath()); $result['title'] = $apiwrapper->getTitle(); $result['tempUrl'] = $tempFile->getUrl(); $result['tempName'] = $tempFile->getName(); } return $result; }
public function getApiWrapper() { wfProfileIn(__METHOD__); if (!empty($this->oApiWrapper)) { wfProfileOut(__METHOD__); return $this->oApiWrapper; } if (!empty($this->sExternalUrl)) { $apiWF = ApiWrapperFactory::getInstance(); $this->oApiWrapper = $apiWF->getApiWrapper($this->sExternalUrl); if (!empty($this->oApiWrapper)) { wfProfileOut(__METHOD__); return $this->oApiWrapper; } } if (!empty($this->sProvider)) { if (strstr($this->sProvider, '/')) { $provider = explode('/', $this->sProvider); $apiWrapperPrefix = $provider[0]; } else { $apiWrapperPrefix = $this->sProvider; } $class = ucfirst($apiWrapperPrefix) . 'ApiWrapper'; $this->oApiWrapper = new $class($this->sVideoId, $this->aOverrideMetadata); } wfProfileOut(__METHOD__); return $this->oApiWrapper; }
protected function getApiWrapper() { wfProfileIn(__METHOD__); if (!empty($this->oApiWrapper)) { return $this->oApiWrapper; } if (!empty($this->sExternalUrl)) { $apiWF = ApiWrapperFactory::getInstance(); $this->oApiWrapper = $apiWF->getApiWrapper($this->sExternalUrl); if (!empty($this->oApiWrapper)) { return $this->oApiWrapper; } } if (!empty($this->sProvider)) { $this->oApiWrapper = F::build(ucfirst($this->sProvider) . 'ApiWrapper', array($this->sVideoId, $this->aOverrideMetadata)); } wfProfileOut(__METHOD__); return $this->oApiWrapper; }
function insertVideo() { global $wgRequest, $wgUser, $wgContLang; $url = $wgRequest->getVal('url'); $tempname = 'Temp_video_' . $wgUser->getID() . '_' . rand(0, 1000); $title = Title::makeTitle(NS_FILE, $tempname); $isNonPremium = false; try { $awf = ApiWrapperFactory::getInstance(); /* @var $awf ApiWrapperFactory */ $apiwrapper = $awf->getApiWrapper($url); } catch (WikiaException $e) { $isNonPremium = true; } if (!empty($apiwrapper)) { // try ApiWrapper first - is it from partners? $provider = $apiwrapper->getMimeType(); $file = new WikiaLocalFile($title, RepoGroup::singleton()->getLocalRepo()); $file->forceMime($provider); $file->setVideoId($apiwrapper->getVideoId()); $file->setProps(array('mime' => $provider)); $props['id'] = $apiwrapper->getVideoId(); $props['vname'] = $apiwrapper->getTitle(); $props['metadata'] = ''; $props['provider'] = $provider; $props['code'] = $file->getEmbedCode(VIDEO_PREVIEW, false, false, true); $props['oname'] = ''; } else { // if not a partner video try to parse link for File: $file = null; // get the video name $nsFileTranslated = $wgContLang->getNsText(NS_FILE); // added $nsFileTransladed to fix bugId:#48874 $pattern = '/(File:|Video:|' . $nsFileTranslated . ':)(.+)$/'; if (preg_match($pattern, $url, $matches)) { $file = wfFindFile($matches[2]); if (!$file) { // bugID: 26721 $file = wfFindFile(urldecode($matches[2])); } } elseif (preg_match($pattern, urldecode($url), $matches)) { $file = wfFindFile($matches[2]); if (!$file) { // bugID: 26721 $file = wfFindFile($matches[2]); } } else { if ($isNonPremium) { header('X-screen-type: error'); if (!empty(F::app()->wg->allowNonPremiumVideos)) { return $e->getMessage(); } // return wfMessage("videohandler-non-premium")->parse(); //TODO: re-instate html links once VETUpgrade branch is merged into trunk (Liz) return wfMsg('videohandler-non-premium'); } header('X-screen-type: error'); return wfMsg('vet-bad-url'); } if (!$file) { header('X-screen-type: error'); return wfMsg('vet-non-existing'); } $embedCode = $file->getEmbedCode(VIDEO_PREVIEW, false, false, true); $props['provider'] = 'FILE'; $props['id'] = $file->getHandler()->getVideoId(); $props['vname'] = $file->getTitle()->getText(); $props['code'] = is_string($embedCode) ? $embedCode : json_encode($embedCode); $props['metadata'] = ''; $props['oname'] = ''; } return $this->detailsPage($props); }
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); }