Go to the documentation of this file.00001 <?php
00002
00007 class oxAttribute extends oxI18n
00008 {
00014 protected $_sClassName = 'oxattribute';
00015
00021 protected $_sCoreTbl = 'oxattribute';
00022
00026 public function __construct()
00027 {
00028 parent::__construct();
00029 $this->init( $this->_sCoreTbl);
00030 }
00031
00039 public function delete( $sOXID = null )
00040 {
00041 if( !$sOXID)
00042 $sOXID = $this->getId();
00043 if( !$sOXID)
00044 return false;
00045
00046
00047
00048 $oDB = oxDb::getDb();
00049 $sOxidQuoted = $oDB->quote($sOXID);
00050 $sDelete = "delete from oxobject2attribute where oxattrid = ".$sOxidQuoted;
00051 $rs = $oDB->execute( $sDelete);
00052
00053
00054 $sDelete = "delete from oxcategory2attribute where oxattrid = ".$sOxidQuoted;
00055 $rs = $oDB->execute( $sDelete);
00056
00057 return parent::delete( $sOXID);
00058 }
00059
00068 public function assignVarToAttribute( $aMDVariants, $aSelTitle )
00069 {
00070 $myLang = oxLang::getInstance();
00071 $aConfLanguages = $myLang->getLanguageIds();
00072 $sAttrId = $this->_getAttrId( $aSelTitle[0] );
00073 if ( !$sAttrId ) {
00074 $sAttrId = $this->_createAttribute( $aSelTitle );
00075 }
00076 foreach ( $aMDVariants as $sVarId => $oValue ) {
00077 if ( strpos( $sVarId, "mdvar_" ) === 0 ) {
00078 foreach ( $oValue as $sId ) {
00079
00080 $sVarId = substr($sVarId, 6);
00081 $oNewAssign = oxNew( "oxbase" );
00082 $oNewAssign->init( "oxobject2attribute" );
00083 $sNewId = oxUtilsObject::getInstance()->generateUID();
00084 if ($oNewAssign->load($sId)) {
00085 $oNewAssign->oxobject2attribute__oxobjectid = new oxField($sVarId);
00086 $oNewAssign->setId($sNewId);
00087 $oNewAssign->save();
00088 }
00089 }
00090 } else {
00091 $oNewAssign = oxNew( "oxbase" );
00092 $oNewAssign->init( "oxobject2attribute" );
00093 $oNewAssign->oxobject2attribute__oxobjectid = new oxField($sVarId);
00094 $oNewAssign->oxobject2attribute__oxattrid = new oxField($sAttrId);
00095 foreach ($aConfLanguages as $sKey => $sLang) {
00096 $sPrefix = $myLang->getLanguageTag($sKey);
00097 $oNewAssign->{'oxobject2attribute__oxvalue'.$sPrefix} = new oxField($oValue[$sKey]->name);
00098 }
00099 $oNewAssign->save();
00100 }
00101 }
00102 }
00103
00111 protected function _getAttrId( $sSelTitle )
00112 {
00113 $oDb = oxDb::getDB();
00114 $sAttViewName = getViewName('oxattribute');
00115 return $oDb->getOne("select oxid from $sAttViewName where LOWER(oxtitle) = " . $oDb->quote(getStr()->strtolower($sSelTitle)));
00116 }
00117
00125 protected function _createAttribute( $aSelTitle )
00126 {
00127 $myLang = oxLang::getInstance();
00128 $aConfLanguages = $myLang->getLanguageIds();
00129 $oAttr = oxNew('oxbase');
00130 $oAttr->init('oxattribute');
00131 foreach ($aConfLanguages as $sKey => $sLang) {
00132 $sPrefix = $myLang->getLanguageTag($sKey);
00133 $oAttr->{'oxattribute__oxtitle'.$sPrefix} = new oxField($aSelTitle[$sKey]);
00134 }
00135 $oAttr->save();
00136 return $oAttr->getId();
00137 }
00138
00146 public function getAttributeAssigns( $sArtId)
00147 {
00148 if ( !$sArtId) {
00149 return;
00150 }
00151 $sSelect = "select o2a.oxid ";
00152 $sSelect .= "from oxobject2attribute as o2a ";
00153 $sSelect .= "where o2a.oxobjectid = '$sArtId' ";
00154 $sSelect .= "order by o2a.oxpos";
00155
00156 $aIds = array();
00157 $rs = oxDb::getDb()->Execute( $sSelect);
00158 if ($rs != false && $rs->recordCount() > 0) {
00159 while (!$rs->EOF) {
00160 $aIds[] = $rs->fields[0];
00161 $rs->moveNext();
00162 }
00163 }
00164 return $aIds;
00165 }
00166 }