Commit 9dbb7b14b9f3c2c74dce3887446ff1e750dd7cee
1 parent
1d0288e1
WSA-65
"Remove php5 specific modifiers on functions so that web services works on both 3.4.x and 3.5.x" Updated. The webservice must not have any try/catch handling as this does not parse at all in php4 Committed By: Conrad Vermeulen Reviewed By: Martin Kirsten git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7691 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
2 changed files
with
70 additions
and
55 deletions
ktwebservice/webservice.php
| ... | ... | @@ -3953,65 +3953,34 @@ class KTWebService |
| 3953 | 3953 | return new SOAP_Value('return',"{urn:$this->namespace}kt_search_response", $kt); |
| 3954 | 3954 | } |
| 3955 | 3955 | $response=array( |
| 3956 | - 'status_code'=>KTWS_ERR_INVALID_DOCUMENT, | |
| 3956 | + 'status_code'=>KTWS_ERR_PROBLEM, | |
| 3957 | 3957 | 'message'=>'', |
| 3958 | 3958 | 'hits'=>array() |
| 3959 | 3959 | ); |
| 3960 | 3960 | |
| 3961 | - $noText = (stripos($options,'notext') !== false); | |
| 3962 | - $results = array(); | |
| 3963 | - | |
| 3964 | - try | |
| 3961 | + if (!defined('HAS_SEARCH_FUNCTIONALITY')) | |
| 3965 | 3962 | { |
| 3966 | - $expr = parseExpression($query); | |
| 3967 | - | |
| 3968 | - $rs = $expr->evaluate(); | |
| 3969 | - usort($rs, 'rank_compare'); | |
| 3970 | - | |
| 3971 | - $results = array(); | |
| 3972 | - foreach($rs as $hit) | |
| 3973 | - { | |
| 3974 | - $item = array( | |
| 3975 | - 'document_id' => (int) $hit->DocumentID, | |
| 3976 | - 'title' => (string) $hit->Title, | |
| 3977 | - 'relevance' => (float) $hit->Rank, | |
| 3978 | - 'text' => (string) $noText?'':$hit->Text, | |
| 3979 | - 'filesize' => (int) $hit->Filesize, | |
| 3980 | - 'fullpath' => (string) $hit->FullPath, | |
| 3981 | - 'version' => (string) $hit->Version, | |
| 3982 | - 'filename' => (string) $hit->Filename, | |
| 3983 | - 'checked_out_by' => (string) $hit->CheckedOutUser, | |
| 3984 | - 'checked_out_date' => (string) $hit->DateCheckedOut, | |
| 3985 | - 'is_available' => (bool) $hit->IsAvailable, | |
| 3986 | - 'workflow' => (string) $hit->Workflow, | |
| 3987 | - 'workflow_state' => (string) $hit->WorkflowState, | |
| 3988 | - 'folder_id' => (int) $hit->FolderId, | |
| 3989 | - 'mime_type' => (string) $hit->MimeType, | |
| 3990 | - 'modified_by' => (string) $hit->ModifiedBy, | |
| 3991 | - 'modified_date' => (string) $hit->DateModified, | |
| 3992 | - 'created_by' => (string) $hit->CreatedBy, | |
| 3993 | - 'created_date' => (string) $hit->DateCreated, | |
| 3994 | - 'owner' => (string) $hit->Owner, | |
| 3995 | - 'is_immutable'=> (bool) $hit->Immutable, | |
| 3996 | - 'status' => (string) $hit->Status | |
| 3997 | - ); | |
| 3998 | - | |
| 3999 | - $item = new SOAP_Value('item',"{urn:$this->namespace}kt_search_result_item", $item); | |
| 4000 | - $results[] = $item; | |
| 4001 | - | |
| 4002 | - } | |
| 3963 | + $response['message'] = _kt('Search has not been implemented for this version of KnowledgeTree'); | |
| 3964 | + return new SOAP_Value('return',"{urn:$this->namespace}kt_search_response", $response); | |
| 3965 | + } | |
| 4003 | 3966 | |
| 4004 | - $response['message'] = ''; | |
| 3967 | + $results = processSearchExpression($query); | |
| 3968 | + if (PEAR::isError($results)) | |
| 3969 | + { | |
| 3970 | + $response['message'] = _kt('Could not process query.') . $results->getMessage(); | |
| 3971 | + $results = array(); | |
| 3972 | + } | |
| 3973 | + else | |
| 3974 | + { | |
| 3975 | + foreach($results as $key=>$item) | |
| 3976 | + { | |
| 3977 | + $results[$key] = new SOAP_Value('item',"{urn:$this->namespace}kt_search_result_item", $item); | |
| 3978 | + } | |
| 3979 | + $response['message'] = ''; | |
| 4005 | 3980 | $response['status_code'] = KTWS_SUCCESS; |
| 4006 | - } | |
| 4007 | - catch(Exception $e) | |
| 4008 | - { | |
| 4009 | - $this->debug("search - exception " . $e->getMessage(), $session_id); | |
| 4010 | 3981 | |
| 4011 | - $results = array(); | |
| 4012 | - $response['message'] = _kt('Could not process query.') . $e->getMessage(); | |
| 4013 | - } | |
| 4014 | - $response['hits'] = new SOAP_Value('hits',"{urn:$this->namespace}kt_search_results", $results); | |
| 3982 | + } | |
| 3983 | + $response['hits'] = new SOAP_Value('hits',"{urn:$this->namespace}kt_search_results", $results); | |
| 4015 | 3984 | |
| 4016 | 3985 | return new SOAP_Value('return',"{urn:$this->namespace}kt_search_response", $response); |
| 4017 | 3986 | } | ... | ... |
search2/search/search.inc.php
| ... | ... | @@ -263,14 +263,14 @@ class SearchHelper |
| 263 | 263 | |
| 264 | 264 | public static function getSavedSearches($userID) |
| 265 | 265 | { |
| 266 | - | |
| 266 | + | |
| 267 | 267 | // need to test for broken db configuration so that the queries dont fail |
| 268 | 268 | // and so that we can be redirected to the db error page |
| 269 | 269 | // TODO: maybe best to have a special db error page rather than the default template when logged in |
| 270 | - | |
| 270 | + | |
| 271 | 271 | global $default; |
| 272 | 272 | if (is_null($default->_db) || PEAR::isError($default->_db)) return array(); |
| 273 | - | |
| 273 | + | |
| 274 | 274 | $sql = "SELECT id, name FROM search_saved WHERE type='S'"; |
| 275 | 275 | |
| 276 | 276 | // if we are not the system admin, then we get only ours or shared searches |
| ... | ... | @@ -540,6 +540,52 @@ function parseExpression($expr_str) |
| 540 | 540 | return $parser->getExprResult(); |
| 541 | 541 | } |
| 542 | 542 | |
| 543 | - | |
| 543 | +function processSearchExpression($query) | |
| 544 | +{ | |
| 545 | + try | |
| 546 | + { | |
| 547 | + $expr = parseExpression($query); | |
| 548 | + | |
| 549 | + $rs = $expr->evaluate(); | |
| 550 | + usort($rs, 'rank_compare'); | |
| 551 | + | |
| 552 | + $results = array(); | |
| 553 | + foreach($rs as $hit) | |
| 554 | + { | |
| 555 | + $item = array( | |
| 556 | + 'document_id' => (int) $hit->DocumentID, | |
| 557 | + 'title' => (string) $hit->Title, | |
| 558 | + 'relevance' => (float) $hit->Rank, | |
| 559 | + 'text' => (string) $noText?'':$hit->Text, | |
| 560 | + 'filesize' => (int) $hit->Filesize, | |
| 561 | + 'fullpath' => (string) $hit->FullPath, | |
| 562 | + 'version' => (string) $hit->Version, | |
| 563 | + 'filename' => (string) $hit->Filename, | |
| 564 | + 'checked_out_by' => (string) $hit->CheckedOutUser, | |
| 565 | + 'checked_out_date' => (string) $hit->DateCheckedOut, | |
| 566 | + 'is_available' => (bool) $hit->IsAvailable, | |
| 567 | + 'workflow' => (string) $hit->Workflow, | |
| 568 | + 'workflow_state' => (string) $hit->WorkflowState, | |
| 569 | + 'folder_id' => (int) $hit->FolderId, | |
| 570 | + 'mime_type' => (string) $hit->MimeType, | |
| 571 | + 'modified_by' => (string) $hit->ModifiedBy, | |
| 572 | + 'modified_date' => (string) $hit->DateModified, | |
| 573 | + 'created_by' => (string) $hit->CreatedBy, | |
| 574 | + 'created_date' => (string) $hit->DateCreated, | |
| 575 | + 'owner' => (string) $hit->Owner, | |
| 576 | + 'is_immutable'=> (bool) $hit->Immutable, | |
| 577 | + 'status' => (string) $hit->Status | |
| 578 | + ); | |
| 579 | + | |
| 580 | + $results[] = $item; | |
| 581 | + | |
| 582 | + } | |
| 583 | + return $results; | |
| 584 | + } | |
| 585 | + catch(Exception $e) | |
| 586 | + { | |
| 587 | + return new PEAR_Error(_kt('Could not process query.') . $e->getMessage()); | |
| 588 | + } | |
| 589 | +} | |
| 544 | 590 | |
| 545 | 591 | ?> |
| 546 | 592 | \ No newline at end of file | ... | ... |