summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c1afefd)
raw | patch | inline | side by side (parent: c1afefd)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 27 Apr 2010 07:20:24 +0000 (07:20 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 27 Apr 2010 07:20:24 +0000 (07:20 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@17866 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/include/class_SnapshotHandler.inc | patch | blob | history | |
gosa-core/include/class_ldap.inc | patch | blob | history | |
gosa-core/include/class_ldapMultiplexer.inc | patch | blob | history |
diff --git a/gosa-core/include/class_SnapshotHandler.inc b/gosa-core/include/class_SnapshotHandler.inc
index ae04963fbbe1ecf2f58dc7dfd23d172880309a81..ad3957c25f30f60adedcb497e6c17f09a6a92f79 100644 (file)
$data = gzuncompress($ldap_to->get_attribute($dn,'gosaSnapshotData'));
/* Import the given data */
- $err = "";
- $ldap->import_complete_ldif($data,$err,false,false);
+ $ldap->importLdif($data);
if (!$ldap->success()){
msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, "", get_class()));
}
index 5d815810e9134838bb49e6f4e8d0f5f98b6e8b89..b7ba650ea71104b3d788b9d52eec5c9e5cc336c2 100644 (file)
}
+ function importLdif($str)
+ {
+ }
+
+
function gen_xls ($srp, $dn, $filter= "(objectClass=*)", $attributes= array('*'), $recursive= TRUE,$r_array=0)
{
$display= array();
}
-
- /* This funktion imports ldifs
-
- If DeleteOldEntries is true, the destination entry will be deleted first.
- If JustModify is true the destination entry will only be touched by the attributes specified in the ldif.
- if JustMofify id false the destination dn will be overwritten by the new ldif.
- */
-
- function import_complete_ldif($srp, $str_attr,$error,$JustModify,$DeleteOldEntries)
- {
- if($this->reconnect) $this->connect();
-
- /* First we have to split the string into empty lines.
- An empty line indicates an new Entry */
- $entries = preg_split("/\n/",$str_attr);
-
- $data = "";
- $cnt = 0;
- $current_line = 0;
-
- /* FIX ldif */
- $last = "";
- $tmp = "";
- $i = 0;
- foreach($entries as $entry){
- if(preg_match("/^ /",$entry)){
- $tmp[$i] .= trim($entry);
- }else{
- $i ++;
- $tmp[$i] = trim($entry);
- }
- }
-
- /* Every single line ... */
- foreach($tmp as $entry) {
- $current_line ++;
-
- /* Removing Spaces to ..
- .. test if a new entry begins */
- $tmp = str_replace(" ","",$data );
-
- /* .. prevent empty lines in an entry */
- $tmp2 = str_replace(" ","",$entry);
-
- /* If the Block ends (Empty Line) */
- if((empty($entry))&&(!empty($tmp))) {
- /* Add collected lines as a complete block */
- $all[$cnt] = $data;
- $cnt ++;
- $data ="";
- } else {
-
- /* Append lines ... */
- if(!empty($tmp2)) {
- /* check if we need base64_decode for this line */
- if(strstr($tmp2, "::") !== false)
- {
- $encoded = explode("::",$entry);
- $attr = trim($encoded[0]);
- $value = base64_decode(trim($encoded[1]));
- /* Add linenumber */
- $data .= $current_line."#".base64_encode($attr.":".$value)."\n";
- }
- else
- {
- /* Add Linenumber */
- $data .= $current_line."#".base64_encode($entry)."\n";
- }
- }
- }
- }
-
- /* The Data we collected is not in the array all[];
- For example the Data is stored like this..
-
- all[0] = "1#dn : .... \n
- 2#ObjectType: person \n ...."
-
- Now we check every insertblock and try to insert */
- foreach ( $all as $single) {
- $lineone = preg_split("/\n/",$single);
- $ndn = explode("#", $lineone[0]);
- $line = base64_decode($ndn[1]);
-
- $dnn = explode (":",$line,2);
- $current_line = $ndn[0];
- $dn = $dnn[0];
- $value = $dnn[1];
-
- /* Every block must begin with a dn */
- if($dn != "dn") {
- $error= sprintf(_("Invalid DN %s: block to be imported should start with 'dn: ...' in line %s"), bold($line), bold($current_line));
- return -2;
- }
-
- /* Should we use Modify instead of Add */
- $usemodify= false;
-
- /* Delete before insert */
- $usermdir= false;
-
- /* The dn address already exists, Don't delete destination entry, overwrite it */
- if (($this->dn_exists($value))&&((!$JustModify)&&(!$DeleteOldEntries))) {
-
- $usermdir = $usemodify = false;
-
- /* Delete old entry first, then add new */
- } elseif(($this->dn_exists($value))&&($DeleteOldEntries)){
-
- /* Delete first, then add */
- $usermdir = true;
-
- } elseif(($this->dn_exists($value))&&($JustModify)) {
-
- /* Modify instead of Add */
- $usemodify = true;
- }
-
- /* If we can't Import, return with a file error */
- if(!$this->import_single_entry($srp, $single,$usemodify,$usermdir) ) {
- $error= sprintf(_("Error while importing DN %s: please check LDIF from line %s on!"), bold($line),
- $current_line);
- return UNKNOWN_TOKEN_IN_LDIF_FILE; }
- }
-
- return (INSERT_OK);
- }
-
-
- /* Imports a single entry
- If $delete is true; The old entry will be deleted if it exists.
- if $modify is true; All variables that are not touched by the new ldif will be kept.
- if $modify is false; The new ldif overwrites the old entry, and all untouched attributes get lost.
- */
- function import_single_entry($srp, $str_attr,$modify,$delete)
- {
- global $config;
-
- if(!$config){
- trigger_error("Can't import ldif, can't read config object.");
- }
-
-
- if($this->reconnect) $this->connect();
-
- $ret = false;
- $rows= preg_split("/\n/",$str_attr);
- $data= false;
-
- foreach($rows as $row) {
-
- /* Check if we use Linenumbers (when import_complete_ldif is called we use
- Linenumbers) Linenumbers are use like this 123#attribute : value */
- if(!empty($row)) {
- if(strpos($row,"#")!=FALSE) {
-
- /* We are using line numbers
- Because there is a # before a : */
- $tmp1= explode("#",$row);
- $current_line= $tmp1[0];
- $row= base64_decode($tmp1[1]);
- }
-
- /* Split the line into attribute and value */
- $attr = explode(":", $row,2);
- $attr[0]= trim($attr[0]); /* attribute */
- $attr[1]= $attr[1]; /* value */
-
- /* Check :: was used to indicate base64_encoded strings */
- if($attr[1][0] == ":"){
- $attr[1]=trim(preg_replace("/^:/","",$attr[1]));
- $attr[1]=base64_decode($attr[1]);
- }
-
- $attr[1] = trim($attr[1]);
-
- /* Check for attributes that are used more than once */
- if(!isset($data[$attr[0]])) {
- $data[$attr[0]]=$attr[1];
- } else {
- $tmp = $data[$attr[0]];
-
- if(!is_array($tmp)) {
- $new[0]=$tmp;
- $new[1]=$attr[1];
- $datas[$attr[0]]['count']=1;
- $data[$attr[0]]=$new;
- } else {
- $cnt = $datas[$attr[0]]['count'];
- $cnt ++;
- $data[$attr[0]][$cnt]=$attr[1];
- $datas[$attr[0]]['count'] = $cnt;
- }
- }
- }
- }
-
- /* If dn is an index of data, we should try to insert the data */
- if(isset($data['dn'])) {
-
- /* Fix dn */
- $tmp = gosa_ldap_explode_dn($data['dn']);
- unset($tmp['count']);
- $newdn ="";
- foreach($tmp as $tm){
- $newdn.= trim($tm).",";
- }
- $newdn = preg_replace("/,$/","",$newdn);
- $data['dn'] = $newdn;
-
- /* Creating Entry */
- $this->cd($data['dn']);
-
- /* Delete existing entry */
- if($delete){
- $this->rmdir_recursive($srp, $data['dn']);
- }
-
- /* Create missing trees */
- $this->cd ($this->basedn);
- $this->cd($config->current['BASE']);
- $this->create_missing_trees($srp, preg_replace("/^[^,]+,/","",$data['dn']));
- $this->cd($data['dn']);
-
- $dn = $data['dn'];
- unset($data['dn']);
-
- if(!$modify){
-
- $this->cat($srp, $dn);
- if($this->count($srp)){
-
- /* The destination entry exists, overwrite it with the new entry */
- $attrs = $this->fetch($srp);
- foreach($attrs as $name => $value ){
- if(!is_numeric($name)){
- if(in_array($name,array("dn","count"))) continue;
- if(!isset($data[$name])){
- $data[$name] = array();
- }
- }
- }
- $ret = $this->modify($data);
-
- }else{
-
- /* The destination entry doesn't exists, create it */
- $ret = $this->add($data);
- }
-
- } else {
-
- /* Keep all vars that aren't touched by this ldif */
- $ret = $this->modify($data);
- }
- }
-
- if (!$this->success()){
- msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $dn, "", get_class()));
- }
-
- return($ret);
- }
-
-
- function importcsv($str)
- {
- $lines = preg_split("/\n/",$str);
- foreach($lines as $line)
- {
- /* continue if theres a comment */
- if(substr(trim($line),0,1)=="#"){
- continue;
- }
-
- $line= str_replace ("\t\t","\t",$line);
- $line= str_replace ("\t" ,"," ,$line);
- echo $line;
-
- $cells = explode(",",$line ) ;
- $linet= str_replace ("\t\t",",",$line);
- $cells = preg_split("/\t/",$line);
- $count = count($cells);
- }
-
- }
-
function get_objectclasses( $force_reload = FALSE)
{
$objectclasses = array();
diff --git a/gosa-core/include/class_ldapMultiplexer.inc b/gosa-core/include/class_ldapMultiplexer.inc
index fbd6d91b47d47168cfb579ecd57596f8ebde0b66..85683c7ce3fb4c660ee9dbaae71ad95132abe7ad 100644 (file)
public function __call($methodName, $parameters) {
/* Add resource pointer if the mentioned methods are used */
- if (preg_match('/^(search|ls|cat|fetch|clearResult|resetResult|count|getDN|recursive_remove|rmdir_recursive|gen_xls|create_missing_trees|import_single_entry|import_complete_ldif)$/', $methodName)){
+ if (preg_match('/^(search|ls|cat|fetch|clearResult|resetResult|count|getDN|recursive_remove|rmdir_recursive|gen_xls|create_missing_trees)$/', $methodName)){
array_unshift($parameters, $this->sr);
}