45 if ($this->_sCacheKey) {
46 $this->_sCacheKey .=
"_i18n";
57 $this->_iLanguage = (int) $iLang;
59 $this->_sViewTable =
false;
69 if ($this->_iLanguage === null) {
84 if ($this->_blEmployMultilanguage != $blEmployMultilanguage) {
85 $this->_blEmployMultilanguage = $blEmployMultilanguage;
86 if (!$blEmployMultilanguage) {
91 $this->_sViewTable =
false;
92 if (count($this->_aFieldNames) > 1) {
108 $sFieldName = strtolower($sFieldName);
109 if (isset($this->_aFieldNames[$sFieldName])) {
110 return (
bool) $this->_aFieldNames[$sFieldName];
115 startProfile(
'!__CACHABLE2__!');
117 stopProfile(
'!__CACHABLE2__!');
119 return (
bool) $blIsMultilang;
146 $this->_sViewTable =
false;
148 return $this->
load($sOxid);
160 $this->_sCacheKey = $sCacheKey .
"|i18n";
162 $this->_sCacheKey .= $sCacheKey;
166 $this->_sCacheKey = null;
184 $aMultiLangFields = array();
187 foreach ($aObjFields as $sKey => $sValue) {
190 if (preg_match(
'/^oxactive(_(\d{1,2}))?$/', $sKey)) {
198 $sNewKey = preg_replace(
'/_(\d{1,2})$/',
'', $sKey);
199 $aMultiLangFields[$sNewKey][] = (int) $iFieldLang;
204 if (count($aMultiLangFields) < 1) {
210 $query =
"select * from " .
getViewName($this->_sCoreTable, -1, -1) .
" where oxid = " . $oDb->quote($this->
getId());
211 $rs = $oDb->getAll($query);
217 if (is_array($rs) && count($rs[0])) {
218 foreach ($aMultiLangFields as $sFieldId => $aMultiLangIds) {
220 foreach ($aMultiLangIds as $sMultiLangId) {
221 $sFieldName = ($sMultiLangId == 0) ? $sFieldId : $sFieldId .
'_' . $sMultiLangId;
222 if ($rs[
'0'][strtoupper($sFieldName)]) {
223 unset($aNotInLang[$sMultiLangId]);
246 if (isset($aAllField[strtolower($sFieldName) .
"_1"])) {
270 if (!$this->_blEmployMultilanguage) {
277 $aWorkingFields = & $aFields;
284 foreach ($aWorkingFields as $sName => $sVal) {
286 unset($aWorkingFields[$sName]);
292 return $aWorkingFields;
304 if (
false === strpos($sFieldName,
'_')) {
307 if (preg_match(
'/_(\d{1,2})$/', $sFieldName, $aRegs)) {
325 $sField .=
"_" . $iLang;
357 $blSkipMultilingual =
false;
358 $blSkipCoreFields =
false;
360 if ($sTable != $sCoreTable) {
361 $blSkipCoreFields =
true;
363 if ($this->_blEmployMultilanguage) {
364 if ($sTable != getLangTableName($sCoreTable, $this->
getLanguage())) {
365 $blSkipMultilingual =
true;
371 foreach (array_keys($this->_aFieldNames) as $sKey) {
372 $sKeyLowercase = strtolower($sKey);
373 if ($sKeyLowercase !=
'oxid') {
374 if ($this->_blEmployMultilanguage) {
385 if ($sTable != getLangTableName($sCoreTable, $iFieldLang)) {
388 } elseif ($blSkipCoreFields) {
395 $oField = $this->$sLongName;
397 if (!$blUseSkipSaveFields || ($blUseSkipSaveFields && !in_array($sKeyLowercase, $this->_aSkipSaveFields))) {
437 $aUpdateTables = array();
438 if ($this->_blEmployMultilanguage) {
440 $sLangTable = getLangTableName($sCoreTable, $this->
getLanguage());
441 if ($sCoreTable != $sLangTable) {
442 $aUpdateTables[] = $sLangTable;
447 foreach ($aUpdateTables as $sLangTable) {
474 $sCoreTableName = $sCoreTableName ? $sCoreTableName : $this->
getCoreTableName();
476 return oxNew(
'oxDbMetaDataHandler')->getAllMultiTables($sCoreTableName);
494 $blRet = $blRet && (bool)
oxDb::getDb()->execute($sSq);
511 if (!$this->_blEmployMultilanguage) {
531 if ($this->_blEmployMultilanguage) {
553 protected function _addField($sName, $sStatus, $sType = null, $sLength = null)
555 if ($this->_blEmployMultilanguage && $this->
_getFieldLang($sName)) {
575 $sFieldName = preg_replace(
'/_\d{1,2}$/',
'', $sFieldName);
587 public function delete($sOXID = null)
592 $sOXID = $oDB->quote($sOXID);
596 $oDB->execute(
"delete from {$sSetTbl} where oxid = {$sOXID}");