. * * 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. * Contributor( s): * Mark Holtzhausen * Paul Barrett * */ /** * Includes */ include_once(KT_ATOM_LIB_FOLDER.'KT_atom_serviceDoc.inc.php'); require_once(CMIS_API . '/ktRepositoryService.inc.php'); class KT_cmis_atom_serviceDoc extends KT_atom_serviceDoc { // override and extend as needed public $repositoryInfo = array(); public function __construct($baseURI = NULL) { parent::__construct(); // get repositoryInfo // NOTE currently we only support one repository, which will be the first one found in the repositories.xml config // TODO multiple repositories as individual workspaces $RepositoryService = new KTRepositoryService(); // fetch data for response $repositories = $RepositoryService->getRepositories(); // hack for removing one level of access $repositories = $repositories['results']; // fetch for default first repo; NOTE that this will probably have to change at some point, quick and dirty for now // hack for removing one level of access $repositoryInfo = $RepositoryService->getRepositoryInfo($repositories[0]['repositoryId']); $this->repositoryInfo = $repositoryInfo['results']; } protected function constructServiceDocumentHeaders() { $service = $this->newElement('service'); $service->appendChild($this->newAttr('xmlns', 'http://www.w3.org/2007/app')); $service->appendChild($this->newAttr('xmlns:atom', 'http://www.w3.org/2005/Atom')); $service->appendChild($this->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200908/')); $service->appendChild($this->newAttr('xmlns:cmisra', 'http://docs.oasis-open.org/ns/cmis/restatom/200908/')); $this->service =& $service; $this->DOM->appendChild($this->service); } public function newCollection($url = NULL, $title = NULL, $cmisCollectionType = NULL, $accept = null, &$ws = NULL) { $collection=$this->newElement('collection'); $collection->appendChild($this->newAttr('href', $url)); $collection->appendChild($this->newElement('atom:title', $title)); $collection->appendChild($this->newElement('cmisra:collectionType', $cmisCollectionType)); if (!is_null($accept)) { $collection->appendChild($this->newElement('accept', $accept)); } if(isset($ws))$ws->appendChild($collection); // FIXME? do we need to return the value from the function if $ws is supplied? return $collection; } /** * Creates the specified URI template within the AtomPub response * * @param string $templateType * @param string $workspace * @return string $uriTemplate * * NOTE not adding in all the arguments for optional functionality not supported, e.g. ACL/Policies/Relationships/Renditions; * arguments for functionality which is non-optional (filters/allowableActions) are included but not yet supported * by the API code */ public function uriTemplate($templateType, $workspace) { $content = array('template' => CMIS_APP_BASE_URI . $workspace, 'mediatype' => 'application/atom+xml;type=entry'); switch($templateType) { case 'objectbyid': $content['template'] .= '/objectbyid/{id}/{filter}/{includeAllowableActions}'; break; case 'objectbypath': $content['template'] .= '/objectbypath/{path}/{filter}/{includeAllowableActions}'; break; case 'typebyid': $content['template'] .= '/typebyid/{id}'; break; } $uriTemplate = $this->newElement('cmisra:uritemplate'); $uriTemplate->appendChild($this->newElement('cmisra:template', $content['template'])); $uriTemplate->appendChild($this->newElement('cmisra:type', $content)); $uriTemplate->appendChild($this->newElement('cmisra:mediatype', $content['mediatype'])); return $uriTemplate; } } /** Main Site My Blog Entries Pictures image/png image/jpeg image/gif Sidebar Blog Remaindered Links application/atom+xml;type=entry */ ?>