public static function ProcessImageLink(array $p_matches)
{
$context = CampTemplate::singleton()->context();
$oldImage = $context->image;
$uri = $context->url;
if ($uri->article->number == 0) {
return '';
}
$imageNumber = $p_matches[1];
$detailsString = $p_matches[2];
$detailsArray = array();
if (trim($detailsString) != '') {
$imageAttributes = 'align|alt|sub|width|height|ratio|\\w+';
preg_match_all("/[\\s]+({$imageAttributes})=\"([^\"]+)\"/i", $detailsString, $detailsArray1);
$detailsArray1[1] = array_map('strtolower', $detailsArray1[1]);
if (count($detailsArray1[1]) > 0) {
$detailsArray1 = array_combine($detailsArray1[1], $detailsArray1[2]);
} else {
$detailsArray1 = array();
}
preg_match_all("/[\\s]+({$imageAttributes})=([^\"\\s]+)/i", $detailsString, $detailsArray2);
$detailsArray2[1] = array_map('strtolower', $detailsArray2[1]);
if (count($detailsArray2[1]) > 0) {
$detailsArray2 = array_combine($detailsArray2[1], $detailsArray2[2]);
} else {
$detailsArray2 = array();
}
$detailsArray = array_merge($detailsArray1, $detailsArray2);
}
$articleImage = new ArticleImage($uri->article->number, null, $imageNumber);
$image = new MetaImage($articleImage->getImageId());
$context->image = $image;
$imageOptions = '';
$preferencesService = \Zend_Registry::get('container')->getService('system_preferences_service');
if (array_key_exists('sub', $detailsArray)) {
if ($preferencesService->MediaRichTextCaptions == 'Y') {
$detailsArray['sub'] = html_entity_decode($detailsArray['sub'], ENT_QUOTES, 'UTF-8');
} else {
$detailsArray['sub'] = strip_tags(html_entity_decode($detailsArray['sub'], ENT_QUOTES, 'UTF-8'));
}
}
$defaultOptions = array('ratio' => 'EditorImageRatio', 'width' => 'EditorImageResizeWidth', 'height' => 'EditorImageResizeHeight');
foreach (array('ratio', 'width', 'height') as $imageOption) {
$defaultOption = (int) $preferencesService->get($defaultOptions[$imageOption]);
if (isset($detailsArray[$imageOption]) && $detailsArray[$imageOption] > 0) {
if (isset($detailsArray['size']) && strpos($detailsArray['size'], 'px') !== false) {
$detailsArray['percentage'] = '100%';
$imageOptions .= " {$imageOption} " . rtrim($detailsArray['size'], 'px');
} else {
$imageOptions .= " {$imageOption} " . (int) $detailsArray[$imageOption];
}
} elseif ($imageOption != 'ratio' && $defaultOption > 0) {
$imageOptions .= " {$imageOption} {$defaultOption}";
} elseif ($imageOption == 'ratio' && $defaultOption != 100) {
$imageOptions .= " {$imageOption} {$defaultOption}";
}
}
$imageOptions = trim($imageOptions);
$imgZoomLink = '';
if ($preferencesService->EditorImageZoom == 'Y' && strlen($imageOptions) > 0) {
$imgZoomLink = '/' . $image->filerpath;
}
try {
$uri->uri_parameter = "image {$imageOptions}";
$templatesService = \Zend_Registry::get('container')->getService('newscoop.templates.service');
$templatesService->setVector(array_merge($templatesService->getSmarty()->campsiteVector, array('params' => implode('__', array($uri->article->number, $imageNumber, $articleImage->getImageId())))));
return $templatesService->fetchTemplate("editor_image.tpl", array('imageDetails' => $detailsArray, 'MediaRichTextCaptions' => $preferencesService->MediaRichTextCaptions, 'uri' => $uri, 'imgZoomLink' => $imgZoomLink));
} catch (\Exception $e) {
return $e->getMessage();
}
}