OXID eShop CE  4.10.1
 All Classes Namespaces Files Functions Variables Pages
article_main.php
Go to the documentation of this file.
1 <?php
2 
10 {
11 
18  public function render()
19  {
21 
22  $this->getConfig()->setConfigParam('bl_perfLoadPrice', true);
23 
24  $oArticle = oxNew('oxArticle');
25  $oArticle->enablePriceLoad();
26 
27  $this->_aViewData['edit'] = $oArticle;
28 
29  $sOxId = $this->getEditObjectId();
30  $sVoxId = $this->getConfig()->getRequestParameter("voxid");
31  $sOxParentId = $this->getConfig()->getRequestParameter("oxparentid");
32 
33  // new variant ?
34  if (isset($sVoxId) && $sVoxId == "-1" && isset($sOxParentId) && $sOxParentId && $sOxParentId != "-1") {
35  $oParentArticle = oxNew("oxArticle");
36  $oParentArticle->load($sOxParentId);
37  $this->_aViewData["parentarticle"] = $oParentArticle;
38  $this->_aViewData["oxparentid"] = $sOxParentId;
39 
40  $this->_aViewData["oxid"] = $sOxId = "-1";
41  }
42 
43  if ($sOxId && $sOxId != "-1") {
44 
45  // load object
46  $oArticle->loadInLang($this->_iEditLang, $sOxId);
47 
48 
49  // load object in other languages
50  $oOtherLang = $oArticle->getAvailableInLangs();
51  if (!isset($oOtherLang[$this->_iEditLang])) {
52  // echo "language entry doesn't exist! using: ".key($oOtherLang);
53  $oArticle->loadInLang(key($oOtherLang), $sOxId);
54  }
55 
56  // variant handling
57  if ($oArticle->oxarticles__oxparentid->value) {
58  $oParentArticle = oxNew("oxArticle");
59  $oParentArticle->load($oArticle->oxarticles__oxparentid->value);
60  $this->_aViewData["parentarticle"] = $oParentArticle;
61  $this->_aViewData["oxparentid"] = $oArticle->oxarticles__oxparentid->value;
62  $this->_aViewData["issubvariant"] = 1;
63  }
64 
65  // #381A
66  $this->_formJumpList($oArticle, $oParentArticle);
67 
68  // @deprecated v5.3 (2016-05-04); Tags will be moved to own module.
69  //loading tags
70  $oArticleTagList = oxNew("oxArticleTagList");
71  $oArticleTagList->loadInLang($this->_iEditLang, $oArticle->getId());
72  $oArticle->tags = $oArticleTagList->get();
73  // END deprecated
74 
75  $aLang = array_diff(oxRegistry::getLang()->getLanguageNames(), $oOtherLang);
76  if (count($aLang)) {
77  $this->_aViewData["posslang"] = $aLang;
78  }
79 
80  foreach ($oOtherLang as $id => $language) {
81  $oLang = new stdClass();
82  $oLang->sLangDesc = $language;
83  $oLang->selected = ($id == $this->_iEditLang);
84  $this->_aViewData["otherlang"][$id] = clone $oLang;
85  }
86  }
87 
88  $this->_aViewData["editor"] = $this->_generateTextEditor(
89  "100%",
90  300,
91  $oArticle,
92  "oxarticles__oxlongdesc",
93  "details.tpl.css"
94  );
95  $this->_aViewData["blUseTimeCheck"] = $this->getConfig()->getConfigParam('blUseTimeCheck');
96 
97  return "article_main.tpl";
98  }
99 
108  protected function _getEditValue($oObject, $sField)
109  {
110  $sEditObjectValue = '';
111  if ($oObject) {
112  $oDescField = $oObject->getLongDescription();
113  $sEditObjectValue = $this->_processEditValue($oDescField->getRawValue());
114  $oDescField = new oxField($sEditObjectValue, oxField::T_RAW);
115  }
116 
117  return $sEditObjectValue;
118  }
119 
123  public function save()
124  {
125  parent::save();
126 
127  $oConfig = $this->getConfig();
128  $soxId = $this->getEditObjectId();
129  $aParams = $oConfig->getRequestParameter("editval");
130 
131  // default values
132  $aParams = $this->addDefaultValues($aParams);
133 
134  // null values
135  if (isset($aParams['oxarticles__oxvat']) && $aParams['oxarticles__oxvat'] === '') {
136  $aParams['oxarticles__oxvat'] = null;
137  }
138 
139  // varianthandling
140  $soxparentId = $oConfig->getRequestParameter("oxparentid");
141  if (isset($soxparentId) && $soxparentId && $soxparentId != "-1") {
142  $aParams['oxarticles__oxparentid'] = $soxparentId;
143  } else {
144  unset($aParams['oxarticles__oxparentid']);
145  }
146 
147  $oArticle = oxNew("oxarticle");
148  $oArticle->setLanguage($this->_iEditLang);
149 
150  if ($soxId != "-1") {
151  $oArticle->loadInLang($this->_iEditLang, $soxId);
152  } else {
153  $aParams['oxarticles__oxid'] = null;
154  $aParams['oxarticles__oxissearch'] = 1;
155  $aParams['oxarticles__oxstockflag'] = 1;
156  if (empty($aParams['oxarticles__oxstock'])) {
157  $aParams['oxarticles__oxstock'] = 0;
158  }
159 
160  // shopid
161  $aParams['oxarticles__oxshopid'] = oxRegistry::getSession()->getVariable("actshop");
162 
163  if (!isset($aParams['oxarticles__oxactive'])) {
164  $aParams['oxarticles__oxactive'] = 0;
165  }
166  }
167 
168  //article number handling, warns for artnum dublicates
169  if (isset($aParams['oxarticles__oxartnum']) && strlen($aParams['oxarticles__oxartnum']) > 0 &&
170  $oConfig->getConfigParam('blWarnOnSameArtNums') &&
171  $oArticle->oxarticles__oxartnum->value != $aParams['oxarticles__oxartnum']
172  ) {
173  $sSelect = "select oxid from " . getViewName('oxarticles');
174  $sSelect .= " where oxartnum = '" . $aParams['oxarticles__oxartnum'] . "'";
175  $sSelect .= " and oxid != '" . $aParams['oxarticles__oxid'] . "'";
176  if ($oArticle->assignRecord($sSelect)) {
177  $this->_aViewData["errorsavingatricle"] = 1;
178  }
179  }
180 
181 
182  // #905A resetting article count in price categories if price has been changed
183  $sOxIdField = 'oxarticles__oxid';
184  $sPriceField = 'oxarticles__oxprice';
185  $sActiveField = 'oxarticles__oxactive';
186  $sVendorField = 'oxarticles__oxvendorid';
187  $sManufacturerField = 'oxarticles__oxmanufacturerid';
188  if (isset($aParams[$sPriceField]) && $aParams[$sPriceField] != $oArticle->$sPriceField->value) {
189  $this->resetCounter("priceCatArticle", $oArticle->$sPriceField->value);
190  }
191 
192  $aResetIds = array();
193  if (isset($aParams[$sActiveField]) && $aParams[$sActiveField] != $oArticle->$sActiveField->value) {
194  //check categories
195  $this->_resetCategoriesCounter($oArticle->$sOxIdField->value);
196 
197  // vendors
198  $aResetIds['vendor'][$oArticle->$sVendorField->value] = 1;
199  $aResetIds['manufacturer'][$oArticle->$sManufacturerField->value] = 1;
200  }
201 
202  // vendors
203  if (isset($aParams[$sVendorField]) && $aParams[$sVendorField] != $oArticle->$sVendorField->value) {
204  $aResetIds['vendor'][$aParams[$sVendorField]] = 1;
205  $aResetIds['vendor'][$oArticle->$sVendorField->value] = 1;
206  }
207 
208  // manufacturers
209  if (isset($aParams[$sManufacturerField]) &&
210  $aParams[$sManufacturerField] != $oArticle->$sManufacturerField->value) {
211 
212  $aResetIds['manufacturer'][$aParams[$sManufacturerField]] = 1;
213  $aResetIds['manufacturer'][$oArticle->$sManufacturerField->value] = 1;
214  }
215 
216  // resetting counts
217  $this->_resetCounts($aResetIds);
218 
219  $oArticle->setLanguage(0);
220 
221  //triming spaces from article title (M:876)
222  if (isset($aParams['oxarticles__oxtitle'])) {
223  $aParams['oxarticles__oxtitle'] = trim($aParams['oxarticles__oxtitle']);
224  }
225 
226  $oArticle->assign($aParams);
227  $oArticle->setArticleLongDesc($this->_processLongDesc($aParams['oxarticles__oxlongdesc']));
228  $oArticle->setLanguage($this->_iEditLang);
229  $oArticle = oxRegistry::get("oxUtilsFile")->processFiles($oArticle);
230  $oArticle->save();
231 
232  // set oxid if inserted
233  if ($soxId == "-1") {
234  $sFastCat = $oConfig->getRequestParameter("art_category");
235  if ($sFastCat != "-1") {
236  $this->addToCategory($sFastCat, $oArticle->getId());
237  }
238  }
239 
240  // @deprecated v5.3 (2016-05-04); Tags will be moved to own module.
241  //saving tags
242  if (isset($aParams['tags'])) {
243  $sTags = $aParams['tags'];
244  if (!trim($sTags)) {
245  $sTags = $oArticle->oxarticles__oxsearchkeys->value;
246  }
247  $aInvalidTags = $this->_setTags($sTags, $oArticle->getId());
248  if (!empty($aInvalidTags)) {
249  $this->_aViewData["invalid_tags"] = implode(', ', $aInvalidTags);
250  }
251  }
252  // END deprecated
253 
254  $this->setEditObjectId($oArticle->getId());
255  }
256 
264  protected function _processLongDesc($sValue)
265  {
266  // TODO: the code below is redundant, optimize it, assignments should go smooth without conversions
267  // hack, if editor screws up text, htmledit tends to do so
268  $sValue = str_replace('&amp;nbsp;', '&nbsp;', $sValue);
269  $sValue = str_replace('&amp;', '&', $sValue);
270  $sValue = str_replace('&quot;', '"', $sValue);
271  $sValue = str_replace('&lang=', '&amp;lang=', $sValue);
272  $sValue = str_replace('<p>&nbsp;</p>', '', $sValue);
273  $sValue = str_replace('<p>&nbsp; </p>', '', $sValue);
274 
275  return $sValue;
276  }
277 
283  protected function _resetCategoriesCounter($sArticleId)
284  {
285  $oDb = oxDb::getDb();
286  $sQ = "select oxcatnid from oxobject2category where oxobjectid = " . $oDb->quote($sArticleId);
287  $oRs = $oDb->execute($sQ);
288  if ($oRs !== false && $oRs->recordCount() > 0) {
289  while (!$oRs->EOF) {
290  $this->resetCounter("catArticle", $oRs->fields[0]);
291  $oRs->moveNext();
292  }
293  }
294  }
295 
306  protected function _setTags($sTags, $sArticleId)
307  {
308  $oArticleTagList = oxNew('oxarticletaglist');
309  $oArticleTagList->loadInLang($this->_iEditLang, $sArticleId);
310  $oArticleTagList->set($sTags);
311  $oArticleTagList->save();
312 
313  return $oArticleTagList->get()->getInvalidTags();
314  }
315 
322  public function addToCategory($sCatID, $sOXID)
323  {
324  $myConfig = $this->getConfig();
325 
326  $oNew = oxNew("oxbase");
327  $oNew->init("oxobject2category");
328  $oNew->oxobject2category__oxtime = new oxField(0);
329  $oNew->oxobject2category__oxobjectid = new oxField($sOXID);
330  $oNew->oxobject2category__oxcatnid = new oxField($sCatID);
331 
332  $oNew->save();
333 
334  // resetting amount of articles in category
335  $this->resetCounter("catArticle", $sCatID);
336  }
337 
345  public function copyArticle($sOldId = null, $sNewId = null, $sParentId = null)
346  {
347  $myConfig = $this->getConfig();
348 
349  $sOldId = $sOldId ? $sOldId : $this->getEditObjectId();
350  $sNewId = $sNewId ? $sNewId : oxUtilsObject::getInstance()->generateUID();
351 
352  $oArticle = oxNew('oxbase');
353  $oArticle->init('oxarticles');
354  if ($oArticle->load($sOldId)) {
355 
356  if ($myConfig->getConfigParam('blDisableDublArtOnCopy')) {
357  $oArticle->oxarticles__oxactive->setValue(0);
358  $oArticle->oxarticles__oxactivefrom->setValue(0);
359  $oArticle->oxarticles__oxactiveto->setValue(0);
360  }
361 
362  // setting parent id
363  if ($sParentId) {
364  $oArticle->oxarticles__oxparentid->setValue($sParentId);
365  }
366 
367  // setting oxinsert/oxtimestamp
368  $iNow = date('Y-m-d H:i:s', oxRegistry::get("oxUtilsDate")->getTime());
369  $oArticle->oxarticles__oxinsert = new oxField($iNow);
370 
371  // mantis#0001590: OXRATING and OXRATINGCNT not set to 0 when copying article
372  $oArticle->oxarticles__oxrating = new oxField(0);
373  $oArticle->oxarticles__oxratingcnt = new oxField(0);
374 
375  $oArticle->setId($sNewId);
376  $oArticle->save();
377 
378  //copy categories
379  $this->_copyCategories($sOldId, $sNewId);
380 
381  //atributes
382  $this->_copyAttributes($sOldId, $sNewId);
383 
384  //sellist
385  $this->_copySelectlists($sOldId, $sNewId);
386 
387  //crossseling
388  $this->_copyCrossseling($sOldId, $sNewId);
389 
390  //accessoire
391  $this->_copyAccessoires($sOldId, $sNewId);
392 
393  // #983A copying staffelpreis info
394  $this->_copyStaffelpreis($sOldId, $sNewId);
395 
396  //copy article extends (longdescription, tags)
397  $this->_copyArtExtends($sOldId, $sNewId);
398 
399  //files
400  $this->_copyFiles($sOldId, $sNewId);
401 
402  // resetting
403  $aResetIds['vendor'][$oArticle->oxarticles__oxvendorid->value] = 1;
404  $aResetIds['manufacturer'][$oArticle->oxarticles__oxmanufacturerid->value] = 1;
405  $this->_resetCounts($aResetIds);
406 
407  $this->resetContentCache();
408 
409  $myUtilsObject = oxUtilsObject::getInstance();
410  $oDb = oxDb::getDb();
411 
412  //copy variants
413  $sQ = "select oxid from oxarticles where oxparentid = " . $oDb->quote($sOldId);
414  $oRs = $oDb->execute($sQ);
415  if ($oRs !== false && $oRs->recordCount() > 0) {
416  while (!$oRs->EOF) {
417  $this->copyArticle($oRs->fields[0], $myUtilsObject->generateUid(), $sNewId);
418  $oRs->moveNext();
419  }
420  }
421 
422  // only for top articles
423  if (!$sParentId) {
424 
425  $this->setEditObjectId($oArticle->getId());
426 
427  //article number handling, warns for artnum dublicates
428  $sFncParameter = oxRegistry::getConfig()->getRequestParameter('fnc');
429  $sArtNumField = 'oxarticles__oxartnum';
430  if ($myConfig->getConfigParam('blWarnOnSameArtNums') &&
431  $oArticle->$sArtNumField->value && $sFncParameter == 'copyArticle'
432  ) {
433  $sSelect = "select oxid from " . $oArticle->getCoreTableName() .
434  " where oxartnum = " . $oDb->quote($oArticle->$sArtNumField->value) .
435  " and oxid != " . $oDb->quote($sNewId);
436 
437  if ($oArticle->assignRecord($sSelect)) {
438  $this->_aViewData["errorsavingatricle"] = 1;
439  }
440  }
441  }
442  }
443  }
444 
451  protected function _copyCategories($sOldId, $sNewId)
452  {
453  $myUtilsObject = oxUtilsObject::getInstance();
454  $oDb = oxDb::getDb();
455 
456  $sO2CView = getViewName('oxobject2category');
457  $sQ = "select oxcatnid, oxtime from {$sO2CView} where oxobjectid = " . $oDb->quote($sOldId);
458  $oRs = $oDb->execute($sQ);
459  if ($oRs !== false && $oRs->recordCount() > 0) {
460  while (!$oRs->EOF) {
461  $sUid = $myUtilsObject->generateUid();
462  $sCatId = $oRs->fields[0];
463  $sTime = $oRs->fields[1];
464 
465 
466  $sSql = "insert into oxobject2category (oxid, oxobjectid, oxcatnid, oxtime) " .
467  "VALUES (" . $oDb->quote($sUid) . ", " . $oDb->quote($sNewId) . ", " .
468  $oDb->quote($sCatId) . ", " . $oDb->quote($sTime) . ") ";
469  $oDb->execute($sSql);
470 
471  $oRs->moveNext();
472 
473  // resetting article count in category
474  $this->resetCounter("catArticle", $sCatId);
475  }
476  }
477  }
478 
485  protected function _copyAttributes($sOldId, $sNewId)
486  {
487  $myUtilsObject = oxUtilsObject::getInstance();
488  $oDb = oxDb::getDb();
489 
490  $sQ = "select oxid from oxobject2attribute where oxobjectid = " . $oDb->quote($sOldId);
491  $oRs = $oDb->execute($sQ);
492  if ($oRs !== false && $oRs->recordCount() > 0) {
493  while (!$oRs->EOF) {
494  // #1055A
495  $oAttr = oxNew("oxbase");
496  $oAttr->init("oxobject2attribute");
497  $oAttr->load($oRs->fields[0]);
498  $oAttr->setId($myUtilsObject->generateUID());
499  $oAttr->oxobject2attribute__oxobjectid->setValue($sNewId);
500  $oAttr->save();
501  $oRs->moveNext();
502  }
503  }
504  }
505 
512  protected function _copyFiles($sOldId, $sNewId)
513  {
514  $myUtilsObject = oxUtilsObject::getInstance();
515  $oDb = oxDb::getDb(oxDB::FETCH_MODE_ASSOC);
516 
517  $sQ = "SELECT * FROM `oxfiles` WHERE `oxartid` = " . $oDb->quote($sOldId);
518  $oRs = $oDb->execute($sQ);
519  if ($oRs !== false && $oRs->recordCount() > 0) {
520  while (!$oRs->EOF) {
521 
522  $oFile = oxNew("oxfile");
523  $oFile->setId($myUtilsObject->generateUID());
524  $oFile->oxfiles__oxartid = new oxField($sNewId);
525  $oFile->oxfiles__oxfilename = new oxField($oRs->fields['OXFILENAME']);
526  $oFile->oxfiles__oxfilesize = new oxField($oRs->fields['OXFILESIZE']);
527  $oFile->oxfiles__oxstorehash = new oxField($oRs->fields['OXSTOREHASH']);
528  $oFile->oxfiles__oxpurchasedonly = new oxField($oRs->fields['OXPURCHASEDONLY']);
529  $oFile->save();
530  $oRs->moveNext();
531  }
532  }
533  }
534 
541  protected function _copySelectlists($sOldId, $sNewId)
542  {
543  $myUtilsObject = oxUtilsObject::getInstance();
544  $oDb = oxDb::getDb();
545 
546  $sQ = "select oxselnid from oxobject2selectlist where oxobjectid = " . $oDb->quote($sOldId);
547  $oRs = $oDb->execute($sQ);
548  if ($oRs !== false && $oRs->recordCount() > 0) {
549  while (!$oRs->EOF) {
550  $sUid = $myUtilsObject->generateUID();
551  $sId = $oRs->fields[0];
552  $sSql = "insert into oxobject2selectlist (oxid, oxobjectid, oxselnid) " .
553  "VALUES (" . $oDb->quote($sUid) . ", " . $oDb->quote($sNewId) . ", " . $oDb->quote($sId) . ") ";
554  $oDb->execute($sSql);
555  $oRs->moveNext();
556  }
557  }
558  }
559 
566  protected function _copyCrossseling($sOldId, $sNewId)
567  {
568  $myUtilsObject = oxUtilsObject::getInstance();
569  $oDb = oxDb::getDb();
570 
571  $sQ = "select oxobjectid from oxobject2article where oxarticlenid = " . $oDb->quote($sOldId);
572  $oRs = $oDb->execute($sQ);
573  if ($oRs !== false && $oRs->recordCount() > 0) {
574  while (!$oRs->EOF) {
575  $sUid = $myUtilsObject->generateUID();
576  $sId = $oRs->fields[0];
577  $sSql = "insert into oxobject2article (oxid, oxobjectid, oxarticlenid) " .
578  "VALUES (" . $oDb->quote($sUid) . ", " . $oDb->quote($sId) . ", " . $oDb->quote($sNewId) . " ) ";
579  $oDb->execute($sSql);
580  $oRs->moveNext();
581  }
582  }
583  }
584 
591  protected function _copyAccessoires($sOldId, $sNewId)
592  {
593  $myUtilsObject = oxUtilsObject::getInstance();
594  $oDb = oxDb::getDb();
595 
596  $sQ = "select oxobjectid from oxaccessoire2article where oxarticlenid= " . $oDb->quote($sOldId);
597  $oRs = $oDb->execute($sQ);
598  if ($oRs !== false && $oRs->recordCount() > 0) {
599  while (!$oRs->EOF) {
600  $sUId = $myUtilsObject->generateUid();
601  $sId = $oRs->fields[0];
602  $sSql = "insert into oxaccessoire2article (oxid, oxobjectid, oxarticlenid) " .
603  "VALUES (" . $oDb->quote($sUId) . ", " . $oDb->quote($sId) . ", " . $oDb->quote($sNewId) . ") ";
604  $oDb->execute($sSql);
605  $oRs->moveNext();
606  }
607  }
608  }
609 
616  protected function _copyStaffelpreis($sOldId, $sNewId)
617  {
618  $sShopId = $this->getConfig()->getShopId();
619  $oPriceList = oxNew("oxlist");
620  $oPriceList->init("oxbase", "oxprice2article");
621  $sQ = "select * from oxprice2article where oxartid = '{$sOldId}' and oxshopid = '{$sShopId}' " .
622  "and (oxamount > 0 or oxamountto > 0) order by oxamount ";
623  $oPriceList->selectString($sQ);
624  if ($oPriceList->count()) {
625  foreach ($oPriceList as $oItem) {
626  $oItem->oxprice2article__oxid->setValue($oItem->setId());
627  $oItem->oxprice2article__oxartid->setValue($sNewId);
628  $oItem->save();
629  }
630  }
631  }
632 
639  protected function _copyArtExtends($sOldId, $sNewId)
640  {
641  $oExt = oxNew("oxbase");
642  $oExt->init("oxartextends");
643  $oExt->load($sOldId);
644  $oExt->setId($sNewId);
645  $oExt->save();
646  }
647 
648 
652  public function saveinnlang()
653  {
654  $this->save();
655  }
656 
665  public function addDefaultValues($aParams)
666  {
667  return $aParams;
668  }
669 
676  protected function _formJumpList($oArticle, $oParentArticle)
677  {
678  $aJumpList = array();
679  //fetching parent article variants
680  $sOxIdField = 'oxarticles__oxid';
681  if (isset($oParentArticle)) {
682  $aJumpList[] = array($oParentArticle->$sOxIdField->value, $this->_getTitle($oParentArticle));
683  $sEditLanguageParameter = oxRegistry::getConfig()->getRequestParameter("editlanguage");
684  $oParentVariants = $oParentArticle->getAdminVariants($sEditLanguageParameter);
685  if ($oParentVariants->count()) {
686  foreach ($oParentVariants as $oVar) {
687  $aJumpList[] = array($oVar->$sOxIdField->value, " - " . $this->_getTitle($oVar));
688  if ($oVar->$sOxIdField->value == $oArticle->$sOxIdField->value) {
689  $oVariants = $oArticle->getAdminVariants($sEditLanguageParameter);
690  if ($oVariants->count()) {
691  foreach ($oVariants as $oVVar) {
692  $aJumpList[] = array($oVVar->$sOxIdField->value, " -- " . $this->_getTitle($oVVar));
693  }
694  }
695  }
696  }
697  }
698  } else {
699  $aJumpList[] = array($oArticle->$sOxIdField->value, $this->_getTitle($oArticle));
700  //fetching this article variants data
701  $oVariants = $oArticle->getAdminVariants(oxRegistry::getConfig()->getRequestParameter("editlanguage"));
702  if ($oVariants && $oVariants->count()) {
703  foreach ($oVariants as $oVar) {
704  $aJumpList[] = array($oVar->$sOxIdField->value, " - " . $this->_getTitle($oVar));
705  }
706  }
707  }
708  if (count($aJumpList) > 1) {
709  $this->_aViewData["thisvariantlist"] = $aJumpList;
710  }
711  }
712 
720  protected function _getTitle($oObj)
721  {
722  $sTitle = $oObj->oxarticles__oxtitle->value;
723  if (!strlen($sTitle)) {
724  $sTitle = $oObj->oxarticles__oxvarselect->value;
725  }
726 
727  return $sTitle;
728  }
729 
735  public function getCategoryList()
736  {
737  $oCatTree = oxNew("oxCategoryList");
738  $oCatTree->loadList();
739 
740  return $oCatTree;
741  }
742 
748  public function getVendorList()
749  {
750  $oVendorlist = oxNew("oxvendorlist");
751  $oVendorlist->loadVendorList();
752 
753  return $oVendorlist;
754  }
755 
761  public function getManufacturerList()
762  {
763  $oManufacturerList = oxNew("oxmanufacturerlist");
764  $oManufacturerList->loadManufacturerList();
765 
766  return $oManufacturerList;
767  }
768 }