cmis_query.module in CMIS API 6.3
Same filename and directory in other branches
Search functions
File
cmis_query/cmis_query.moduleView source
<?php
/**
* @file
* Search functions
*/
/**
* Implementation of hook_menu() for CMIS search module.
*/
function cmis_query_menu() {
$items = array();
$items['cmis/query'] = array(
'type' => MENU_NORMAL_ITEM,
'title' => t('CMIS Query'),
'page callback' => 'cmis_query_view',
'access arguments' => array(
'access cmis',
),
);
return $items;
}
/**
* Implementation of hook_theme()
*/
function cmis_query_theme() {
return array(
'cmis_query_results' => array(
'arguments' => array(
'rows' => NULL,
),
),
);
}
/**
* Implementation of hook_view()
*
* @param $query
* @param $format
* @param $p
*/
function cmis_query_view($query = NULL, $format = 'html', $p = 1) {
module_load_include('api.inc', 'cmis');
$query = urldecode($query);
if ($query) {
try {
$repository = cmisapi_getRepositoryInfo();
$query_result = cmisapi_query($repository->repositoryId, $query);
} catch (CMISException $e) {
cmis_error_handler('cmis_query', $e);
$contents = t('Error');
}
}
switch ($format) {
case 'json':
$result = array();
if ($query_result) {
// strip links property
foreach ($query_result->objectList as $cmis_object) {
if (isset($cmis_object->links)) {
unset($cmis_object->links);
}
$result[] = $cmis_object;
}
}
$contents = NULL;
drupal_json($result);
break;
default:
$contents = drupal_get_form('cmis_query_form', NULL);
if ($query_result) {
$contents .= theme('cmis_query_results', $query_result->objectList);
}
}
return $contents;
}
/**
* Render form for searching CMIS respository.
*/
function cmis_query_form(&$form_state) {
$cmis_query = array(
'#type' => 'fieldset',
'#title' => t('Search the repository using CMIS SQL 1.0 queries.'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$cmis_query['cmis_query'] = array(
'#type' => 'textarea',
'#title' => t('Query'),
'#size' => 50,
'#default_value' => urldecode(arg(2)),
);
$cmis_query['cmis_query_submit'] = array(
'#type' => 'submit',
'#value' => t('Run'),
);
$form['statement'] = $cmis_query;
return $form;
}
/**
* Form submit for cmis_query_form - redirects to put query in url so we can use it on the results page
*
*/
function cmis_query_form_submit($form, &$form_state) {
if ($form_state['values']['cmis_query']) {
$form_state['redirect'] = 'cmis/query/' . urlencode(urlencode(trim($form_state['values']['cmis_query'])));
}
else {
$form_state['redirect'] = 'cmis/query';
form_set_error('cmis_query_form', 'Please enter a query');
}
}
/**
* Theme function for CMIS query search results
*
*/
function theme_cmis_query_results($rows) {
return theme('cmis_browser_browse_children', array(
'children' => $rows,
));
}
Functions
Name | Description |
---|---|
cmis_query_form | Render form for searching CMIS respository. |
cmis_query_form_submit | Form submit for cmis_query_form - redirects to put query in url so we can use it on the results page |
cmis_query_menu | Implementation of hook_menu() for CMIS search module. |
cmis_query_theme | Implementation of hook_theme() |
cmis_query_view | Implementation of hook_view() |
theme_cmis_query_results | Theme function for CMIS query search results |