Ejemplo n.º 1
0
 /**
  * get import result
  * @param $import_item
  * @param $type accept value in post,term,attachment
  * @return object|string
  * @example ->get_import_result(array('name'=> 'ax', 'filter'=>'callback'), 'post')
  * @example ->get_import_result('ax')
  * @example ->get_import_result($item->children())  //DOMElement/SimpleXMLElement
  */
 public function get_import_result($import_item, $type = 'post')
 {
     $tags = array('post' => 'hw:import_post', 'term' => 'hw:import_term', 'attachment' => 'hw:attachment');
     if (is_array($import_item) || is_string($import_item)) {
         if ($type == '') {
             $type = 'post';
         }
         //default get import post
         if (is_string($import_item)) {
             $import_item = array('name' => $import_item);
         }
         if (!is_array($import_item) || !isset($import_item['name']) && !isset($import_item['_id'])) {
             //invalid arguments
             return;
         }
         if (isset($tags[$type])) {
             $parse = new HWIE_Module_Import_Results($import_item, $tags[$type]);
         }
     } elseif ($import_item instanceof SimpleXMLElement || $import_item instanceof DOMElement) {
         if ($import_item instanceof SimpleXMLElement) {
             $import_item = dom_import_simplexml($import_item);
         }
         $parse = new HWIE_Module_Import_Results($import_item);
     }
     if (isset($parse)) {
         $parse->init($this);
         return $parse->parse_data()->value;
     }
 }
Ejemplo n.º 2
0
 /**
  * @param $xml
  * @param $prefix
  * @param $count
  * @return array
  */
 public function recursive_option_data($xml, $prefix = '', $count = 0)
 {
     //return HW_XML::xml2array($item, 'param', 'params');
     $method = 'override';
     $attributes = null;
     $arr = array();
     $i_results = array();
     foreach ($xml as $id => $element) {
         $tag = $element->getName();
         if ($tag !== 'param' && $tag !== 'params') {
             continue;
         }
         $_recursive = true;
         $val = null;
         $skin = $parse = null;
         $atts = $element->attributes();
         $ori_key = $key = isset($atts['name']) ? (string) $atts['name'] : '';
         $encoded = isset($atts['encoded']) ? (string) $atts['encoded'] : 0;
         $export = isset($atts['export']) ? (string) $atts['export'] : '';
         if ($count++ == 0) {
             if (isset($atts['method'])) {
                 $method = (string) $atts['method'];
             }
             //tell how to append data
             if (isset($atts['prefix'])) {
                 $prefix = (string) $atts['prefix'];
                 //prefix option name
             }
             $attributes = $atts;
         }
         if ($count != 1 && $prefix !== '') {
             #$key = $prefix.$key;
         }
         //for skin data, because not count for xpath namespace element
         #if(HW_XML::count_childs($element) /*|| count($element->children('params'))*/ ) {
         //$skin = $this->build_skin_data($element);
         #}
         $import_result = HWIE_Module_Import_Results::valid($element);
         if ($import_result) {
             $val = $parse = new HWIE_Module_Import_Results(dom_import_simplexml($import_result));
             //$parse->init($this->parser->importer);
             //$val = $parse->parse_data()->value;
             //$this->import_results[] = &$val;
             //$i_results[] = &$val;
         } else {
             $val = $skin = $this->build_skin_data($element);
         }
         //get value
         /*if(!empty($skin)) {
               $val = $skin;
           }*/
         if ($val === null) {
             $val = isset($atts['value']) ? (string) $atts['value'] : (!count($element->children()) ? HW_String::truncate_empty_lines((string) $element) : null);
         }
         if ($val === null && !count($element->children()) && $tag == 'params') {
             $val = array();
         }
         if ($export && isset($val[$export])) {
             $val = $val[$export];
             //used for build_skin_data & other special param
         }
         if ($encoded) {
             //for single param
             $val = base64_encode(serialize($val));
         }
         $e = get_object_vars($element);
         if (!empty($e)) {
             if (HW_XML::count_childs($element) && $_recursive && (empty($skin) && empty($parse))) {
                 $recursive = $this->recursive_option_data($element, $prefix, $count);
                 //join data option
                 if (is_array($recursive->option) && isset($atts->join)) {
                     $recursive->option = join((string) $atts->join, $recursive->option);
                 }
                 if ($key !== '') {
                     $arr[$key] =& $recursive->option;
                 } else {
                     $arr[] =& $recursive->option;
                 }
                 $i_results = array_merge($i_results, $recursive->import_results);
                 #$i_results[0]='XY';
                 //list($_key, $_value) = end($arr);
                 if ($key) {
                     $_key = $key;
                 } else {
                     end($arr);
                     $_key = key($arr);
                 }
                 $_value = $arr[$_key];
                 reset($arr);
                 //make sure you reset array data
                 if (is_array($_value) && isset($_value[$export])) {
                     $arr[$_key] = $_value[$export];
                     $i_results[$_key] =& $arr[$_key];
                 }
                 if ($encoded) {
                     //encoded whole params has sub
                     $arr[$_key] = base64_encode(serialize($_value));
                     $i_results[$_key] =& $arr[$_key];
                     #$arr = base64_encode(serialize($_value));  //don't because if exists more element around it
                 }
             } else {
                 if ($key !== '') {
                     if ($val instanceof HWIE_Module_Import_Results) {
                         $arr[$key] =& $val;
                         $i_results[$key] =& $val;
                     } else {
                         $arr[$key] = $val;
                     }
                 } else {
                     if ($val instanceof HWIE_Module_Import_Results) {
                         $arr[] =& $val;
                         $i_results[] =& $val;
                     } else {
                         $arr[] = $val;
                     }
                 }
             }
             if ($skin) {
                 /*$_skin=$element->xpath('params:skin');
                   $node = dom_import_simplexml($element);
                   $node->parentNode->removeChild($node);*/
                 $this->recursive_option_data($element, $prefix, $count);
             }
         } else {
             if ($key !== '') {
                 $arr[$key] = trim($element);
             } else {
                 $arr[] = trim($element);
             }
         }
     }
     $result = (object) array('import_results' => &$i_results, 'option' => &$arr, 'method' => $method, 'prefix' => $prefix, 'attributes' => $attributes['@attributes']);
     return $result;
 }