コード例 #1
0
ファイル: search.inc.php プロジェクト: AroundPBT/PHPBoost
/**
 *  Renvoie une chaine contenant les resultats
 */
function get_html_results(&$results, &$html_results, &$results_name)
{
    $provider_service = AppContext::get_extension_provider_service();
    $display_all_results = $results_name == 'all' ? true : false;
    $tpl_results = new FileTemplate('search/search_generic_pagination_results.tpl');
    $tpl_results->assign_vars(array('RESULTS_NAME' => $results_name, 'C_ALL_RESULTS' => $display_all_results));
    $nb_pages = round(count($results) / NB_RESULTS_PER_PAGE) + 1;
    $nb_results = count($results);
    if (!$display_all_results) {
        $provider = $provider_service->get_provider(strtolower($results_name));
        $extension_point = $provider->get_extension_point(SearchableExtensionPoint::EXTENSION_POINT);
        $results_data = array();
        $personnal_parse_results = $extension_point->has_customized_results();
        if ($personnal_parse_results && $results_name != 'all') {
            $results_data = $extension_point->compute_search_results(array('results' => $results));
            $nb_results = min($nb_results, count($results_data));
        }
    }
    for ($num_page = 0; $num_page < $nb_pages; $num_page++) {
        $tpl_results->assign_block_vars('page', array('NUM_PAGE' => $num_page, 'BLOCK_DISPLAY' => $num_page == 0 ? 'block' : 'none'));
        for ($i = 0; $i < NB_RESULTS_PER_PAGE; $i++) {
            $num_item = $num_page * NB_RESULTS_PER_PAGE + $i;
            if ($num_item >= $nb_results) {
                break;
            }
            if ($display_all_results || !$personnal_parse_results) {
                $tpl_result = new FileTemplate('search/search_generic_results.tpl');
                $module = ModulesManager::get_module($results[$num_item]['module']);
                if ($display_all_results) {
                    $tpl_result->assign_vars(array('C_ALL_RESULTS' => true, 'L_MODULE_NAME' => $module->get_configuration()->get_name()));
                } else {
                    $tpl_result->assign_vars(array('C_ALL_RESULTS' => false, 'L_MODULE_NAME' => $module->get_configuration()->get_name()));
                }
                $tpl_result->assign_vars(array('TITLE' => $results[$num_item]['title'], 'U_LINK' => url($results[$num_item]['link'])));
                $tpl_results->assign_block_vars('page.results', array('result' => $tpl_result->render()));
            } else {
                $tpl_results->assign_block_vars('page.results', array('result' => $extension_point->parse_search_result($results_data[$num_item])));
            }
        }
    }
    $html_results = $tpl_results->render();
}
コード例 #2
0
ファイル: search.php プロジェクト: AroundPBT/PHPBoost
    if ($search_in != 'all') {
        if (isset($used_modules[$search_in]) && isset($modules_args[$search_in])) {
            $used_modules = array($search_in => $used_modules[$search_in]);
            $modules_args = array($search_in => $modules_args[$search_in]);
        } else {
            $used_modules = array();
            $modules_args = array();
        }
    } else {
        // We remove modules that we're not searching in
        foreach ($modules_args as $module_id => $module_args) {
            if (!$query_mode && (!in_array($module_id, $selected_modules) || !isset($modules_args[$module_id]))) {
                unset($modules_args[$module_id]);
                unset($used_modules[$module_id]);
            }
        }
    }
    // Génération des résultats et passage aux templates
    $nbResults = get_search_results($search, $used_modules, $modules_args, $results, $idsSearch);
    foreach ($used_modules as $module_id => $extension_point) {
        $tpl->assign_block_vars('results', array('MODULE_NAME' => $module_id, 'L_MODULE_NAME' => ucfirst(ModulesManager::get_module($module_id)->get_configuration()->get_name()), 'ID_SEARCH' => $idsSearch[$module_id]));
    }
    $all_html_result = '';
    if ($nbResults > 0) {
        get_html_results($results, $all_html_result, $search_in);
    }
    $tpl->assign_vars(array('NB_RESULTS_PER_PAGE' => NB_RESULTS_PER_PAGE, 'L_TITLE_ALL_RESULTS' => $LANG['title_all_results'], 'L_RESULTS' => $LANG['results'], 'L_RESULTS_CHOICE' => $LANG['results_choice'], 'L_PRINT' => $LANG['print'], 'L_NB_RESULTS_FOUND' => $nbResults > 1 ? $LANG['nb_results_found'] : ($nbResults == 0 ? $LANG['no_results_found'] : $LANG['one_result_found']), 'L_SEARCH_RESULTS' => $LANG['search_results'], 'NB_RESULTS' => $nbResults, 'ALL_RESULTS' => $all_html_result, 'SEARCH_IN' => $search_in, 'C_SIMPLE_SEARCH' => $search_in == 'all'));
    $tpl->display();
}
//--------------------------------------------------------------------- Footer
require_once '../kernel/footer.php';
コード例 #3
0
ファイル: admin_search.php プロジェクト: AroundPBT/PHPBoost
        foreach ($provider_service->get_providers(SearchableExtensionPoint::EXTENSION_POINT) as $module_id => $provider) {
            $search_weightings->add_module_weighting($module_id, retrieve(POST, $module_id, SearchWeightings::DEFAULT_WEIGHTING));
        }
        SearchConfig::load()->set_weightings($search_weightings);
        SearchConfig::save();
        AppContext::get_response()->redirect(HOST . REWRITED_SCRIPT);
    }
} elseif ($clearOutCache) {
    $querier = PersistenceContext::get_querier();
    $querier->truncate(PREFIX . 'search_results');
    $querier->truncate(PREFIX . 'search_index');
    AppContext::get_response()->redirect(HOST . SCRIPT);
} else {
    $tpl = new FileTemplate('search/admin_search.tpl');
    $config = SearchConfig::load();
    $tpl->assign_vars(array('L_SEARCH_MANAGEMENT' => $LANG['search_management'], 'L_SEARCH_CONFIG' => $LANG['search_config'], 'L_SEARCH_CONFIG_WEIGHTING' => $LANG['search_config_weighting'], 'L_UPDATE' => $LANG['update'], 'L_RESET' => $LANG['reset'], 'C_WEIGHTING' => $weighting));
    if (!$weighting) {
        $provider_service = AppContext::get_extension_provider_service();
        foreach ($provider_service->get_providers(SearchableExtensionPoint::EXTENSION_POINT) as $module_id => $provider) {
            $module_configuration = ModulesManager::get_module($module_id)->get_configuration();
            if (in_array($module_id, $config->get_unauthorized_providers())) {
                $selected = ' selected="selected"';
            } else {
                $selected = '';
            }
            $tpl->assign_block_vars('authorized_modules', array('MODULE' => $module_id, 'SELECTED' => $selected, 'L_MODULE_NAME' => ucfirst($module_configuration->get_name())));
        }
        $tpl->put_all(array('L_REQUIRE' => LangLoader::get_message('form.explain_required_fields', 'status-messages-common'), 'L_CACHE_TIME' => $LANG['cache_time'], 'L_CACHE_TIME_EXPLAIN' => $LANG['cache_time_explain'], 'L_NB_RESULTS_P' => $LANG['nb_results_per_page'], 'L_MAX_USE' => $LANG['max_use'], 'L_MAX_USE_EXPLAIN' => $LANG['max_use_explain'], 'L_CLEAR_OUT_CACHE' => $LANG['clear_out_cache'], 'L_AUTHORIZED_MODULES' => $LANG['unauthorized_modules'], 'L_AUTHORIZED_MODULES_EXPLAIN' => $LANG['unauthorized_modules_explain'], 'L_SEARCH_CACHE' => $LANG['search_cache'], 'L_AUTHORIZATIONS' => $LANG['admin.authorizations'], 'L_READ_AUTHORIZATION' => $LANG['admin.authorizations.read'], 'CACHE_TIME' => $config->get_cache_lifetime(), 'MAX_USE' => $config->get_cache_max_uses(), 'NB_RESULTS_P' => $config->get_nb_results_per_page(), 'READ_AUTHORIZATION' => Authorizations::generate_select(SearchAuthorizationsService::READ_AUTHORIZATIONS, $config->get_authorizations())));
    } else {
        foreach ($config->get_weightings()->get_modules_weighting() as $module_id => $weighting) {
            $tpl->assign_block_vars('weights', array('MODULE' => $module_id, 'L_MODULE_NAME' => ucfirst(ModulesManager::get_module($module_id)->get_configuration()->get_name()), 'WEIGHT' => $weighting));