Example #1
0
 /**
  * Merge translated fields into the main records
  *
  * @param Garp_Db_Table_Row $result
  * @return void
  */
 public function mergeTranslatedFields($result)
 {
     if (!isset($result->{self::I18N_MODEL_BINDING_ALIAS})) {
         return;
     }
     $translationRecordList = $result->{self::I18N_MODEL_BINDING_ALIAS};
     if ($translationRecordList instanceof Zend_Db_Table_Rowset_Abstract) {
         $translationRecordList = $translationRecordList->toArray();
     }
     $translatedFields = array();
     $allLocales = Garp_I18n::getLocales();
     foreach ($this->_translatableFields as $translatableField) {
         // provide default values
         foreach ($allLocales as $locale) {
             $translatedFields[$translatableField][$locale] = null;
         }
         foreach ($translationRecordList as $translationRecord) {
             $lang = $translationRecord[self::LANG_COLUMN];
             $translatedFields[$translatableField][$lang] = $translationRecord[$translatableField];
         }
         $result->setVirtual($translatableField, $translatedFields[$translatableField]);
         //$lang] = $translationRecord[$translatableField];
     }
     // We now have a $translatedFields array like this:
     // array(
     //   "name" => array(
     //     "nl" => "Schaap",
     //     "en" => "Sheep"
     //   )
     // )
     //$result->setFromArray($translatedFields);
     unset($result->{self::I18N_MODEL_BINDING_ALIAS});
 }