Esempio n. 1
0
 function ApiMethod()
 {
     $tp = $this->task_parts;
     if (!isset($_GET['q'])) {
         return ["Search API Options (GET parameters)" => ['q' => "(String) Search term [Required]", "l" => "(Int) Limit results", "o" => "(Int) Offset results", "d" => "(Array[String]) Collections to search", "c" => "(String) Restrict search results to those matching one category"], "Define which collections are searchable in config.php"];
     }
     $q = $_GET['q'];
     $data = ["generated" => time(), "search_term" => $q];
     $options = ["sort" => ["date" => -1]];
     if (isset($_GET['l'])) {
         $limit = (int) $_GET['l'];
         $options['limit'] = $limit;
         $data['limit'] = $limit;
     }
     if (isset($_GET['o'])) {
         $offset = (int) $_GET['o'];
         $options['skip'] = $offset;
         $data['offset'] = $offset;
     }
     $regex = new MongoDB\BSON\Regex("^{$q}", 'i');
     //ob_end_clean();
     //var_dump($regex);
     $filter = ['$or' => [["title" => ['$regex' => $regex]], ["tags" => ['$regex' => $regex]], ["description" => ['$regex' => $regex]], ["content" => ['$regex' => $regex]]]];
     //var_dump($filter);
     //return $filter;
     if (isset($_GET['c'])) {
         $category = $_GET['c'];
         $c_imp = new category_implementation();
         $all_cats = $c_imp->ReadMany();
         //Translate title to ID
         foreach ($all_cats as $cat) {
             if (strtolower($category) == strtolower($cat->title)) {
                 $category = $cat->_id;
             }
         }
         $filter = ['$and' => [$filter, ['category' => $category]]];
         $data['category'] = $category;
     }
     //return $filter;
     $results = [];
     $num_results = 0;
     foreach ($this->searchable as $col_name) {
         $v_cname = View::loadViewByEndpoint($col_name);
         if (class_exists($v_cname)) {
             $i_imp = new $v_cname();
             $col_results = $i_imp->implementation->ReadMany($filter, $options);
             $num_results += count($col_results);
             $results[$col_name] = $col_results;
             try {
                 $col_controller = Controller::loadControllerByName($col_name);
                 $data['typenames'][$col_name] = $col_controller::$title;
             } catch (Exception $e) {
                 $data['typenames'][$col_name] = $col_name;
             }
         }
     }
     $data['number_of_results'] = $num_results;
     $data['results'] = $results;
     return $data;
 }
Esempio n. 2
0
<?php

/**
 * Generate HTML content by extending the View::GenerateMethod class
 */
require 'init.php';
$task = $_GET['a'];
$task_parts = explode('/', $task);
$api_controller_name = View::loadViewByEndpoint($task_parts[0]);
if (class_exists($api_controller_name)) {
    $api_controller = new $api_controller_name($task);
    $api_controller->GenerateMethod();
} else {
    header('document-type:application/json');
    echo json_encode(["ResponseStatus" => "Error", "ErrorName" => "InvalidTask"]);
}