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