summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 747b5ee)
raw | patch | inline | side by side (parent: 747b5ee)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 15 Jan 2008 10:15:45 +0000 (10:15 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 15 Jan 2008 10:15:45 +0000 (10:15 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@8346 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/include/class_ldap.inc | patch | blob | history | |
gosa-core/plugins/admin/fai/class_faiManagement.inc | patch | blob | history |
index 53cdac8204bdf4eba8b344938b8362111c98ea70..625d052cd48603c2b7c9dd737ebe3cd268818a5b 100644 (file)
return ($result);
}
-
-
}
-
-
-/*! \brief Create a new FAI branch.
- * @param $sourcedn String The source release dn
- * @param $destinationdn String The destination dn
- * @param $destinationName String The name of the new release
- * @param $type String The release type (freeze/branch)
- * @param $is_first Boolean Use to identify the first func. call when recursivly called.
- * @param $depth Integer Current depth of recursion.
- */
-function copy_FAI_resource_recursive($sourcedn,$destinationdn,$destinationName,$type="branch",$is_first = true,$depth=0)
-{
- global $config;
- error_reporting(E_ALL | E_STRICT);
- $ldap = $config->get_ldap_link();
- $basedn = $config->current['BASE'];
- $delarray = array();
-
- /* The following code will output a status string
- * for each handled object, in a seperate iframe.
- */
-
-
- /* Display current action information.
- */
- if($is_first){
- echo "<h2>".sprintf(_("Creating copy of %s"),"<i>".LDAP::fix($sourcedn)."</i>")."</h2>";
- }else{
- if(preg_match("/^ou=/",$sourcedn)){
- echo "<h3>"._("Processing")." <i>".LDAP::fix($destinationdn)."</i></h3>";
- }else{
- $tmp = split(",",$sourcedn);
- echo " <b>"._("Object").":</b> ";
- $deststr = LDAP::fix($destinationdn);
- if(strlen($deststr) > 96){
- $deststr = substr($deststr,0,96)."...";
- }
- echo $deststr."<br>";
- }
- }
- /* .. immediately display infos */
- flush();
-
-
-
- /* Check if destination entry already exists
- */
- $ldap->cat($destinationdn);
- if($ldap->count()){
- echo _("Could not create new release, the destination dn is already in use.");
- return;
- }else{
-
- $ldap->clearResult();
-
- /* Get source entry
- * if it does not exist, abort here.
- */
- $ldap->cd($basedn);
- $ldap->cat($sourcedn);
- $attr = $ldap->fetch();
- if((!$attr) || (count($attr)) ==0) {
- echo _("Error while fetching source dn - aborted!");
- return;
- }
-
- /* The current object we want to create is an department.
- * Create the department and add the FAIbranch tag.
- */
- if(in_array("organizationalUnit",$attr['objectClass'])){
- $attr['dn'] = LDAP::convert($destinationdn);
- $ldap->cd($basedn);
- $ldap->create_missing_trees($destinationdn);
- $ldap->cd($destinationdn);
-
- /* If is first entry, append FAIbranch to department entry */
- if($is_first){
- $ldap->cat($destinationdn);
- $attr= $ldap->fetch();
-
- /* Filter unneeded informations */
- foreach($attr as $key => $value){
- if(is_numeric($key)) unset($attr[$key]);
- if(isset($attr[$key]['count'])){
- if(is_array($attr[$key])){
- unset($attr[$key]['count']);
- }
- }
- }
-
- unset($attr['count']);
- unset($attr['dn']);
-
- /* Add marking attribute */
- $attr['objectClass'][] = "FAIbranch";
-
- /* Add this entry */
- $ldap->modify($attr);
- }
- }else{
-
- /* Replicate all relevant FAI objects here.
- * FAI objects, Apps and Mimetypes.
- * Get all attributes as binary value, to ensure that Icon, File template aso
- * are created correctly.
- */
- foreach($attr as $key => $value){
- if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){
- $sr= ldap_read($ldap->cid, LDAP::fix($sourcedn), "$key=*", array($key));
- $ei= ldap_first_entry($ldap->cid, $sr);
- if ($tmp= @ldap_get_values_len($ldap->cid, $ei,$key)){
- $attr[$key] = $tmp;
- }
- }
-
- if(is_numeric($key)) unset($attr[$key]);
- if(isset($attr[$key]['count'])){
- if(is_array($attr[$key])){
- unset($attr[$key]['count']);
- }
- }
- }
- unset($attr['count']);
- unset($attr['dn']);
-
- /* Add FAIstate attribute to all FAI objects.
- */
- if((!in_array("gosaApplication" , $attr['objectClass'])) && (!in_array("gotoMimeType", $attr['objectClass']))){
- $attr['FAIdebianRelease'] = $destinationName;
- if($type=="branch"){
- $attr['FAIstate'] ="branch";
- }elseif($type=="freeze"){
- $attr['FAIstate'] ="freeze";
- }else{
- msg_dialog::display(_("Internal error"), sprintf(_("FAIstate '%s' is unknown!"),$type), ERROR_DIALOG);
- }
- }
-
- /* Replace FAIdebianRelease with new release name.
- */
- if(in_array("FAIpackageList" , $attr['objectClass'])){
- $attr['FAIdebianRelease'] = $destinationName;
- }
-
- /* Add entry
- */
- $ldap->cd($destinationdn);
- $ldap->cat($destinationdn);
- $a = $ldap->fetch();
- if(!count($a)){
- $ldap->add($attr);
- }
-
- if($ldap->error != "Success"){
-
- /* Some error occurred */
- print "---------------------------------------------";
- print $ldap->get_error()."<br>";
- print $sourcedn."<br>";
- print $destinationdn."<br>";
- print_a( $attr);
- exit();
- }
- }
- }
-
- echo "<script language=\"javascript\" type=\"text/javascript\">scrollDown2();</script>" ;
-
- /* Prepare for recursive copy.
- * Get all object within the source dn and
- * call the recursive copy for each.
- */
- $ldap->ls ("(objectClass=*)",$sourcedn);
- while ($ldap->fetch()){
- $deldn= $ldap->getDN();
- $delarray[$deldn]= strlen($deldn);
- }
- asort ($delarray);
- reset ($delarray);
- $depth ++;
- foreach($delarray as $dn => $bla){
- if($dn != $destinationdn){
- $ldap->cd($basedn);
- $item = $ldap->fetch($ldap->cat($dn));
- if(!in_array("FAIbranch",$item['objectClass'])){
- copy_FAI_resource_recursive($dn,str_replace($sourcedn,$destinationdn,$dn),$destinationName,$type,false,$depth);
- }
- }
- }
- if($is_first){
- echo "<p class='seperator'> </p>";
- }
-}
-
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>
diff --git a/gosa-core/plugins/admin/fai/class_faiManagement.inc b/gosa-core/plugins/admin/fai/class_faiManagement.inc
index 1c9b4347e7a4e334e52109084e929dc888ce33fc..31f7c99cce4586e225bfddcd8f5f9cedc442e738 100644 (file)
if($ldap->count()){
$ldap->cd ($appdst);
$ldap->recursive_remove();
- $ldap->cd ($this->config->current['BASE']);
- $ldap->copy_FAI_resource_recursive($appsrc,$appdst,$NewReleaseName,$type,true);
+ $this->copy_FAI_resource_recursive($appsrc,$appdst,$NewReleaseName,$type,true);
}
/* Duplicate mime types
if($ldap->count()){
$ldap->cd ($mimedst);
$ldap->recursive_remove();
- $ldap->cd ($this->config->current['BASE']);
- $ldap->copy_FAI_resource_recursive($mimesrc,$mimedst,$NewReleaseName,$type,true);
+ $this->copy_FAI_resource_recursive($mimesrc,$mimedst,$NewReleaseName,$type,true);
}
$attr = array();
*/
// $ldap->cd ("ou=".$name.",".$baseToUse);
// $ldap->recursive_remove();
- // $ldap->cd ($this->config->current['BASE']);
- // $ldap->copy_FAI_resource_recursive($baseToUse,"ou=".$name.",".$baseToUse,$NewReleaseName,$type,true);
+ // $this->copy_FAI_resource_recursive($baseToUse,"ou=".$name.",".$baseToUse,$NewReleaseName,$type,true);
echo "<div style='width:100%;text-align:right;'><form name='form' method='post' action='?plug=".$_GET['plug']."' target='_parent'>
<br><input type='submit' name='CloseIFrame' value='"._("Continue")."'>
}
+ /*! \brief Create a new FAI branch.
+ * @param $sourcedn String The source release dn
+ * @param $destinationdn String The destination dn
+ * @param $destinationName String The name of the new release
+ * @param $type String The release type (freeze/branch)
+ * @param $is_first Boolean Use to identify the first func. call when recursivly called.
+ * @param $depth Integer Current depth of recursion.
+ */
+ function copy_FAI_resource_recursive($sourcedn,$destinationdn,$destinationName,$type="branch",$is_first = true,$depth=0)
+ {
+ global $config;
+ error_reporting(E_ALL | E_STRICT);
+ $ldap = $config->get_ldap_link();
+ $basedn = $config->current['BASE'];
+ $delarray = array();
+
+ /* The following code will output a status string
+ * for each handled object, in a seperate iframe.
+ */
+
+
+ /* Display current action information.
+ */
+ if($is_first){
+ echo "<h2>".sprintf(_("Creating copy of %s"),"<i>".LDAP::fix($sourcedn)."</i>")."</h2>";
+ }else{
+ if(preg_match("/^ou=/",$sourcedn)){
+ echo "<h3>"._("Processing")." <i>".LDAP::fix($destinationdn)."</i></h3>";
+ }else{
+ $tmp = split(",",$sourcedn);
+ echo " <b>"._("Object").":</b> ";
+ $deststr = LDAP::fix($destinationdn);
+ if(strlen($deststr) > 96){
+ $deststr = substr($deststr,0,96)."...";
+ }
+ echo $deststr."<br>";
+ }
+ }
+ /* .. immediately display infos */
+ flush();
+
+ /* Check if destination entry already exists
+ */
+ $ldap->cat($destinationdn);
+ if($ldap->count()){
+ echo _("Could not create new release, the destination dn is already in use.");
+ return;
+ }else{
+
+ $ldap->clearResult();
+
+ /* Get source entry
+ * if it does not exist, abort here.
+ */
+ $ldap->cd($basedn);
+ $ldap->cat($sourcedn);
+ $attr = $ldap->fetch();
+ if((!$attr) || (count($attr)) ==0) {
+ echo _("Error while fetching source dn - aborted!");
+ return;
+ }
+
+ /* The current object we want to create is an department.
+ * Create the department and add the FAIbranch tag.
+ */
+ if(in_array("organizationalUnit",$attr['objectClass'])){
+ $attr['dn'] = LDAP::convert($destinationdn);
+ $ldap->cd($basedn);
+ $ldap->create_missing_trees($destinationdn);
+ $ldap->cd($destinationdn);
+
+ /* If is first entry, append FAIbranch to department entry */
+ if($is_first){
+ $ldap->cat($destinationdn);
+ $attr= $ldap->fetch();
+
+ /* Filter unneeded informations */
+ foreach($attr as $key => $value){
+ if(is_numeric($key)) unset($attr[$key]);
+ if(isset($attr[$key]['count'])){
+ if(is_array($attr[$key])){
+ unset($attr[$key]['count']);
+ }
+ }
+ }
+
+ unset($attr['count']);
+ unset($attr['dn']);
+
+ /* Add marking attribute */
+ $attr['objectClass'][] = "FAIbranch";
+
+ /* Add this entry */
+ $ldap->modify($attr);
+ }
+ }else{
+
+ /* Replicate all relevant FAI objects here.
+ * FAI objects, Apps and Mimetypes.
+ * Get all attributes as binary value, to ensure that Icon, File template aso
+ * are created correctly.
+ */
+ foreach($attr as $key => $value){
+
+# Seems to be obsolete 01.2008 Hickert
+# if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){
+ if(in_array($key ,array("gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){
+ $sr= ldap_read($ldap->cid, LDAP::fix($sourcedn), "$key=*", array($key));
+ $ei= ldap_first_entry($ldap->cid, $sr);
+ if ($tmp= @ldap_get_values_len($ldap->cid, $ei,$key)){
+ $attr[$key] = $tmp;
+ }
+ }
+
+ if(is_numeric($key)) unset($attr[$key]);
+ if(isset($attr[$key]['count'])){
+ if(is_array($attr[$key])){
+ unset($attr[$key]['count']);
+ }
+ }
+}
+unset($attr['count']);
+unset($attr['dn']);
+
+# Seems to be obsolete 01.2008 Hickert
+# /* Add FAIstate attribute to all FAI objects.
+# */
+# if((!in_array("gosaApplication" , $attr['objectClass'])) && (!in_array("gotoMimeType", $attr['objectClass']))){
+# $attr['FAIdebianRelease'] = $destinationName;
+# if($type=="branch"){
+# $attr['FAIstate'] ="branch";
+# }elseif($type=="freeze"){
+# $attr['FAIstate'] ="freeze";
+# }else{
+# msg_dialog::display(_("Internal error"), sprintf(_("FAIstate '%s' is unknown!"),$type), ERROR_DIALOG);
+# }
+# }
+#
+# /* Replace FAIdebianRelease with new release name.
+# */
+# if(in_array("FAIpackageList" , $attr['objectClass'])){
+# $attr['FAIdebianRelease'] = $destinationName;
+# }
+
+/* Add entry
+ */
+$ldap->cd($destinationdn);
+$ldap->cat($destinationdn);
+
+$a = $ldap->fetch();
+if(!count($a)){
+ $ldap->add($attr);
+}
+
+if($ldap->error != "Success"){
+
+ /* Some error occurred */
+ print "---------------------------------------------";
+ print $ldap->get_error()."<br>";
+ print $sourcedn."<br>";
+ print $destinationdn."<br>";
+ print_a( $attr);
+ exit();
+}
+}
+}
+
+echo "<script language=\"javascript\" type=\"text/javascript\">scrollDown2();</script>" ;
+
+/* Prepare for recursive copy.
+ * Get all object within the source dn and
+ * call the recursive copy for each.
+ */
+$ldap->ls ("(objectClass=*)",$sourcedn);
+while ($ldap->fetch()){
+ $deldn= $ldap->getDN();
+ $delarray[$deldn]= strlen($deldn);
+}
+asort ($delarray);
+reset ($delarray);
+$depth ++;
+foreach($delarray as $dn => $bla){
+ if($dn != $destinationdn){
+ $ldap->cd($basedn);
+ $item = $ldap->fetch($ldap->cat($dn));
+ if(!in_array("FAIbranch",$item['objectClass'])){
+ $this->copy_FAI_resource_recursive($dn,str_replace($sourcedn,$destinationdn,$dn),$destinationName,$type,false,$depth);
+ }
+ }
+}
+if($is_first){
+ echo "<p class='seperator'> </p>";
+}
+}
+
+
+
+
/* Return plugin informations for acl handling */
static function plInfo()
{