Exemple #1
0
 /**
  * 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;
 }