* * $Id: ProductImageLabel.class.php 272 2008-10-08 15:40:08Z erikwinn $ *@version 0.1 * *@copyright (C) 2008 by Erik Winn *@license GPL v.2 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA * *@package Quasi * @subpackage CMS */ class ProductImageLabel extends QControl { /** *@var Product member object */ protected $objProduct; /** *@var string strImageUri - URI for the image to display */ protected $strImageUri; /** *@var string strAlternateText - ALT text for the image to display */ protected $strAlternateText; /** *@var integer intHeight - image height in pixels */ protected $intHeight; /** *@var integer intWidth - image width in pixels */ protected $intWidth; /** *@var integer intSizeType - the ImageSizeType of image to look for: Icon, Thumb, Small, Large ..etc. */ protected $intSizeType = ImageSizeType::Small; /** * ProductImageLabel Constructor * * @param QControl objParentObject - the parent of this control * @param integer intProductId - id of the product for which the image is displayed * @param integer intSizeType - optional ImageSizeType flag (Small, Large, etc..) * @param integer intHeight - optional height specification * @param integer intWidth - optional width specification * @param string strControlId - optional string to use as CSS Id */ public function __construct($objParentObject, $intProductId, $intSizeType = null, $intHeight = null, $intWidth = null, $strControlId = null) { try { parent::__construct($objParentObject, $strControlId); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } if($intSizeType) $this->intSizeType = $intSizeType; else $this->intSizeType = ImageSizeType::Small; $aryImages = ProductImage::QueryArray( QQ::AndCondition( QQ::Equal( QQN::ProductImage()->ProductId, $intProductId ), QQ::Equal( QQN::ProductImage()->SizeType, $this->intSizeType ) )); $this->strImageUri = __QUASI_SUBDIRECTORY__; ///@todo we take the first image of size type - allow specification of which image if more than one if( is_array($aryImages) && ! empty($aryImages)) { $objProductImage = $aryImages[0]; if($intHeight) $this->intHeight = $intHeight; elseif( $objProductImage->XSize ) $this->intHeight = $objProductImage->XSize; if($intWidth) $this->intWidth = $intWidth; elseif( $objProductImage->YSize ) $this->intWidth = $objProductImage->YSize; $strFileUri = $objProductImage->Uri; if( file_exists( __QUASI_ROOT__ . $strFileUri ) ) $this->strImageUri .= $strFileUri; else $this->strImageUri .= "/core/assets/images/default_product.png"; } else { if($intHeight) $this->intHeight = $intHeight; if($intWidth) $this->intWidth = $intWidth; $this->strImageUri .= "/core/assets/images/default_product.png"; } } public function GetJavaScriptAction() {return "onclick";} public function Validate() {return true;} public function ParsePostData(){} public function GetAttributes($blnIncludeCustom = true, $blnIncludeAction = true) { $strToReturn = parent::GetAttributes($blnIncludeCustom, $blnIncludeAction); if ($this->strAlternateText) $strToReturn .= sprintf('alt="%s" ', $this->strAlternateText); if ($this->strImageUri) $strToReturn .= sprintf('src="%s" ', $this->strImageUri); if ($this->intHeight) $strToReturn .= sprintf('height="%s" ', $this->intHeight); if ($this->strWidth) $strToReturn .= sprintf('width="%s" ', $this->intWidth); return $strToReturn; } protected function GetControlHtml() { $strStyle = $this->GetStyleAttributes(); if ($strStyle) $strStyle = sprintf('style="%s"', $strStyle); $strToReturn = sprintf('', $this->strControlId, $this->strControlId, $this->GetAttributes(), $strStyle); return $strToReturn; } public function __get($strName) { switch ($strName) { case 'Product': return $this->objProduct ; case 'ImageUri': return $this->strImageUri ; case 'AlternateText': return $this->strAlternateText ; case 'Height': return $this->intHeight ; case 'Width': return $this->intWidth ; default: try { return parent::__get($strName); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } } public function __set($strName, $mixValue) { switch ($strName) { case 'Product': try { return ($this->objProduct = QType::Cast($mixValue, 'Product' )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'ImageUri': try { return ($this->strImageUri = QType::Cast($mixValue, QType::String )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'AlternateText': try { return ($this->strAlternateText = QType::Cast($mixValue, QType::String )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'Height': try { return ($this->intHeight = QType::Cast($mixValue, QType::Integer )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } case 'Width': try { return ($this->intWidth = QType::Cast($mixValue, QType::Integer )); } catch (QInvalidCastException $objExc) { $objExc->IncrementOffset(); throw $objExc; } default: try { return (parent::__set($strName, $mixValue)); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } } }//end class }//end define ?>