00001 <?php
00002
00006 class category_order_ajax extends ajaxListComponent
00007 {
00008
00014 protected $_aColumns = array('container1' => array(
00015 array('oxartnum', 'oxarticles', 1, 0, 0),
00016 array('oxtitle', 'oxarticles', 1, 1, 0),
00017 array('oxpos', 'oxobject2category', 1, 0, 0),
00018 array('oxean', 'oxarticles', 0, 0, 0),
00019 array('oxmpn', 'oxarticles', 0, 0, 0),
00020 array('oxprice', 'oxarticles', 0, 0, 0),
00021 array('oxstock', 'oxarticles', 0, 0, 0),
00022 array('oxid', 'oxarticles', 0, 0, 1)
00023 ),
00024 'container2' => array(
00025 array('oxartnum', 'oxarticles', 1, 0, 0),
00026 array('oxtitle', 'oxarticles', 1, 1, 0),
00027 array('oxean', 'oxarticles', 0, 0, 0),
00028 array('oxmpn', 'oxarticles', 0, 0, 0),
00029 array('oxprice', 'oxarticles', 0, 0, 0),
00030 array('oxstock', 'oxarticles', 0, 0, 0),
00031 array('oxid', 'oxarticles', 0, 0, 1)
00032 )
00033 );
00034
00040 protected function _getQuery()
00041 {
00042
00043 $sArtTable = $this->_getViewName('oxarticles');
00044 $sO2CView = $this->_getViewName('oxobject2category');
00045 $oDb = oxDb::getDb();
00046
00047
00048 if ($sSynchOxid = oxRegistry::getConfig()->getRequestParameter('synchoxid')) {
00049 $sQAdd = " from $sArtTable left join $sO2CView on $sArtTable.oxid=$sO2CView.oxobjectid where $sO2CView.oxcatnid = " . $oDb->quote($sSynchOxid);
00050 if ($aSkipArt = oxRegistry::getSession()->getVariable('neworder_sess')) {
00051 $sQAdd .= " and $sArtTable.oxid not in ( " . implode(", ", oxDb::getInstance()->quoteArray($aSkipArt)) . " ) ";
00052 }
00053 } else {
00054
00055 $sQAdd = " from $sArtTable where ";
00056 if ($aSkipArt = oxRegistry::getSession()->getVariable('neworder_sess')) {
00057 $sQAdd .= " $sArtTable.oxid in ( " . implode(", ", oxDb::getInstance()->quoteArray($aSkipArt)) . " ) ";
00058 } else {
00059 $sQAdd .= " 1 = 0 ";
00060 }
00061 }
00062
00063 return $sQAdd;
00064 }
00065
00071 protected function _getSorting()
00072 {
00073 $sOrder = '';
00074 if (oxRegistry::getConfig()->getRequestParameter('synchoxid')) {
00075 $sOrder = parent::_getSorting();
00076 } elseif (($aSkipArt = oxRegistry::getSession()->getVariable('neworder_sess'))) {
00077 $sOrderBy = '';
00078 $sArtTable = $this->_getViewName('oxarticles');
00079 $sSep = '';
00080 foreach ($aSkipArt as $sId) {
00081 $sOrderBy = " $sArtTable.oxid=" . oxDb::getDb()->quote($sId) . " " . $sSep . $sOrderBy;
00082 $sSep = ", ";
00083 }
00084 $sOrder = "order by " . $sOrderBy;
00085 }
00086
00087 return $sOrder;
00088 }
00089
00093 public function removeCatOrderArticle()
00094 {
00095 $aRemoveArt = $this->_getActionIds('oxarticles.oxid');
00096 $soxId = oxRegistry::getConfig()->getRequestParameter('oxid');
00097 $aSkipArt = oxRegistry::getSession()->getVariable('neworder_sess');
00098
00099 if (is_array($aRemoveArt) && is_array($aSkipArt)) {
00100 foreach ($aRemoveArt as $sRem) {
00101 if (($iKey = array_search($sRem, $aSkipArt)) !== false) {
00102 unset($aSkipArt[$iKey]);
00103 }
00104 }
00105 oxRegistry::getSession()->setVariable('neworder_sess', $aSkipArt);
00106
00107 $sArticleTable = $this->_getViewName('oxarticles');
00108 $sO2CView = $this->_getViewName('oxobject2category');
00109
00110
00111 $sSelect = "select 1 from $sArticleTable left join $sO2CView on $sArticleTable.oxid=$sO2CView.oxobjectid ";
00112 $sSelect .= "where $sO2CView.oxcatnid = '$soxId' and $sArticleTable.oxparentid = '' and $sArticleTable.oxid ";
00113 $sSelect .= "not in ( " . implode(", ", oxDb::getInstance()->quoteArray($aSkipArt)) . " ) ";
00114
00115
00116 echo (int) oxDb::getDb()->getOne($sSelect, false, false);
00117 }
00118 }
00119
00123 public function addCatOrderArticle()
00124 {
00125 $aAddArticle = $this->_getActionIds('oxarticles.oxid');
00126 $soxId = oxRegistry::getConfig()->getRequestParameter('synchoxid');
00127
00128 $aOrdArt = oxRegistry::getSession()->getVariable('neworder_sess');
00129 if (!is_array($aOrdArt)) {
00130 $aOrdArt = array();
00131 }
00132
00133 $blEnable = false;
00134
00135 if (is_array($aAddArticle)) {
00136
00137 foreach ($aAddArticle as $sAdd) {
00138 if (array_search($sAdd, $aOrdArt) === false) {
00139 $aOrdArt[] = $sAdd;
00140 }
00141 }
00142 oxRegistry::getSession()->setVariable('neworder_sess', $aOrdArt);
00143
00144 $sArticleTable = $this->_getViewName('oxarticles');
00145 $sO2CView = $this->_getViewName('oxobject2category');
00146
00147
00148 $sSelect = "select 1 from $sArticleTable left join $sO2CView on $sArticleTable.oxid=$sO2CView.oxobjectid ";
00149 $sSelect .= "where $sO2CView.oxcatnid = '$soxId' and $sArticleTable.oxparentid = '' and $sArticleTable.oxid ";
00150 $sSelect .= "not in ( " . implode(", ", oxDb::getInstance()->quoteArray($aOrdArt)) . " ) ";
00151
00152
00153 echo (int) oxDb::getDb()->getOne($sSelect, false, false);
00154 }
00155 }
00156
00162 public function saveNewOrder()
00163 {
00164 $oCategory = oxNew("oxcategory");
00165 $sId = oxRegistry::getConfig()->getRequestParameter("oxid");
00166 if ($oCategory->load($sId)) {
00167
00168 $this->resetContentCache();
00169
00170 $aNewOrder = oxRegistry::getSession()->getVariable("neworder_sess");
00171 if (is_array($aNewOrder) && count($aNewOrder)) {
00172 $sO2CView = $this->_getViewName('oxobject2category');
00173 $sSelect = "select * from $sO2CView where $sO2CView.oxcatnid='" . $oCategory->getId() . "' and $sO2CView.oxobjectid in (" . implode(", ", oxDb::getInstance()->quoteArray($aNewOrder)) . " )";
00174 $oList = oxNew("oxlist");
00175 $oList->init("oxbase", "oxobject2category");
00176 $oList->selectString($sSelect);
00177
00178
00179 foreach ($oList as $oObj) {
00180 if (($iNewPos = array_search($oObj->oxobject2category__oxobjectid->value, $aNewOrder)) !== false) {
00181 $oObj->oxobject2category__oxpos->setValue($iNewPos);
00182 $oObj->save();
00183 }
00184 }
00185
00186 oxRegistry::getSession()->setVariable('neworder_sess', null);
00187 }
00188
00189
00190 }
00191 }
00192
00198 public function remNewOrder()
00199 {
00200 $oCategory = oxNew("oxcategory");
00201 $sId = oxRegistry::getConfig()->getRequestParameter("oxid");
00202 if ($oCategory->load($sId)) {
00203
00204
00205 $oDb = oxDb::getDb();
00206
00207 $sQuotedCategoryId = $oDb->quote($oCategory->getId());
00208
00209 $sSqlShopFilter = "";
00210 $sSelect = "update oxobject2category set oxpos = '0' where oxobject2category.oxcatnid = {$sQuotedCategoryId} {$sSqlShopFilter}";
00211 $oDb->execute($sSelect);
00212
00213 oxRegistry::getSession()->setVariable('neworder_sess', null);
00214
00215 }
00216 }
00217 }