protected function _synchronizedDictionary($id_backendapplication, $dict_code, $def_code, $dictData) { $dictionaryObj = new Dictionary(); $dictionaryEntryObj = new DictionaryEntry(); $dictionaryRow = $dictionaryObj->fetchRow('ghost = false AND id_backend_application = ' . $id_backendapplication . ' AND code = \'' . $dict_code . '\''); //dodanie definicji słownika jeśli nie istnieje. if (!$dictionaryRow) { $values = array('id_backend_application' => $id_backendapplication, 'def' => $def_code, 'code' => $dict_code, 'dictionary_name' => $dict_code); $new_id = $dictionaryObj->getAdapter()->query('SELECT MAX(id)+1 as max FROM dictionary')->fetch(); $values['id'] = $new_id['max']; $dictionaryRow = $dictionaryObj->createRow($values); $dictionaryRow->save(); } //pobranie wszytkich rekordów ze słonika. $baseDictionary = new Base_Dictionary($id_backendapplication); $dictApplication = $baseDictionary->setSource($dict_code, array(), null, 'id_entry', array('id'))->getDictionary(); // dodanie nowych rekordów oraz update istniejących. foreach ($dictData as $key => $row) { if (isset($dictApplication[$row['id_entry']])) { $rowObj = $dictionaryEntryObj->fetchRow('id_dictionary = ' . $dictionaryRow->id . ' AND id_entry = \'' . $row['id_entry'] . '\' AND ghost = false'); $rowObj->setFromArray(array('entry' => $row['entry'])); unset($dictApplication[$row['id_entry']]); } else { $row['id_dictionary'] = $dictionaryRow->id; $rowObj = $dictionaryEntryObj->createRow($row); $rowObj->save(); } } // usuwanie niepotrzebnych wpisów. foreach ($dictApplication as $key => $row) { $rowObj = $dictionaryEntryObj->fetchRow('id_dictionary = ' . $dictionaryRow->id . ' AND id_entry = \'' . $key . '\' and ghost = false'); $rowObj->delete(); } }
public function getDictionaryEntries() { $branch = new DictionaryEntry(); $select = $branch->select()->where('id_dictionary = ?', $this->id)->where('ghost = false')->order(array('id_entry')); return $select; }