oxcontent.php

Go to the documentation of this file.
00001 <?php
00002 
00008 class oxContent extends oxI18n implements oxIUrl
00009 {
00015     protected $_sCoreTbl = 'oxcontents';
00016 
00022     protected $_sClassName = 'oxcontent';
00023 
00030     protected $_aSkipSaveFields = array( 'oxtimestamp' );
00031 
00037     protected $_aSeoUrls = array();
00038 
00044     protected $_sParentCatId = null;
00045 
00051     protected $_blExpanded = null;
00052 
00058     protected $_blIsSeoObject = true;
00059 
00067     public function __get( $sName )
00068     {
00069         switch ( $sName ) {
00070             case 'expanded':
00071                 return $this->getExpanded();
00072                 break;
00073         }
00074         return parent::__get( $sName );
00075     }
00076 
00080     public function __construct()
00081     {
00082         parent::__construct();
00083         $this->init( 'oxcontents' );
00084     }
00085 
00091     public function getExpanded()
00092     {
00093         if ( !isset( $this->_blExpanded ) ) {
00094             $this->_blExpanded = ( $this->getId() == oxConfig::getParameter( 'oxcid' ) );
00095         }
00096         return $this->_blExpanded;
00097     }
00098 
00106     public function loadByIdent( $sLoadId )
00107     {
00108         $sSelect = $this->buildSelectString( array( 'oxcontents.oxloadid' => $sLoadId,
00109                                                     'oxcontents.'.$this->getSqlFieldName( 'oxactive' ) => '1',
00110                                                     'oxcontents.oxshopid' => $this->getConfig()->getShopId() ) );
00111 
00112         return $this->assignRecord( $sSelect );
00113     }
00114 
00122     public function assign( $dbRecord )
00123     {
00124 
00125         parent::assign( $dbRecord );
00126         $this->oxcontents__oxcontent->setValue(str_replace( '&amp;', '&', $this->oxcontents__oxcontent->value ), oxField::T_RAW);
00127         // workaround for firefox showing &lang= as &9001;= entity, mantis#0001272
00128         $this->oxcontents__oxcontent->setValue(str_replace( '&lang=', '&amp;lang=', $this->oxcontents__oxcontent->value ), oxField::T_RAW);
00129     }
00130 
00138     public function getBaseSeoLink( $iLang )
00139     {
00140         return oxSeoEncoderContent::getInstance()->getContentUrl( $this, $iLang );
00141     }
00142 
00150     public function getLink( $iLang = null )
00151     {
00152         if ( !oxUtils::getInstance()->seoIsActive() ) {
00153             return $this->getStdLink( $iLang );
00154         }
00155 
00156         if ( $iLang === null ) {
00157             $iLang = $this->getLanguage();
00158         }
00159 
00160         if ( !isset( $this->_aSeoUrls[$iLang] ) ) {
00161             $this->_aSeoUrls[$iLang] = $this->getBaseSeoLink( $iLang );
00162         }
00163 
00164         return $this->_aSeoUrls[$iLang];
00165     }
00166 
00176     public function getBaseStdLink( $iLang, $blAddId = true, $blFull = true )
00177     {
00178         $sUrl = '';
00179         if ( $blFull ) {
00180             //always returns shop url, not admin
00181             $sUrl = $this->getConfig()->getShopUrl( $iLang, false );
00182         }
00183 
00184         $sUrl .= "index.php?cl=content";
00185         if ( $blAddId ) {
00186             $sUrl .= "&amp;oxcid=".$this->getId();
00187             // adding parent category if if available
00188             if ( $this->_sParentCatId !== false &&
00189                  $this->oxcontents__oxcatid->value && $this->oxcontents__oxcatid->value != 'oxrootid' ) {
00190 
00191                 if ( $this->_sParentCatId === null ) {
00192                     $this->_sParentCatId = false;
00193                     $oDb = oxDb::getDb();
00194                     $sParentId = $oDb->getOne( "select oxparentid from oxcategories where oxid = ".$oDb->quote( $this->oxcontents__oxcatid->value ) );
00195                     if ( $sParentId && 'oxrootid' != $sParentId ) {
00196                         $this->_sParentCatId = $sParentId;
00197                     }
00198                 }
00199 
00200                 if ( $this->_sParentCatId ) {
00201                     $sUrl .= "&amp;cnid=".$this->_sParentCatId;
00202                 }
00203             }
00204         }
00205 
00206         //always returns shop url, not admin
00207         return $sUrl;
00208     }
00209 
00218     public function getStdLink( $iLang = null, $aParams = array() )
00219     {
00220         if ( $iLang === null ) {
00221             $iLang = $this->getLanguage();
00222         }
00223 
00224         return oxUtilsUrl::getInstance()->processStdUrl( $this->getBaseStdLink( $iLang ), $aParams, $iLang, $iLang != $this->getLanguage() );
00225     }
00226 
00236     protected function _setFieldData( $sFieldName, $sValue, $iDataType = oxField::T_TEXT)
00237     {
00238         if ('oxcontent' === strtolower($sFieldName) || 'oxcontents__oxcontent' === strtolower($sFieldName)) {
00239             $iDataType = oxField::T_RAW;
00240         }
00241 
00242         return parent::_setFieldData($sFieldName, $sValue, $iDataType);
00243     }
00244 
00252     public function delete( $sOXID = null)
00253     {
00254         if ( !$sOXID ) {
00255             $sOXID = $this->getId();
00256         }
00257         if (parent::delete($sOXID)) {
00258             oxSeoEncoderContent::getInstance()->onDeleteContent($sOXID);
00259             return true;
00260         }
00261         return false;
00262     }
00263 
00269     public function save()
00270     {
00271         $blSaved = parent::save();
00272         if ( $blSaved && $this->oxcontents__oxloadid->value === 'oxagb' ) {
00273             $sShopId  = $this->getConfig()->getShopId();
00274             $sVersion = $this->oxcontents__oxtermversion->value;
00275 
00276             // dropping expired..
00277             oxDb::getDb()->execute( "delete from oxacceptedterms where oxshopid='{$sShopId}' and oxtermversion != '$sVersion'" );
00278         }
00279         return $blSaved;
00280     }
00281 
00287     public function getTermsVersion()
00288     {
00289         if ( $this->loadByIdent( 'oxagb' ) ) {
00290             return $this->oxcontents__oxtermversion->value;
00291         }
00292     }
00293 }