MENU_NORMAL_ITEM, 'title' => t('CMIS Query'), 'page callback' => 'drupal_get_form', 'page arguments' => array ('cmis_query_form'), 'access callback' => 'user_access', 'access arguments' => array ('access cmis'), ); return $items; } /** * Render form for searching CMIS respository. */ function cmis_query_form(& $form_state) { if (isset ($form_state['storage']['query_result'])) { $form['#suffix'] = $form_state['storage']['query_result']; } $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); $cmis_query['cmis_query_submit'] = array ( '#type' => 'submit', '#value' => t('Run'), '#submit' => array ('cmis_query_form_submit'), ); $form['statement'] = $cmis_query; return $form; } /** * Form submit for cmis_query_form */ function cmis_query_form_submit($form, & $form_state) { $form_state['storage']['query_result'] = cmis_query_cmis_query($form_state['values']['cmis_query']); } /** * Executes CMIS search and process search return. * $query CMIS SQL query. */ function cmis_query_cmis_query($query, $p = 1) { module_load_include('api.inc', 'cmis'); // Set default page size $default_page_size = 10; $skip_count = ($p -1) * $default_page_size; $repository = cmisapi_getRepositoryInfo(); $query_result = cmisapi_query($repository->repositoryId, $query); if (false !== $query_result) { // Process the returned XML $contents = "
Query results
"; $header = array (t('name'), t('type'), t('size'), t('author'), t('last modified')); $folder_img = theme('image', drupal_get_path('module', 'cmis_browser') . '/images/space.gif'); $file_img = theme('image', drupal_get_path('module', 'cmis_browser') . '/images/file.png'); for ($i = $skip_count; $i < sizeof($query_result); $i++) { $entry = $query_result[$i]; if (empty ($entry->title)) continue; $summary = $entry->summary; $type = $entry->type; $updated = $entry->updated; if ($updated) $updatedStr = date_format($updated, 'n/j/Y g:i A'); if ($type == 'folder') { $folderlink = l($entry->title, 'cmis/browser' . $path . '/' . $entry->title); $rows[] = array ($folder_img . ' ' . $folderlink, 'Space', '', $entry->author, $updatedStr); } else { $size = $entry->size; $docType = $entry->contentMimeType; $icon = $entry->icon; $documentLink = l($entry->title, 'cmis/get', array ('query' => array ('id' => $entry->id))); $rows[] = array ($file_img . $documentLink, $docType, number_format($size / 1000, 2, '.', ',') . ' K', $entry->author, $updatedStr); } } $contents .= theme('table', $header, $rows); // Add pagination bar /* pagination disabled temp $base_search_url = 'cmis/query/?query='.$query.'&p='; $next_p = $p+1; $prev_p = $p-1; $contents .= '