public function processImportAdvices($advices, $advices_lang, $id_lang) { $formated_advices_lang = array(); foreach ($advices_lang as $lang) { $formated_advices_lang[$lang->id_ps_advice] = array('html' => array($id_lang => $lang->html)); } $current_advices = array(); $result = Db::getInstance()->ExecuteS('SELECT id_advice, id_ps_advice FROM ' . _DB_PREFIX_ . 'advice'); foreach ($result as $row) { $current_advices[(int) $row['id_ps_advice']] = (int) $row['id_advice']; } $cond_ids = $this->getFormatedConditionsIds(); foreach ($advices as $advice) { try { //if advice already exist we update language data if (isset($current_advices[$advice->id_ps_advice])) { $adv = new Advice($current_advices[$advice->id_ps_advice]); $adv->html[$id_lang] = $formated_advices_lang[$advice->id_ps_advice]['html'][$id_lang]; $adv->update(); $this->processAdviceAsso($adv->id, $advice->display_conditions, $advice->hide_conditions, $advice->tabs, $cond_ids); unset($current_advices[$advice->id_ps_advice]); } else { $advice_data = array_merge((array) $advice, $formated_advices_lang[$advice->id_ps_advice]); $adv = new Advice(); $adv->hydrate($advice_data, (int) $id_lang); $adv->id_tab = (int) Tab::getIdFromClassName($advice->tab); $adv->add(); $this->processAdviceAsso($adv->id, $advice->display_conditions, $advice->hide_conditions, $advice->tabs, $cond_ids); } unset($adv); } catch (Exception $e) { continue; } } }
public function processImportAdvices($advices, $advices_lang, $id_lang) { $formated_advices_lang = array(); foreach ($advices_lang as $lang) { $formated_advices_lang[$lang->id_ps_advice] = array('html' => array($id_lang => $lang->html)); } $current_advices = array(); $result = Db::getInstance()->ExecuteS('SELECT id_advice FROM ' . _DB_PREFIX_ . 'advice'); foreach ($result as $row) { $current_advices[] = (int) $row['id_advice']; } $cond_ids = $this->getFormatedConditionsIds(); foreach ($advices as $advice) { try { //if advice already exist we update language data if (in_array($advice->id_ps_advice, $current_advices)) { $adv = new Advice($advice->id_ps_advice); $bdg->html[$id_lang] = $formated_advices_lang[$advice->id_ps_advice]['html'][$id_lang]; $adv->update(); unset($current_advices[$advice->id_ps_advice]); } else { $advice_data = array_merge((array) $advice, $formated_advices_lang[$advice->id_ps_advice]); $adv = new Advice(); $adv->hydrate($advice_data, (int) $id_lang); $adv->id_tab = (int) Tab::getIdFromClassName($advice->tab); $adv->add(); foreach ($advice->display_conditions as $cond) { Db::getInstance()->insert('condition_advice', array('id_condition' => $cond_ids[$cond], 'id_advice' => $adv->id, 'display' => 1)); } foreach ($advice->hide_conditions as $cond) { Db::getInstance()->insert('condition_advice', array('id_condition' => $cond_ids[$cond], 'id_advice' => $adv->id, 'display' => 0)); } } unset($adv); } catch (Exception $e) { continue; } } // Delete advices that are not in the file anymore foreach ($current_advices as $id_advice) { // Check that the advice is used in this language $html = Db::getInstance()->getValue('SELECT html FROM ' . _DB_PREFIX_ . 'advice_lang WHERE id_advice = ' . (int) $id_advice . ' AND id_lang = ' . (int) $id_lang); if (!$html) { continue; } $adv = new Advice($id_advice); $adv->delete(); } }