/** * Turn a record into a string * @param Record $object * @return string */ public function getXML(Transformable $object) { $xml = "\n<record table='{$object->getTableName()}' id='{$object->getId()}'>"; foreach ($object->getAttributes() as $key => $value) { // Need this to make sure the magic getter is called for lazy loading $value = $object->{$key}; $xml .= "\n\t<{$key}>"; if ($value instanceof XML) { $xml .= $value->getXML(); } else { if (is_bool($value)) { $xml .= $value ? "true" : "false"; } else { if (is_array($value)) { $xml .= ArrayUtil::getXML($value); } else { $xml .= htmlspecialchars($value, ENT_COMPAT, "UTF-8", false); } } } $xml .= "</{$key}>"; } $xml .= "\n</record>"; return $xml; }
/** * Get the pagination, in the future it would be nice to have some additional * pagination methods * @param TraversableObject $object * @return string */ private function getPaginationXML(Transformable $object) { $xml = ""; if (ctype_digit("{$object->getResultsPerPage()}")) { $xml .= "<pagination>"; for ($i = 0; $i < $object->getMaxNumResults(); $i += $object->getResultsPerPage()) { $selected = $i == $object->getCurrentResultNumber() ? " selected='true'" : ""; $end = $i + $object->getResultsPerPage() < $object->getMaxNumResults() ? $i + $object->getResultsPerPage() : $object->getMaxNumResults(); $xml .= "\n <page{$selected}>\n <start>{$i}</start>\n <end>{$end}</end>\n </page>"; } $xml .= "</pagination>"; } return $xml; }