}
}
+ private static function ar_filter_keys($ar,$keys) {
+ $new = [];
+ foreach ($keys as $k) {
+ if (isset($ar[$k])) $new[$k] = $ar[$k];
+ }
+ return $new;
+ }
+
public static function ldap_search($o=[]) {
$host = '127.0.0.1';
if (preg_match('/^.*?([^\.]+\.[^\.]+)$/',$_SERVER['HTTP_HOST'],$m)) {
}
$read = ldap_search($connect, $o['base_dn'], $o['filter'], $o['attrs'], $o['limit']) or self::bye(">>Unable to search ldap server<<");
+ # ldap_get_entries is shite !! It does not workds with binary datas, put all attrs in lower case
$info = [];
$i = 0;
$entry = ldap_first_entry($connect, $read);
do {
$attributes = ldap_get_attributes($connect, $entry);
- #$attributes['count']++;
for($j=0; $j<$attributes['count']; $j++) {
$values = ldap_get_values_len($connect, $entry,$attributes[$j]);
in_array('dn',!empty($o['attrs']) ? $o['attrs'] : ['dn'])
) $info[$i] = ['dn' => ldap_get_dn($connect,$entry)] + (empty($info[$i]) ? [] : $info[$i]);
- #$info[$i]['count'] = count($info[$i]);
+ # Re-order by attrs
+ if (!empty($o['attrs'])) $info[$i] = self::ar_filter_keys($info[$i],$o['attrs']);
+
$i++;
} while ($entry = ldap_next_entry($connect, $entry));
- #$info['count'] = count($info);
ldap_close($connect);
#bye($info);
return $info;
- # NB 13.12.17: ldap_get_entries is shite !! It does not workds with binary datas, put all attrs in lower case
$info = ldap_get_entries($connect, $read);
$recs = [];
self::$types = [
- 'sql' => [], # Code still in db/table.php !
- 'bin' => [
- 'base64_encode_binary' => false,
- 'sep' => '',
- 'eol' => '',
- 'row' => function (&$o,&$row) {
- if (!empty($o['_bin'])) return;
- $o['_bin'] = true;
- foreach ($row as $k=>$v) { echo $v; break; }
- },
- ],
-
- 'human' => [
- 'sep' => self::p('sep'," | "),
- 'corner' => self::p('corner',"+"),
- 'eol' => self::p('eol',"\n"),
- 'line' => self::p('line',"-"),
- 'head' => 'out_human_head',
- 'row' => 'out_human',
- 'end' => 'out_human_end',
- ],
-
- 'txt' => [
- 'col' => self::p('col',' : '),
- 'sep' => self::p('sep',"\n"),
- 'eol' => self::p('eol',"--\n"),
- 'init' => function(&$o) { if (self::header()) return; $o['eol'] = ''; },
- ],
-
- 'csv' => [
- 'sep' => self::punescape('sep',"\t"),
- 'quote' => self::p('quote',''),
- 'quote_escape' => self::punescape('quote_escape','\\'),
- 'eol' => self::punescape('eol',"\n"),
- ],
-
- 'yaml' => [
- 'enclose' => ["---\n",""],
- 'row' => function (&$o,&$row) {
- $yaml = '- '.self::yaml_encode($row);
- $yaml = preg_replace("/^(?!-)/m"," ",$yaml);
- echo $yaml;
- }
- ],
-
- 'json' => [
- 'base64_encode_binary' => true,
- 'enclose' => array('['.self::p('eol',NB_EOL),']'),
- 'row' => function(&$o,&$row) { return self::json_encode($row); },
- 'eol' => self::p('eol',NB_EOL),
- 'rec' => ',',
- ],
-
- 'sh' => array(
- 'preff' => self::p('preff',""),
- 'row' => function(&$o,&$r) {
- $line = [];
- foreach ($r as $k=>$v) {
- if (!preg_match('/^[a-zA-Z\w_]+$/',$k)) continue;
- $v = self::scalar($v);
- $v = str_replace('"','\\"',$v);
- $v = str_replace('$','\\$',$v);
- $v = str_replace('`','\\`',$v);
- $v = str_replace("\r",'',$v);
- $v = str_replace("\n",'"$\'\\\\n\'"',$v);
- $line[] = $o['preff']."$k=\"$v\"";
- }
- if ($line) echo join(' ',$line).";\n";
- }
- ),
-
- 'php' => array(
- 'enclose' => (self::p('enclose') === '0' ? [] : [
- '<?php'.(NB_EOL ? NB_EOL:' ') . '$VAR = array('
- ,');' . (NB_EOL ? NB_EOL:' ').'?'.'>'.NB_EOL
- ]),
- 'eol' => self::p('eol',NB_EOL),
- 'rec' => ',',
- 'row' => function(&$o,&$r) {
- return var_export($r);
- echo preg_replace(array(
- '/(=>\s*)\n\s+/m',
- '/\),\s*array/m',
- ),array(
- '\1',
- "),".NB_EOL."array"
- ),var_export($r,true));
- }
- ),
- 'php_hash' => [ 'align' => ' => ', 'eol' => ",\n", 'quote' => "'", ],
- 'php_var_dump' => ['row' => function(&$o,&$r) {var_dump($r);},],
- 'php_print_r' => ['row' => function(&$o,&$r) {print_r($r);},],
- 'php_var_export' => ['row' => function(&$o,&$r) {var_export($r);},],
+#<?php
+#if (!class_exists('out')) return;
+#<?php
+#return
'div' => [
'is_html' => true,
},
],
-# NB 14.12.17 'cust' => [
-# NB 14.12.17 '_web_' => false,
-# NB 14.12.17 'cust' => self::p('cust',"CHANGE ME"),
-# NB 14.12.17 'at' => self::p('at','@'),
-# NB 14.12.17 'open' => self::p('open',''),
-# NB 14.12.17 'close' => self::p('close',''),
-# NB 14.12.17
-# NB 14.12.17 'quote' => self::p('quote',"'"),
-# NB 14.12.17 'quote_escape' => self::p('quote_escape','\\'),
-# NB 14.12.17
-# NB 14.12.17 'eol' => self::p('eol',"\n"),
-# NB 14.12.17 'sep' => self::p('sep',''),
-# NB 14.12.17 'preff' => self::p('preff',''),
-# NB 14.12.17 'suff' => self::p('suff',''),
-# NB 14.12.17
-# NB 14.12.17 'end' => function($o) { if (isset($o['count']) and $o['close']) echo $o['close']; },
-# NB 14.12.17 'row' => function(&$o,&$r) {
-# NB 14.12.17 static $count=0;
-# NB 14.12.17 if (!$count) {
-# NB 14.12.17 foreach ($o as $k=>$v) {
-# NB 14.12.17 if (is_scalar($v)) $o[$k] = str_replace('\n',"\n",$v);
-# NB 14.12.17 }
-# NB 14.12.17 if ($o['open']) echo $o['open'];
-# NB 14.12.17 }
-# NB 14.12.17 $count++; $o['count'] = $count;
-# NB 14.12.17 echo $o['preff']
-# NB 14.12.17 .($count>1 ? $o['sep'] : '')
-# NB 14.12.17 .preg_replace_callback('/'.$o['at'].'([\w_]+)(?::([-\+]?\d+))?'.$o['at'].'/',function($m) use ($o,$r,$count){
-# NB 14.12.17
-# NB 14.12.17 #bye($m);
-# NB 14.12.17 $k = $m[1];
-# NB 14.12.17 $size = empty($m[2]) ? 0 : (int)$m[2];
-# NB 14.12.17 $v = $r[$k];
-# NB 14.12.17
-# NB 14.12.17 if (!empty($o['quote'])) $v = $o['quote'] .
-# NB 14.12.17 str_replace($o['quote'],$o['quote_escape'].$o['quote'],$v)
-# NB 14.12.17 . $o['quote'];
-# NB 14.12.17
-# NB 14.12.17 if ($size) {
-# NB 14.12.17 $align = $size>0 ? STR_PAD_LEFT : STR_PAD_RIGHT;
-# NB 14.12.17 $size = abs($size);
-# NB 14.12.17 if ($count>1) $size -= mb_strlen($o['sep'],self::$charset);
-# NB 14.12.17 $v = self::mb_str_pad($v, $size, ' ',$align);
-# NB 14.12.17 }
-# NB 14.12.17
-# NB 14.12.17 return $v;
-# NB 14.12.17
-# NB 14.12.17 },$o['cust'])
-# NB 14.12.17 .$o['suff']
-# NB 14.12.17 ;
-# NB 14.12.17 }
-# NB 14.12.17 ],
];
+ foreach ((array)glob(dirname(__FILE__).'/'.basename(__FILE__,'.php').'/*.php') as $file) {
+ #debug($file);
+ self::$types[basename($file,'.php')] = require($file);
+ }
#self::$types['html'] = self::$types['table'];
self::type(self::client_type());
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'base64_encode_binary' => false,
+ 'sep' => '',
+ 'eol' => '',
+ 'row' => function (&$o,&$row) {
+ if (!empty($o['_bin'])) return;
+ $o['_bin'] = true;
+ foreach ($row as $k=>$v) { echo self::scalar($v); break; }
+ },
+];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'sep' => self::punescape('sep',"\t"),
+ 'quote' => self::p('quote',''),
+ 'quote_escape' => self::punescape('quote_escape','\\'),
+ 'eol' => self::punescape('eol',"\n"),
+];
+?>
--- /dev/null
+<?php
+return;
+# NB 14.12.17 'cust' => [
+# NB 14.12.17 '_web_' => false,
+# NB 14.12.17 'cust' => self::p('cust',"CHANGE ME"),
+# NB 14.12.17 'at' => self::p('at','@'),
+# NB 14.12.17 'open' => self::p('open',''),
+# NB 14.12.17 'close' => self::p('close',''),
+# NB 14.12.17
+# NB 14.12.17 'quote' => self::p('quote',"'"),
+# NB 14.12.17 'quote_escape' => self::p('quote_escape','\\'),
+# NB 14.12.17
+# NB 14.12.17 'eol' => self::p('eol',"\n"),
+# NB 14.12.17 'sep' => self::p('sep',''),
+# NB 14.12.17 'preff' => self::p('preff',''),
+# NB 14.12.17 'suff' => self::p('suff',''),
+# NB 14.12.17
+# NB 14.12.17 'end' => function($o) { if (isset($o['count']) and $o['close']) echo $o['close']; },
+# NB 14.12.17 'row' => function(&$o,&$r) {
+# NB 14.12.17 static $count=0;
+# NB 14.12.17 if (!$count) {
+# NB 14.12.17 foreach ($o as $k=>$v) {
+# NB 14.12.17 if (is_scalar($v)) $o[$k] = str_replace('\n',"\n",$v);
+# NB 14.12.17 }
+# NB 14.12.17 if ($o['open']) echo $o['open'];
+# NB 14.12.17 }
+# NB 14.12.17 $count++; $o['count'] = $count;
+# NB 14.12.17 echo $o['preff']
+# NB 14.12.17 .($count>1 ? $o['sep'] : '')
+# NB 14.12.17 .preg_replace_callback('/'.$o['at'].'([\w_]+)(?::([-\+]?\d+))?'.$o['at'].'/',function($m) use ($o,$r,$count){
+# NB 14.12.17
+# NB 14.12.17 #bye($m);
+# NB 14.12.17 $k = $m[1];
+# NB 14.12.17 $size = empty($m[2]) ? 0 : (int)$m[2];
+# NB 14.12.17 $v = $r[$k];
+# NB 14.12.17
+# NB 14.12.17 if (!empty($o['quote'])) $v = $o['quote'] .
+# NB 14.12.17 str_replace($o['quote'],$o['quote_escape'].$o['quote'],$v)
+# NB 14.12.17 . $o['quote'];
+# NB 14.12.17
+# NB 14.12.17 if ($size) {
+# NB 14.12.17 $align = $size>0 ? STR_PAD_LEFT : STR_PAD_RIGHT;
+# NB 14.12.17 $size = abs($size);
+# NB 14.12.17 if ($count>1) $size -= mb_strlen($o['sep'],self::$charset);
+# NB 14.12.17 $v = self::mb_str_pad($v, $size, ' ',$align);
+# NB 14.12.17 }
+# NB 14.12.17
+# NB 14.12.17 return $v;
+# NB 14.12.17
+# NB 14.12.17 },$o['cust'])
+# NB 14.12.17 .$o['suff']
+# NB 14.12.17 ;
+# NB 14.12.17 }
+# NB 14.12.17 ],
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'sep' => self::p('sep'," | "),
+ 'corner' => self::p('corner',"+"),
+ 'eol' => self::p('eol',"\n"),
+ 'line' => self::p('line',"-"),
+ 'head' => 'out_human_head',
+ 'row' => 'out_human',
+ 'end' => 'out_human_end',
+];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'base64_encode_binary' => true,
+ 'enclose' => array('['.self::p('eol',NB_EOL),']'),
+ 'row' => function(&$o,&$row) { return self::json_encode($row); },
+ 'eol' => self::p('eol',NB_EOL),
+ 'rec' => ',',
+];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'enclose' => (self::p('enclose') === '0' ? [] : [
+ '<?php'.(NB_EOL ? NB_EOL:' ') . '$VAR = array('
+ ,');' . (NB_EOL ? NB_EOL:' ').'?'.'>'.NB_EOL
+ ]),
+ 'eol' => self::p('eol',NB_EOL),
+ 'rec' => ',',
+ 'row' => function(&$o,&$r) {
+ return var_export($r);
+ echo preg_replace(array(
+ '/(=>\s*)\n\s+/m',
+ '/\),\s*array/m',
+ ),array(
+ '\1',
+ "),".NB_EOL."array"
+ ),var_export($r,true));
+ }
+];
+?>
--- /dev/null
+<?php
+return [ 'align' => ' => ', 'eol' => ",\n", 'quote' => "'", ];
+?>
--- /dev/null
+<?php
+return ['row' => function(&$o,&$r) {print_r($r);},];
+?>
--- /dev/null
+<?php
+return [ 'row' => function(&$o,&$r) {var_dump($r);}];
+?>
--- /dev/null
+<?php
+return ['row' => function(&$o,&$r) {var_export($r);},]
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'base64_encode_binary' => false,
+ 'eol' => '',
+ 'sep' => self::p('sep','_RAW_'),
+ 'init' => function(&$o) { $o['rec'] = $o['sep'].$o['sep']; },
+ #'sep' => '',
+ 'row' => function (&$o,&$row) {
+ foreach ($row as $k=>$v) { echo self::scalar($v).$o['sep']; }
+ },
+];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'preff' => self::p('preff',""),
+ 'row' => function(&$o,&$r) {
+ $line = [];
+ foreach ($r as $k=>$v) {
+ if (!preg_match('/^[a-zA-Z\w_]+$/',$k)) continue;
+ $v = self::scalar($v);
+ $v = str_replace('"','\\"',$v);
+ $v = str_replace('$','\\$',$v);
+ $v = str_replace('`','\\`',$v);
+ $v = str_replace("\r",'',$v);
+ $v = str_replace("\n",'"$\'\\\\n\'"',$v);
+ $line[] = $o['preff']."$k=\"$v\"";
+ }
+ if ($line) echo join(' ',$line).";\n";
+ }
+];
+?>
--- /dev/null
+<?php
+# Code still in db/table.php !
+return [];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'col' => self::p('col',' : '),
+ 'sep' => self::p('sep',"\n"),
+ 'eol' => self::p('eol',"--\n"),
+ 'init' => function(&$o) { if (self::header()) return; $o['eol'] = ''; },
+];
+?>
--- /dev/null
+<?php
+if (!class_exists('out')) return;
+return [
+ 'enclose' => ["---\n",""],
+ 'row' => function (&$o,&$row) {
+ $yaml = '- '.self::yaml_encode($row);
+ $yaml = preg_replace("/^(?!-)/m"," ",$yaml);
+ echo $yaml;
+ }
+];
+?>
]);
#echo $rows[0]['jpegPhoto']; exit;
#$rows = [ 'jpegPhoto' => $rows[0]['jpegPhoto'] ];
- if ($this->is_html) $rows = $this->array_fill_assoc($rows);
+ if ($this->is_html
+ or ($this->params['format'] == $this->format_cli)
+ or ($this->params['format'] == 'csv')
+ ) $rows = $this->array_fill_assoc($rows);
$this->page($rows);
} elseif ($action == 'phpinfo') {