/** * Gets the browsing user's info. * * @return XenForo_Visitor */ protected static final function _getInstance() { if (!self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
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); }
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; }
/** * 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()); } }
/** * 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']; }