OXID eShop CE  4.8.12
 All Classes Files Functions Variables Pages
article_main.php
Go to the documentation of this file.
1 <?php
2 
10 {
17  public function render()
18  {
20 
21  $this->getConfig()->setConfigParam( 'bl_perfLoadPrice', true );
22 
23  $oArticle = oxNew( 'oxArticle' );
24  $oArticle->enablePriceLoad();
25 
26  $this->_aViewData['edit'] = $oArticle;
27 
28  $sOxId = $this->getEditObjectId();
29  $sVoxId = $this->getConfig()->getRequestParameter( "voxid" );
30  $sOxParentId = $this->getConfig()->getRequestParameter( "oxparentid" );
31 
32  // new variant ?
33  if ( isset( $sVoxId ) && $sVoxId == "-1" && isset($sOxParentId) && $sOxParentId && $sOxParentId != "-1") {
34  $oParentArticle = oxNew( "oxArticle");
35  $oParentArticle->load( $sOxParentId);
36  $this->_aViewData["parentarticle"] = $oParentArticle;
37  $this->_aViewData["oxparentid"] = $sOxParentId;
38 
39  $this->_aViewData["oxid"] = $sOxId = "-1";
40  }
41 
42  if ( $sOxId && $sOxId != "-1") {
43 
44  // load object
45  $oArticle->loadInLang( $this->_iEditLang, $sOxId );
46 
47 
48  // load object in other languages
49  $oOtherLang = $oArticle->getAvailableInLangs();
50  if (!isset($oOtherLang[$this->_iEditLang])) {
51  // echo "language entry doesn't exist! using: ".key($oOtherLang);
52  $oArticle->loadInLang( key($oOtherLang), $sOxId );
53  }
54 
55  // variant handling
56  if ( $oArticle->oxarticles__oxparentid->value) {
57  $oParentArticle = oxNew( "oxArticle");
58  $oParentArticle->load( $oArticle->oxarticles__oxparentid->value);
59  $this->_aViewData["parentarticle"] = $oParentArticle;
60  $this->_aViewData["oxparentid"] = $oArticle->oxarticles__oxparentid->value;
61  $this->_aViewData["issubvariant"] = 1;
62  }
63 
64  // #381A
65  $this->_formJumpList($oArticle, $oParentArticle );
66 
67  //loading tags
68  $oArticleTagList = oxNew( "oxArticleTagList" );
69  $oArticleTagList->loadInLang( $this->_iEditLang, $oArticle->getId() );
70  $oArticle->tags = $oArticleTagList->get();
71 
72  $aLang = array_diff (oxRegistry::getLang()->getLanguageNames(), $oOtherLang);
73  if ( count( $aLang))
74  $this->_aViewData["posslang"] = $aLang;
75 
76  foreach ( $oOtherLang as $id => $language) {
77  $oLang= new stdClass();
78  $oLang->sLangDesc = $language;
79  $oLang->selected = ($id == $this->_iEditLang);
80  $this->_aViewData["otherlang"][$id] = clone $oLang;
81  }
82  }
83 
84  $this->_aViewData["editor"] = $this->_generateTextEditor( "100%", 300, $oArticle, "oxarticles__oxlongdesc", "details.tpl.css");
85  $this->_aViewData["blUseTimeCheck"] = $this->getConfig()->getConfigParam( 'blUseTimeCheck' );
86 
87  return "article_main.tpl";
88  }
89 
98  protected function _getEditValue( $oObject, $sField )
99  {
100  $sEditObjectValue = '';
101  if ( $oObject ) {
102  $oDescField = $oObject->getLongDescription();
103  $sEditObjectValue = $this->_processEditValue( $oDescField->getRawValue() );
104  $oDescField = new oxField( $sEditObjectValue, oxField::T_RAW );
105  }
106 
107  return $sEditObjectValue;
108  }
109 
115  public function save()
116  {
117  parent::save();
118 
119  $oConfig = $this->getConfig();
120  $soxId = $this->getEditObjectId();
121  $aParams = $oConfig->getRequestParameter( "editval" );
122 
123  // default values
124  $aParams = $this->addDefaultValues( $aParams );
125 
126  // null values
127  if (isset($aParams['oxarticles__oxvat']) && $aParams['oxarticles__oxvat'] === '') {
128  $aParams['oxarticles__oxvat'] = null;
129  }
130 
131  // varianthandling
132  $soxparentId = $oConfig->getRequestParameter( "oxparentid");
133  if ( isset( $soxparentId) && $soxparentId && $soxparentId != "-1") {
134  $aParams['oxarticles__oxparentid'] = $soxparentId;
135  } else {
136  unset( $aParams['oxarticles__oxparentid']);
137  }
138 
139  $oArticle = oxNew( "oxarticle");
140  $oArticle->setLanguage($this->_iEditLang);
141 
142  if ( $soxId != "-1") {
143  $oArticle->loadInLang( $this->_iEditLang, $soxId);
144  } else {
145  $aParams['oxarticles__oxid'] = null;
146  $aParams['oxarticles__oxissearch'] = 1;
147  $aParams['oxarticles__oxstockflag'] = 1;
148  if ( empty($aParams['oxarticles__oxstock']) ) {
149  $aParams['oxarticles__oxstock'] = 0;
150  }
151 
152  // shopid
153  $aParams['oxarticles__oxshopid'] = oxRegistry::getSession()->getVariable( "actshop");
154 
155  if (!isset($aParams['oxarticles__oxactive'])) {
156  $aParams['oxarticles__oxactive'] = 0;
157  }
158  }
159 
160  //article number handling, warns for artnum dublicates
161  if ( isset( $aParams['oxarticles__oxartnum']) && strlen($aParams['oxarticles__oxartnum']) > 0 &&
162  $oConfig->getConfigParam( 'blWarnOnSameArtNums' ) &&
163  $oArticle->oxarticles__oxartnum->value != $aParams['oxarticles__oxartnum']
164  ) {
165  $sSelect = "select oxid from ".getViewName( 'oxarticles' );
166  $sSelect .= " where oxartnum = '".$aParams['oxarticles__oxartnum']."'";
167  $sSelect .= " and oxid != '".$aParams['oxarticles__oxid']."'";
168  if ($oArticle->assignRecord( $sSelect ))
169  $this->_aViewData["errorsavingatricle"] = 1;
170  }
171 
172 
173  // #905A resetting article count in price categories if price has been changed
174  if ( isset($aParams["oxarticles__oxprice"]) && $aParams["oxarticles__oxprice"] != $oArticle->oxarticles__oxprice->value) {
175  $this->resetCounter( "priceCatArticle", $oArticle->oxarticles__oxprice->value );
176  }
177 
178  $aResetIds = array();
179  if ( isset($aParams['oxarticles__oxactive']) && $aParams['oxarticles__oxactive'] != $oArticle->oxarticles__oxactive->value) {
180  //check categories
181  $this->_resetCategoriesCounter( $oArticle->oxarticles__oxid->value );
182 
183  // vendors
184  $aResetIds['vendor'][$oArticle->oxarticles__oxvendorid->value] = 1;
185  $aResetIds['manufacturer'][$oArticle->oxarticles__oxmanufacturerid->value] = 1;
186  }
187 
188  // vendors
189  if ( isset($aParams['oxarticles__oxvendorid']) && $aParams['oxarticles__oxvendorid'] != $oArticle->oxarticles__oxvendorid->value) {
190  $aResetIds['vendor'][$aParams['oxarticles__oxvendorid']] = 1;
191  $aResetIds['vendor'][$oArticle->oxarticles__oxvendorid->value] = 1;
192  }
193 
194  // manufacturers
195  if ( isset($aParams['oxarticles__oxmanufacturerid']) && $aParams['oxarticles__oxmanufacturerid'] != $oArticle->oxarticles__oxmanufacturerid->value ) {
196  $aResetIds['manufacturer'][$aParams['oxarticles__oxmanufacturerid']] = 1;
197  $aResetIds['manufacturer'][$oArticle->oxarticles__oxmanufacturerid->value] = 1;
198  }
199 
200  // resetting counts
201  $this->_resetCounts( $aResetIds );
202 
203  $oArticle->setLanguage(0);
204 
205  //triming spaces from article title (M:876)
206  if (isset($aParams['oxarticles__oxtitle'])) {
207  $aParams['oxarticles__oxtitle'] = trim( $aParams['oxarticles__oxtitle'] );
208  }
209 
210  $oArticle->assign( $aParams );
211  $oArticle->setArticleLongDesc( $this->_processLongDesc( $aParams['oxarticles__oxlongdesc'] ) );
212  $oArticle->setLanguage($this->_iEditLang);
213  $oArticle = oxRegistry::get("oxUtilsFile")->processFiles( $oArticle );
214  $oArticle->save();
215 
216  // set oxid if inserted
217  if ( $soxId == "-1") {
218  $sFastCat = $oConfig->getRequestParameter( "art_category");
219  if ( $sFastCat != "-1") {
220  $this->addToCategory($sFastCat, $oArticle->getId());
221  }
222  }
223 
224  //saving tags
225  if (isset($aParams['tags'])) {
226  $sTags = $aParams['tags'];
227  if (!trim($sTags)) {
228  $sTags = $oArticle->oxarticles__oxsearchkeys->value;
229  }
230  $aInvalidTags = $this->_setTags( $sTags, $oArticle->getId() );
231  if ( !empty( $aInvalidTags ) ) {
232  $this->_aViewData["invalid_tags"] = implode( ', ', $aInvalidTags );
233  }
234  }
235 
236  $this->setEditObjectId( $oArticle->getId() );
237  }
238 
246  protected function _processLongDesc( $sValue )
247  {
248  // TODO: the code below is redundant, optimize it, assignments should go smooth without conversions
249  // hack, if editor screws up text, htmledit tends to do so
250  $sValue = str_replace( '&amp;nbsp;', '&nbsp;', $sValue );
251  $sValue = str_replace( '&amp;', '&', $sValue );
252  $sValue = str_replace( '&quot;', '"', $sValue );
253  $sValue = str_replace( '&lang=', '&amp;lang=', $sValue);
254  $sValue = str_replace( '<p>&nbsp;</p>', '', $sValue);
255  $sValue = str_replace( '<p>&nbsp; </p>', '', $sValue);
256 
257  return $sValue;
258  }
259 
267  protected function _resetCategoriesCounter( $sArticleId )
268  {
269  $oDb = oxDb::getDb();
270  $sQ = "select oxcatnid from oxobject2category where oxobjectid = ".$oDb->quote( $sArticleId );
271  $oRs = $oDb->execute($sQ);
272  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
273  while (!$oRs->EOF) {
274  $this->resetCounter( "catArticle", $oRs->fields[0] );
275  $oRs->moveNext();
276  }
277  }
278  }
279 
288  protected function _setTags( $sTags, $sArticleId )
289  {
290  $oArticleTagList = oxNew('oxarticletaglist');
291  $oArticleTagList->loadInLang( $this->_iEditLang, $sArticleId );
292  $oArticleTagList->set( $sTags );
293  $oArticleTagList->save();
294 
295  return $oArticleTagList->get()->getInvalidTags();
296  }
297 
306  public function addToCategory($sCatID, $sOXID)
307  {
308  $myConfig = $this->getConfig();
309 
310  $oNew = oxNew( "oxbase");
311  $oNew->init( "oxobject2category" );
312  $oNew->oxobject2category__oxtime = new oxField( 0 );
313  $oNew->oxobject2category__oxobjectid = new oxField( $sOXID );
314  $oNew->oxobject2category__oxcatnid = new oxField( $sCatID );
315 
316  $oNew->save();
317 
318  // resetting amount of articles in category
319  $this->resetCounter( "catArticle", $sCatID );
320  }
321 
331  public function copyArticle( $sOldId = null, $sNewId = null, $sParentId = null )
332  {
333  $myConfig = $this->getConfig();
334 
335  $sOldId = $sOldId ? $sOldId : $this->getEditObjectId();
336  $sNewId = $sNewId ? $sNewId : oxUtilsObject::getInstance()->generateUID();
337 
338  $oArticle = oxNew( 'oxbase' );
339  $oArticle->init( 'oxarticles' );
340  if ( $oArticle->load( $sOldId ) ) {
341 
342  if ( $myConfig->getConfigParam( 'blDisableDublArtOnCopy' ) ) {
343  $oArticle->oxarticles__oxactive->setValue( 0 );
344  $oArticle->oxarticles__oxactivefrom->setValue( 0 );
345  $oArticle->oxarticles__oxactiveto->setValue( 0 );
346  }
347 
348  // setting parent id
349  if ( $sParentId ) {
350  $oArticle->oxarticles__oxparentid->setValue( $sParentId );
351  }
352 
353  // setting oxinsert/oxtimestamp
354  $iNow = date( 'Y-m-d H:i:s', oxRegistry::get("oxUtilsDate")->getTime() );
355  $oArticle->oxarticles__oxinsert = new oxField( $iNow );
356 
357  // mantis#0001590: OXRATING and OXRATINGCNT not set to 0 when copying article
358  $oArticle->oxarticles__oxrating = new oxField( 0 );
359  $oArticle->oxarticles__oxratingcnt = new oxField( 0 );
360 
361  $oArticle->setId( $sNewId );
362  $oArticle->save();
363 
364  //copy categories
365  $this->_copyCategories( $sOldId, $sNewId );
366 
367  //atributes
368  $this->_copyAttributes( $sOldId, $sNewId );
369 
370  //sellist
371  $this->_copySelectlists( $sOldId, $sNewId );
372 
373  //crossseling
374  $this->_copyCrossseling( $sOldId, $sNewId );
375 
376  //accessoire
377  $this->_copyAccessoires( $sOldId, $sNewId );
378 
379  // #983A copying staffelpreis info
380  $this->_copyStaffelpreis( $sOldId, $sNewId );
381 
382  //copy article extends (longdescription, tags)
383  $this->_copyArtExtends( $sOldId, $sNewId);
384 
385  //files
386  $this->_copyFiles( $sOldId, $sNewId );
387 
388  // resetting
389  $aResetIds['vendor'][$oArticle->oxarticles__oxvendorid->value] = 1;
390  $aResetIds['manufacturer'][$oArticle->oxarticles__oxmanufacturerid->value] = 1;
391  $this->_resetCounts( $aResetIds );
392 
393 
394  $myUtilsObject = oxUtilsObject::getInstance();
395  $oDb = oxDb::getDb();
396 
397  //copy variants
398  $sQ = "select oxid from oxarticles where oxparentid = ".$oDb->quote( $sOldId );
399  $oRs = $oDb->execute( $sQ );
400  if ( $oRs !== false && $oRs->recordCount() > 0) {
401  while ( !$oRs->EOF ) {
402  $this->copyArticle( $oRs->fields[0], $myUtilsObject->generateUid(), $sNewId );
403  $oRs->moveNext();
404  }
405  }
406 
407  // only for top articles
408  if ( !$sParentId ) {
409 
410  $this->setEditObjectId( $oArticle->getId() );
411 
412  //article number handling, warns for artnum dublicates
413  if ( $myConfig->getConfigParam( 'blWarnOnSameArtNums' ) &&
414  $oArticle->oxarticles__oxartnum->value && oxConfig::getParameter( 'fnc' ) == 'copyArticle' ) {
415  $sSelect = "select oxid from ".$oArticle->getCoreTableName()."
416  where oxartnum = ".$oDb->quote( $oArticle->oxarticles__oxartnum->value )." and oxid != ".$oDb->quote( $sNewId );
417 
418  if ( $oArticle->assignRecord( $sSelect ) ) {
419  $this->_aViewData["errorsavingatricle"] = 1;
420  }
421  }
422  }
423  }
424  }
425 
434  protected function _copyCategories( $sOldId, $sNewId )
435  {
436  $myUtilsObject = oxUtilsObject::getInstance();
437  $oShopMetaData = oxRegistry::get("oxShopMetaData");
438  $oDb = oxDb::getDb();
439 
440 
441  $sO2CView = getViewName( 'oxobject2category' );
442  $sQ = "select oxcatnid, oxtime from {$sO2CView} where oxobjectid = ".$oDb->quote( $sOldId );
443  $oRs = $oDb->execute( $sQ );
444  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
445  while ( !$oRs->EOF ) {
446  $sUid = $myUtilsObject->generateUid();
447  $sCatId = $oRs->fields[0];
448  $sTime = $oRs->fields[1];
449 
450 
451  $oDb->execute("insert into oxobject2category (oxid, oxobjectid, oxcatnid, oxtime) VALUES (".$oDb->quote( $sUid ).", ".$oDb->quote( $sNewId ).", ".$oDb->quote( $sCatId ).", ".$oDb->quote( $sTime ).") ");
452 
453  $oRs->moveNext();
454 
455  // resetting article count in category
456  $this->resetCounter( "catArticle", $sCatId );
457  }
458  }
459  }
460 
469  protected function _copyAttributes( $sOldId, $sNewId )
470  {
471  $myUtilsObject = oxUtilsObject::getInstance();
472  $oDb = oxDb::getDb();
473 
474  $sQ = "select oxid from oxobject2attribute where oxobjectid = ".$oDb->quote( $sOldId );
475  $oRs = $oDb->execute($sQ);
476  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
477  while ( !$oRs->EOF ) {
478  // #1055A
479  $oAttr = oxNew( "oxbase" );
480  $oAttr->init( "oxobject2attribute" );
481  $oAttr->load( $oRs->fields[0] );
482  $oAttr->setId( $myUtilsObject->generateUID() );
483  $oAttr->oxobject2attribute__oxobjectid->setValue( $sNewId );
484  $oAttr->save();
485  $oRs->moveNext();
486  }
487  }
488  }
489 
498  protected function _copyFiles( $sOldId, $sNewId )
499  {
500  $myUtilsObject = oxUtilsObject::getInstance();
501  $oDb = oxDb::getDb( oxDB::FETCH_MODE_ASSOC );
502 
503  $sQ = "SELECT * FROM `oxfiles` WHERE `oxartid` = ".$oDb->quote( $sOldId );
504  $oRs = $oDb->execute($sQ);
505  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
506  while ( !$oRs->EOF ) {
507 
508  $oFile = oxNew( "oxfile" );
509  $oFile->setId( $myUtilsObject->generateUID() );
510  $oFile->oxfiles__oxartid = new oxField( $sNewId );
511  $oFile->oxfiles__oxfilename = new oxField( $oRs->fields['OXFILENAME'] );
512  $oFile->oxfiles__oxfilesize = new oxField( $oRs->fields['OXFILESIZE'] );
513  $oFile->oxfiles__oxstorehash = new oxField( $oRs->fields['OXSTOREHASH'] );
514  $oFile->oxfiles__oxpurchasedonly = new oxField( $oRs->fields['OXPURCHASEDONLY'] );
515  $oFile->save();
516  $oRs->moveNext();
517  }
518  }
519  }
520 
529  protected function _copySelectlists( $sOldId, $sNewId )
530  {
531  $myUtilsObject = oxUtilsObject::getInstance();
532  $oDb = oxDb::getDb();
533 
534  $sQ = "select oxselnid from oxobject2selectlist where oxobjectid = ".$oDb->quote( $sOldId );
535  $oRs = $oDb->execute( $sQ );
536  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
537  while ( !$oRs->EOF ) {
538  $sUid = $myUtilsObject->generateUID();
539  $sId = $oRs->fields[0];
540  $oDb->execute( "insert into oxobject2selectlist (oxid, oxobjectid, oxselnid) VALUES (".$oDb->quote( $sUid ).", ".$oDb->quote( $sNewId ).", ".$oDb->quote( $sId ).") " );
541  $oRs->moveNext();
542  }
543  }
544  }
545 
554  protected function _copyCrossseling( $sOldId, $sNewId )
555  {
556  $myUtilsObject = oxUtilsObject::getInstance();
557  $oDb = oxDb::getDb();
558 
559  $sQ = "select oxobjectid from oxobject2article where oxarticlenid = ".$oDb->quote( $sOldId );
560  $oRs = $oDb->execute( $sQ );
561  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
562  while ( !$oRs->EOF ) {
563  $sUid = $myUtilsObject->generateUID();
564  $sId = $oRs->fields[0];
565  $oDb->execute("insert into oxobject2article (oxid, oxobjectid, oxarticlenid) VALUES (".$oDb->quote( $sUid ).", ".$oDb->quote( $sId ).", ".$oDb->quote( $sNewId )." ) ");
566  $oRs->moveNext();
567  }
568  }
569  }
570 
579  protected function _copyAccessoires( $sOldId, $sNewId )
580  {
581  $myUtilsObject = oxUtilsObject::getInstance();
582  $oDb = oxDb::getDb();
583 
584  $sQ = "select oxobjectid from oxaccessoire2article where oxarticlenid= ".$oDb->quote( $sOldId );
585  $oRs = $oDb->execute( $sQ );
586  if ( $oRs !== false && $oRs->recordCount() > 0 ) {
587  while ( !$oRs->EOF ) {
588  $sUId = $myUtilsObject->generateUid();
589  $sId = $oRs->fields[0];
590  $oDb->execute( "insert into oxaccessoire2article (oxid, oxobjectid, oxarticlenid) VALUES (".$oDb->quote( $sUId ).", ".$oDb->quote( $sId ).", ".$oDb->quote( $sNewId ).") " );
591  $oRs->moveNext();
592  }
593  }
594  }
595 
604  protected function _copyStaffelpreis( $sOldId, $sNewId )
605  {
606  $sShopId = $this->getConfig()->getShopId();
607  $oPriceList = oxNew( "oxlist" );
608  $oPriceList->init( "oxbase", "oxprice2article" );
609  $sQ = "select * from oxprice2article where oxartid = '$sOldId' and oxshopid = '$sShopId' and (oxamount > 0 or oxamountto > 0) order by oxamount ";
610  $oPriceList->selectString( $sQ );
611  if ( $oPriceList->count() ) {
612  foreach ( $oPriceList as $oItem ) {
613  $oItem->oxprice2article__oxid->setValue( $oItem->setId() );
614  $oItem->oxprice2article__oxartid->setValue( $sNewId );
615  $oItem->save();
616  }
617  }
618  }
619 
628  protected function _copyArtExtends( $sOldId, $sNewId)
629  {
630  $oExt = oxNew( "oxbase");
631  $oExt->init( "oxartextends" );
632  $oExt->load( $sOldId );
633  $oExt->setId( $sNewId );
634  $oExt->save();
635  }
636 
637 
643  public function saveinnlang()
644  {
645  $this->save();
646  }
647 
656  public function addDefaultValues( $aParams )
657  {
658  return $aParams;
659  }
660 
669  protected function _formJumpList( $oArticle, $oParentArticle )
670  {
671  $aJumpList = array();
672  //fetching parent article variants
673  if ( isset( $oParentArticle ) ) {
674  $aJumpList[] = array( $oParentArticle->oxarticles__oxid->value, $this->_getTitle( $oParentArticle ) );
675  $oParentVariants = $oParentArticle->getAdminVariants( oxConfig::getParameter( "editlanguage" ) );
676  if ( $oParentVariants->count()) {
677  foreach ( $oParentVariants as $oVar) {
678  $aJumpList[] = array( $oVar->oxarticles__oxid->value, " - ".$this->_getTitle( $oVar ) );
679  if ( $oVar->oxarticles__oxid->value == $oArticle->oxarticles__oxid->value ) {
680  $oVariants = $oArticle->getAdminVariants(oxConfig::getParameter( "editlanguage"));
681  if ( $oVariants->count() ) {
682  foreach ( $oVariants as $oVVar) {
683  $aJumpList[] = array( $oVVar->oxarticles__oxid->value, " -- ".$this->_getTitle( $oVVar));
684  }
685  }
686  }
687  }
688  }
689  } else {
690  $aJumpList[] = array( $oArticle->oxarticles__oxid->value, $this->_getTitle( $oArticle));
691  //fetching this article variants data
692  $oVariants = $oArticle->getAdminVariants(oxConfig::getParameter( "editlanguage"));
693  if ( $oVariants && $oVariants->count())
694  foreach ($oVariants as $oVar) {
695  $aJumpList[] = array( $oVar->oxarticles__oxid->value, " - ".$this->_getTitle( $oVar));
696  }
697  }
698  if ( count($aJumpList) > 1)
699  $this->_aViewData["thisvariantlist"] = $aJumpList;
700  }
701 
709  protected function _getTitle( $oObj )
710  {
711  $sTitle = $oObj->oxarticles__oxtitle->value;
712  if ( !strlen( $sTitle ) ) {
713  $sTitle = $oObj->oxarticles__oxvarselect->value;
714  }
715 
716  return $sTitle;
717  }
718 
724  public function getCategoryList()
725  {
726  $oCatTree = oxNew( "oxCategoryList");
727  $oCatTree->loadList();
728  return $oCatTree;
729  }
730 
736  public function getVendorList()
737  {
738  $oVendorlist = oxNew( "oxvendorlist" );
739  $oVendorlist->loadVendorList();
740 
741  return $oVendorlist;
742  }
743 
749  public function getManufacturerList()
750  {
751  $oManufacturerList = oxNew( "oxmanufacturerlist" );
752  $oManufacturerList->loadManufacturerList();
753 
754  return $oManufacturerList;
755  }
756 }