OXID eShop CE  4.9.7
 All Classes Files Functions Variables Pages
discount_articles_ajax.php
Go to the documentation of this file.
1 <?php
2 
7 {
8 
14  protected $_blAllowExtColumns = true;
15 
21  protected $_aColumns = array('container1' => array( // field , table, visible, multilanguage, ident
22  array('oxartnum', 'oxarticles', 1, 0, 0),
23  array('oxtitle', 'oxarticles', 1, 1, 0),
24  array('oxean', 'oxarticles', 1, 0, 0),
25  array('oxmpn', 'oxarticles', 0, 0, 0),
26  array('oxprice', 'oxarticles', 0, 0, 0),
27  array('oxstock', 'oxarticles', 0, 0, 0),
28  array('oxid', 'oxarticles', 0, 0, 1)
29  ),
30  'container2' => array(
31  array('oxartnum', 'oxarticles', 1, 0, 0),
32  array('oxtitle', 'oxarticles', 1, 1, 0),
33  array('oxean', 'oxarticles', 1, 0, 0),
34  array('oxmpn', 'oxarticles', 0, 0, 0),
35  array('oxprice', 'oxarticles', 0, 0, 0),
36  array('oxstock', 'oxarticles', 0, 0, 0),
37  array('oxid', 'oxobject2discount', 0, 0, 1)
38  )
39  );
40 
46  protected function _getQuery()
47  {
48  $oConfig = $this->getConfig();
49 
50  $sArticleTable = $this->_getViewName('oxarticles');
51  $sO2CView = $this->_getViewName('oxobject2category');
52 
53  $oDb = oxDb::getDb();
54  $sOxid = $oConfig->getRequestParameter('oxid');
55  $sSynchOxid = $oConfig->getRequestParameter('synchoxid');
56 
57  // category selected or not ?
58  if (!$sOxid && $sSynchOxid) {
59  $sQAdd = " from $sArticleTable where 1 ";
60  $sQAdd .= $oConfig->getConfigParam('blVariantsSelection') ? '' : "and $sArticleTable.oxparentid = '' ";
61  } else {
62  // selected category ?
63  if ($sSynchOxid && $sOxid != $sSynchOxid) {
64  $sQAdd = " from $sO2CView left join $sArticleTable on ";
65  $sQAdd .= $oConfig->getConfigParam('blVariantsSelection') ? "($sArticleTable.oxid=$sO2CView.oxobjectid or $sArticleTable.oxparentid=$sO2CView.oxobjectid)" : " $sArticleTable.oxid=$sO2CView.oxobjectid ";
66  $sQAdd .= " where $sO2CView.oxcatnid = " . $oDb->quote($sOxid) . " and $sArticleTable.oxid is not null ";
67 
68  // resetting
69  $sId = null;
70  } else {
71  $sQAdd = " from oxobject2discount, $sArticleTable where $sArticleTable.oxid=oxobject2discount.oxobjectid ";
72  $sQAdd .= " and oxobject2discount.oxdiscountid = " . $oDb->quote($sOxid) . " and oxobject2discount.oxtype = 'oxarticles' ";
73  }
74  }
75 
76  if ($sSynchOxid && $sSynchOxid != $sOxid) {
77  // performance
78  $sSubSelect .= " select $sArticleTable.oxid from oxobject2discount, $sArticleTable where $sArticleTable.oxid=oxobject2discount.oxobjectid ";
79  $sSubSelect .= " and oxobject2discount.oxdiscountid = " . $oDb->quote($sSynchOxid) . " and oxobject2discount.oxtype = 'oxarticles' ";
80 
81  if (stristr($sQAdd, 'where') === false) {
82  $sQAdd .= ' where ';
83  } else {
84  $sQAdd .= ' and ';
85  }
86  $sQAdd .= " $sArticleTable.oxid not in ( $sSubSelect ) ";
87  }
88 
89  return $sQAdd;
90  }
91 
95  public function removeDiscArt()
96  {
97  $aChosenArt = $this->_getActionIds('oxobject2discount.oxid');
98 
99 
100  if ($this->getConfig()->getRequestParameter('all')) {
101 
102  $sQ = parent::_addFilter("delete oxobject2discount.* " . $this->_getQuery());
103  oxDb::getDb()->Execute($sQ);
104 
105  } elseif (is_array($aChosenArt)) {
106  $sQ = "delete from oxobject2discount where oxobject2discount.oxid in (" . implode(", ", oxDb::getInstance()->quoteArray($aChosenArt)) . ") ";
107  oxDb::getDb()->Execute($sQ);
108  }
109  }
110 
114  public function addDiscArt()
115  {
116  $oConfig = $this->getConfig();
117  $aChosenArt = $this->_getActionIds('oxarticles.oxid');
118  $soxId = $oConfig->getRequestParameter('synchoxid');
119 
120 
121  // adding
122  if ($oConfig->getRequestParameter('all')) {
123  $sArticleTable = $this->_getViewName('oxarticles');
124  $aChosenArt = $this->_getAll(parent::_addFilter("select $sArticleTable.oxid " . $this->_getQuery()));
125  }
126  if ($soxId && $soxId != "-1" && is_array($aChosenArt)) {
127  foreach ($aChosenArt as $sChosenArt) {
128  $oObject2Discount = oxNew("oxbase");
129  $oObject2Discount->init('oxobject2discount');
130  $oObject2Discount->oxobject2discount__oxdiscountid = new oxField($soxId);
131  $oObject2Discount->oxobject2discount__oxobjectid = new oxField($sChosenArt);
132  $oObject2Discount->oxobject2discount__oxtype = new oxField("oxarticles");
133  $oObject2Discount->save();
134 
135  }
136  }
137  }
138 }