dynexportbase.php

Go to the documentation of this file.
00001 <?php
00002 
00006 DEFINE("ERR_SUCCESS", -2);
00007 DEFINE("ERR_GENERAL", -1);
00008 DEFINE("ERR_FILEIO", 1);
00009 
00015 class DynExportBase extends oxAdminDetails
00016 {
00022     public $sClassDo            = "";
00023 
00029     public $sClassMain          = "";
00030 
00036     public $sExportPath          = "export/";
00037 
00043     public $sExportFileType      = "txt";
00044 
00050     public $sExportFileName      = "dynexport";
00051 
00057     public $fpFile               = null;
00058 
00064     public $iExportPerTick       = 30;
00065 
00071     protected $_sFilePath        = null;
00072 
00078     protected $_aExportResultset = array();
00079 
00085     protected $_sThisTemplate = "dynexportbase.tpl";
00086 
00092     protected $_aCatLvlCache = null;
00093 
00099     public function __construct()
00100     {
00101         parent::__construct();
00102 
00103         // set generic frame template
00104         $this->_sFilePath = $this->getConfig()->getConfigParam( 'sShopDir' ) . "/". $this->sExportPath . $this->sExportFileName . "." . $this->sExportFileType;
00105     }
00106 
00113     public function render()
00114     {
00115         parent::render();
00116 
00117         // assign all member variables to template
00118         $aClassVars = get_object_vars( $this );
00119         while ( list( $name, $value ) = each( $aClassVars ) ) {
00120             $this->_aViewData[$name] = $value;
00121         }
00122 
00123         $this->_aViewData['sOutputFile']     = $this->_sFilePath;
00124         $this->_aViewData['sDownloadFile']   = $this->getConfig()->getConfigParam( 'sShopURL' ) . $this->sExportPath . $this->sExportFileName . "." . $this->sExportFileType;
00125 
00126         return $this->_sThisTemplate;
00127     }
00128 
00134     public function createMainExportView()
00135     {
00136         // parent categorie tree
00137         $this->_aViewData["cattree"] = oxNew( "oxCategoryList" );
00138         $this->_aViewData["cattree"]->buildList( $this->getConfig()->getConfigParam( 'bl_perfLoadCatTree' ) );
00139     }
00140 
00146     public function start()
00147     {
00148         // delete file, if its already there
00149         $this->fpFile = @fopen( $this->_sFilePath, "w" );
00150         if ( !isset( $this->fpFile ) || !$this->fpFile ) {
00151             // we do have an error !
00152             $this->stop( ERR_FILEIO );
00153         } else {
00154             $this->_aViewData['refresh'] = 0;
00155             $this->_aViewData['iStart']  = 0;
00156             fclose( $this->fpFile );
00157 
00158             // prepare it
00159             $iEnd = $this->prepareExport();
00160             oxSession::setVar( "iEnd", $iEnd );
00161             $this->_aViewData['iEnd'] = $iEnd;
00162         }
00163     }
00164 
00172     public function stop( $iError = 0 )
00173     {
00174         if ( $iError ) {
00175             $this->_aViewData['iError'] = $iError;
00176         }
00177 
00178         // delete temporary heap table
00179         oxDb::getDb()->execute( "drop TABLE if exists ". $this->_getHeapTableName() );
00180     }
00181 
00189     public function nextTick( $iCnt)
00190     {
00191         return false;
00192     }
00193 
00201     public function write( $sLine )
00202     {
00203         $sLine = $this->removeSID( $sLine );
00204         $sLine = str_replace( array("\r\n","\n"), "", $sLine);
00205         fwrite( $this->fpFile, $sLine."\r\n");
00206     }
00207 
00213     public function run()
00214     {
00215         $blContinue = true;
00216         $iExportedItems = 0;
00217 
00218         $this->fpFile = @fopen( $this->_sFilePath, "a");
00219         if ( !isset( $this->fpFile) || !$this->fpFile) {
00220             // we do have an error !
00221             $this->stop( ERR_FILEIO);
00222         } else {
00223             // file is open
00224             $iStart = oxConfig::getParameter("iStart");
00225             // load from session
00226             $this->_aExportResultset = oxConfig::getParameter( "aExportResultset");
00227 
00228             for ( $i = $iStart; $i < $iStart + $this->iExportPerTick; $i++) {
00229                 if ( ( $iExportedItems = $this->nextTick( $i ) ) === false ) {
00230                     // end reached
00231                     $this->stop( ERR_SUCCESS);
00232                     $blContinue = false;
00233                     break;
00234                 }
00235             }
00236             if ( $blContinue) {
00237                 // make ticker continue
00238                 $this->_aViewData['refresh'] = 0;
00239                 $this->_aViewData['iStart']  = $i;
00240                 $this->_aViewData['iExpItems'] = $iExportedItems;
00241             }
00242             fclose( $this->fpFile);
00243         }
00244     }
00245 
00253     public function removeSid( $sInput )
00254     {
00255         $sSid = $this->getSession()->getId();
00256 
00257         // remove sid from link
00258         $sOutput = str_replace( "sid={$sSid}/", "", $sInput);
00259         $sOutput = str_replace( "sid/{$sSid}/", "", $sOutput);
00260         $sOutput = str_replace( "sid={$sSid}&amp;", "", $sOutput);
00261         $sOutput = str_replace( "sid={$sSid}&", "", $sOutput);
00262         $sOutput = str_replace( "sid={$sSid}", "", $sOutput);
00263 
00264         return $sOutput;
00265     }
00266 
00276     public function shrink( $sInput, $iMaxSize, $blRemoveNewline = true )
00277     {
00278         if ( $blRemoveNewline ) {
00279             $sInput = str_replace( "\r\n", " ", $sInput );
00280             $sInput = str_replace( "\n", " ", $sInput );
00281         }
00282 
00283         $sInput = str_replace( "\t", "    ", $sInput );
00284 
00285         // remove html entities, remove html tags
00286         $sInput = $this->_unHTMLEntities( strip_tags( $sInput ) );
00287 
00288         $oStr = getStr();
00289         if ( $oStr->strlen( $sInput ) > $iMaxSize - 3 ) {
00290             $sInput = $oStr->substr( $sInput, 0, $iMaxSize - 5 ) . "...";
00291         }
00292 
00293         return $sInput;
00294     }
00295 
00304     public function getCategoryString( $oArticle, $sSeparator = "/" )
00305     {
00306         $sCatStr = '';
00307 
00308         $sLang = oxLang::getInstance()->getBaseLanguage();
00309         $oDB = oxDb::getDb();
00310 
00311         $sCatView = getViewName( 'oxcategories' );
00312         $sO2CView = getViewName( 'oxobject2category' );
00313 
00314         //selecting category
00315         $sQ  = "select $sCatView.oxleft, $sCatView.oxright, $sCatView.oxrootid from $sO2CView as oxobject2category left join $sCatView on $sCatView.oxid = oxobject2category.oxcatnid ";
00316         $sQ .= "where oxobject2category.oxobjectid=".$oDB->quote( $oArticle->getId() )." and $sCatView.oxactive".(($sLang)?"_$sLang":"")." = 1 order by oxobject2category.oxtime ";
00317 
00318         $oRs = $oDB->execute( $sQ );
00319         if ( $oRs != false && $oRs->recordCount() > 0 ) {
00320             $sLeft   = $oRs->fields[0];
00321             $sRight  = $oRs->fields[1];
00322             $sRootId = $oRs->fields[2];
00323 
00324             //selecting all parent category titles
00325             $sQ = "select oxtitle".( ( $sLang ) ? "_$sLang" : "" )." from $sCatView where oxright >= {$sRight} and oxleft <= {$sLeft} and oxrootid = '{$sRootId}' order by oxleft ";
00326 
00327             $oRs = $oDB->execute( $sQ );
00328             if ( $oRs != false && $oRs->recordCount() > 0 ) {
00329                 while ( !$oRs->EOF ) {
00330                     if ( $sCatStr ) {
00331                         $sCatStr .= $sSeparator;
00332                     }
00333                     $sCatStr .= $oRs->fields[0];
00334                     $oRs->moveNext();
00335                 }
00336             }
00337         }
00338 
00339         return $sCatStr;
00340     }
00341 
00349     public function getDefaultCategoryString( $oArticle )
00350     {
00351         $sLang = oxLang::getInstance()->getBaseLanguage();
00352         $oDB = oxDb::getDb();
00353 
00354         $sCatView = getViewName( 'oxcategories' );
00355         $sO2CView = getViewName( 'oxobject2category' );
00356 
00357         //selecting category
00358         $sQ =  "select $sCatView.oxtitle".(($sLang)?"_$sLang":"")." from $sO2CView as oxobject2category left join $sCatView on $sCatView.oxid = oxobject2category.oxcatnid ";
00359         $sQ .= "where oxobject2category.oxobjectid=".$oDB->quote( $oArticle->getId() )." and $sCatView.oxactive".(($sLang)?"_$sLang":"")." = 1 order by oxobject2category.oxtime ";
00360 
00361         return $oDB->getOne( $sQ);
00362     }
00363 
00371     public function prepareCSV( $sInput )
00372     {
00373         $sInput = oxUtilsString::getInstance()->prepareCSVField( $sInput );
00374         return str_replace( array( "&nbsp;", "&euro;", "|" ), array( " ", "", "" ), $sInput );
00375     }
00376 
00384     public function prepareXML( $sInput )
00385     {
00386         $sOutput = str_replace( "&", "&amp;", $sInput );
00387         $sOutput = str_replace( "\"", "&quot;", $sOutput );
00388         $sOutput = str_replace( ">", "&gt;", $sOutput );
00389         $sOutput = str_replace( "<", "&lt;", $sOutput );
00390         $sOutput = str_replace( "'", "&apos;", $sOutput );
00391 
00392         return $sOutput;
00393     }
00394 
00402     public function getDeepestCategoryPath( $oArticle )
00403     {
00404         return $this->_findDeepestCatPath( $oArticle );
00405     }
00406 
00412     public function prepareExport()
00413     {
00414         $oDB = oxDb::getDb();
00415         $sHeapTable = $this->_getHeapTableName();
00416 
00417         // #1070 Saulius 2005.11.28
00418         // check mySQL version
00419         $oRs = $oDB->execute( "SHOW VARIABLES LIKE 'version'" );
00420         $sTableCharset = $this->_generateTableCharSet( $oRs->fields[1] );
00421 
00422         // create heap table
00423         if ( !( $this->_createHeapTable( $sHeapTable, $sTableCharset ) ) ) {
00424             // error
00425             oxUtils::getInstance()->showMessageAndExit( "Could not create HEAP Table {$sHeapTable}\n<br>" );
00426         }
00427 
00428         $sCatAdd = $this->_getCatAdd( oxConfig::getParameter( "acat" ) );
00429         if ( !$this->_insertArticles( $sHeapTable, $sCatAdd ) ) {
00430             oxUtils::getInstance()->showMessageAndExit( "Could not insert Articles in Table {$sHeapTable}\n<br>" );
00431         }
00432 
00433         $this->_removeParentArticles( $sHeapTable );
00434         $this->_setSessionParams();
00435 
00436         // get total cnt
00437         return $oDB->getOne( "select count(*) from {$sHeapTable}" );
00438     }
00439 
00448     public function getOneArticle( $iCnt, & $blContinue )
00449     {
00450         $myConfig  = $this->getConfig();
00451 
00452         //[Alfonsas 2006-05-31] setting specific parameter
00453         //to be checked in oxarticle.php init() method
00454         $myConfig->setConfigParam( 'blExport', true );
00455         $blContinue = false;
00456 
00457         if ( ( $oArticle = $this->_initArticle( $this->_getHeapTableName(), $iCnt, $blContinue ) ) ) {
00458             $blContinue = true;
00459             $oArticle = $this->_setCampaignDetailLink( $oArticle );
00460         }
00461 
00462         //[Alfonsas 2006-05-31] unsetting specific parameter
00463         //to be checked in oxarticle.php init() method
00464         $myConfig->setConfigParam( 'blExport', false );
00465 
00466         return $oArticle;
00467     }
00468 
00477     public function assureContent( $sInput, $sReplace = null)
00478     {
00479         $oStr = getStr();
00480         if ( !$oStr->strlen( $sInput ) ) {
00481             if ( !isset( $sReplace ) || !$oStr->strlen( $sReplace ) ) {
00482                 $sReplace = "-";
00483             }
00484             $sInput = $sReplace;
00485         }
00486         return $sInput;
00487     }
00488 
00497     protected function _unHtmlEntities( $sInput )
00498     {
00499         $aTransTbl = array_flip( get_html_translation_table( HTML_ENTITIES ) );
00500         return strtr( $sInput, $aTransTbl );
00501     }
00502 
00508     protected function _getHeapTableName()
00509     {
00510         // table name must not start with any digit
00511         return "tmp_".str_replace( "0", "", md5( $this->getSession()->getId() ) );
00512     }
00513 
00521     protected function _generateTableCharSet( $sMysqlVersion )
00522     {
00523         $sTableCharset = "";
00524 
00525         //if MySQL >= 4.1.0 set charsets and collations
00526         if ( version_compare( $sMysqlVersion, '4.1.0', '>=' ) > 0 ) {
00527             $oDB = oxDb::getDb( true );
00528             $oRs = $oDB->execute( "SHOW FULL COLUMNS FROM `oxarticles` WHERE field like 'OXID'" );
00529             if ( isset( $oRs->fields['Collation'] ) && ( $sMysqlCollation = $oRs->fields['Collation'] ) ) {
00530                 $oRs = $oDB->execute( "SHOW COLLATION LIKE '{$sMysqlCollation}'" );
00531                 if ( isset( $oRs->fields['Charset'] ) && ( $sMysqlCharacterSet = $oRs->fields['Charset'] ) ) {
00532                     $sTableCharset = "DEFAULT CHARACTER SET {$sMysqlCharacterSet} COLLATE {$sMysqlCollation}";
00533                 }
00534             }
00535 
00536         }
00537         return $sTableCharset;
00538     }
00539 
00548     protected function _createHeapTable( $sHeapTable, $sTableCharset )
00549     {
00550         $blDone = false;
00551 
00552         $oDB = oxDb::getDb();
00553         $sQ = "CREATE TABLE if not exists {$sHeapTable} ( oxid char(32) NOT NULL default '' ) TYPE=HEAP {$sTableCharset}";
00554         if ( ( $oDB->execute( $sQ ) ) !== false ) {
00555             $blDone = true;
00556             $oDB->execute( "truncate table {$sHeapTable}" );
00557         }
00558 
00559         return $blDone;
00560     }
00561 
00569     protected function _getCatAdd( $aChosenCat )
00570     {
00571         $sCatAdd = null;
00572         if ( is_array( $aChosenCat ) && count( $aChosenCat ) ) {
00573             $oDB = oxDb::getDb();
00574             $sCatAdd = " and ( ";
00575             $blSep = false;
00576             foreach ( $aChosenCat as $sCat ) {
00577                 if ( $blSep ) {
00578                     $sCatAdd .= " or ";
00579                 }
00580                 $sCatAdd .= "oxobject2category.oxcatnid = ".$oDB->quote( $sCat );
00581                 $blSep = true;
00582             }
00583             $sCatAdd .= ")";
00584         }
00585         return $sCatAdd;
00586     }
00587 
00596     protected function _insertArticles( $sHeapTable, $sCatAdd )
00597     {
00598         $oDB = oxDb::getDb();
00599 
00600         $iLanguage = oxLang::getInstance()->getLanguageTag( 0 );
00601 
00602         $sO2CView = getViewName('oxobject2category');
00603         $oArticle = oxNew( 'oxarticle' );
00604         $sArticleTable = $oArticle->getViewName();
00605 
00606         $sSelect  = "insert into {$sHeapTable} select {$sArticleTable}.oxid from {$sArticleTable}, {$sO2CView} as oxobject2category where ";
00607         $sSelect .= $oArticle->getSqlActiveSnippet();
00608 
00609         if ( ! oxConfig::getParameter( "blExportVars" ) ) {
00610             $sSelect .= " and {$sArticleTable}.oxid = oxobject2category.oxobjectid and {$sArticleTable}.oxparentid = '' ";
00611         } else {
00612             $sSelect .= " and ( {$sArticleTable}.oxid = oxobject2category.oxobjectid or {$sArticleTable}.oxparentid = oxobject2category.oxobjectid ) ";
00613         }
00614 
00615         $sSearchString = oxConfig::getParameter( "search" );
00616         if ( isset( $sSearchString ) ) {
00617             $sSelect .= "and ( {$sArticleTable}.OXTITLE".$iLanguage." like ".$oDB->quote( "%{$sSearchString}%" );
00618             $sSelect .= " or {$sArticleTable}.OXSHORTDESC".$iLanguage."  like ".$oDB->quote( "%$sSearchString%" );
00619             $sSelect .= " or {$sArticleTable}.oxsearchkeys  like ".$oDB->quote( "%$sSearchString%" ) ." ) ";
00620         }
00621 
00622         if ( $sCatAdd ) {
00623             $sSelect .= $sCatAdd;
00624         }
00625 
00626             if ( !$sCatAdd ) {
00627                 $sShopID = $this->getConfig()->getShopId();
00628                 $sSelect .= " and {$sArticleTable}.oxshopid = '$sShopID' ";
00629             }
00630 
00631         // add minimum stock value
00632         if ( $this->getConfig()->getConfigParam( 'blUseStock' ) && ( $dMinStock = oxConfig::getParameter( "sExportMinStock" ) ) ) {
00633             $dMinStock = str_replace( array( ";", " ", "/", "'"), "", $dMinStock );
00634             $sSelect .= " and {$sArticleTable}.oxstock >= ".$oDB->quote( $dMinStock );
00635         }
00636 
00637         $sSelect .= " group by {$sArticleTable}.oxid";
00638         return $oDB->execute( $sSelect ) ? true : false;
00639     }
00640 
00648     protected function _removeParentArticles( $sHeapTable )
00649     {
00650         if ( !( oxConfig::getParameter( "blExportMainVars" ) ) ) {
00651 
00652             $oDB = oxDb::getDb();
00653             $sArticleTable = getViewName('oxarticles');
00654 
00655             // we need to remove again parent articles so that we only have the variants itself
00656             $sQ = "select $sHeapTable.oxid from $sHeapTable, $sArticleTable where
00657                           $sHeapTable.oxid = $sArticleTable.oxparentid group by $sHeapTable.oxid";
00658 
00659             $oRs = $oDB->execute( $sQ );
00660             $sDel = "delete from $sHeapTable where oxid in ( ";
00661             $blSep = false;
00662             if ($oRs != false && $oRs->recordCount() > 0) {
00663                 while ( !$oRs->EOF ) {
00664                     if ( $blSep ) {
00665                         $sDel .= ",";
00666                     }
00667                     $sDel .= $oDB->quote( $oRs->fields[0] );
00668                     $blSep = true;
00669                     $oRs->moveNext();
00670                 }
00671             }
00672             $sDel .= " )";
00673             $oDB->execute( $sDel );
00674         }
00675     }
00676 
00683     protected function _setSessionParams()
00684     {
00685         // reset it from session
00686         oxSession::deleteVar( "sExportDelCost" );
00687         $dDelCost = oxConfig::getParameter( "sExportDelCost");
00688         if ( isset( $dDelCost ) ) {
00689             $dDelCost = str_replace( array( ";", " ", "/", "'"), "", $dDelCost );
00690             $dDelCost = str_replace( ",", ".", $dDelCost );
00691             oxSession::setVar( "sExportDelCost", $dDelCost );
00692         }
00693 
00694         oxSession::deleteVar( "sExportMinPrice" );
00695         $dMinPrice = oxConfig::getParameter( "sExportMinPrice" );
00696         if ( isset( $dMinPrice ) ) {
00697             $dMinPrice = str_replace( array( ";", " ", "/", "'"), "", $dMinPrice);
00698             $dMinPrice = str_replace( ",", ".", $dMinPrice);
00699             oxSession::setVar( "sExportMinPrice", $dMinPrice);
00700         }
00701 
00702         // #827
00703         oxSession::deleteVar( "sExportCampaign" );
00704         $sCampaign = oxConfig::getParameter( "sExportCampaign" );
00705         if ( isset( $sCampaign ) ) {
00706             $sCampaign = str_replace( array( ";", " ", "/", "'"), "", $sCampaign );
00707             oxSession::setVar( "sExportCampaign", $sCampaign );
00708         }
00709 
00710         // reset it from session
00711         oxSession::deleteVar("blAppendCatToCampaign" );
00712         // now retrieve it from get or post.
00713         $blAppendCatToCampaign = oxConfig::getParameter( "blAppendCatToCampaign" );
00714         if ( $blAppendCatToCampaign ) {
00715             oxSession::setVar( "blAppendCatToCampaign", $blAppendCatToCampaign );
00716         }
00717     }
00718 
00724     protected function _loadRootCats()
00725     {
00726         if ( $this->_aCatLvlCache === null ) {
00727             $this->_aCatLvlCache = array();
00728 
00729             $sLang = oxLang::getInstance()->getBaseLanguage();
00730             $sCatView = getViewName('oxcategories');
00731             $oDb = oxDb::getDb();
00732 
00733             // Load all root cat's == all trees
00734             $sSQL = "select oxid from $sCatView where oxparentid = 'oxrootid'";
00735             $oRs = $oDb->execute( $sSQL);
00736             if ( $oRs != false && $oRs->recordCount() > 0 ) {
00737                 while ( !$oRs->EOF ) {
00738                     // now load each tree
00739                     $sSQL = "SELECT s.oxid, s.oxtitle".(($sLang)?"_$sLang":"").",
00740                              s.oxparentid, count( * ) AS LEVEL FROM oxcategories v,
00741                              oxcategories s WHERE s.oxrootid = '".$oRs->fields[0]."' and
00742                              v.oxrootid='".$oRs->fields[0]."' and s.oxleft BETWEEN
00743                              v.oxleft AND v.oxright AND s.oxhidden = '0' GROUP BY s.oxleft order by level";
00744 
00745                     $oRs2 = $oDb->Execute( $sSQL );
00746                     if ( $oRs2 != false && $oRs2->recordCount() > 0 ) {
00747                         while ( !$oRs2->EOF ) {
00748                             // store it
00749                             $oCat = new OxStdClass();
00750                             $oCat->_sOXID     = $oRs2->fields[0];
00751                             $oCat->oxtitle    = $oRs2->fields[1];
00752                             $oCat->oxparentid = $oRs2->fields[2];
00753                             $oCat->ilevel     = $oRs2->fields[3];
00754                             $this->_aCatLvlCache[$oCat->_sOXID] = $oCat;
00755 
00756                             $oRs2->moveNext();
00757                         }
00758                     }
00759                     $oRs->moveNext();
00760                 }
00761             }
00762         }
00763 
00764         return $this->_aCatLvlCache;
00765     }
00766 
00774     protected function _findDeepestCatPath( $oArticle )
00775     {
00776         $sRet = "";
00777 
00778         // find deepest
00779         $aIds = $oArticle->getCategoryIds();
00780         if ( is_array( $aIds ) && count( $aIds ) ) {
00781             if ( $aCatLvlCache = $this->_loadRootCats() ) {
00782                 $sIdMax  = null;
00783                 $dMaxLvl = 0;
00784                 foreach ( $aIds as $sCatId ) {
00785                     if ( $dMaxLvl < $aCatLvlCache[$sCatId]->ilevel ) {
00786                         $dMaxLvl = $aCatLvlCache[$sCatId]->ilevel;
00787                         $sIdMax  = $sCatId;
00788                         $sRet    = $aCatLvlCache[$sCatId]->oxtitle;
00789                     }
00790                 }
00791 
00792                 // endless
00793                 for ( ;; ) {
00794                     if ( !isset( $aCatLvlCache[$sIdMax]->oxparentid ) || $aCatLvlCache[$sIdMax]->oxparentid == "oxrootid" ) {
00795                         break;
00796                     }
00797                     $sIdMax = $aCatLvlCache[$sIdMax]->oxparentid;
00798                     $sRet = $aCatLvlCache[$sIdMax]->oxtitle."/".$sRet;
00799                 }
00800             }
00801         }
00802         return $sRet;
00803     }
00804 
00814     protected function _initArticle( $sHeapTable, $iCnt, & $blContinue )
00815     {
00816         $oRs = oxDb::getDb()->selectLimit( "select oxid from $sHeapTable", 1, $iCnt );
00817         if ( $oRs != false && $oRs->recordCount() > 0 ) {
00818             $oArticle = oxNew( 'oxarticle' );
00819             $oArticle->setLoadParentData( true );
00820 
00821             if ( $oArticle->load( $oRs->fields[0] ) ) {
00822                 // if article exists, do not stop export
00823                 $blContinue = true;
00824                 // check price
00825                 $dMinPrice = oxConfig::getParameter( "sExportMinPrice" );
00826                 if ( !isset( $dMinPrice ) || ( isset( $dMinPrice ) && ( $oArticle->brutPrice >= $dMinPrice ) ) ) {
00827 
00828                     //Saulius: variant title added
00829                     $sTitle = $oArticle->oxarticles__oxvarselect->value ? " " .$oArticle->oxarticles__oxvarselect->value : "";
00830                     $oArticle->oxarticles__oxtitle->setValue( $oArticle->oxarticles__oxtitle->value . $sTitle );
00831 
00832 
00833                     return $oArticle;
00834                 }
00835             }
00836         }
00837     }
00838 
00846     protected function _setCampaignDetailLink( $oArticle )
00847     {
00848         // #827
00849         if ( $sCampaign = oxConfig::getParameter( "sExportCampaign" ) ) {
00850             // modify detaillink
00851             //#1166R - pangora - campaign
00852             $oArticle->appendLink( "campaign={$sCampaign}" );
00853 
00854             if ( oxConfig::getParameter( "blAppendCatToCampaign") &&
00855                  ( $sCat = $this->getCategoryString( $oArticle ) ) ) {
00856                 $oArticle->appendLink( "/$sCat" );
00857             }
00858         }
00859         return $oArticle;
00860     }
00861 
00867     public function getViewId()
00868     {
00869         return 'dyn_interface';
00870     }
00871 }