function actionDefault() { echo 'Getting a XML from a STRING<br /><br />'; $xml = new YDXml(); $xml->loadString($this->contents); YDDebugUtil::dump($xml->toString(false), 'YDXml::toString ugly'); YDDebugUtil::dump($xml->toString(true), 'YDXml::toString pretty'); YDDebugUtil::dump($xml->traverse(), 'YDXml::traverse'); YDDebugUtil::dump($xml->toArray(), 'YDXml::toArray'); }
/** * This function will return the feed in the specified format. The following formats are recognized: RSS0.91, * RSS1.0, RSS2.0, ATOM * * @remark * The default format is "RSS2.0". If you specify no argument indicating the requested format, the "RSS2.0" * format will be used. * * @param $format (optional) The format in which the items should be converted. * * @returns String with the data in the requested format. */ function toXml($format = 'RSS2.0') { // Convert the format to uppercase $format = strtoupper($format); // Check if the format is an allowed one if (!in_array($format, array('RSS0.91', 'RSS1.0', 'RSS2.0', 'ATOM'))) { trigger_error('The YDFeedCreator does not support the format called "' . $format . '". Only the formats "RSS0.91"' . ', "RSS1.0", "RSS2.0" and "ATOM" are supported.', YD_ERROR); } $xml = new YDXml(); $xml->encoding = $this->_encoding; // Formatter for RSS 0.91 if ($format == 'RSS0.91' || $format == 'RSS2.0') { $feed['rss'][0]['#'] = array(); if ($format == 'RSS0.91') { $feed['rss'][0]['@']['version'] = '0.91'; } else { $feed['rss'][0]['@']['version'] = '2.0'; } $feed['rss'][0]['#']['channel'][0]['#'] = array(); $channel =& $feed['rss'][0]['#']['channel'][0]['#']; $channel['title'][0]['#'] = $this->_title; if (!empty($this->_description)) { $channel['description'][0]['#'] = $this->_description; } $channel['link'][0]['#'] = $this->_link; $channel['generator'][0]['#'] = $this->_generator; $i = 0; foreach ($this->_items as $arr) { $channel['item'][$i]['#'] = array(); $item =& $channel['item'][$i]['#']; $item['title'][0]['#'] = $arr['title']; $item['link'][0]['#'] = $arr['link']; $item['guid'][0]['#'] = $arr['guid']; $item['guid'][0]['@']['isPermanlink'] = 'false'; if (!is_null($arr['comments'])) { $item['comments'] = $arr['comments']; } if (!empty($arr['description'])) { $item['description'] = $arr['description']; } if ($format == 'RSS2.0' && !is_null($arr['enclosure'])) { $item['enclosure'][0]['@']['url'] = $arr['enclosure']; $item['enclosure'][0]['@']['length'] = $arr['enclosure_size']; $item['enclosure'][0]['@']['type'] = $arr['enclosure_type']; } $i++; } } // Formatter for RSS1.0 if ($format == 'RSS1.0') { $feed['rdf:RDF'][0]['#'] = array(); $feed['rdf:RDF'][0]['@']['xmlns'] = "http://purl.org/rss/1.0/"; $feed['rdf:RDF'][0]['@']['xmlns:rdf'] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; $feed['rdf:RDF'][0]['@']['xmlns:dc'] = "http://purl.org/dc/elements/1.1/"; $feed['rdf:RDF'][0]['#']['channel'][0]['#'] = array(); $feed['rdf:RDF'][0]['#']['channel'][0]['@']['rdf:about'] = ''; $channel =& $feed['rdf:RDF'][0]['#']['channel'][0]['#']; $channel['title'][0]['#'] = $this->_title; $channel['description'][0]['#'] = $this->_description; $channel['link'][0]['#'] = $this->_link; $channel['items'][0]['#']['rdf:Seq'][0]['#'] = array(); $i = 0; foreach ($this->_items as $item) { $li =& $channel['items'][0]['#']['rdf:Seq'][0]['#']['rdf:li'][$i]; $li['@']['rdf:resource'] = $item['link']; $i++; } $i = 0; foreach ($this->_items as $arr) { $rss['rdf:RDF'][0]['#']['item'][$i]['@']['rdf:about'] = $arr['link']; $item =& $feed['rdf:RDF'][0]['#']['item'][$i]['#']; $item['dc:format'][0]['#'] = 'text/html'; $item['title'][0]['#'] = $arr['title']; $item['link'][0]['#'] = $arr['link']; if (!empty($arr['description'])) { $item['description'][0]['#'] = $arr['description']; } $i++; } } // Formatter for ATOM if ($format == 'ATOM') { $feed['feed'][0]['#'] = array(); $feed['feed'][0]['@']['version'] = "0.3"; $feed['feed'][0]['@']['xmlns'] = "http://purl.org/atom/ns#"; $feed['feed'][0]['#']['title'][0]['#'] = $this->_title; if (!empty($this->_description)) { $feed['feed'][0]['#']['tagline'][0]['#'] = $this->_description; } $feed['feed'][0]['#']['link'][0]['@']['rel'] = 'alternate'; $feed['feed'][0]['#']['link'][0]['@']['type'] = 'text/html'; $feed['feed'][0]['#']['link'][0]['@']['href'] = $this->_link; $feed['feed'][0]['#']['id'][0]['#'] = $this->_link; $feed['feed'][0]['#']['generator'][0]['#'] = $this->_generator; $i = 0; foreach ($this->_items as $arr) { $item =& $feed['feed'][0]['#']['entry'][$i]['#']; $item['title'][0]['#'] = $arr['title']; $item['link'][0]['@']['rel'] = 'alternate'; $item['link'][0]['@']['type'] = 'text/html'; $item['link'][0]['@']['href'] = $arr['link']; $item['id'][0]['#'] = $arr['guid']; if (!empty($arr['description'])) { $item['content'][0]['@']['type'] = 'text/html'; $item['content'][0]['@']['mode'] = 'escaped'; $item['content'][0]['@']['xml:base'] = $arr['link']; $item['content'][0]['#'] = '<![CDATA[' . $arr['description'] . ']]>'; } if (!is_null($arr['enclosure'])) { $item['link'][0]['@']['rel'] = 'enclosure'; $item['link'][0]['@']['href'] = $arr['enclosure']; $item['link'][0]['@']['length'] = $arr['enclosure_size']; $item['link'][0]['@']['type'] = $arr['enclosure_type']; } $i++; } } $xml->loadArray($feed); $xml->encoding = $this->_encoding; return $xml->toString(); }
/** * This function will render the form. * * @returns The rendered form. */ function render() { // Form $xml['form'][0]['#'] = array(); $xml['form'][0]['@']['name'] = $this->_form->_name; $xml['form'][0]['@']['method'] = $this->_form->_method; $xml['form'][0]['@']['action'] = $this->_form->_action; $xml['form'][0]['@']['target'] = $this->_form->_target; $xml['form'][0]['@']['legend'] = $this->_form->_legend; $form =& $xml['form'][0]['#']; $attr =& $form['attributes'][0]['#']; $elem =& $form['elements'][0]['#']; $rule =& $form['rules'][0]['#']; $comp =& $form['comparerules'][0]['#']; $frul =& $form['formrules'][0]['#']; $filt =& $form['filters'][0]['#']; $r_elem =& $form['registered'][0]['#']['elements'][0]['#']; $r_filt =& $form['registered'][0]['#']['filters'][0]['#']; $r_rule =& $form['registered'][0]['#']['rules'][0]['#']; $r_rend =& $form['registered'][0]['#']['renderers'][0]['#']; // Attributes if (sizeof($this->_form->_attributes)) { $attr =& $attr['attribute']; $i = 0; foreach ($this->_form->_attributes as $name => $value) { $attr[$i]['@']['name'] = $name; $attr[$i]['@']['value'] = $value; $i++; } } // Elements if (sizeof($this->_form->_elements)) { $i = 0; $elem =& $elem['element']; foreach ($this->_form->_elements as $name => $obj) { $arr = $obj->toArray(); // Name and Type $elem[$i]['@']['name'] = $arr['name']; $elem[$i]['@']['type'] = $arr['type']; // Labels (support only default values) $e_lab =& $elem[$i]['#']['labels'][0]['#']['label']; $e_lab[0]['@']['id'] = 'default'; $e_lab[0]['@']['value'] = $arr['label']; // Values (support only default values) $e_val =& $elem[$i]['#']['values'][0]['#']['value']; $e_val[0]['@']['id'] = 'default'; $e_val[0]['@']['value'] = $arr['value']; // Attributes $e_attr =& $elem[$i]['#']['attributes'][0]['#']; if (sizeof($arr['attributes'])) { $e_attr =& $e_attr['attribute']; $j = 0; foreach ($arr['attributes'] as $name => $value) { $e_attr[$j]['@']['name'] = $name; $e_attr[$j]['@']['value'] = $value; $j++; } } // Options $e_opts =& $elem[$i]['#']['options'][0]['#']; if (sizeof($arr['options'])) { $e_opts =& $e_opts['option']; $j = 0; foreach ($arr['options'] as $name => $value) { $e_opts[$j]['@']['name'] = $name; $e_opts[$j]['@']['value'] = $value; $j++; } } $i++; } } // Rules if (sizeof($this->_form->_rules)) { $i = 0; $rule =& $rule['rule']; foreach ($this->_form->_rules as $e => $rules) { foreach ($rules as $r) { // Name and Type $rule[$i]['@']['element'] = $e; $rule[$i]['@']['type'] = $r['rule']; // Errors (support only default values) $r_err =& $rule[$i]['#']['errors'][0]['#']['error']; $r_err[0]['@']['id'] = 'default'; $r_err[0]['@']['value'] = $r['error']; // Options $r_opt =& $rule[$i]['#']['options'][0]['#']; if (!is_null($r['options'])) { // If Integer, Float, String create just one option with id = "" if (is_scalar($r['options'])) { $r_opt =& $r_opt['option']; $r_opt[0]['@']['id'] = ""; $r_opt[0]['@']['value'] = $r['options']; $r_opt[0]['@']['serialized'] = 'false'; // If Array, create all options } else { if (is_array($r['options']) && !empty($r['options'])) { $r_opt =& $r_opt['option']; $j = 0; foreach ($r['options'] as $id => $value) { $r_opt[$j]['@']['id'] = $id; $r_opt[$j]['@']['serialized'] = 'false'; if (is_object($value) || is_array($value)) { $value = YDObjectUtil::serialize($value); $r_opt[$j]['@']['serialized'] = 'true'; } $r_opt[$j]['@']['value'] = $value; $j++; } // If Object, serialize it } else { if (is_object($r['options'])) { $r_opt =& $r_opt['option']; $r_opt[0]['@']['id'] = ""; $r_opt[0]['@']['value'] = YDObjectUtil::serialize($r['options']); $r_opt[0]['@']['serialized'] = 'true'; } } } } $i++; } } } // Compare Rules if (sizeof($this->_form->_comparerules)) { $i = 0; $comp =& $comp['rule']; foreach ($this->_form->_comparerules as $r) { // Type $comp[$i]['@']['type'] = $r['rule']; // Elements $c_elem =& $comp[$i]['#']['elements'][0]['#']['element']; $j = 0; foreach ($r['elements'] as $e) { $c_elem[$j]['@']['name'] = $e; $j++; } // Errors (support only default values) $c_err =& $comp[$i]['#']['errors'][0]['#']['error']; $c_err[0]['@']['id'] = 'default'; $c_err[0]['@']['value'] = $r['error']; $i++; } } // Form Rules if (sizeof($this->_form->_formrules)) { $i = 0; $frul =& $frul['rule']; foreach ($this->_form->_formrules as $r) { if (is_array($r)) { $r = $r[0] . '::' . $r[1]; } // Type $frul[$i]['@']['callback'] = $r; $i++; } } // Filters if (sizeof($this->_form->_filters)) { $i = 0; $filt =& $filt['element']; foreach ($this->_form->_filters as $e => $filters) { foreach ($filters as $f) { // Name and Filter $filt[$i]['@']['name'] = $e; $filt[$i]['@']['filter'] = $f; $i++; } } } // Registered filters if (sizeof($this->_form->_regFilters)) { $i = 0; $r_filt =& $r_filt['filter']; foreach ($this->_form->_regFilters as $name => $r) { if (is_array($r['callback'])) { $r['callback'] = $r['callback'][0] . '::' . $r['callback'][1]; } $r_filt[$i]['@']['name'] = $name; $r_filt[$i]['@']['callback'] = $r['callback']; $r_filt[$i]['@']['file'] = $r['file']; $i++; } } // Registered rules if (sizeof($this->_form->_regRules)) { $i = 0; $r_rule =& $r_rule['rule']; foreach ($this->_form->_regRules as $name => $r) { if (is_array($r['callback'])) { $r['callback'] = $r['callback'][0] . '::' . $r['callback'][1]; } $r_rule[$i]['@']['name'] = $name; $r_rule[$i]['@']['callback'] = $r['callback']; $r_rule[$i]['@']['file'] = $r['file']; $i++; } } // Registered renderers if (sizeof($this->_form->_regRenderers)) { $i = 0; $r_rend =& $r_rend['renderer']; foreach ($this->_form->_regRenderers as $name => $r) { $r_rend[$i]['@']['name'] = $name; $r_rend[$i]['@']['class'] = $r['class']; $r_rend[$i]['@']['file'] = $r['file']; $i++; } } // Registered elements if (sizeof($this->_form->_regElements)) { $i = 0; $r_elem =& $r_elem['element']; foreach ($this->_form->_regElements as $name => $r) { $r_elem[$i]['@']['name'] = $name; $r_elem[$i]['@']['class'] = $r['class']; $r_elem[$i]['@']['file'] = $r['file']; $i++; } } $xml = new YDXml($xml, YD_XML_ARRAY); return $xml->toString(); }