ImageSrc($block_params); if (!$image_url) { return ; } $block_params['img_path'] = $image_url; $image_dimensions = $this->ImageSize($block_params); $block_params['img_size'] = $image_dimensions ? $image_dimensions : ' width="'.$block_params['DefaultWidth'].'"'; $block_params['alt'] = htmlspecialchars($object->GetField('AltName')); // really used ? } /** * [AGGREGATED TAG] works as * * @param Array $params * @return string */ function ItemImage($params) { $this->LoadItemImage($params); return $this->Image($params); } function LargeImageExists($params) { $object =& $this->getObject($params); if ( $object->GetDBField('SameImages') == null || $object->GetDBField('SameImages')=='1' ) { return false; } else { return true; } } function LoadItemImage($params) { $parent_item =& $this->Application->recallObject($params['PrefixSpecial']); $object =& $this->Application->recallObject($this->getPrefixSpecial(), null, Array('skip_autoload' => true)); /* @var $object kDBItem */ $object->Clear(); // if we need primary thumbnail which is preloaded with products list if ( $this->SelectParam($params, 'thumbnail,Thumbnail') && ( ( $this->SelectParam($params, 'primary,Primary') || !isset($params['name']) ) && !$this->Application->GetVar('img_id') && isset($parent_item->Fields['LocalThumb']) ) ) { $object->SetDefaultValues(); $object->SetDBField('Url', $parent_item->GetDBField('FullUrl')); $object->SetDBFieldsFromHash($parent_item->GetFieldValues(), Array('SameImages', 'LocalThumb', 'ThumbPath', 'ThumbUrl', 'LocalImage', 'LocalPath') ); $object->Loaded = true; } else { // if requested image is not primary thumbnail - load it directly $id_field = $this->Application->getUnitOption($this->Prefix, 'ForeignKey'); $parent_table_key = $this->Application->getUnitOption($this->Prefix, 'ParentTableKey'); $keys[$id_field] = $parent_item->GetDBField($parent_table_key); // which image to load? if ( getArrayValue($params, 'Primary') ) { //load primary image $keys['DefaultImg'] = 1; } elseif ( getArrayValue($params, 'name') ) { //load by name $keys['Name'] = $params['name']; } elseif ( $image_id = $this->Application->GetVar($this->Prefix.'_id') ) { $keys['ImageId'] = $image_id; } else { $keys['DefaultImg'] = 1; //if primary was not set explicity and name was also not passed - load primary } $object->Load($keys); } } function ImageSrc($params) { $object =& $this->getObject($params); $base_url = rtrim($this->Application->BaseURL(), '/'); $ret = ''; // if we need thumb, or full image is same as thumb if ( $this->SelectParam($params, 'thumbnail,Thumbnail') || $object->GetDBField('SameImages') ) { // return local image or url $ret = $object->GetDBField('LocalThumb') ? $base_url.$object->GetDBField('ThumbPath') : $object->GetDBField('ThumbUrl'); if ($object->GetDBField('LocalThumb') && !file_exists(FULL_PATH.$object->GetDBField('ThumbPath')) && !constOn('DBG_IMAGE_RECOVERY')) { // local thumbnail file is missing $ret = ''; } } else { // if we need full which is not the same as thumb $ret = $object->GetDBField('LocalImage') ? $base_url.$object->GetDBField('LocalPath') : $object->GetDBField('Url'); if ($object->GetDBField('LocalImage') && !file_exists(FULL_PATH.$object->GetDBField('LocalPath'))) { // local full image file is missing $ret = ''; } } $default_image = $this->SelectParam($params, 'default_image,DefaultImage'); return ($ret && $ret != $base_url) ? $ret : ($default_image ? $base_url.THEMES_PATH.'/'.$default_image : false); } function getFullPath($path) { if (!$path) { return $path; } // absolute url if (preg_match('/^(.*):\/\/(.*)$/U', $path)) { return preg_replace('/^'.preg_quote($this->Application->BaseURL(), '/').'(.*)/', FULL_PATH.'/\\1', $path); } // relative url return FULL_PATH.'/'.substr(THEMES_PATH, 1).'/'.$path; } /** * Makes size clause for img tag, such as * ' width="80" height="100"' according to max_width * and max_heght limits. * * @param array $params * @return string */ function ImageSize($params) { $img_path = $this->getFullPath($params['img_path']); $image_helper =& $this->Application->recallObject('ImageHelper'); /* @var $image_helper ImageHelper */ $image_dimensions = $image_helper->GetImageDimensions($img_path, getArrayValue($params, 'MaxWidth'), getArrayValue($params, 'MaxHeight')); if (!$image_dimensions) { return false; } return ' width="'.$image_dimensions[0].'" height="'.$image_dimensions[1].'"'; } /** * Prepares image parameters & parses block with them (for admin) * * @param Array $params * @return string */ function Image($params) { $image_url = $this->ImageSrc($params); if (!$image_url) { return ; } $object =& $this->getObject($params); $params['img_path'] = $image_url; $image_dimensions = $this->ImageSize($params); $params['img_size'] = $image_dimensions ? $image_dimensions : ' width="'.$params['DefaultWidth'].'"'; $params['alt'] = htmlspecialchars($object->GetField('AltName')); // really used ? $params['name'] = $this->SelectParam($params, 'block,render_as'); if (!$object->isLoaded() && !$this->SelectParam($params, 'default_image,DefaultImage')) { return false; } return $this->Application->ParseBlock($params); } /** * Returns url for image in case when image source is url (for admin) * * @param Array $params * @return string */ function ImageUrl($params) { $object =& $this->getObject($params); if ($object->GetDBField('SameImages') ? $object->GetDBField('LocalThumb') : $object->GetDBField('LocalImage') ) { $ret = $this->Application->Phrase(getArrayValue($params,'local_phrase')); } else { $ret = $object->GetDBField('SameImages') ? $object->GetDBField('ThumbUrl') : $object->GetDBField('Url'); } return $ret; } } ?>