if (!isset($o['bind_dn'])) $o['bind_dn'] = 'cn=' . $o['user'] . $o['bind_dn_preff'] . $o['base_dn'];
- if (empty($o['filter'])) $o['filter'] = "(&(userpassword=*)(cn=".$o['user']."))";
if (empty($o['attrs'])) $o['attrs'] = [];
+ if (!isset($o['limit'])) $o['limit'] = 0;
+ if (!isset($o['dn'])) $o['dn'] = true;
#return [$o];
$connect = ldap_connect($o['host']) or exit(">>Could not connect to LDAP server<<");
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $o['bind_dn'], $o['password']) or self::bye(">>Could not bind to ".$o['ldap_host']."<<");
- $read = ldap_search($connect, $o['base_dn'], $o['filter'], $o['attrs'], 0) or self::bye(">>Unable to search ldap server<<");
+ if (empty($o['filter'])) {
+ $o['filter'] = "(&(userpassword=*))";
+ $o['base_dn'] = $o['bind_dn'];
+ }
+ $read = ldap_search($connect, $o['base_dn'], $o['filter'], $o['attrs'], $o['limit']) or self::bye(">>Unable to search ldap server<<");
$info = [];
$i = 0;
do {
$attributes = ldap_get_attributes($connect, $entry);
+ #$attributes['count']++;
for($j=0; $j<$attributes['count']; $j++) {
- #if (!empty($o['attrs']) and !in_array($attributes[$j],$o['attrs'])) continue;
- #debug($info[$i]);
- #debug($attributes[$j]);
$values = ldap_get_values_len($connect, $entry,$attributes[$j]);
unset($values['count']);
- if ($attributes[$j] == 'jpegPhoto') for ($v=0; $v<count($values); $v++) {
- #$values[$v] = unpack("H*hex",$values[$v]);
- #$values[$v] = base64_decode($values[$v]);
- }
- #array_pop($values);
if (isset($values) and count($values) == 1) $values = $values[0];
$info[$i][$attributes[$j]] = $values;
}
+ if (!empty($o['dn']) and
+ 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]);
$i++;
'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',"+"),
'end' => 'out_human_end',
],
- 'php_hash' => [
- 'align' => ' => ',
- 'eol' => ",\n",
- 'quote' => "'",
+ 'txt' => [
+ 'col' => self::p('col',' : '),
+ 'sep' => self::p('sep',"\n"),
+ 'eol' => self::p('eol',"--\n"),
+ 'init' => function(&$o) { if (self::header()) return; $o['eol'] = ''; },
],
- 'cust' => [
- '_web_' => false,
- 'cust' => self::p('cust',"CHANGE ME"),
- 'at' => self::p('at','@'),
- 'open' => self::p('open',''),
- 'close' => self::p('close',''),
-
- 'quote' => self::p('quote',"'"),
- 'quote_escape' => self::p('quote_escape','\\'),
-
- 'eol' => self::p('eol',"\n"),
- 'sep' => self::p('sep',''),
- 'preff' => self::p('preff',''),
- 'suff' => self::p('suff',''),
+ 'csv' => [
+ 'sep' => self::punescape('sep',"\t"),
+ 'quote' => self::p('quote',''),
+ 'quote_escape' => self::punescape('quote_escape','\\'),
+ 'eol' => self::punescape('eol',"\n"),
+ ],
- 'end' => function($o) { if (isset($o['count']) and $o['close']) echo $o['close']; },
- 'row' => function(&$o,&$r) {
- static $count=0;
- if (!$count) {
- foreach ($o as $k=>$v) {
- if (is_scalar($v)) $o[$k] = str_replace('\n',"\n",$v);
- }
- if ($o['open']) echo $o['open'];
- }
- $count++; $o['count'] = $count;
- echo $o['preff']
- .($count>1 ? $o['sep'] : '')
- .preg_replace_callback('/'.$o['at'].'([\w_]+)(?::([-\+]?\d+))?'.$o['at'].'/',function($m) use ($o,$r,$count){
-
- #bye($m);
- $k = $m[1];
- $size = empty($m[2]) ? 0 : (int)$m[2];
- $v = $r[$k];
-
- if (!empty($o['quote'])) $v = $o['quote'] .
- str_replace($o['quote'],$o['quote_escape'].$o['quote'],$v)
- . $o['quote'];
-
- if ($size) {
- $align = $size>0 ? STR_PAD_LEFT : STR_PAD_RIGHT;
- $size = abs($size);
- if ($count>1) $size -= mb_strlen($o['sep'],self::$charset);
- $v = self::mb_str_pad($v, $size, ' ',$align);
- }
-
- return $v;
-
- },$o['cust'])
- .$o['suff']
- ;
+ '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) {
),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);},],
},
],
- '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' => [
- 'enclose' => array('['.self::p('eol',NB_EOL),']'),
- 'row' => function(&$o,&$row) {
-# NB 14.12.17 if (self::charset() == 'utf-8') foreach ($row as $k=>$v) {
-# NB 14.12.17 if (is_scalar($v)) $row[$k] = utf8_encode($v);
-# NB 14.12.17 }
- return self::json_encode($row);
- },
- 'eol' => self::p('eol',NB_EOL),
- 'rec' => ',',
- ],
+# 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 ],
];
if ($o['row_count'] and isset($o['rec'])) echo $o['rec'];
$o['row_count']++;
+ # Binary values
+ if (!isset($o['base64_encode_binary'])) $o['base64_encode_binary'] = true;
+ if (!empty($o['base64_encode_binary'])) foreach ($row as $k => $v) {
+ if (is_scalar($v) and self::is_binary($v)) $row[$k] = base64_encode($v);
+ }
+
# buffering
if (!empty($o['align'])) {
if (!isset($o['sep'])) $o['sep'] = $o['align'];
$values = [];
foreach (array_values($row) as $k=>$v) {
- if (self::is_binary($v)) {
- $values[] = $v;
- break;
- }
+# NB 14.12.17 if (self::is_binary($v)) {
+# NB 14.12.17 $values[] = $v;
+# NB 14.12.17 break;
+# NB 14.12.17 }
if (!empty($o['quote'])) $v = $o['quote'] .
str_replace($o['quote'],$o['quote_escape'].$o['quote'],$v)
. $o['quote'];