Exemplo n.º 1
0
 function getResults($query)
 {
     $this->status_code = 1;
     $response['results'] = array();
     $expr = parseExpression($query);
     $results = $expr->evaluate();
     //echo "<pre>";print_r($rs);echo "</pre>";die;
     if (PEAR::isError($results)) {
         return false;
     }
     if (empty($results)) {
         $this->message = _kt('Your search did not return any results');
     }
     $this->status_code = 0;
     $response['results'] = $results;
     return $response;
 }
Exemplo n.º 2
0
    print _kt('Command line search') . "...\n";
}
if (empty($username)) {
    die(_kt("Please specify a username!"));
}
if (empty($expr)) {
    die(_kt("Please specify search criteria!"));
}
$ktapi = new KTAPI();
$result = $ktapi->start_session($username, $password);
if (PEAR::isError($result)) {
    print _kt("Cannot locate user:"******" {$username}\n";
    exit;
}
try {
    $expr = parseExpression($expr);
    $result = $expr->evaluate();
    switch ($output) {
        case 'simple':
            foreach ($result['docs'] as $item) {
                print 'Document ID: ' . $item->DocumentID . ' Title:' . $item->Title . ' Relevance:' . $item->Rank . "\n";
            }
            break;
        case 'csv':
            print "DocumentId,Title,Relevance\n";
            foreach ($result['docs'] as $item) {
                print $item->DocumentID . ',' . $item->Title . ',' . $item->Rank . "\n";
            }
            break;
        case 'xml':
            print "<result>\n";
Exemplo n.º 3
0
 public static function parseQuery($txtQuery, $exitOnSuccess = true)
 {
     try {
         $expr = parseExpression($txtQuery);
         if ($exitOnSuccess) {
             AjaxSearchHelper::createResponse(AjaxSearchHelper::STATUS_SUCCESS);
         }
         return $expr;
     } catch (Exception $e) {
         AjaxSearchHelper::createResponse(AjaxSearchHelper::STATUS_PARSE_PROBLEM, $e->getMessage());
     }
 }
Exemplo n.º 4
0
 /**
  * This proceses any given search expression.
  * On success, it redirects to the searchResults page.
  *
  * @param string $query
  */
 private function processQuery($query)
 {
     try {
         $expr = parseExpression($query);
         // bit of a hack
         // check for the isDeleted and isArchived keywords affecting status in the query
         if (strpos($query, 'IsDeleted') !== false || strpos($query, 'IsArchived') !== false) {
             $expr->setIncludeStatus(false);
         }
         $results = $expr->evaluate();
         $results = resolveSearchShortcuts($results);
         usort($results['docs'], 'rank_compare');
         $_SESSION['search2_results'] = serialize($results);
         $_SESSION['search2_query'] = $query;
         $_SESSION['search2_sort'] = 'rank';
         $this->redirectTo('searchResults');
     } catch (Exception $e) {
         $this->errorRedirectTo('guiBuilder', _kt('Could not process query.') . $e->getMessage());
     }
 }
Exemplo n.º 5
0
function processSearchExpression($query)
{
    try {
        $expr = parseExpression($query);
        $rs = $expr->evaluate(ExprContext::DOCUMENT);
        $rs = $rs['docs'];
        if (empty($rs)) {
            return array();
        }
        usort($rs, 'rank_compare');
        $results = array();
        foreach ($rs as $hit) {
            $item = array('document_id' => (int) $hit->DocumentID, 'custom_document_no' => 'n/a', 'oem_document_no' => (string) $hit->OemDocumentNo, 'relevance' => (double) $hit->Rank, 'text' => (string) $noText ? '' : urlencode($hit->Text), 'title' => (string) $hit->Title, 'document_type' => $hit->DocumentType, 'fullpath' => (string) $hit->FullPath, 'filename' => (string) $hit->Filename, 'filesize' => (int) $hit->Filesize, 'folder_id' => (int) $hit->FolderId, 'created_by' => (string) $hit->CreatedBy, 'created_date' => (string) $hit->DateCreated, 'modified_by' => (string) $hit->ModifiedBy, 'modified_date' => (string) $hit->DateModified, 'checked_out_by' => (string) $hit->CheckedOutUser, 'checked_out_date' => (string) $hit->DateCheckedOut, 'owned_by' => (string) $hit->Owner, 'version' => (double) $hit->Version, 'is_immutable' => (bool) $hit->Immutable, 'permissions' => $hit->Permissions, 'workflow' => (string) $hit->WorkflowOnly, 'workflow_state' => (string) $hit->WorkflowStateOnly, 'mime_type' => (string) $hit->MimeType, 'mime_icon_path' => (string) $hit->MimeIconPath, 'mime_display' => (string) $hit->MimeDisplay, 'storage_path' => (string) $hit->StoragePath, 'status' => (string) $hit->Status, 'is_available' => (bool) $hit->IsAvailable);
            $results[] = $item;
        }
        return $results;
    } catch (Exception $e) {
        return new PEAR_Error(_kt('Could not process query.') . $e->getMessage());
    }
}
Exemplo n.º 6
0
function parseNamedExpression($ast, &$list)
{
    $name = ast_get($ast, NodeKey::NAME);
    $value = parseExpression(ast_get($ast, NodeKey::VALUE));
    if (is_numeric($name)) {
        $name = '_expr' . $name . '_';
    }
    $list[$name] = $value;
}
Exemplo n.º 7
0
 function parseSelectionWP($ast, $name, $header)
 {
     // Push LibraryManager so we can undo this waypoint's definitions.
     ob_start();
     LibraryManager::Push();
     $res = new GenerationInfo();
     /***************   PROCESS AST   ***************/
     $attMap = parseAttributeMap(ast_get($ast, NodeKey::ATT_MAP), $res);
     $qFilters = ast_get($ast, NodeKey::FILTERS);
     $qSynth = ast_get($ast, NodeKey::SYNTH);
     $queries = [];
     foreach ($qFilters as $query => $qInfo) {
         $filterAST = ast_get($qInfo, NodeKey::ARGS);
         $gfAST = ast_get($qInfo, NodeKey::TYPE);
         if ($gfAST !== null) {
             $filter = parseNamedExpressionList($filterAST);
         } else {
             $filter = parseExpressionList($filterAST);
         }
         $gf = null;
         if ($gfAST !== null) {
             $gf = parseGF($gfAST);
             $gf = $gf->apply($filter);
         }
         if (ast_has($qInfo, NodeKey::CARGS)) {
             $cargs = parseLiteralList(ast_get($qInfo, NodeKey::CARGS));
         } else {
             $cargs = [];
         }
         $sargs = ast_has($qInfo, NodeKey::SARGS) ? parseStateList(ast_get($qInfo, NodeKey::SARGS), $query) : [];
         $synths = array();
         $synthAST = ast_get($ast, NodeKey::SYNTH);
         if (ast_has($synthAST, $query)) {
             $curSynths = ast_get($synthAST, $query);
             foreach ($curSynths as $curSynthAST) {
                 $expr = parseExpression(ast_get($curSynthAST, NodeKey::EXPR));
                 $att = parseAttribute(ast_get($curSynthAST, NodeKey::ATT));
                 if ($att->type() == null) {
                     AttributeManager::setAttributeType($att->name(), $expr->type());
                     $att = AttributeManager::lookupAttribute($att->name());
                 } else {
                     if (canConvert($expr, $att->type())) {
                         $expr = convertExpression($expr, $att->type());
                     } else {
                         grokit_error('Unable to convert expression for synthesized attribute ' . $att->name() . ' from type ' . $expr->type() . ' to type ' . $att->type() . ' ' . $expr->source());
                     }
                 }
                 $synths[$att->name()] = $expr;
             }
         }
         $info = ['filters' => $filter, 'synths' => $synths, 'gf' => $gf, 'cargs' => $cargs, 'states' => $sargs];
         $queries[$query] = $info;
         $res->addJob($query, $name);
         $res->absorbInfoList($filter);
         $res->absorbInfoList($synths);
         $res->absorbInfoList($cargs);
         $res->absorbStateList($sargs);
         if ($gf !== null) {
             $res->absorbInfo($gf);
         }
     }
     /*************** END PROCESS AST ***************/
     // Get this waypoint's headers
     $myHeaders = $header . PHP_EOL . ob_get_clean();
     // Only one file at the moment
     $filename = $name . '.cc';
     $res->addFile($filename, $name);
     _startFile($filename);
     SelectionGenerate($name, $queries, $attMap);
     _endFile($filename, $myHeaders);
     // Pop LibraryManager again to get rid of this waypoint's declarations
     LibraryManager::Pop();
     return $res;
 }