public function html($mysqli_stmt) { $xml = new XmlWriter(); $xml->openMemory(); $xml->setIndent(true); $xml->setIndentString("\t"); $xml->startElement('table'); $xml->writeAttribute('class', $this->tbl_class); $xml->startElement('thead'); $xml->startElement('tr'); ////////////////////////////////// // Column Headers ///////////////////////////////// $cntcol = count($this->col_classes); $altcol = 0; foreach (array_keys($this->cols) as $th) { $xml->startElement('th'); $xml->writeAttribute('scope', 'col'); if ($this->col_classes[$altcol] != "") { $xml->writeAttribute('class', $this->col_classes[$altcol]); } $altcol = ++$altcol % $cntcol; if (substr($th, 0, 2) == "__") { $xml->text(''); } else { //Sorting $dir = "A"; if (isset($_GET["sn"]) && $_GET["sn"] == $th && $_GET["sd"] == "A") { $dir = "D"; } $xml->startElement('a'); $xml->startAttribute('href'); $xml->writeRaw(quickgrid::get_href(["sn" => $th, "sd" => $dir, "p" => 1])); $xml->endAttribute(); $xml->text($th); $xml->endElement(); //a } $xml->endElement(); //th } $xml->endElement(); //tr $xml->endElement(); //thead $xml->startElement('tfoot'); $xml->startElement('tr'); $xml->startElement('td'); $xml->writeAttribute('colspan', count($this->cols)); ////////////////////////////////// // Pager ///////////////////////////////// $last = ceil($this->row_count / $this->per_page); $length = 8; $lbound = $this->cur_page - $length / 2; $ubound = $this->cur_page + $length / 2; if ($lbound < 1) { $lbound = 1; } if ($ubound > $last) { $ubound = $last; } if ($this->cur_page != 1) { $xml->startElement('a'); $xml->startAttribute('href'); $xml->writeRaw(quickgrid::get_href(["p" => $this->cur_page - 1])); $xml->endAttribute(); $xml->text("<"); $xml->endElement(); //a } for ($i = $lbound; $i <= $ubound; $i++) { if ($i != $this->cur_page) { $xml->startElement('a'); $xml->startAttribute('href'); $xml->writeRaw(quickgrid::get_href(["p" => $i])); $xml->endAttribute(); $xml->text("{$i}"); $xml->endElement(); //a } else { $xml->startElement('span'); $xml->text("{$i}"); $xml->endElement(); //span } } if ($this->cur_page != $last) { $xml->startElement('a'); $xml->startAttribute('href'); $xml->writeRaw(quickgrid::get_href(["p" => $this->cur_page + 1])); $xml->endAttribute(); $xml->text(">"); $xml->endElement(); //a } $xml->endElement(); //td $xml->endElement(); //tr $xml->endElement(); //tfoot $xml->startElement('tbody'); ////////////////////////////////// // Table Data ///////////////////////////////// $cntrow = count($this->row_classes); $altrow = 0; $cntcol = count($this->col_classes); $altcol = 0; $result = $mysqli_stmt->get_result(); while ($row = $result->fetch_assoc()) { $xml->startElement('tr'); if ($this->row_classes[$altrow] != "") { $xml->writeAttribute('class', $this->row_classes[$altrow]); } $altrow = ++$altrow % $cntrow; foreach (array_keys($this->cols) as $th) { $xml->startElement('td'); if ($this->col_classes[$altcol] != "") { $xml->writeAttribute('class', $this->col_classes[$altcol]); } $altcol = ++$altcol % $cntcol; if (isset($this->td_formats[$th]) && is_callable($this->td_formats[$th])) { $tmp = $this->td_formats[$th]; $xml->writeRaw(call_user_func($tmp, $row)); } else { $td = $this->cols[$th]; if (isset($row[$td])) { $xml->text($row[$td]); } else { $xml->text(''); } } $xml->endElement(); //td } $xml->endElement(); //tr } $xml->endElement(); //tbody $xml->endElement(); //table return $xml->outputMemory(); }
/** * Serialize an object with specified root element name. * * @param object $targetObject The target object. * @param string $rootName The name of the root element. * * @return string */ public static function objectSerialize($targetObject, $rootName) { Validate::notNull($targetObject, 'targetObject'); Validate::isString($rootName, 'rootName'); $xmlWriter = new \XmlWriter(); $xmlWriter->openMemory(); $xmlWriter->setIndent(true); $reflectionClass = new \ReflectionClass($targetObject); $methodArray = $reflectionClass->getMethods(); $attributes = self::_getInstanceAttributes($targetObject, $methodArray); $xmlWriter->startElement($rootName); if (!is_null($attributes)) { foreach (array_keys($attributes) as $attributeKey) { $xmlWriter->writeAttribute($attributeKey, $attributes[$attributeKey]); } } foreach ($methodArray as $method) { if (strpos($method->name, 'get') === 0 && $method->isPublic() && $method->name != 'getAttributes') { $variableName = substr($method->name, 3); $variableValue = $method->invoke($targetObject); if (!empty($variableValue)) { if (gettype($variableValue) === 'object') { $xmlWriter->writeRaw(XmlSerializer::objectSerialize($variableValue, $variableName)); } else { $xmlWriter->writeElement($variableName, $variableValue); } } } } $xmlWriter->endElement(); return $xmlWriter->outputMemory(true); }