private function _postProcessMassSeoSearch() { $id_search = Tools::getValue('id_search', false); $id_currency = Tools::getValue('id_currency', false); if (!$id_currency) { $id_currency = Configuration::get('PS_CURRENCY_DEFAULT'); } self::_cleanBuffer(); $return = ''; if (!$id_search) { $return .= '<script type="text/javascript">parent.parent.show_error("' . $this->l('An error occured') . '");</script>'; } else { $criteria_groups = explode(',', Tools::getValue('criteria_groups', '')); $criteria = Tools::getValue('criteria', false); $seoIds = array(); if (!sizeof($criteria_groups) || !sizeof($criteria)) { $return .= '<script type="text/javascript">parent.parent.show_error("' . $this->l('Please select at least one criteria') . '");</script>'; } else { $criteria_reorder = array(); foreach ($criteria_groups as $key_criterion_group) { $id_criterion_group = self::parseInt($key_criterion_group); if (isset($criteria[$id_criterion_group]) && sizeof($criteria[$id_criterion_group])) { $criteria_reorder[] = $criteria[$id_criterion_group]; } } $criteria_cartesian = $this->_cartesianReOrder($criteria_reorder); foreach ($criteria_cartesian as $k => $criteria_final_str) { $criteria_final = explode(',', $criteria_final_str); $resultTotalProducts = $this->countProductFromSeoCriteria($id_search, $criteria_final, $id_currency); if (!$resultTotalProducts) { continue; } $seo_key = $this->getSeoKeyFromCriteria($id_search, $criteria_final, $id_currency); $cur_id_seo = AdvancedSearchSeoClass::seoDeletedExists($seo_key); if ($cur_id_seo) { AdvancedSearchSeoClass::undeleteSeoBySeoKey($seo_key); } $defaultReturnSeoStr = $this->getSeoStrings($criteria_final, $id_search, $id_currency); $objAdvancedSearchSeoClass = new AdvancedSearchSeoClass($cur_id_seo); $objAdvancedSearchSeoClass->id_search = $id_search; $objAdvancedSearchSeoClass->criteria = $criteria_final_str; $objAdvancedSearchSeoClass->seo_key = $seo_key; foreach ($defaultReturnSeoStr as $id_lang => $fields) { foreach ($fields as $field => $fieldValue) { $objAdvancedSearchSeoClass->{$field}[$id_lang] = $fieldValue; } } $error = $objAdvancedSearchSeoClass->validateFields(false, true); $errorLang = $objAdvancedSearchSeoClass->validateFieldsLang(false, true); if ($error !== true) { $return .= '<script type="text/javascript">parent.parent.show_error("' . addcslashes($error, '"') . '");</script>'; } elseif ($errorLang !== true) { $return .= '<script type="text/javascript">parent.parent.show_error("' . addcslashes($errorLang, '"') . '");</script>'; } else { $objAdvancedSearchSeoClass->save(); $seoIds[] = $objAdvancedSearchSeoClass->id; } } if (sizeof($seoIds)) { foreach ($seoIds as $id_seo) { foreach ($seoIds as $id_seo2) { if ($id_seo == $id_seo2) { continue; } $row = array('id_seo' => intval($id_seo), 'id_seo_linked' => intval($id_seo2)); Db::getInstance()->AutoExecute(_DB_PREFIX_ . 'pm_advancedsearch_seo_crosslinks', $row, 'INSERT'); } } } $return .= '<script type="text/javascript">parent.parent.show_info("' . $this->l('Saved') . '");parent.parent.reloadPanel("seo_search_panel_' . (int) $id_search . '");parent.parent.closeDialogIframe();</script>'; } } $this->generateSeoGSiteMap(); echo $return; die; }