/** * Image block * * @param array $params * @param string $content * @param Smarty_Internal_Template $smarty * @param bool $repeat * @return void */ function smarty_block_image(array $params, $content, Smarty_Internal_Template $smarty, &$repeat) { if (!$repeat) { $content = $smarty->getTemplateVars('image') ? $content : ''; $smarty->assign('image', null); return $content; } if (!array_key_exists('rendition', $params)) { throw new \InvalidArgumentException("Rendition not set"); } $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $renditionService = \Zend_Registry::get('container')->getService('image.rendition'); $cacheKey = $cacheService->getCacheKey(array('theme_renditions'), 'theme'); if ($cacheService->contains($cacheKey)) { $renditions = $cacheService->fetch($cacheKey); } else { $renditions = $renditionService->getRenditions(); $cacheService->save($cacheKey, $renditions); } if (!array_key_exists($params['rendition'], $renditions)) { throw new \InvalidArgumentException("Unknown rendition"); } $article = $smarty->getTemplateVars('gimme')->article; if (!$article) { throw new \RuntimeException("Not in article context."); } $articleRenditions = $article->getRenditions(); $articleRendition = $articleRenditions[$renditions[$params['rendition']]]; if ($articleRendition === null) { $smarty->assign('image', false); $repeat = false; return; } $image = null; if (array_key_exists('width', $params) && array_key_exists('height', $params)) { $image = $renditionService->getArticleRenditionImage($article->number, $params['rendition'], $params['width'], $params['height']); } else { $image = $renditionService->getArticleRenditionImage($article->number, $params['rendition']); } $imageService = \Zend_Registry::get('container')->getService('image'); $preferencesService = \Zend_Registry::get('container')->getService('preferences'); $caption = $imageService->getCaption($articleRendition->getImage(), $article->number, $article->language->number); if ($preferencesService->get('MediaRichTextCaptions', 'N') == 'N') { $caption = MetaDbObject::htmlFilter($caption); } $smarty->assign('image', (object) array('src' => \Zend_Registry::get('view')->url(array('src' => $image['src']), 'image', true, false), 'width' => $image['width'], 'height' => $image['height'], 'caption' => $caption, 'description' => $articleRendition->getImage()->getDescription(), 'photographer' => $articleRendition->getImage()->getPhotographer(), 'original' => $image['original'])); }
protected function getCustomProperty($p_property) { $property = $this->translateProperty($p_property); if (isset($this->m_customProperties[$property]) && is_array($this->m_customProperties[$property])) { try { $dbProperty = $this->m_customProperties[$property][0]; $fieldValue = $this->m_articleData->getProperty('F'.$dbProperty); $articleFieldType = new ArticleTypeField($this->type_name, $dbProperty); if ($articleFieldType->getType() == ArticleTypeField::TYPE_BODY) { if (is_null($this->getContentCache($property))) { $context = CampTemplate::singleton()->context(); $subtitleId = $this->subtitle_url_id($property); $subtitleNo = $context->default_url->get_parameter($subtitleId); if (is_null($subtitleNo)) { $subtitleNo = 0; } elseif ($subtitleNo === 'all') { $subtitleNo = null; } $bodyField = new MetaArticleBodyField($fieldValue, $this, $articleFieldType->getPrintName(), $this->name, $subtitleNo, '<span class="subtitle"><p>', '</p></span>'); $this->setContentCache($property, $bodyField); } $fieldValue = $this->getContentCache($property); } if ($articleFieldType->getType() == ArticleTypeField::TYPE_TOPIC) { $fieldValue = new MetaTopic($fieldValue); } return $fieldValue; } catch (InvalidPropertyException $e) { // do nothing; will throw another exception with original property field name } throw new InvalidPropertyException(get_class($this->m_dbObject), $p_property); } return parent::getCustomProperty($p_property); }