/** * Returns the list of fields. This function is slower and its result is normally cached. * Basically we have 3 separate cases here: * 1. We are in admin so we need extended info for all fields (name, field length and field type) * 2. Object is not lazy loaded so we will return all data fields as simple array, as we need only names * 3. Object is lazy loaded so we will return empty array as all fields are loaded on request (in __get()). * * @param bool $blForceFullStructure Whether to force loading of full data structure * * @return array */ protected function _getNonCachedFieldNames($blForceFullStructure = false) { //Tomas //TODO: this place could be optimized. please check what we can do. $aFields = parent::_getNonCachedFieldNames($blForceFullStructure); if (!$this->_blEmployMultilanguage) { return $aFields; } //lets do some pointer manipulation if ($aFields) { //non admin fields $aWorkingFields =& $aFields; } else { //most likely admin fields so we remove another language $aWorkingFields =& $this->_aFieldNames; } //we have an array of fields, lets remove multilanguage fields foreach ($aWorkingFields as $sName => $sVal) { if ($this->_getFieldLang($sName)) { unset($aWorkingFields[$sName]); } else { $aWorkingFields[$sName] = $this->_getFieldStatus($sName); } } return $aWorkingFields; }