function api_findArticles_invoke($params) { $search = $params['search']; if (!$search) { api_error("required parameter 'search' is missing"); return; } $start = (int) $params['offset']; $num = (int) $params['limit']; if (!$num) { $num = 100; } if (!$start) { $start = 0; } try { $xap = new XapSearch(); $xap->set_query($search); $results = $xap->run($start, $num, 'date'); // foreach( $results as &$a ) { // // convert datetime objects to strings // $a['pubdate'] = $a['pubdate']->format('c'); // } $output = array('results' => $results); api_output($output); } catch (Exception $e) { api_error($e->getMessage()); } }
function perform() { $start = $this->page * $this->per_page; $results = array(); try { # $journo_id = $journo ? $journo['id'] : null; $journo_id = null; $search = new XapSearch(); $search->set_query($this->q, $journo_id); $results = $search->run($start, $this->per_page, $this->sort_order); } catch (Exception $e) { print $e->getMessage() . "\n"; } $total = $search->total_results; foreach ($results as &$art) { article_augment($art); } unset($art); return new ArticleSearchResults($results, $total, $this->page_var, $this->per_page); }
function perform($params) { $from = date_create($params['from_date'])->format('Ymd'); $to = date_create($params['to_date'])->format('Ymd'); $range = " {$from}..{$to}"; $pubset = " pubset:national_uk"; if ($params['q']) { $q = '(' . $params['q'] . ')' . $range . " pubset:uk_national"; $xap = new XapSearch(); $xap->set_query($q); $rows = $xap->run(0, 999999, 'date'); /* collect journos */ $journos = array(); foreach ($rows as $r) { foreach ($r['journos'] as $j) { $journo_id = $j['id']; if (array_key_exists($journo_id, $journos)) { $journos[$journo_id]['articles'] += 1; $wc = db_getOne("SELECT wordcount FROM article WHERE id=?", $r['id']); $journos[$journo_id]['wordcount'] += $wc; } else { $j['articles'] = 1; $wc = db_getOne("SELECT wordcount FROM article WHERE id=?", $r['id']); $j['wordcount'] = $wc; $journos[$journo_id] = $j; } } } /* format */ $results = array(); foreach ($journos as $j) { $search_url = "/search?type=article&by=" . $j['ref'] . "&q=" . urlencode($q); $j['extralinks'] = array(array('href' => $search_url, 'text' => 'show articles')); $results[] = array('journo' => $j, 'articles' => $j['articles'], 'wordcount' => $j['wordcount']); } if ($params['orderby'] == 'wordcount') { uasort($results, 'cmp_word_count'); } else { uasort($results, 'cmp_article_count'); } return $results; } }