Exemple #1
0
 /**
  * Gets the browsing user's info.
  *
  * @return XenForo_Visitor
  */
 protected static final function _getInstance()
 {
     if (!self::$_instance) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Exemple #2
0
 public function actionMedia()
 {
     $url = $this->_input->filterSingle('url', XenForo_Input::STRING);
     $matchBbCode = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($url);
     $viewParams = array('matchBbCode' => nl2br($matchBbCode));
     if (!$matchBbCode) {
         $viewParams['noMatch'] = new XenForo_Phrase('specified_url_cannot_be_embedded_as_media');
     }
     return $this->responseView('XenForo_ViewPublic_Editor_Media', '', $viewParams);
 }
Exemple #3
0
 protected function _convertIPBoardMediaTag(array $regexMatches)
 {
     if ($embedHtml = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($regexMatches[1])) {
         return $embedHtml;
     } else {
         return '[url]' . $regexMatches[1] . '[/url]';
     }
 }
 protected function _importMedia(array $item, array $options)
 {
     $model = $this->_getMediaGalleryImportersModel();
     $categoryId = $model->mapCategoryId($item['category_id']);
     $mediaUrl = str_replace('{serviceVAL}', $item['service_value'], $item['service_url']);
     if (strstr($item['service_url'], 'metacafe')) {
         //The default XenForo BB Code Media Site appears to be bugged
         // Ref: http://xenforo.com/community/threads/66019/
         $mediaUrl .= '/';
     }
     $mediaTag = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($mediaUrl);
     if (!$mediaTag) {
         return false;
     }
     $xengalleryMedia = array('media_title' => $this->_convertToUtf8($item['media_title'], true), 'media_description' => XenForo_Helper_String::bbCodeStrip($item['media_description'], true), 'media_date' => $item['media_date'], 'last_edit_date' => XenForo_Application::$time, 'last_comment_date' => $item['last_comment_date'], 'media_type' => 'video_embed', 'media_tag' => $mediaTag, 'media_embed_url' => $mediaUrl, 'media_state' => $item['media_state'], 'album_id' => 0, 'category_id' => $categoryId, 'media_privacy' => 'category', 'attachment_id' => 0, 'user_id' => $item['user_id'], 'username' => $item['username'], 'ip_id' => $model->getLatestIpIdFromUserId($item['user_id']), 'likes' => $item['media_likes'], 'like_users' => unserialize($item['media_like_users']), 'comment_count' => $item['media_comments'], 'rating_count' => 0, 'media_view_count' => $item['media_views']);
     $importedMediaId = $model->importMedia($item['media_id'], '', 'media', $xengalleryMedia);
     return $importedMediaId;
 }
Exemple #5
0
 /**
  * Handles autolinking the given URL.
  *
  * @param string $url
  *
  * @return string
  */
 protected function _autoLinkUrl($url)
 {
     $link = XenForo_Helper_String::prepareAutoLinkedUrl($url);
     if ($this->_fixProxy && preg_match('/proxy\\.php\\?[a-z0-9_]+=(http[^&]+)&/i', $link['url'], $match)) {
         // proxy link of some sort, adjust to the original one
         $url = urldecode($match[1]);
         if (preg_match('/./u', $url)) {
             if ($link['url'] == $link['linkText']) {
                 $link['linkText'] = $url;
             }
             $link['url'] = $url;
         }
     }
     if ($link['url'] === $link['linkText']) {
         if ($this->_autoEmbed['embedType'] != XenForo_Helper_Media::AUTO_EMBED_MEDIA_DISABLED && $this->_autoEmbedRemaining > 0 && $this->_enableAutoEmbed && ($mediaTag = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($link['url'], $this->_autoEmbed))) {
             $tag = $mediaTag;
             $this->_autoEmbedRemaining--;
         } else {
             $tag = '[url]' . $link['url'] . '[/url]';
         }
     } else {
         $tag = '[url="' . $link['url'] . '"]' . $link['linkText'] . '[/url]';
     }
     return $tag . $link['suffixText'];
 }
 protected function _saveEditedMediaProcess(array $inputArray, array $otherInput, &$redirect = null)
 {
     $mediaModel = $this->_getMediaModel();
     foreach ($inputArray as $input) {
         $media = $mediaModel->getMediaById($otherInput['media_id'], array('join' => XenGallery_Model_Media::FETCH_ALBUM | XenGallery_Model_Media::FETCH_CATEGORY));
         $this->_getMediaHelper()->assertCanEditMedia($media);
         $mediaWriter = XenForo_DataWriter::create('XenGallery_DataWriter_Media');
         $mediaWriter->setExistingData($media);
         $tagger = null;
         if ($mediaModel->canEditTags($media)) {
             /** @var XenForo_Model_Tag $tagModel */
             $tagModel = $this->getModelFromCache('XenForo_Model_Tag');
             $tagger = $tagModel->getTagger('xengallery_media');
             $tagger->setContent($media['media_id'])->setPermissionsFromContext($media, $media);
             $editTags = $tagModel->getTagListForEdit('xengallery_media', $media['media_id'], $tagger->getPermission('removeOthers'));
             if ($editTags['uneditable']) {
                 // this is mostly a sanity check; this should be ignored
                 $input['tags'] .= (strlen($input['tags']) ? ', ' : '') . implode(', ', $editTags['uneditable']);
             }
             $tagger->setTags($tagModel->splitTags($input['tags']));
             $mediaWriter->mergeErrors($tagger->getErrors());
             unset($input['tags']);
         }
         $data = array_merge(array('media_title' => '', 'media_description' => '', 'media_embed_url' => '', 'media_tag' => ''), $input);
         if (!empty($data['media_embed_url_original'])) {
             if ($data['media_embed_url'] && $mediaModel->canEditEmbedUrl($media)) {
                 $data['media_tag'] = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($data['media_embed_url']);
             } else {
                 $data['media_embed_url'] = $data['media_embed_url_original'];
             }
         }
         unset($data['media_embed_url_original'], $data['custom_fields']);
         $mediaWriter->bulkSet($data);
         $mediaWriter->save();
         if ($tagger) {
             $tagger->save();
         }
         $this->_updateCustomFields($input, $mediaWriter->getMergedData());
         $this->_sendAuthorAlert($media, 'xengallery_media', 'edit');
         $this->_logChanges($mediaWriter, $media, 'edit');
         $redirect = XenForo_Link::buildPublicLink('xengallery', $mediaWriter->getMergedData());
     }
 }
Exemple #7
0
 /**
  * Handles autolinking the given URL.
  *
  * @param string $url
  *
  * @return string
  */
 protected function _autoLinkUrl($url)
 {
     $link = XenForo_Helper_String::prepareAutoLinkedUrl($url);
     if ($this->_fixProxy && preg_match('/proxy\\.php\\?[a-z0-9_]+=(http[^&]+)&/i', $link['url'], $match)) {
         // proxy link of some sort, adjust to the original one
         $url = urldecode($match[1]);
         if (preg_match('/./u', $url)) {
             if ($link['url'] == $link['linkText']) {
                 $link['linkText'] = $url;
             }
             $link['url'] = $url;
         }
     }
     if ($link['url'] === $link['linkText']) {
         if ($this->_autoEmbed['embedType'] != XenForo_Helper_Media::AUTO_EMBED_MEDIA_DISABLED && $this->_autoEmbedRemaining > 0 && $this->_enableAutoEmbed && ($mediaTag = XenForo_Helper_Media::convertMediaLinkToEmbedHtml($link['url'], $this->_autoEmbed))) {
             $tag = $mediaTag;
             $this->_autoEmbedRemaining--;
         } else {
             $urlToPageTitle = XenForo_Application::getOptions()->urlToPageTitle;
             if (!empty($urlToPageTitle['enabled']) && microtime(true) - $this->_startTime < $this->_urlTitleTimeLimit && $link['url'] === XenForo_Helper_String::censorString($link['url'])) {
                 $title = $this->_getUrlTitle($link['url']);
                 if ($title) {
                     $format = $urlToPageTitle['format'];
                     if (!$format) {
                         $format = '{title}';
                     }
                     $tokens = array('{title}' => $title, '{url}' => $link['url']);
                     $linkTitle = strtr($format, $tokens);
                     $tag = '[URL="' . $link['url'] . '"]' . $linkTitle . '[/URL]';
                 } else {
                     $tag = '[URL]' . $link['url'] . '[/URL]';
                 }
                 if ($this->_streamFile) {
                     @unlink($this->_streamFile);
                     $this->_streamFile = null;
                 }
             } else {
                 $tag = '[URL]' . $link['url'] . '[/URL]';
             }
         }
     } else {
         $tag = '[URL="' . $link['url'] . '"]' . $link['linkText'] . '[/URL]';
     }
     return $tag . $link['suffixText'];
 }