HCE Project PHP language client API bindings  1.5.1
Hierarchical Cluster Engine PHP Client Interface API
 All Classes Namespaces Files Functions Variables Pages
json-field.php
Go to the documentation of this file.
1 #!/usr/bin/php
2 <?php
14 //Set default timezone if not set in host environment
15 @date_default_timezone_set(@date_default_timezone_get());
16 
17 require_once '../inc/hce_cli_api.inc.php';
18 
19 if(php_sapi_name()!=='cli' || !defined('STDIN')){
20  echo 'Only cli execution mode supported'.PHP_EOL;
21  exit(1);
22 }
23 
25 
26 if(isset($args['h']) || isset($args['help'])){
27  echo 'Usage: '.
28  $argv[0].
29  ' --field=<field_path> [--base64=<0-not decode|1-decode>] [--unicode=<0-not decode|1-decode>] [--json=<json_file>] [--compact=<0-yes|1-not>] [--xml=0-output as json|1-output as xml]'.PHP_EOL;
30  exit(1);
31 }
32 
33 $field_path=isset($args['field']) ? $args['field'] : '';
34 $base64=isset($args['base64']) ? $args['base64']+0 : 0;
35 $unicode=isset($args['unicode']) ? $args['unicode']+0 : 0;
36 $compact=isset($args['compact']) ? $args['compact']+0 : 0;
37 $json=isset($args['json']) ? $args['json'] : '';
38 $xml=isset($args['xml']) ? $args['xml']+0 : 0;
39 
40 //Get json file
41 if($json!==''){
42  if(file_exists($json)){
43  $input_json=trim(file_get_contents($json));
44  }else{
45  echo 'File '.$json.' not found!'.PHP_EOL;
46  exit(1);
47  }
48 }else{
49  $input_json=file_get_contents("php://stdin");
50 }
51 
52 $out='';
53 
54 if($input_json!=''){
55  $input_json=@json_decode($input_json, true);
56  if(is_array($input_json)){
57  $field_path=explode(':', $field_path);
58  foreach($field_path as $dir){
59  $dir=rawurldecode($dir);
60  if(isset($input_json[$dir])){
61  $input_json=$input_json[$dir];
62  }
63  }
64  }
65 }
66 
67 $out=$input_json;
68 
69 if(is_array($out)){
70  if($xml>0){
71  echo array2Xml($out);
72  }else{
73  echo $compact>0 ? json_encode($out) : cli_prettyPrintJson(json_encode($out), ' ');
74  }
75 }else{
76  if($unicode>0){
77  $out=html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", $out), ENT_NOQUOTES, 'UTF-8');
78  }
79  $out = $base64>0 ? base64_decode($out) : $out;
80  if($xml>0 && $out!=''){
81  $xml = array2Xml(array($out));
82  echo $xml->asXML();
83  }else{
84  echo $out;
85  }
86 }
87 
88 function array2Xml($data, $xml = null){
89  if (is_null($xml)) {
90  $xml = simplexml_load_string('<' . key($data) . '/>');
91  $data = current($data);
92  $return = true;
93  }
94  if (is_array($data)) {
95  foreach ($data as $name => $value) {
96  //array2Xml($value, is_numeric($name) ? $xml : $xml->addChild($name));
97  if( is_numeric($name)){
98  array2Xml($value, $xml->addChild('item'.$name));
99  }else{
100  array2Xml($value, $xml->addChild($name));
101  }
102  }
103  } else {
104  $xml->{0} = $data;
105  }
106  if (!empty($return)) {
107  return $xml->asXML();
108  }
109 }
110 
111 ?>