Go to the documentation of this file.00001 <?php
00002
00008 class oxArticleTagList extends oxI18n implements oxITagList
00009 {
00010
00016 protected $_oTagSet = null;
00017
00021 public function __construct()
00022 {
00023 parent::__construct();
00024 $this->_oTagSet = oxNew( 'oxTagSet' );
00025 }
00026
00034 public function setArticleId( $sArticleId )
00035 {
00036 $this->setId( $sArticleId );
00037 }
00038
00044 public function getArticleId()
00045 {
00046 return $this->getId();
00047 }
00048
00054 public function getCacheId()
00055 {
00056 return null;
00057 }
00058
00066 public function load( $sArticleId )
00067 {
00068 $this->setArticleId( $sArticleId );
00069 $oDb = oxDb::getDb();
00070 $sViewName = getViewName( "oxartextends", $this->getLanguage() );
00071 $sQ = "select oxtags from {$sViewName} where oxid = ".$oDb->quote( $sArticleId );
00072
00073 $this->set( "" );
00074
00075 $aTags = explode( $this->get()->getSeparator(), $oDb->getOne( $sQ ) );
00076 foreach ( $aTags as $sTag ) {
00077 $oTag = oxNew( "oxtag" );
00078 $oTag->set( $sTag, false );
00079 $oTag->removeUnderscores();
00080 $this->addTag( $oTag );
00081 }
00082 return $this->_isLoaded = true;
00083 }
00084
00092 public function loadList( $sArticleId = null )
00093 {
00094 if ( $sArticleId === null && ( $sArticleId = $this->getArticleId() ) === null) {
00095 return false;
00096 }
00097 return $this->load( $sArticleId );
00098 }
00099
00105 public function save()
00106 {
00107 if ( !$this->getArticleId() ) {
00108 return false;
00109 }
00110 $oTagSet = $this->get();
00111 foreach ( $oTagSet as $oTag ) {
00112 $oTag->addUnderscores();
00113 }
00114 $sTags = oxDb::getInstance()->escapeString( $oTagSet );
00115 $oDb = oxDb::getDb();
00116
00117 $sTable = getLangTableName( 'oxartextends', $this->getLanguage() );
00118 $sLangSuffix = oxRegistry::getLang()->getLanguageTag($this->getLanguage());
00119
00120 $sQ = "insert into {$sTable} (oxid, oxtags$sLangSuffix) value (".$oDb->quote( $this->getArticleId() ).", '{$sTags}')
00121 on duplicate key update oxtags$sLangSuffix = '{$sTags}'";
00122
00123 if ( $oDb->execute( $sQ ) ) {
00124 $this->executeDependencyEvent();
00125 return true;
00126 }
00127 return false;
00128 }
00129
00130
00138 public function set( $sTags )
00139 {
00140 return $this->_oTagSet->set( $sTags );
00141 }
00142
00148 public function get()
00149 {
00150 return $this->_oTagSet;
00151 }
00152
00158 public function getArray()
00159 {
00160 return $this->_oTagSet->get();
00161 }
00162
00170 public function addTag( $mTag )
00171 {
00172 return $this->_oTagSet->addTag( $mTag );
00173 }
00174
00182 public function getStdTagLink( $sTag )
00183 {
00184 $sStdTagLink = $this->getConfig()->getShopHomeURL( $this->getLanguage(), false );
00185 return $sStdTagLink . "cl=details&anid=".$this->getId()."&listtype=tag&searchtag=".rawurlencode( $sTag );
00186 }
00187
00195 public function canBeTagged( $sTagTitle )
00196 {
00197 $aProducts = oxRegistry::getSession()->getVariable("aTaggedProducts");
00198 if ( isset($aProducts) && $aTags = $aProducts[$this->getArticleId()] ) {
00199 if ( $aTags[$sTagTitle] == 1 ) {
00200 return false;
00201 }
00202 }
00203 return true;
00204 }
00205
00211 public function executeDependencyEvent()
00212 {
00213 $this->_updateTagDependency();
00214
00215 }
00216
00222 protected function _updateTagDependency()
00223 {
00224
00225 $oTagList = oxNew( "oxTagList" );
00226 $oTagList->setLanguage( $this->getLanguage() );
00227 $oTagCloud = oxNew( "oxTagCloud" );
00228 $oTagCloud->setTagList($oTagList);
00229 $oTagCloud->resetCache();
00230 }
00231 }