- return isset($content['title']) && isset($content['html']) && isset($content['url']) && isset($content['language']) && isset($content['content_type']);
- }
-
- /**
- * Changing pictures URL in article content.
- */
- public static function filterPicture($content, $url, $id)
- {
- $matches = array();
- $processing_pictures = array(); // list of processing image to avoid processing the same pictures twice
- preg_match_all('#<\s*(img)[^>]+src="([^"]*)"[^>]*>#Si', $content, $matches, PREG_SET_ORDER);
- foreach ($matches as $i => $link) {
- $link[1] = trim($link[1]);
- if (!preg_match('#^(([a-z]+://)|(\#))#', $link[1])) {
- $absolute_path = self::_getAbsoluteLink($link[2], $url);
- $filename = basename(parse_url($absolute_path, PHP_URL_PATH));
- $directory = self::_createAssetsDirectory($id);
- $fullpath = $directory.'/'.$filename;
-
- if (in_array($absolute_path, $processing_pictures) === true) {
- // replace picture's URL only if processing is OK : already processing -> go to next picture
- continue;
- }
-
- if (self::_downloadPictures($absolute_path, $fullpath) === true) {
- $content = str_replace($matches[$i][2], Tools::getPocheUrl().$fullpath, $content);
- }
-
- $processing_pictures[] = $absolute_path;
- }
- }
-
- return $content;
- }
-
- /**
- * Get absolute URL.
- */
- private static function _getAbsoluteLink($relativeLink, $url)
- {
- /* return if already absolute URL */
- if (parse_url($relativeLink, PHP_URL_SCHEME) != '') {
- return $relativeLink;
- }
-
- /* queries and anchors */
- if ($relativeLink[0] == '#' || $relativeLink[0] == '?') {
- return $url.$relativeLink;
- }
-
- /* parse base URL and convert to local variables:
- $scheme, $host, $path */
- extract(parse_url($url));
-
- /* remove non-directory element from path */
- $path = preg_replace('#/[^/]*$#', '', $path);
-
- /* destroy path if relative url points to root */
- if ($relativeLink[0] == '/') {
- $path = '';
- }
-
- /* dirty absolute URL */
- $abs = $host.$path.'/'.$relativeLink;
-
- /* replace '//' or '/./' or '/foo/../' with '/' */
- $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
- for ($n = 1; $n > 0; $abs = preg_replace($re, '/', $abs, -1, $n)) {
- }
-
- /* absolute URL is ready! */
- return $scheme.'://'.$abs;