OXID eShop CE  4.9.6
 All Classes Files Functions Variables Pages
discount_item_ajax.php
Go to the documentation of this file.
1 <?php
2 
7 {
8 
14  protected $_aColumns = array('container1' => array( // field , table, visible, multilanguage, ident
15  array('oxartnum', 'oxarticles', 1, 0, 0),
16  array('oxtitle', 'oxarticles', 1, 1, 0),
17  array('oxean', 'oxarticles', 1, 0, 0),
18  array('oxmpn', 'oxarticles', 0, 0, 0),
19  array('oxprice', 'oxarticles', 0, 0, 0),
20  array('oxstock', 'oxarticles', 0, 0, 0),
21  array('oxid', 'oxarticles', 0, 0, 1)
22  ),
23  'container2' => array(
24  array('oxartnum', 'oxarticles', 1, 0, 0),
25  array('oxtitle', 'oxarticles', 1, 1, 0),
26  array('oxean', 'oxarticles', 1, 0, 0),
27  array('oxmpn', 'oxarticles', 0, 0, 0),
28  array('oxprice', 'oxarticles', 0, 0, 0),
29  array('oxstock', 'oxarticles', 0, 0, 0),
30  array('oxitmartid', 'oxdiscount', 0, 0, 1)
31  )
32  );
33 
39  protected function _getQuery()
40  {
41  $oConfig = $this->getConfig();
42 
43  $sArticleTable = $this->_getViewName('oxarticles');
44  $sCatTable = $this->_getViewName('oxcategories');
45  $sO2CView = $this->_getViewName('oxobject2category');
46  $sDiscTable = $this->_getViewName('oxdiscount');
47  $oDb = oxDb::getDb();
48  $sOxid = $oConfig->getRequestParameter('oxid');
49  $sSynchOxid = $oConfig->getRequestParameter('synchoxid');
50 
51  // category selected or not ?
52  if (!$sOxid && $sSynchOxid) {
53  $sQAdd = " from $sArticleTable where 1 ";
54  $sQAdd .= $oConfig->getConfigParam('blVariantsSelection') ? '' : "and $sArticleTable.oxparentid = '' ";
55  } else {
56  // selected category ?
57  if ($sSynchOxid && $sOxid != $sSynchOxid) {
58  $sQAdd = " from $sO2CView left join $sArticleTable on ";
59  $sQAdd .= $oConfig->getConfigParam('blVariantsSelection') ? "($sArticleTable.oxid=$sO2CView.oxobjectid or $sArticleTable.oxparentid=$sO2CView.oxobjectid)" : " $sArticleTable.oxid=$sO2CView.oxobjectid ";
60  $sQAdd .= " where $sO2CView.oxcatnid = " . $oDb->quote($sOxid) . " and $sArticleTable.oxid is not null ";
61 
62  // resetting
63  $sId = null;
64  } else {
65  $sQAdd = " from $sDiscTable left join $sArticleTable on $sArticleTable.oxid=$sDiscTable.oxitmartid ";
66  $sQAdd .= " where $sDiscTable.oxid = " . $oDb->quote($sOxid) . " and $sDiscTable.oxitmartid != '' ";
67  }
68  }
69 
70  if ($sSynchOxid && $sSynchOxid != $sOxid) {
71  // performance
72  $sSubSelect .= " select $sArticleTable.oxid from $sDiscTable, $sArticleTable where $sArticleTable.oxid=$sDiscTable.oxitmartid ";
73  $sSubSelect .= " and $sDiscTable.oxid = " . $oDb->quote($sSynchOxid);
74 
75  if (stristr($sQAdd, 'where') === false) {
76  $sQAdd .= ' where ';
77  } else {
78  $sQAdd .= ' and ';
79  }
80  $sQAdd .= " $sArticleTable.oxid not in ( $sSubSelect ) ";
81  }
82 
83  return $sQAdd;
84  }
85 
89  public function removeDiscArt()
90  {
91  $soxId = $this->getConfig()->getRequestParameter('oxid');
92  $aChosenArt = $this->_getActionIds('oxdiscount.oxitmartid');
93  if (is_array($aChosenArt)) {
94  $sQ = "update oxdiscount set oxitmartid = '' where oxid = ? and oxitmartid = ?";
95  oxDb::getDb()->execute($sQ, array($soxId, reset($aChosenArt)));
96  }
97  }
98 
102  public function addDiscArt()
103  {
104  $aChosenArt = $this->_getActionIds('oxarticles.oxid');
105  $soxId = $this->getConfig()->getRequestParameter('synchoxid');
106  if ($soxId && $soxId != "-1" && is_array($aChosenArt)) {
107  $sQ = "update oxdiscount set oxitmartid = ? where oxid = ?";
108  oxDb::getDb()->execute($sQ, array(reset($aChosenArt), $soxId));
109  }
110  }
111 
118  protected function _getQueryCols()
119  {
120  $oConfig = $this->getConfig();
121  $sLangTag = oxRegistry::getLang()->getLanguageTag();
122 
123  $sQ = '';
124  $blSep = false;
125  $aVisiblecols = $this->_getVisibleColNames();
126  foreach ($aVisiblecols as $iCnt => $aCol) {
127  if ($blSep) {
128  $sQ .= ', ';
129  }
130  $sViewTable = $this->_getViewName($aCol[1]);
131  // multilanguage
132 
133  $sCol = $aCol[3] ? $aCol[0] : $aCol[0];
134 
135  if ($oConfig->getConfigParam('blVariantsSelection') && $aCol[0] == 'oxtitle') {
136  $sVarSelect = "$sViewTable.oxvarselect" . $sLangTag;
137  $sQ .= " IF( $sViewTable.$sCol != '', $sViewTable.$sCol, CONCAT((select oxart.$sCol from $sViewTable as oxart where oxart.oxid = $sViewTable.oxparentid),', ',$sVarSelect)) as _" . $iCnt;
138  } else {
139  $sQ .= $sViewTable . '.' . $sCol . ' as _' . $iCnt;
140  }
141 
142  $blSep = true;
143  }
144 
145  $aIdentCols = $this->_getIdentColNames();
146  foreach ($aIdentCols as $iCnt => $aCol) {
147  if ($blSep) {
148  $sQ .= ', ';
149  }
150 
151  // multilanguage
152  $sCol = $aCol[3] ? $aCol[0] : $aCol[0];
153  $sQ .= $this->_getViewName($aCol[1]) . '.' . $sCol . ' as _' . $iCnt;
154  }
155 
156  return " $sQ ";
157  }
158 }