new method doSearchByAttr()

it searches objects by a given attribute and its value
This commit is contained in:
Uwe Steinmann 2014-06-30 07:42:16 +02:00
parent b1d8a77b2a
commit 8740020409

View File

@ -678,6 +678,66 @@ function doSearch() { /* {{{ */
}
} /* }}} */
/**
* Search for documents/folders with a given attribute=value
*
*/
function doSearchByAttr() { /* {{{ */
global $app, $dms, $userobj;
$attrname = $app->request()->get('name');
$query = $app->request()->get('value');
if(!$limit = $app->request()->get('limit'))
$limit = 50;
$attrdef = $dms->getAttributeDefinitionByName($attrname);
$entries = array();
if($attrdef) {
$resArr = $attrdef->getObjects($query, $limit);
if($resArr['folders']) {
foreach ($resArr['folders'] as $entry) {
if ($entry->getAccessMode($userobj) >= M_READ) {
$entries[] = $entry;
}
}
}
if($resArr['docs']) {
foreach ($resArr['docs'] as $entry) {
if ($entry->getAccessMode($userobj) >= M_READ) {
$entries[] = $entry;
}
}
}
}
$recs = array();
foreach ($entries as $entry) {
if(get_class($entry) == 'SeedDMS_Core_Document') {
$document = $entry;
$lc = $document->getLatestContent();
$recs[] = array(
'type'=>'document',
'id'=>$document->getId(),
'date'=>$document->getDate(),
'name'=>$document->getName(),
'mimetype'=>$lc->getMimeType(),
'version'=>$lc->getVersion(),
'comment'=>$document->getComment(),
'keywords'=>$document->getKeywords(),
);
} elseif(get_class($entry) == 'SeedDMS_Core_Folder') {
$folder = $entry;
$recs[] = array(
'type'=>'folder',
'id'=>$folder->getId(),
'name'=>$folder->getName(),
'comment'=>$folder->getComment(),
'date'=>$folder->getDate(),
);
}
}
$app->response()->header('Content-Type', 'application/json');
echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs));
} /* }}} */
//$app = new Slim(array('mode'=>'development', '_session.handler'=>null));
$app = new \Slim\Slim(array('mode'=>'development', '_session.handler'=>null));
@ -704,6 +764,7 @@ $app->post('/login', 'doLogin');
$app->get('/logout', 'doLogout');
$app->get('/account', 'getAccount');
$app->get('/search', 'doSearch');
$app->get('/searchbyattr', 'doSearchByAttr');
$app->get('/folder/:id', 'getFolder');
$app->post('/folder/:id/move', 'moveFolder');
$app->delete('/folder/:id', 'deleteFolder');