function getImageByNumber($articleId, $imageNumber) { $articleImage = new ArticleImage($articleId, null, $imageNumber); $image = $articleImage->getImage(); return $image; }
/** * Process the image statement given in Campsite internal formatting. * Returns a standard image URL. * * @param array $p_matches * @return string */ 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); $imageObj = $articleImage->getImage(); $image = new MetaImage($articleImage->getImageId()); $context->image = $image; $imageSize = @getimagesize($imageObj->getImageStorageLocation()); unset($imageObj); $imageOptions = ''; $defaultOptions = array('ratio'=>'EditorImageRatio', 'width'=>'EditorImageResizeWidth', 'height'=>'EditorImageResizeHeight'); foreach (array('ratio', 'width', 'height') as $imageOption) { $defaultOption = (int)SystemPref::Get($defaultOptions[$imageOption]); if (isset($detailsArray[$imageOption]) && $detailsArray[$imageOption] > 0) { $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 (SystemPref::Get("EditorImageZoom") == 'Y' && strlen($imageOptions) > 0) { $uri->uri_parameter = "image"; $imgZoomLink = '<a href="' . $uri->uri . '" class="photoViewer" '; if (isset($detailsArray['sub']) && !empty($detailsArray['sub'])) { $imgZoomLink .= 'title="' . $detailsArray['sub'] . '">'; } else { $imgZoomLink .= 'title="">'; } } $isCentered = false; $imgString = '</p><div class="cs_img"'; if (isset($detailsArray['align']) && !empty($detailsArray['align'])) { if ($detailsArray['align'] == 'middle') { $imgString = '</p><div align="center"><div class="cs_img"'; $isCentered = true; } else { $imgString .= ' style="float:' . $detailsArray['align'] . ';"'; } } $imgString .= '>'; $imgString .= (strlen($imgZoomLink) > 0) ? '<p>'.$imgZoomLink : '<p>'; $uri->uri_parameter = "image $imageOptions"; $imgString .= '<img src="' . $uri->uri . '"'; if (isset($detailsArray['alt']) && !empty($detailsArray['alt'])) { $imgString .= ' alt="' . $detailsArray['alt'] . '"'; } if (isset($detailsArray['sub']) && !empty($detailsArray['sub'])) { $imgString .= ' title="' . $detailsArray['sub'] . '"'; } $imgString .= ' border="0"/>'; $imgString .= (strlen($imgZoomLink) > 0) ? '</a></p>' : '</p>'; if (isset($detailsArray['sub']) && !empty($detailsArray['sub'])) { $imgString .= '<p class="cs_img_caption">'; $imgString .= $detailsArray['sub'] . '</p>'; } if ($isCentered) { $imgString .= '</div></div><p>'; } else { $imgString .= '</div><p>'; } $context->image = $oldImage; return $imgString; }
/** * Process the image statement given in Campsite internal formatting. * Returns a standard image URL. * * @param array $p_matches * @return string */ 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); $imageObj = $articleImage->getImage(); $image = new MetaImage($articleImage->getImageId()); $context->image = $image; $imageSize = @getimagesize($imageObj->getImageStorageLocation()); unset($imageObj); $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 (strpos($detailsArray[$imageOption], '%') === false) { $imageOptions .= " {$imageOption} " . (int) $detailsArray[$imageOption]; $detailsArray[$imageOption] = $detailsArray[$imageOption] . "px"; } } 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 { $templatesService = \Zend_Registry::get('container')->getService('newscoop.templates.service'); $smarty = $templatesService->getSmarty(); $uri->uri_parameter = "image {$imageOptions}"; $smarty->assign('imageDetails', $detailsArray); $smarty->assign('MediaRichTextCaptions', $preferencesService->MediaRichTextCaptions); $smarty->assign('uri', $uri); $smarty->assign('imgZoomLink', $imgZoomLink); return $templatesService->fetchTemplate("editor_image.tpl"); } catch (\Exception $e) { return $e->getMessage(); } }