Go to the documentation of this file.00001 <?php
00002
00006 class article_attribute_ajax extends ajaxListComponent
00007 {
00008
00014 protected $_aColumns = array('container1' => array(
00015 array('oxtitle', 'oxattribute', 1, 1, 0),
00016 array('oxid', 'oxattribute', 0, 0, 1)
00017 ),
00018 'container2' => array(
00019 array('oxtitle', 'oxattribute', 1, 1, 0),
00020 array('oxid', 'oxobject2attribute', 0, 0, 1),
00021 array('oxvalue', 'oxobject2attribute', 0, 1, 1),
00022 array('oxattrid', 'oxobject2attribute', 0, 0, 1),
00023 )
00024 );
00025
00031 protected function _getQuery()
00032 {
00033 $oDb = oxDb::getDb();
00034 $sArtId = oxRegistry::getConfig()->getRequestParameter('oxid');
00035 $sSynchArtId = oxRegistry::getConfig()->getRequestParameter('synchoxid');
00036
00037 $sAttrViewName = $this->_getViewName('oxattribute');
00038 $sO2AViewName = $this->_getViewName('oxobject2attribute');
00039 if ($sArtId) {
00040
00041 $sQAdd = " from {$sO2AViewName} left join {$sAttrViewName} " .
00042 "on {$sAttrViewName}.oxid={$sO2AViewName}.oxattrid " .
00043 " where {$sO2AViewName}.oxobjectid = " . $oDb->quote($sArtId) . " ";
00044 } else {
00045 $sQAdd = " from {$sAttrViewName} where {$sAttrViewName}.oxid not in ( select {$sO2AViewName}.oxattrid " .
00046 "from {$sO2AViewName} left join {$sAttrViewName} " .
00047 "on {$sAttrViewName}.oxid={$sO2AViewName}.oxattrid " .
00048 " where {$sO2AViewName}.oxobjectid = " . $oDb->quote($sSynchArtId) . " ) ";
00049 }
00050
00051 return $sQAdd;
00052 }
00053
00057 public function removeAttr()
00058 {
00059 $aChosenArt = $this->_getActionIds('oxobject2attribute.oxid');
00060 $sOxid = oxRegistry::getConfig()->getRequestParameter('oxid');
00061 if (oxRegistry::getConfig()->getRequestParameter('all')) {
00062 $sO2AViewName = $this->_getViewName('oxobject2attribute');
00063 $sQ = $this->_addFilter("delete $sO2AViewName.* " . $this->_getQuery());
00064 oxDb::getDb()->Execute($sQ);
00065
00066 } elseif (is_array($aChosenArt)) {
00067 $sChosenArticles = implode(", ", oxDb::getInstance()->quoteArray($aChosenArt));
00068 $sQ = "delete from oxobject2attribute where oxobject2attribute.oxid in ({$sChosenArticles}) ";
00069 oxDb::getDb()->Execute($sQ);
00070 }
00071
00072 }
00073
00077 public function addAttr()
00078 {
00079 $aAddCat = $this->_getActionIds('oxattribute.oxid');
00080 $soxId = oxRegistry::getConfig()->getRequestParameter('synchoxid');
00081
00082 if (oxRegistry::getConfig()->getRequestParameter('all')) {
00083 $sAttrViewName = $this->_getViewName('oxattribute');
00084 $aAddCat = $this->_getAll($this->_addFilter("select $sAttrViewName.oxid " . $this->_getQuery()));
00085 }
00086
00087 if ($soxId && $soxId != "-1" && is_array($aAddCat)) {
00088 foreach ($aAddCat as $sAdd) {
00089 $oNew = oxNew("oxbase");
00090 $oNew->init("oxobject2attribute");
00091 $oNew->oxobject2attribute__oxobjectid = new oxField($soxId);
00092 $oNew->oxobject2attribute__oxattrid = new oxField($sAdd);
00093 $oNew->save();
00094 }
00095
00096 }
00097 }
00098
00104 public function saveAttributeValue()
00105 {
00106 $oDb = oxDb::getDb();
00107 $this->resetContentCache();
00108
00109 $soxId = oxRegistry::getConfig()->getRequestParameter("oxid");
00110 $sAttributeId = oxRegistry::getConfig()->getRequestParameter("attr_oxid");
00111 $sAttributeValue = oxRegistry::getConfig()->getRequestParameter("attr_value");
00112 if (!$this->getConfig()->isUtf()) {
00113 $sAttributeValue = iconv('UTF-8', oxRegistry::getLang()->translateString("charset"), $sAttributeValue);
00114 }
00115
00116 $oArticle = oxNew("oxarticle");
00117 if ($oArticle->load($soxId)) {
00118
00119
00120 if (isset($sAttributeId) && ("" != $sAttributeId)) {
00121 $sViewName = $this->_getViewName("oxobject2attribute");
00122 $sOxIdField = 'oxarticles__oxid';
00123 $sQuotedOxid = $oDb->quote($oArticle->$sOxIdField->value);
00124 $sSelect = "select * from {$sViewName} where {$sViewName}.oxobjectid= {$sQuotedOxid} and
00125 {$sViewName}.oxattrid= " . $oDb->quote($sAttributeId);
00126 $oO2A = oxNew("oxi18n");
00127 $oO2A->setLanguage(oxRegistry::getConfig()->getRequestParameter('editlanguage'));
00128 $oO2A->init("oxobject2attribute");
00129 if ($oO2A->assignRecord($sSelect)) {
00130 $oO2A->oxobject2attribute__oxvalue->setValue($sAttributeValue);
00131 $oO2A->save();
00132 }
00133 }
00134
00135 }
00136 }
00137 }