Example #1
0
 /**
  * make an image if it's allowed, either through the global
  * option, through the exception, or through the on-wiki whitelist
  * @private
  *
  * $param $url string
  *
  * @return string
  */
 function maybeMakeExternalImage($url)
 {
     $imagesfrom = $this->mOptions->getAllowExternalImagesFrom();
     $imagesexception = !empty($imagesfrom);
     $text = false;
     # $imagesfrom could be either a single string or an array of strings, parse out the latter
     if ($imagesexception && is_array($imagesfrom)) {
         $imagematch = false;
         foreach ($imagesfrom as $match) {
             if (strpos($url, $match) === 0) {
                 $imagematch = true;
                 break;
             }
         }
     } elseif ($imagesexception) {
         $imagematch = strpos($url, $imagesfrom) === 0;
     } else {
         $imagematch = false;
     }
     if ($this->mOptions->getAllowExternalImages() || $imagesexception && $imagematch) {
         if (preg_match(self::EXT_IMAGE_REGEX, $url)) {
             # Image found
             $text = Linker::makeExternalImage($url);
         }
     }
     if (!$text && $this->mOptions->getEnableImageWhitelist() && preg_match(self::EXT_IMAGE_REGEX, $url)) {
         $whitelist = explode("\n", wfMessage('external_image_whitelist')->inContentLanguage()->text());
         foreach ($whitelist as $entry) {
             # Sanitize the regex fragment, make it case-insensitive, ignore blank entries/comments
             if (strpos($entry, '#') === 0 || $entry === '') {
                 continue;
             }
             if (preg_match('/' . str_replace('/', '\\/', $entry) . '/i', $url)) {
                 # Image matches a whitelist entry
                 $text = Linker::makeExternalImage($url);
                 break;
             }
         }
     }
     return $text;
 }