From: Nicolas Boisselier Date: Thu, 14 Dec 2017 05:04:20 +0000 (+0000) Subject: lib/php/nb.php X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=3f55f298a76de597382d20fb8dcc33c5805aef1a;p=nb.git lib/php/nb.php --- diff --git a/lib/php/nb.php b/lib/php/nb.php index c6a8102c..f139d6ec 100644 --- a/lib/php/nb.php +++ b/lib/php/nb.php @@ -1080,9 +1080,10 @@ class NB { 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<<"); @@ -1090,7 +1091,11 @@ class NB { 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; @@ -1098,21 +1103,17 @@ class NB { 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 ldap_get_dn($connect,$entry)] + (empty($info[$i]) ? [] : $info[$i]); #$info[$i]['count'] = count($info[$i]); $i++; diff --git a/lib/php/out.php b/lib/php/out.php index 5bf50e99..2b762031 100644 --- a/lib/php/out.php +++ b/lib/php/out.php @@ -17,6 +17,17 @@ Class Out extends Nb { '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',"+"), @@ -27,65 +38,37 @@ Class Out extends Nb { '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) { @@ -122,6 +105,7 @@ Class Out extends Nb { ),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);},], @@ -167,40 +151,58 @@ Class Out extends Nb { }, ], - '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 ], ]; @@ -347,6 +349,12 @@ Class Out extends Nb { 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']; @@ -602,10 +610,10 @@ Class Out extends Nb { $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'];