. * * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * * @copyright 2008-2009, KnowledgeTree Inc. * @license GNU General Public License version 3 * @author KnowledgeTree Team * @package KTCMIS * @version Version 0.9 */ require_once(realpath(dirname(__FILE__) . '/ktService.inc.php')); require_once(CMIS_DIR . '/services/CMISRepositoryService.inc.php'); /** * Handles low level repository information queries */ class KTRepositoryService extends KTCMISBase { protected $RepositoryService; public function __construct() { // we don't need to call the parent constructor here as there is no ktapi involved // instantiate underlying CMIS service $this->RepositoryService = new CMISRepositoryService(); } /** * Fetch a list of all available repositories * * NOTE Since we only have one repository at the moment, this is expected to only return one result * * @return repositoryList[] */ public function getRepositories() { $repositories = $this->RepositoryService->getRepositories(); if (PEAR::isError($repositories)) { return array( "status_code" => 1, "message" => "Failed getting repositories" ); } // extract the required info fields into array format for easy encoding; $count = 0; $repositoryList = array(); foreach ($repositories as $repository) { $repositoryList[$count]['repositoryId'] = $repository->getRepositoryId(); $repositoryList[$count]['repositoryName'] = $repository->getRepositoryName(); $repositoryList[$count]['repositoryURI'] = $repository->getRepositoryURI(); ++$count; } return array( "status_code" => 0, "results" => $repositoryList ); } /** * Fetches information about the selected repository * * @param string $repositoryId */ public function getRepositoryInfo($repositoryId) { $repositoryInfo = $this->RepositoryService->getRepositoryInfo($repositoryId); if (PEAR::isError($repositoryInfo)) { return array( "status_code" => 1, "message" => "Failed getting repository information" ); } // TODO output this manually, the function works but only for some objects so rather avoid it completely? // NOTE the problems appear to be due to recursive objects return array ( "status_code" => 0, "results" => CMISUtil::objectToArray($repositoryInfo) ); } /** * Fetch the list of supported object types for the selected repository * * @param string $repositoryId */ public function getTypes($repositoryId, $typeId = '', $returnPropertyDefinitions = false, $maxItems = 0, $skipCount = 0, &$hasMoreItems = false) { try { $repositoryObjectTypeResult = $this->RepositoryService->getTypes($repositoryId, $typeId, $returnPropertyDefinitions, $maxItems, $skipCount, $hasMoreItems); } catch (Exception $e) { return array( "status_code" => 1, "message" => $e->getMessage() ); } // format as array style output // NOTE only concerned with attributes at this time // TODO add support for properties foreach($repositoryObjectTypeResult as $key => $objectType) { $repositoryObjectTypes[$key] = $objectType['attributes']; // TODO properties // $repositoryObjectTypes[$key]['properties'] = $objectType['properties']; } return array ( "status_code" => 0, "results" => $repositoryObjectTypes ); } /** * Fetch the object type definition for the requested type * * @param string $repositoryId * @param string $typeId */ public function getTypeDefinition($repositoryId, $typeId) { try { $typeDefinitionResult = $this->RepositoryService->getTypeDefinition($repositoryId, $typeId); } catch (Exception $e) { return array( "status_code" => 1, "message" => $e->getMessage() ); } // format as array style output // NOTE only concerned with attributes at this time // TODO add support for properties $typeDefinition = $typeDefinitionResult['attributes']; return array ( "status_code" => 0, "results" => $typeDefinition ); } } ?>