X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Fgoto%2Fadmin%2Fmimetypes%2Fclass_mimetypeGeneric.inc;h=bd8f4cae6a082ecf4da9fc3aaf88e35a92209592;hb=3c58cac687b97e3b73cff19341d3c7af95f64932;hp=4bd6e9d0bb3f66d12a6ba48699782a20554d497f;hpb=5b267fd21af230699c47710ed4be472cdf7f895c;p=gosa.git diff --git a/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc b/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc index 4bd6e9d0b..bd8f4cae6 100644 --- a/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc +++ b/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc @@ -37,8 +37,7 @@ class mimetype extends plugin var $DivApps = NULL; var $DivEApps = NULL; - /* Mime type release mode */ - var $isReleaseMimeType = false; + var $FAIstate =""; /* These vars will be copied too, if you use copy&paste mode */ var $CopyPasteVars = array("use_gotoMimeFilePattern","use_gotoMimeApplication","use_gotoMimeEmbeddedApplication","iconData", @@ -52,6 +51,7 @@ class mimetype extends plugin /* Orig_Dn is used to verify if this object is new or only edited */ var $orig_dn = ""; + var $orig_base = ""; function mimetype(&$config,$dn= NULL) { @@ -106,7 +106,7 @@ class mimetype extends plugin $tmp = array(); for($i = 0 ; $i < $this->attrs[$attr]['count'] ; $i ++){ $str = $this->attrs[$attr][$i]; - $tmp2= split("\|",$str); + $tmp2= explode("|",$str); if(count($tmp2) == 2){ $name = $tmp2[0]; @@ -120,12 +120,6 @@ class mimetype extends plugin } } - /* Check if release Management is enabled */ - $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); - if(!empty($tmp)) { - $this->isReleaseMimeType= true; - } - /* Set base */ if ($this->dn == "new"){ if(session::is_set('CurrentMainBase')){ @@ -135,7 +129,7 @@ class mimetype extends plugin $this->base= dn2base($ui->dn); } } else { - $this->base= preg_replace ("/^[^,]+,[^,]+,/", "", $this->dn); + $this->base= preg_replace ("/^.*,".preg_quote(get_ou("mimetypeRDN"), '/')."/i", "", $this->dn); } /* Get icon data */ @@ -149,6 +143,7 @@ class mimetype extends plugin } session::set('binary',$this->iconData); session::set('binarytype',"image/jpeg"); + $this->orig_base = $this->base; } @@ -163,40 +158,9 @@ class mimetype extends plugin $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation){ - $smarty->assign($name."ACL",$this->getacl($name)); - } - - /* Base select dialog */ - $once = true; - foreach($_POST as $name => $value){ - if(preg_match("/^chooseBase/",$name) && $once){ - $once = false; - $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); - $this->dialog->setCurrentBase($this->base); - } - } - - /* Dialog handling */ - if(is_object($this->dialog)){ - - /* Must be called before save_object */ - $this->dialog->save_object(); - - if($this->dialog->isClosed()){ - $this->dialog = false; - }elseif($this->dialog->isSelected()){ - - /* A new base was selected, check if it is a valid one */ - $tmp = $this->get_allowed_bases(); - if(isset($tmp[$this->dialog->isSelected()])){ - $this->base = $this->dialog->isSelected(); - } - - $this->dialog= false; - }else{ - return($this->dialog->execute()); - } + $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/i",$this->FAIstate))); } + $smarty->assign("IconReadable", preg_match("/r/",$this->getacl("gotoMimeIcon",preg_match("/freeze/i",$this->FAIstate)))); /* Check Posts */ $posts = array( @@ -212,81 +176,84 @@ class mimetype extends plugin $once = true; /* Walk through posts and try to find some commands for us. */ - foreach($_POST as $name => $value){ - - /* Walk through possible commands */ - foreach($posts as $regex => $action){ - - /* Check if there is a command posted */ - if(preg_match($regex,$name) && $once){ - $once = false; - - /* Get action vars */ - $func = $action['Func']; // Get function name - $attr = $action['Attr']; // Get attribute name - - /* Get entry id */ - $s_entry = preg_replace($regex,"",$name); - $s_entry = preg_replace("/_[xy]$/","",$s_entry); - - /* Execute a command with the given attribute and entry - e.g. $this->gotoMimeFilePattern = $this->ArrayUp(3,$this->gotoMimeFilePattern) */ - if($this->acl_is_writeable($attr)){ - $this->$attr= $this->$func($s_entry,$this->$attr,true); + if(!preg_match("/freeze/i",$this->FAIstate)){ + foreach($_POST as $name => $value){ + + /* Walk through possible commands */ + foreach($posts as $regex => $action){ + + /* Check if there is a command posted */ + if(preg_match($regex,$name) && $once){ + $once = false; + + /* Get action vars */ + $func = $action['Func']; // Get function name + $attr = $action['Attr']; // Get attribute name + $acl_a = preg_replace("/^use_/","",$action['Attr']); // Get attribute name + + /* Get entry id */ + $s_entry = preg_replace($regex,"",$name); + $s_entry = preg_replace("/_[xy]$/","",$s_entry); + + /* Execute a command with the given attribute and entry + e.g. $this->gotoMimeFilePattern = $this->ArrayUp(3,$this->gotoMimeFilePattern) */ + if($this->acl_is_writeable($acl_a)){ + $this->$attr= $this->$func($s_entry,$this->$attr,true); + } } } } - } - /* Set a new icon was requested */ - if(isset($_POST['update_icon']) && (isset($_FILES['picture_file']['name']))){ - $this->set_new_picture($_FILES['picture_file']['tmp_name']); - } - - /* Add gotoMimeFilePattern */ - if(isset($_POST['AddNewFilePattern']) && isset($_POST['NewFilePattern'])){ - if($this->acl_is_writeable("gotoMimeFilePattern")){ - $str = $_POST['NewFilePattern']; - if(!empty($str)){ - $this->use_gotoMimeFilePattern[] = $str; - } - } - } - - /* Add gotoMimeFilePattern */ - if(isset($_POST['AddNewApplication']) && - (isset($_POST['NewApplication']) || isset($_POST['NewApplicationSelect']))){ - if($this->acl_is_writeable("gotoMimeApplication")){ - $str = ""; - if(isset($_POST['NewApplicationSelect']) && !empty($_POST['NewApplicationSelect'])){ - $str = get_post("NewApplicationSelect"); - } - if(isset($_POST['NewApplication']) && !empty($_POST['NewApplication'])){ - $str = get_post("NewApplication"); - } - if(!empty($str) && !in_array($str,$this->use_gotoMimeApplication)){ - $this->use_gotoMimeApplication[] = $str; - } + /* Set a new icon was requested */ + if(isset($_POST['update_icon']) && (isset($_FILES['picture_file']['name']))){ + $this->set_new_picture($_FILES['picture_file']['tmp_name']); } - } - /* Add embedded application - * - From input or from select box - */ - if(isset($_POST['AddNewEmbeddedApplication']) && - (isset($_POST['NewEmbeddedApplication']) || isset($_POST['NewEmbeddedApplicationSelect']))){ - if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){ - $str = ""; - if(isset($_POST['NewEmbeddedApplicationSelect']) && !empty($_POST['NewEmbeddedApplicationSelect'])){ - $str = get_post('NewEmbeddedApplicationSelect'); + /* Add gotoMimeFilePattern */ + if(isset($_POST['AddNewFilePattern']) && isset($_POST['NewFilePattern'])){ + if($this->acl_is_writeable("gotoMimeFilePattern")){ + $str = trim($_POST['NewFilePattern']); + if($str != ""){ + $this->use_gotoMimeFilePattern[] = $str; + } } - if(isset($_POST['NewEmbeddedApplication']) && !empty($_POST['NewEmbeddedApplication'])){ - $str = get_post('NewEmbeddedApplication'); + } + + /* Add gotoMimeFilePattern */ + if(isset($_POST['AddNewApplication']) && + (isset($_POST['NewApplication']) || isset($_POST['NewApplicationSelect']))){ + if($this->acl_is_writeable("gotoMimeApplication")){ + $str = ""; + if(isset($_POST['NewApplicationSelect']) && !empty($_POST['NewApplicationSelect'])){ + $str = trim(get_post("NewApplicationSelect")); + } + if(isset($_POST['NewApplication']) && !empty($_POST['NewApplication'])){ + $str = trim(get_post("NewApplication")); + } + if($str != "" && !in_array($str,$this->use_gotoMimeApplication)){ + $this->use_gotoMimeApplication[] = $str; + } } - if(!empty($str) && !in_array($str,$this->use_gotoMimeEmbeddedApplication)){ - $this->use_gotoMimeEmbeddedApplication[] = $str; + } + + /* Add embedded application + * - From input or from select box + */ + if(isset($_POST['AddNewEmbeddedApplication']) && + (isset($_POST['NewEmbeddedApplication']) || isset($_POST['NewEmbeddedApplicationSelect']))){ + if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){ + $str = ""; + if(isset($_POST['NewEmbeddedApplicationSelect']) && !empty($_POST['NewEmbeddedApplicationSelect'])){ + $str = trim(get_post('NewEmbeddedApplicationSelect')); + } + if(isset($_POST['NewEmbeddedApplication']) && !empty($_POST['NewEmbeddedApplication'])){ + $str = trim(get_post('NewEmbeddedApplication')); + } + if($str != "" && !in_array($str,$this->use_gotoMimeEmbeddedApplication)){ + $this->use_gotoMimeEmbeddedApplication[] = $str; + } } - } + } } /* Create divlists */ @@ -298,7 +265,7 @@ class mimetype extends plugin $DivEApps -> SetHeight(100); - if($this->acl_is_writeable("gotoMimeFilePattern")){ + if($this->acl_is_writeable("gotoMimeFilePattern") && !preg_match("/freeze/i",$this->FAIstate)){ $Pattern_Actions= "     "; @@ -306,7 +273,7 @@ class mimetype extends plugin $Pattern_Actions= ""; } - if($this->acl_is_writeable("gotoMimeApplication")){ + if($this->acl_is_writeable("gotoMimeApplication") && !preg_match("/freeze/i",$this->FAIstate)){ $Apps_Actions = "     "; @@ -314,7 +281,7 @@ class mimetype extends plugin $Apps_Actions= ""; } - if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){ + if($this->acl_is_writeable("gotoMimeEmbeddedApplication") && !preg_match("/freeze/i",$this->FAIstate)){ $EApps_Actions = "     "; @@ -350,7 +317,7 @@ class mimetype extends plugin } $smarty->assign("bases", $this->get_allowed_bases()); $smarty->assign("base_select", $this->base); - $smarty->assign("isReleaseMimeType", $this->isReleaseMimeType); + $smarty->assign("isReleaseMimeType", $this->is_release()); $smarty->assign("gotoMimeFilePatterns", $DivPatterns->DrawList()); $smarty->assign("gotoMimeApplications", $DivApps->DrawList()); $smarty->assign("gotoMimeEmbeddedApplications", $DivEApps->DrawList()); @@ -376,7 +343,7 @@ class mimetype extends plugin function save_object() { - if(isset($_POST['MimeGeneric'])){ + if(isset($_POST['MimeGeneric']) && !preg_match("/freeze/i",$this->FAIstate)){ /* Create a base backup and reset the base directly after calling plugin::save_object(); @@ -386,7 +353,7 @@ class mimetype extends plugin $this->base = $base_tmp; /* Only save base if we are not in release mode */ - if(!$this->isReleaseMimeType){ + if(!$this->is_release()){ /* Set new base if allowed */ $tmp = $this->get_allowed_bases(); @@ -529,7 +496,7 @@ class mimetype extends plugin function check() { $message = plugin::check(); - if(empty($this->cn)){ + if($this->cn == "" ){ $message[] = msgPool::required(_("Name")); } if(!count($this->use_gotoMimeFilePattern)){ @@ -540,38 +507,39 @@ class mimetype extends plugin $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current["BASE"]); - $mimefilter = session::get('mimefilter'); - - if($this->isReleaseMimeType && (isset($mimefilter['release']))){ - $baseDn = str_replace($this->config->current['BASE'],$this->base,$mimefilter['release']); - $baseDn = preg_replace("/".get_ou('mimetypeou').".*/",get_ou('mimetypeou').$this->base,$mimefilter['release']); - $ldap->ls("(&(objectClass=gotoMimeType)(cn=".$this->cn."))",$baseDn,array("cn")); - if($ldap->count()){ - $attrs = $ldap->fetch(); - if($this->dn != $attrs['dn']) { - $message[]= msgPool::duplicated(_("Name")); - } - } + if($this->is_release()){ + $base = $this->parent->parent->mime_release; }else{ - $ldap->ls("(&(objectClass=gotoMimeType)(cn=".$this->cn."))",get_ou('mimetypeou').$this->base,array("cn")); - if ($ldap->count()){ - $attrs = $ldap->fetch(); - if($this->dn != $attrs['dn']) { - $message[]= msgPool::duplicated(_("Name")); - } + $base = get_ou("mimetypeRDN").$this->base; + } + + $ldap->ls("(&(objectClass=gotoMimeType)(cn=".$this->cn."))",$base,array("cn")); + if($ldap->count()){ + $attrs = $ldap->fetch(); + if($this->dn != $attrs['dn']) { + $message[]= msgPool::duplicated("cn"); } } + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + return($message); } + /** Helper functions **/ /* Set a new picture */ function set_new_picture($filename) { if (empty($filename)){ - $filename= "./images/default_icon.png"; + $filename= "./plugins/goto/images/default_icon.png"; $this->use_gotoMimeIcon= "*removed*"; }else{ $this->use_gotoMimeIcon= $filename; @@ -734,6 +702,22 @@ class mimetype extends plugin } + + function is_release() + { + if(is_object($this->parent->parent)){ + return($this->parent->parent->IsReleaseManagementActivated()); + }else{ + /* Check if we should enable the release selection */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); + } + } + return(FALSE); + } + + function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source);