Пример #1
0
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());
    }
}
Пример #2
0
 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);
 }
Пример #3
0
 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;
     }
 }