protected function readDTO($dto)
    {
        if (!$dto->hasResults()) {
            return $this->noresultsResponse();
        }
        $handler = $this->RequestContext->getControls()->getControl('view_handler');
        switch ($handler) {
            case 'xml':
                $this->Response->addHeader('Content-Type', 'application/xml; charset="' . $this->charset . '"');
                $s = '<?xml version="1.0"?>
<NodeFindAll>
<TotalRecords>' . $dto->getTotalRecords() . '</TotalRecords>
<Nodes>';
                foreach ($dto->getResults() as $result) {
                    $s .= $this->xmlify(ArrayUtils::flattenObjectsUsingKeys($this->NodeMapper->populateNodeCheaters($result)->toArray(), $this->getEncodeKeys()), 'Node');
                }
                $s .= '    </Nodes>
</NodeFindAll>';
                return $s;
            case 'json':
            default:
                $this->Response->addHeader('Content-Type', 'application/json; charset="' . $this->charset . '"');
                $s = array('TotalRecords' => $dto->getTotalRecords(), 'Nodes' => array());
                foreach ($dto->getResults() as $result) {
                    $s['Nodes'][] = ArrayUtils::flattenObjectsUsingKeys($this->NodeMapper->populateNodeCheaters($result)->toArray(), $this->getEncodeKeys());
                }
                return JSONUtils::encode($s);
        }
    }
예제 #2
0
 public function xmlEncode()
 {
     $keys = $this->getEncodeKeys();
     return $this->xmlify(ArrayUtils::flattenObjectsUsingKeys($this->locals, $keys), $this->getParameter('rootNodeName'));
 }