/** * Returns ezpRestContentProviderInterface object for given renderer and content * * @static * @param string $renderer * @param ezpContent $content * @return bool|ezpRestContentProviderInterface */ public static function getRenderer($renderer, ezpContent $content, ezpRestMvcController $controller) { // If no content renderer has been given, we fall back to built-in 'xhtml' renderer. // Note: empty string is not a valid input. if (empty($renderer)) { $renderer = self::DEFAULT_RENDERER; } if (!self::$renderer instanceof ezpRestContentProviderInterface) { self::$renderer = self::createRenderer($renderer, $content, $controller); } return self::$renderer; }
/** * Handles content requests per node or object ID * * Requests: * - GET /api/content/node/XXX * - GET /api/content/object/XXX * * Optional HTTP parameters: * - translation=xxx-XX: an optionally forced locale to return * * @return ezpRestMvcResult */ public function doViewContent() { $this->setDefaultResponseGroups(array(self::VIEWCONTENT_RESPONSEGROUP_METADATA)); $isNodeRequested = false; if (isset($this->nodeId)) { $content = ezpContent::fromNodeId($this->nodeId); $isNodeRequested = true; } else { if (isset($this->objectId)) { $content = ezpContent::fromObjectId($this->objectId); } } $result = new ezpRestMvcResult(); // translation parameter if ($this->hasContentVariable('Translation')) { $content->setActiveLanguage($this->getContentVariable('Translation')); } // Handle metadata if ($this->hasResponseGroup(self::VIEWCONTENT_RESPONSEGROUP_METADATA)) { $objectMetadata = ezpRestContentModel::getMetadataByContent($content); if ($isNodeRequested) { $nodeMetadata = ezpRestContentModel::getMetadataByLocation(ezpContentLocation::fetchByNodeId($this->nodeId)); $objectMetadata = array_merge($objectMetadata, $nodeMetadata); } $result->variables['metadata'] = $objectMetadata; } // Handle locations if requested if ($this->hasResponseGroup(self::VIEWCONTENT_RESPONSEGROUP_LOCATIONS)) { $result->variables['locations'] = ezpRestContentModel::getLocationsByContent($content); } // Handle fields content if requested if ($this->hasResponseGroup(self::VIEWCONTENT_RESPONSEGROUP_FIELDS)) { $result->variables['fields'] = ezpRestContentModel::getFieldsByContent($content); } // Add links to fields resources $result->variables['links'] = ezpRestContentModel::getFieldsLinksByContent($content, $this->request); if ($outputFormat = $this->getContentVariable('OutputFormat')) { $renderer = ezpRestContentRenderer::getRenderer($outputFormat, $content, $this); $result->variables['renderedOutput'] = $renderer->render(); } return $result; }