/** * Сравнение контекста с правилом * @param nc_search_extension_rule $rule * @return boolean */ public function conforms_to(nc_search_extension_rule $rule) { foreach ($this->properties as $key => $this_value) { // Значение NULL у свойства контекста означает «любое значение» if ($this_value === null) { continue; } if (!$rule->has_property($key)) { continue; } $rule_value = $rule->get($key); // Пустое значение у свойства правила расширения означает «любое значение» if ($rule_value !== null && $rule_value != '' && $rule_value != $this_value) { return false; } } return true; }
<?php if (!class_exists("nc_system")) { die; } $ui = $this->get_ui(); $ui->add_settings_toolbar(); $ui->add_submit_button(NETCAT_MODULE_SEARCH_ADMIN_SETTINGS_SAVE); $stopwords_filter = new nc_search_extension_rule(); $stopwords_filter->load_where('extension_class', 'nc_search_language_filter_stopwords'); $shortwords_filter = new nc_search_extension_rule(); $shortwords_filter->load_where('extension_class', 'nc_search_language_filter_minlength'); // ОБРАБОТАТЬ ВХОДЯЩИЕ ДАННЫЕ // (1) purge[now] + purge[interval], [interval_value], [interval_type] // (2) s[] $new_settings = $this->get_input('s', array()); $purge = $this->get_input('purge', array()); if (isset($purge["now"]) && $purge["now"]) { if ($purge["interval"] == -1) { // грохнуть всё $purge["interval_value"] = 1; $purge["interval_type"] = "second"; } nc_search::purge_history($purge["interval_value"], $purge["interval_type"]); nc_print_status(NETCAT_MODULE_SEARCH_ADMIN_SETTING_QUERY_LOG_PURGED, 'ok'); } else { if ($new_settings) { foreach ($new_settings as $k => $v) { nc_search::save_setting($k, $v); } // enable/disable extensions depending on the settings