/page2 // /international-class-code/ for the index require_once(dirname(__FILE__) . '/lib/db.php'); require_once(dirname(__FILE__). '/searchcode/BrowseTrademarkSearch.php'); require_once(dirname(__FILE__). '/searchcode/DetailedTrademarkSearch.php'); require_once(dirname(__FILE__). '/searchcode/DetailedTrademarkOpenSearch.php'); require_once(dirname(__FILE__) . '/searchcode/TrademarkSearchSnippetGenerator.php'); require_once(dirname(__FILE__) . '/searchcode/SearchResultPageModel.php'); require_once(dirname(__FILE__) . '/page_renderers/Rendereable.php'); require_once(dirname(__FILE__) . '/page_renderers/search/PaginationRenderer.php'); require_once(dirname(__FILE__). '/page_renderers/search/BrowsePageRenderer.php'); define('CACHE_PATH', getenv('CACHE_PATH') . 'listings'); $type = $_GET['type']; switch($type) { case 'international-class-code': render_international_class_code_page(); } function render_international_class_code_page() { $args = explode('/', $_GET['args']); $code = $args[0]; $code = preg_replace('/[^A-Z0-9]+/', '', $code); $code = ltrim($code, '0'); $page_number = isset($args[1]) ? $args[1] : 1 ; if(preg_match('/\d+$/', $page_number, $page_number_match)) { $page_number = $page_number_match[0]; } else { $page_number = 1; } $cache_filename = "international-class-code/code$code/page$page_number.cache"; $cached_page = get_cached_page($cache_filename); if($cached_page) { echo $cached_page; return; } $search = new DetailedTrademarkOpenSearch(false); $search->set_page_number($page_number); $search->set_return_size(CloudSearch::DEFAULT_RETURN_SIZE); // Calculate the from parameter for pagination $from = ($page_number - 1) * CloudSearch::DEFAULT_RETURN_SIZE; // Build the OpenSearch query $query = [ "bool" => [ "must" => [ [ "script" => [ "script" => [ "source" => "(doc['visibility'].size() > 0 && doc['visibility'].value == 1)" ] ] ], [ "term" => [ "type" => "trademark_case" ] ], [ "terms" => [ "international_class_codes" => [$code, '0'.$code, '00'.$code] ] ] ] ] ]; $search->set_opensearch_query($query); $sort = [ [ "filing_date" => [ "order" => "desc" ] ] ]; $search->set_opensearch_sort($sort); $search->set_returned_fields([ 'word_mark','serial_number','text_relevance','snippet_data','statement_goods_and_services' ]); $search_result = $search->do_search(); $model = new SearchResultPageModel(); $model->set_page_number($page_number); $model->set_results_per_page(CloudSearch::DEFAULT_RETURN_SIZE); $model->set_rendereable_search_results(get_rendereable_search_results($search_result)); if ($search_result) { $model->set_total_search_results($search_result->get_hits_found_count()); } $model->set_pagination_links_template('/international-class-code/' . $code . '/page%PAGE%'); $renderer = new BrowsePageRenderer(); $renderer->set_browse_field_value($code); $renderer->set_search($search); $renderer->set_model($model); $renderer->set_page_type(BrowsePageRenderer::PAGE_TYPE_INTERNATIONAL_CODE); ob_start(); $renderer->render(); $page_content = ob_get_contents(); ob_end_clean(); store_cached_file($cache_filename, $page_content); echo $page_content; } function store_cached_file($filename, $content) { $filepath = CACHE_PATH . '/' . $filename; $folder_path = dirname($filepath); if(!is_dir($folder_path)) mkdir($folder_path, 0777, TRUE); file_put_contents($filepath, $content); } function get_cached_page($filename) { $filepath = CACHE_PATH . '/' . $filename; if(is_file($filepath)) { $time_modified = filemtime($filepath); $seconds_elapsed = time() - $time_modified; if($seconds_elapsed > 86400) { return FALSE; } else { return file_get_contents($filepath); } } else { return NULL; } } function get_rendereable_search_results(SearchResult $result = null) { $rendereable_search_results = array(); $snippet_generator = new TrademarkSearchSnippetGenerator(); if (!$result) { return []; } if ($result->error_exists()) { return []; } foreach($result->get_hits() as $hit) { $rendereable_search_results[] = $snippet_generator->convert_cloudsearch_hit_to_snippet($hit); } return $rendereable_search_results; }