public function delete()
 {
     if (isset($this->icon) && AdvancedSearchCoreClass::_isFilledArray($this->icon)) {
         foreach ($this->icon as $icon) {
             if ($icon && file_exists(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/search_files/criterions_group/' . $icon)) {
                 @unlink(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/search_files/criterions_group/' . $icon);
             }
         }
     }
     if ($this->criterion_group_type == 'price') {
         Db::getInstance()->Execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'pm_advancedsearch_product_price_' . (int) $this->id_search . '`');
     }
     return parent::delete();
 }
示例#2
0
 public function displayContent()
 {
     if (!$this->id_seo && !$this->hookName || !$this->id_search) {
         die;
     }
     if (Tools::getValue('ajaxMode')) {
         $this->ajax = true;
     }
     $objPM_AdvancedSearch4 = new PM_AdvancedSearch4();
     if (!Tools::getValue('ajaxMode')) {
         $_GET['only_products'] = 1;
         echo $objPM_AdvancedSearch4->displayAjaxSearchBlocks($this->id_search, $this->hookName, 'pm_advancedsearch.tpl', (int) Tools::getValue('with_product', true), $this->criterions, $this->criterions_hidden, true);
         unset($_GET['only_products']);
     } else {
         try {
             AdvancedSearchCoreClass::_hookExec('header');
         } catch (SmartyException $e) {
         }
         $ajaxMode = true;
         if (Tools::getValue('only_products')) {
             $objPM_AdvancedSearch4->displayAjaxSearchBlocks($this->id_search, $this->hookName, 'pm_advancedsearch.tpl', (int) Tools::getValue('with_product', true), $this->criterions, $this->criterions_hidden, true);
         } else {
             if ($this->next_id_criterion_group && !$this->reset) {
                 if (is_array($this->criterions) && sizeof($this->criterions)) {
                     $objPM_AdvancedSearch4->displayAjaxSearchBlocks($this->id_search, $this->hookName, 'pm_advancedsearch.tpl', (int) Tools::getValue('with_product', true), $this->criterions, $this->criterions_hidden);
                 } else {
                     $objPM_AdvancedSearch4->displayNextStepSearch($this->id_search, $this->hookName, $this->next_id_criterion_group, (int) Tools::getValue('with_product', true), $this->criterions, $this->criterions_hidden);
                 }
             } else {
                 $objPM_AdvancedSearch4->displayAjaxSearchBlocks($this->id_search, $this->hookName, 'pm_advancedsearch.tpl', (int) Tools::getValue('with_product', true), $this->criterions, $this->criterions_hidden);
             }
         }
     }
     if ($this->ajax) {
         die;
     }
 }
示例#3
0
 private function getCriterionsGroupsAndCriterionsForSearch($result, $id_lang, $selected_criterion = array(), $selected_criterion_hidden = array(), $with_products = false, $id_criterion_group = 0, $on_search = false)
 {
     if (version_compare(_PS_VERSION_, '1.5.0.0', '>=')) {
         $currency = Context::getContext()->currency;
     } else {
         global $currency;
     }
     $criterion_group_state = isset($this->_cookie->criterion_group_state) ? @unserialize($this->_cookie->criterion_group_state) : array();
     $hidden_criteria_state = isset($this->_cookie->hidden_criteria_state) ? @unserialize($this->_cookie->hidden_criteria_state) : array();
     $set_base_selection = false;
     $selected_criteria_groups_type = array();
     if (!$selected_criterion || is_array($selected_criterion) && !sizeof($selected_criterion)) {
         $reinit_selected_criterion = true;
     }
     if (AdvancedSearchCoreClass::_isFilledArray($result)) {
         foreach ($result as $key => $row) {
             if ($row['filter_by_emplacement'] && Tools::getValue('id_seo') !== false && is_numeric(Tools::getValue('id_seo')) && Tools::getValue('id_seo') > 0) {
                 if (!isset($result[$key]['seo_criterion_groups'])) {
                     $result[$key]['seo_criterion_groups'] = array();
                 }
                 if ($row['filter_by_emplacement'] && Tools::getValue('id_seo') !== false && is_numeric(Tools::getValue('id_seo')) && Tools::getValue('id_seo') > 0) {
                     $seo_search = new AdvancedSearchSeoClass((int) Tools::getValue('id_seo'));
                     if (Validate::isLoadedObject($seo_search) && isset($seo_search->criteria) && !empty($seo_search->criteria)) {
                         $criteres_seo = @unserialize($seo_search->criteria);
                         if (AdvancedSearchCoreClass::_isFilledArray($criteres_seo)) {
                             foreach ($criteres_seo as $critere_seo) {
                                 $critere_seo = explode('_', $critere_seo);
                                 $id_criterion_group_seo = (int) $critere_seo[0];
                                 $result[$key]['seo_criterion_groups'][] = $id_criterion_group_seo;
                             }
                         }
                     }
                 }
                 $result[$key]['seo_criterion_groups'] = array_unique($result[$key]['seo_criterion_groups']);
             } else {
                 $result[$key]['seo_criterion_groups'] = array();
             }
             if (isset($reinit_selected_criterion)) {
                 $selected_criterion = array();
             }
             if (Tools::getValue('seo_url') && Tools::getValue('id_seo_id_search') == $row['id_search']) {
                 $selected_criterion = Tools::getValue('as4c', array());
             }
             if (Tools::getValue('seo_url')) {
                 $result[$key]['keep_category_information'] = 0;
                 $row['keep_category_information'] = 0;
             }
             if ($row['save_selection']) {
                 if ($on_search && (!$selected_criterion || is_array($selected_criterion) && !sizeof($selected_criterion))) {
                     $this->resetSearchSelection($row['id_search']);
                 }
                 $this->saveSearchSelection($row, $selected_criterion);
             }
             if ($row['filter_by_emplacement'] && (!$selected_criterion || is_array($selected_criterion) && !sizeof($selected_criterion))) {
                 $selected_criterion = $this->_getCriteriaFromEmplacement($row['id_search'], $row['id_category_root']);
                 $set_base_selection = true;
             }
             if ($row['filter_by_emplacement'] && Tools::getValue('id_seo') !== false && is_numeric(Tools::getValue('id_seo')) && Tools::getValue('id_seo') > 0) {
                 $this->_addToFBLog('SEO page, looking for pre-selected criterions');
                 $seo_search = new AdvancedSearchSeoClass((int) Tools::getValue('id_seo'));
                 if (Validate::isLoadedObject($seo_search) && isset($seo_search->criteria) && !empty($seo_search->criteria)) {
                     $criteres_seo = @unserialize($seo_search->criteria);
                     if (self::_isFilledArray($criteres_seo)) {
                         foreach ($criteres_seo as $critere_seo) {
                             $critere_seo = explode('_', $critere_seo);
                             $id_criterion_group_seo = (int) $critere_seo[0];
                             if (strpos($critere_seo[1], '-') === false) {
                                 $id_criterion_value = (int) $critere_seo[1];
                             } else {
                                 $id_criterion_value = $critere_seo[1];
                             }
                             if (isset($selected_criterion[$id_criterion_group_seo])) {
                                 if (!in_array($id_criterion_value, $selected_criterion[$id_criterion_group_seo])) {
                                     $selected_criterion[$id_criterion_group_seo][] = $id_criterion_value;
                                 }
                             } else {
                                 $selected_criterion[$id_criterion_group_seo] = array();
                                 $selected_criterion[$id_criterion_group_seo][] = $id_criterion_value;
                             }
                         }
                     }
                     $row['id_seo'] = (int) Tools::getValue('id_seo');
                     $row['id_seo_id_search'] = (int) $row['id_search'];
                     $row['seo_url'] = (string) trim(Tools::getValue('seo_url'));
                 }
             }
             if (is_array($selected_criterion) && sizeof($selected_criterion)) {
                 $selected_criterion = AdvancedSearchClass::cleanArrayCriterion($selected_criterion);
                 $selected_criteria_groups_type = AdvancedSearchClass::getCriterionGroupsTypeAndDisplay($row['id_search'], array_keys($selected_criterion));
             }
             if ($set_base_selection || ($result[$key]['base_selection'] = Tools::getValue('as4_base_selection', false))) {
                 if (!isset($result[$key]['base_selection'])) {
                     if (isset($selected_criterion[key($selected_criterion)])) {
                         $result[$key]['base_selection'] = $selected_criterion[key($selected_criterion)];
                     }
                 } else {
                     $result[$key]['base_selection'] = unserialize(base64_decode($result[$key]['base_selection']));
                 }
             }
             if ($row['step_search'] && is_array($selected_criterion) && sizeof($selected_criterion)) {
                 $selected_criterion_groups = array_keys($selected_criterion);
             }
             if ($row['dynamic_criterion'] && $row['search_method'] && Tools::getIsset('with_product') && Tools::getIsset('old_selected_criterion')) {
                 $current_selected_criterion = unserialize(base64_decode(Tools::getValue('old_selected_criterion')));
             } else {
                 $current_selected_criterion = $selected_criterion;
             }
             $selectedCriterionsForSeo = array();
             if (self::_isFilledArray($current_selected_criterion)) {
                 foreach ($current_selected_criterion as $idCriterionGroupSeo => $idCriterionsForSeo) {
                     foreach (array_values($idCriterionsForSeo) as $idCriterionForSeo) {
                         $selectedCriterionsForSeo[] = (int) $idCriterionGroupSeo . '_' . (int) $idCriterionForSeo;
                     }
                 }
                 $selectedCriterionsForSeo = array_unique($selectedCriterionsForSeo);
             }
             if ($this->productLinksNCIsInstalled && (Tools::getValue('id_search') || Tools::getValue('id_seo'))) {
                 $this->saveSearchSelection4ProductLinkNC($row['id_search'], $selected_criterion, $row['search_on_stock'], $row['products_order_by'], $row['products_order_way']);
             } elseif ($this->productLinksNCIsInstalled && !Tools::getValue('id_product', false)) {
                 $this->clearSearchSelection4ProductLinkNC();
             }
             if (!$id_criterion_group) {
                 $result[$key]['criterions_groups'] = AdvancedSearchCriterionGroupClass::getCriterionsGroupsFromIdSearch($row['id_search'], $id_lang, false);
             } else {
                 $result[$key]['criterions_groups'] = AdvancedSearchCriterionGroupClass::getCriterionsGroup($row['id_search'], $id_criterion_group, $id_lang);
             }
             if ($row['remind_selection'] && is_array($current_selected_criterion) && sizeof($current_selected_criterion)) {
                 $result[$key]['criterions_groups_selected'] = AdvancedSearchCriterionGroupClass::getCriterionsGroup($row['id_search'], array_keys($current_selected_criterion), $id_lang);
                 foreach ($current_selected_criterion as $id_criterion_group_selected => $selected_criteria) {
                     foreach ($selected_criteria as $criterion_value) {
                         if (!isset($result[$key]['criterions_selected'][$id_criterion_group_selected])) {
                             $result[$key]['criterions_selected'][$id_criterion_group_selected] = array();
                         }
                         if (preg_match('#-#', $criterion_value)) {
                             $range = explode('-', $criterion_value);
                             $groupInfo = AdvancedSearchCriterionGroupClass::getCriterionGroupTypeAndRangeSign($row['id_search'], $id_criterion_group_selected, $id_lang);
                             if (self::_isFilledArray($groupInfo) && isset($groupInfo['criterion_group_type']) && $groupInfo['criterion_group_type'] == 'price') {
                                 $rangeSignLeft = $currency->getSign('left');
                                 $rangeSignRight = $currency->getSign('right');
                             } else {
                                 $rangeSignLeft = '';
                                 if (self::_isFilledArray($groupInfo) && isset($groupInfo['criterion_group_type'])) {
                                     $rangeSignRight = ' ' . $groupInfo['range_sign'];
                                 } else {
                                     $rangeSignRight = '';
                                 }
                             }
                             $result[$key]['criterions_selected'][$id_criterion_group_selected][] = array('value' => $this->l('from') . ' ' . $rangeSignLeft . $range[0] . $rangeSignRight . ' ' . $this->l('to') . ' ' . $rangeSignLeft . $range[1] . $rangeSignRight, 'id_criterion' => $criterion_value);
                         } else {
                             $result[$key]['criterions_selected'][$id_criterion_group_selected][] = AdvancedSearchCriterionClass::getCriterionValueById($row['id_search'], $id_lang, $criterion_value);
                         }
                     }
                 }
             }
             if (!Tools::getValue('only_products')) {
                 if (isset($hidden_criteria_state[$row['id_search']])) {
                     $result[$key]['advanced_search_open'] = $hidden_criteria_state[$row['id_search']];
                 } else {
                     $result[$key]['advanced_search_open'] = 0;
                 }
                 $this->_addToFBLog("Retrieve criterions groups");
                 if (sizeof($result[$key]['criterions_groups'])) {
                     $prev_id_criterion_group = false;
                     foreach ($result[$key]['criterions_groups'] as $key2 => $row2) {
                         if ($row2['visible'] == 0) {
                             continue;
                         }
                         if ($row['collapsable_criterias'] && isset($criterion_group_state[$row['id_search'] . '_' . $row2['id_criterion_group']]) && (int) $criterion_group_state[$row['id_search'] . '_' . $row2['id_criterion_group']] == 0) {
                             $result[$key]['criterions_groups'][$key2]['is_collapsed'] = true;
                         } elseif (isset($criterion_group_state[$row['id_search'] . '_' . $row2['id_criterion_group']]) && $criterion_group_state[$row['id_search'] . '_' . $row2['id_criterion_group']]) {
                             $result[$key]['criterions_groups'][$key2]['is_collapsed'] = false;
                         }
                         if (!$row2['visible'] && !isset($selected_criterion[$row2['id_criterion_group']]) && ($row2['criterion_group_type'] == 'manufacturer' && !Tools::getValue('id_manufacturer') || $row2['criterion_group_type'] == 'supplier' && !Tools::getValue('id_supplier') || $row2['criterion_group_type'] == 'category' && !Tools::getValue('id_category'))) {
                             continue;
                         }
                         if (!$row['step_search'] || $row['step_search'] && ($key2 == 0 || isset($selected_criterion_groups) && (in_array($row2['id_criterion_group'], $selected_criterion_groups) || $prev_id_criterion_group && in_array($prev_id_criterion_group, $selected_criterion_groups) || !sizeof($result[$key]['criterions'][$prev_id_criterion_group])))) {
                             if ($row2['range'] == 1) {
                                 if ($row2['criterion_group_type'] == 'price') {
                                     $rangeSignLeft = $currency->getSign('left');
                                     $rangeSignRight = $currency->getSign('right');
                                 } else {
                                     $rangeSignLeft = '';
                                     $rangeSignRight = ' ' . $row2['range_sign'];
                                 }
                                 $ranges = explode(',', $row2['range_interval']);
                                 $criteria_formated = array();
                                 foreach ($ranges as $krange => $range) {
                                     $rangeUp = isset($ranges[$krange + 1]) ? $ranges[$krange + 1] : '';
                                     $range1 = $range . '-' . $rangeUp;
                                     $range2 = ($rangeUp ? $this->l('from') : $this->l('more than')) . ' ' . $rangeSignLeft . $range . $rangeSignRight . ($rangeUp ? ' ' . $this->l('to') . ' ' . $rangeSignLeft . $rangeUp . $rangeSignRight : '');
                                     if (is_array($selected_criterion)) {
                                         $citeria4count = $selected_criterion;
                                     } else {
                                         $citeria4count = array();
                                     }
                                     $citeria4count[$row2['id_criterion_group']] = array($range1);
                                     $selected_criteria_groups_type2 = AdvancedSearchClass::getCriterionGroupsTypeAndDisplay($row['id_search'], array_keys($citeria4count));
                                     $nb_products = AdvancedSearchClass::getProductsSearched($row, $id_lang, false, $citeria4count, $selected_criteria_groups_type2, NULL, NULL, NULL, NULL, true, false, false, false, false, true, false, $row['search_on_stock']);
                                     if (!$row['display_empty_criteria'] && !$nb_products) {
                                         continue;
                                     }
                                     $criteria_formated[$range1] = array('id_criterion' => $range1, 'value' => $range2, 'nb_product' => $nb_products);
                                 }
                                 $result[$key]['criterions'][$row2['id_criterion_group']] = $criteria_formated;
                             } elseif ($row2['criterion_group_type'] == 'price') {
                                 $range_selected_criterion = $selected_criterion;
                                 unset($range_selected_criterion[$row2['id_criterion_group']]);
                                 $result[$key]['criterions'][$row2['id_criterion_group']] = AdvancedSearchClass::getPriceRangeForSearchBloc($row, $row2['id_criterion_group'], $this->_cookie->id_currency, isset($this->_cookie->id_country) ? $this->_cookie->id_country : 0, $this->getCurrentCustomerGroupId(), false, $row['step_search'] && !$id_criterion_group && $key2 == 0 ? array() : $range_selected_criterion, $row['step_search'] && !$id_criterion_group && $key2 == 0 ? array() : $selected_criteria_groups_type);
                                 $this->_addToFBLog("Retrieve price range group " . $row2['id_criterion_group']);
                                 $min_price_id_currency = (int) $result[$key]['criterions'][$row2['id_criterion_group']][0]['min_price_id_currency'];
                                 $max_price_id_currency = (int) $result[$key]['criterions'][$row2['id_criterion_group']][0]['max_price_id_currency'];
                                 $result[$key]['criterions'][$row2['id_criterion_group']][0]['min'] = $result[$key]['criterions'][$row2['id_criterion_group']][0]['min_price'];
                                 $result[$key]['criterions'][$row2['id_criterion_group']][0]['max'] = $result[$key]['criterions'][$row2['id_criterion_group']][0]['max_price'];
                                 if ($min_price_id_currency == 0 && $min_price_id_currency != $this->_cookie->id_currency || $min_price_id_currency != 0 && $min_price_id_currency != $this->_cookie->id_currency) {
                                     $result[$key]['criterions'][$row2['id_criterion_group']][0]['min'] = floor(Tools::convertPrice($result[$key]['criterions'][$row2['id_criterion_group']][0]['min_price'], NULL, $this->_cookie->id_currency));
                                 }
                                 if ($max_price_id_currency == 0 && $max_price_id_currency != $this->_cookie->id_currency || $max_price_id_currency != 0 && $max_price_id_currency != $this->_cookie->id_currency) {
                                     $result[$key]['criterions'][$row2['id_criterion_group']][0]['max'] = ceil(Tools::convertPrice($result[$key]['criterions'][$row2['id_criterion_group']][0]['max_price'], NULL, $this->_cookie->id_currency));
                                 }
                                 if ($row['step_search'] && $result[$key]['criterions'][$row2['id_criterion_group']][0]['min'] == 0 && $result[$key]['criterions'][$row2['id_criterion_group']][0]['max'] == 0) {
                                     unset($result[$key]['criterions_groups'][$key2]);
                                     continue;
                                 }
                                 $result[$key]['criterions_groups'][$key2]['left_range_sign'] = $currency->getSign('left');
                                 $result[$key]['criterions_groups'][$key2]['right_range_sign'] = $currency->getSign('right');
                                 if (AdvancedSearchCoreClass::_isFilledArray($selected_criterion) && isset($selected_criterion[$row2['id_criterion_group']]) && sizeof($selected_criterion[$row2['id_criterion_group']])) {
                                     $range = explode('-', $selected_criterion[$row2['id_criterion_group']][0]);
                                     $result[$key]['criterions'][$row2['id_criterion_group']][0]['cur_min'] = $range[0];
                                     if (isset($range[1])) {
                                         $result[$key]['criterions'][$row2['id_criterion_group']][0]['cur_max'] = $range[1];
                                     }
                                 }
                                 $result[$key]['criterions'][$row2['id_criterion_group']][0]['step'] = (double) $row2['range_nb'] <= 0 ? 1 : $row2['range_nb'];
                             } elseif ($row2['display_type'] == 5) {
                                 $range_selected_criterion = $selected_criterion;
                                 unset($range_selected_criterion[$row2['id_criterion_group']]);
                                 $result[$key]['criterions'][$row2['id_criterion_group']] = AdvancedSearchClass::getCriterionsRange($row, $row2['id_criterion_group'], $id_lang, false, $range_selected_criterion, $selected_criteria_groups_type, $this->_cookie->id_currency, isset($this->_cookie->id_country) ? $this->_cookie->id_country : 0, $this->getCurrentCustomerGroupId(), $row2);
                                 if ($row['step_search'] && $result[$key]['criterions'][$row2['id_criterion_group']][0]['min'] == 0 && $result[$key]['criterions'][$row2['id_criterion_group']][0]['max'] == 0) {
                                     unset($result[$key]['criterions_groups'][$key2]);
                                     continue;
                                 }
                                 if (AdvancedSearchCoreClass::_isFilledArray($selected_criterion) && isset($selected_criterion[$row2['id_criterion_group']]) && sizeof($selected_criterion[$row2['id_criterion_group']])) {
                                     $range = explode('-', $selected_criterion[$row2['id_criterion_group']][0]);
                                     $result[$key]['criterions'][$row2['id_criterion_group']][0]['cur_min'] = $range[0];
                                     if (isset($range[1])) {
                                         $result[$key]['criterions'][$row2['id_criterion_group']][0]['cur_max'] = $range[1];
                                     }
                                 }
                                 $result[$key]['criterions'][$row2['id_criterion_group']][0]['step'] = (double) $row2['range_nb'] <= 0 ? 1 : $row2['range_nb'];
                                 $result[$key]['criterions_groups'][$key2]['left_range_sign'] = '';
                                 $result[$key]['criterions_groups'][$key2]['right_range_sign'] = isset($row2['range_sign']) && strlen($row2['range_sign']) > 0 ? ' ' . $row2['range_sign'] : '';
                             } else {
                                 $criteria = AdvancedSearchClass::getCriterionsForSearchBloc($row, $row2['id_criterion_group'], $id_lang, $row['display_nb_result_criterion'], $selected_criterion, $selected_criteria_groups_type, $this->_cookie->id_currency, isset($this->_cookie->id_country) ? $this->_cookie->id_country : 0, $this->getCurrentCustomerGroupId(), true, $row2, isset($result[$key]['base_selection']) && $result[$key]['base_selection'] && self::_isFilledArray($result[$key]['base_selection']) ? $result[$key]['base_selection'] : false, $result[$key]['criterions_groups']);
                                 if ($row2['display_type'] == 3 || $row2['display_type'] == 4 || $row2['display_type'] == 7) {
                                     $this->addSeoPageUrlToCriterions($row['id_search'], $id_lang, $criteria, $selectedCriterionsForSeo);
                                 }
                                 $criteria_formated = array();
                                 if ($criteria && sizeof($criteria)) {
                                     foreach ($criteria as $rowCriteria) {
                                         $criteria_formated[$rowCriteria['id_criterion']] = $rowCriteria;
                                     }
                                 }
                                 $result[$key]['criterions'][$row2['id_criterion_group']] = $criteria_formated;
                                 if ($row['filter_by_emplacement'] && Tools::getValue('id_seo') == false && (Tools::getValue('id_manufacturer', Tools::getValue('id_manufacturer_search')) || Tools::getValue('id_supplier', Tools::getValue('id_supplier')))) {
                                     $preSelectedCriterionEmplacement = $this->_getCriteriaFromEmplacement($row['id_search']);
                                     if (is_array($preSelectedCriterionEmplacement) && isset($preSelectedCriterionEmplacement[$row2['id_criterion_group']]) && AdvancedSearchCoreClass::_isFilledArray($preSelectedCriterionEmplacement[$row2['id_criterion_group']])) {
                                         $result[$key]['criterions_groups'][$key2]['is_preselected_by_emplacement'] = true;
                                     }
                                 }
                                 $this->_addToFBLog("Retrieve criterions for group " . $row2['id_criterion_group']);
                             }
                             $prev_id_criterion_group = $row2['id_criterion_group'];
                         }
                     }
                 }
             }
             if ($with_products) {
                 $orderBy = Tools::strtolower(Tools::getValue('orderby', $this->orderByValues[$row['products_order_by']]));
                 $orderWay = Tools::strtolower(Tools::getValue('orderway', $this->orderWayValues[$row['products_order_way']]));
                 if (!in_array($orderBy, $this->orderByValues)) {
                     $orderBy = $this->orderByValues[$row['products_order_by']];
                 }
                 if (!in_array($orderWay, $this->orderWayValues)) {
                     $orderWay = $this->orderWayValues[$row['products_order_way']];
                 }
                 $result[$key]['products'] = AdvancedSearchClass::getProductsSearched($row, $id_lang, false, $selected_criterion, $selected_criteria_groups_type, (int) Tools::getValue('p', 1), abs((int) Tools::getValue('n', isset($this->_cookie->nb_item_per_page) && is_numeric($this->_cookie->nb_item_per_page) ? $this->_cookie->nb_item_per_page : (int) $row['products_per_page'])), $orderBy, $orderWay, false, $this->_cookie->id_currency, isset($this->_cookie->id_country) ? $this->_cookie->id_country : 0, $this->getCurrentCustomerGroupId(), true);
                 $this->_addToFBLog("Retrieve results");
             }
             if ($with_products || $row['display_nb_result_on_blc']) {
                 $result[$key]['total_products'] = AdvancedSearchClass::getProductsSearched($row, $id_lang, false, $selected_criterion, $selected_criteria_groups_type, 1, 10, NULL, NULL, true, $this->_cookie->id_currency, isset($this->_cookie->id_country) ? $this->_cookie->id_country : 0, $this->getCurrentCustomerGroupId(), true);
                 $this->_addToFBLog("Retrieve results count");
             }
             $result[$key]['selected_criterion'] = $selected_criterion;
             if ($row['dynamic_criterion'] && $row['search_method'] && Tools::getIsset('with_product') && Tools::getIsset('old_selected_criterion')) {
                 $result[$key]['old_selected_criterion'] = unserialize(base64_decode(Tools::getValue('old_selected_criterion')));
             }
             $result[$key]['save_selection_active'] = isset($row['save_selection_active']);
         }
     }
     return $result;
 }
 public function delete()
 {
     if (isset($this->icon) && AdvancedSearchCoreClass::_isFilledArray($this->icon)) {
         foreach ($this->icon as $icon) {
             if ($icon && file_exists(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/search_files/criterions/' . $icon)) {
                 @unlink(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/search_files/criterions/' . $icon);
             }
         }
     }
     Db::getInstance()->Execute('DELETE FROM `' . _DB_PREFIX_ . 'pm_advancedsearch_criterion_' . (int) $this->id_search . '_link` WHERE `' . $this->identifier . '` = ' . intval($this->id));
     Db::getInstance()->Execute('DELETE FROM `' . _DB_PREFIX_ . 'pm_advancedsearch_criterion_' . (int) $this->id_search . '_list` WHERE `id_criterion_parent` = ' . (int) $this->id . ' OR `id_criterion` = ' . (int) $this->id);
     Db::getInstance()->Execute('DELETE FROM `' . _DB_PREFIX_ . 'pm_advancedsearch_cache_product_criterion_' . (int) $this->id_search . '` WHERE `id_criterion` = ' . (int) $this->id);
     return parent::delete();
 }
示例#5
0
 public static function array_values_recursive($array)
 {
     $arrayValues = array();
     if (AdvancedSearchCoreClass::_isFilledArray($array)) {
         foreach ($array as $value) {
             if (is_scalar($value) or is_resource($value)) {
                 $arrayValues[] = $value;
             } elseif (is_array($value)) {
                 $arrayValues = array_merge($arrayValues, self::array_values_recursive($value));
             }
         }
     }
     return $arrayValues;
 }