From: hickert Date: Thu, 29 Jul 2010 12:48:38 +0000 (+0000) Subject: Updated post handling X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=b515494261c0d61e0907bb22a8af35194d4178d9;p=gosa.git Updated post handling git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19237 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc b/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc index 3239adeb8..f22223f7e 100644 --- a/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc +++ b/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc @@ -2,306 +2,306 @@ class deviceGeneric extends plugin { - public $dn = ""; - public $cn = ""; - public $orig_cn = ""; - public $orig_base = ""; - public $orig_dn = ""; - public $description = ""; - public $vendor = ""; - public $devID = ""; - public $serial = ""; - public $base = ""; - public $types; - public $type; - public $baseSelector; - - public $attributes = array("cn","description","devID","serial","vendor", "type"); - public $objectclasses = array("top","gotoDevice"); - - public $CopyPasteVars = array("orig_cn","description","vendor","devID","serial","base"); - - public function deviceGeneric(&$config,$dn = NULL) - { - plugin::plugin($config,$dn); - - $this->is_account = TRUE; - - $this->types= array("camera" => _("Digital camera"), - "disc" => _("USB stick"), - "cdrom" => _("CD/DVD drive"),); - asort($this->types); - - /* Set class values */ - if(isset($this->attrs['gotoHotplugDevice'][0])){ - $tmp = preg_split("/\|/",$this->attrs['gotoHotplugDevice'][0]); - $this->cn = $this->attrs['cn'][0]; - $this->description= $tmp[0]; - $this->devID = $tmp[1]; - $this->serial = $tmp[2]; - $this->vendor = $tmp[3]; - if (isset($tmp[4])){ - $this->type= $tmp[4]; - } - } - - $this->orig_cn = $this->cn; - - /* Set Base */ - if ($this->dn == "new"){ - if(session::is_set('CurrentMainBase')){ - $this->base = session::get('CurrentMainBase'); - }else{ - $ui= get_userinfo(); - $this->base= dn2base($ui->dn); - } - } else { - $this->base =preg_replace ("/^[^,]+,".preg_quote(get_ou("deviceGeneric", "deviceRDN"), '/')."/i","",$this->dn); + public $dn = ""; + public $cn = ""; + public $orig_cn = ""; + public $orig_base = ""; + public $orig_dn = ""; + public $description = ""; + public $vendor = ""; + public $devID = ""; + public $serial = ""; + public $base = ""; + public $types; + public $type; + public $baseSelector; + + public $attributes = array("cn","description","devID","serial","vendor", "type"); + public $objectclasses = array("top","gotoDevice"); + + public $CopyPasteVars = array("orig_cn","description","vendor","devID","serial","base"); + + public function deviceGeneric(&$config,$dn = NULL) + { + plugin::plugin($config,$dn); + + $this->is_account = TRUE; + + $this->types= array("camera" => _("Digital camera"), + "disc" => _("USB stick"), + "cdrom" => _("CD/DVD drive"),); + asort($this->types); + + /* Set class values */ + if(isset($this->attrs['gotoHotplugDevice'][0])){ + $tmp = preg_split("/\|/",$this->attrs['gotoHotplugDevice'][0]); + $this->cn = $this->attrs['cn'][0]; + $this->description= $tmp[0]; + $this->devID = $tmp[1]; + $this->serial = $tmp[2]; + $this->vendor = $tmp[3]; + if (isset($tmp[4])){ + $this->type= $tmp[4]; + } + } + + $this->orig_cn = $this->cn; + + /* Set Base */ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base =preg_replace ("/^[^,]+,".preg_quote(get_ou("deviceGeneric", "deviceRDN"), '/')."/i","",$this->dn); + } + $this->orig_base = $this->base; + $this->orig_dn = $this->dn; + + /* Instanciate base selector */ + $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); + $this->baseSelector->setSubmitButton(false); + $this->baseSelector->setHeight(300); + $this->baseSelector->update(true); } - $this->orig_base = $this->base; - $this->orig_dn = $this->dn; - /* Instanciate base selector */ - $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); - $this->baseSelector->setSubmitButton(false); - $this->baseSelector->setHeight(300); - $this->baseSelector->update(true); - } + public function execute() + { + plugin::execute(); + $smarty = get_smarty(); - public function execute() - { - plugin::execute(); - $smarty = get_smarty(); + $smarty->assign("base", $this->baseSelector->render()); + foreach($this->attributes as $attr){ + $smarty->assign($attr,set_post($this->$attr)); + } - $smarty->assign("base", $this->baseSelector->render()); - foreach($this->attributes as $attr){ - $smarty->assign($attr,$this->$attr); - } - - $tmp = $this->plInfo(); - foreach($tmp['plProvidedAcls'] as $attr => $desc){ - $smarty->assign($attr."ACL", $this->getacl($attr)); + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $attr => $desc){ + $smarty->assign($attr."ACL", $this->getacl($attr)); + } + + $smarty->assign("type",set_post($this->type)); + $smarty->assign ("types", set_post($this->types)); + return($smarty->fetch(get_template_path("deviceGeneric.tpl",TRUE,dirname(__FILE__)))); } - $smarty->assign("type",$this->type); - $smarty->assign ("types", $this->types); - return($smarty->fetch(get_template_path("deviceGeneric.tpl",TRUE,dirname(__FILE__)))); - } - - public function check() - { - $message = plugin::check(); + public function check() + { + $message = plugin::check(); - if($this->cn == "" ||(preg_match("/[^a-z0-9]/i",$this->cn))){ - $message[]= msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9]*$/i"); - } - if(preg_match("/[^a-z0-9!\"?.,;:-_\(\) ]/i",$this->description)){ - $message[]= msgPool::invalid(_("Description"),$this->cn,"/^[a-z0-9!\"?.,;:-_\(\) ]*$/i"); - } + if($this->cn == "" ||(preg_match("/[^a-z0-9]/i",$this->cn))){ + $message[]= msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9]*$/i"); + } + if(preg_match("/[^a-z0-9!\"?.,;:-_\(\) ]/i",$this->description)){ + $message[]= msgPool::invalid(_("Description"),$this->cn,"/^[a-z0-9!\"?.,;:-_\(\) ]*$/i"); + } - /* Skip serial check if vendor and product id are given */ - if(preg_match("/^\s+$/i",$this->devID)){ - $message[]= msgPool::invalid(_("iSerial"),"","01234"); - }elseif(empty($this->devID) && $this->devID!="0"){ - $message[]= msgPool::required(_("iSerial")); - } - if(empty($this->serial) || !$this->is_2byteHex($this->serial)){ - $message[]= msgPool::invalid(_("Product-ID"),"","","0x1234"); - } - if(empty($this->vendor) || !$this->is_2byteHex($this->vendor)){ - $message[]= msgPool::invalid(_("Vendor-ID"),"","","0x1234"); - } + /* Skip serial check if vendor and product id are given */ + if(preg_match("/^\s+$/i",$this->devID)){ + $message[]= msgPool::invalid(_("iSerial"),"","01234"); + }elseif(empty($this->devID) && $this->devID!="0"){ + $message[]= msgPool::required(_("iSerial")); + } + if(empty($this->serial) || !$this->is_2byteHex($this->serial)){ + $message[]= msgPool::invalid(_("Product-ID"),"","","0x1234"); + } + if(empty($this->vendor) || !$this->is_2byteHex($this->vendor)){ + $message[]= msgPool::invalid(_("Vendor-ID"),"","","0x1234"); + } + + // Check if a wrong base was supplied + if(!$this->baseSelector->checkLastBaseUpdate()){ + $message[]= msgPool::check_base(); + } - // Check if a wrong base was supplied - if(!$this->baseSelector->checkLastBaseUpdate()){ - $message[]= msgPool::check_base(); + /* Check if entry already exists */ + if($this->cn != $this->orig_cn || $this->dn == "new"){ + $ldap = $this->config->get_ldap_link(); + $ldap->search("(&(objectClass=gotoDevice)(cn=".$this->cn."*))",array("cn")); + if($ldap->count()){ + $message[]= msgPool::duplicated(_("Name")); + } + } + + /* 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); } - - /* Check if entry already exists */ - if($this->cn != $this->orig_cn || $this->dn == "new"){ - $ldap = $this->config->get_ldap_link(); - $ldap->search("(&(objectClass=gotoDevice)(cn=".$this->cn."*))",array("cn")); - if($ldap->count()){ - $message[]= msgPool::duplicated(_("Name")); - } + + + public function save_object() + { + if(isset($_POST['deviceGeneric_posted'])){ + plugin::save_object(); + + /* Refresh base */ + if ($this->acl_is_moveable($this->base)){ + if (!$this->baseSelector->update()) { + msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); + } + if ($this->base != $this->baseSelector->getBase()) { + $this->base= $this->baseSelector->getBase(); + $this->is_modified= TRUE; + } + } + + } } - /* 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(); + + public function remove_from_parent() + { + plugin::remove_from_parent(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + $ldap->search("(&(objectClass=gotoEnvironment)(gotoHotplugDeviceDN=".$this->dn."))",array("cn","gotoHotplugDeviceDN")); + $skip = FALSE; + $obj = array(); + while($attrs = $ldap->fetch()){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + $skip =TRUE; + } + if($skip){ + msg_dialog::display(_("Error"), msgPool::stillInUse(_("Device"), $obj), INFO_DIALOG); + }else{ + $ldap->rmdir_recursive($this->dn); + } } - return($message); - } + public function save() + { + plugin::save(); - public function save_object() - { - if(isset($_POST['deviceGeneric_posted'])){ - plugin::save_object(); + /* Unset non ldap attributes + */ + foreach(array("devID","serial","vendor", "type", "description") as $name){ + if(isset($this->attrs[$name])){ + unset($this->attrs[$name]); + } + } - /* Refresh base */ - if ($this->acl_is_moveable($this->base)){ - if (!$this->baseSelector->update()) { - msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); + $this->attrs['gotoHotplugDevice'] = ""; + foreach(array("description","devID","serial","vendor", "type") as $post){ + $this->attrs['gotoHotplugDevice'] .= $this->$post."|"; } - if ($this->base != $this->baseSelector->getBase()) { - $this->base= $this->baseSelector->getBase(); - $this->is_modified= TRUE; + $this->attrs['gotoHotplugDevice'] = preg_replace("/\|$/","",$this->attrs['gotoHotplugDevice']); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($this->dn); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); } - } - } - } - - - public function remove_from_parent() - { - plugin::remove_from_parent(); - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - - $ldap->search("(&(objectClass=gotoEnvironment)(gotoHotplugDeviceDN=".$this->dn."))",array("cn","gotoHotplugDeviceDN")); - $skip = FALSE; - $obj = array(); - while($attrs = $ldap->fetch()){ - $obj[$ldap->getDN()]= $attrs['cn'][0]; - $skip =TRUE; + + + /* check if given str in like this 0xffff*/ + function is_2byteHex($str) + { + return !strlen($str) || preg_match("/^(0x|x|)[a-f0-9]{4}$/i",$str); } - if($skip){ - msg_dialog::display(_("Error"), msgPool::stillInUse(_("Device"), $obj), INFO_DIALOG); - }else{ - $ldap->rmdir_recursive($this->dn); + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + $source_o = new deviceGeneric($this->config,$source['dn']); + foreach($this->CopyPasteVars as $post){ + $this->$post = $source_o->$post; + } } - } - public function save() - { - plugin::save(); + /* Return a dialog with all fields that must be changed, + if we want to copy this entry */ + function getCopyDialog() + { + $str = ""; + $smarty = get_smarty(); + $smarty->assign("cn", set_post($this->cn)); + $str = $smarty->fetch(get_template_path("paste_deviceGeneric.tpl",TRUE,dirname(__FILE__))); - /* Unset non ldap attributes - */ - foreach(array("devID","serial","vendor", "type", "description") as $name){ - if(isset($this->attrs[$name])){ - unset($this->attrs[$name]); - } + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); } - $this->attrs['gotoHotplugDevice'] = ""; - foreach(array("description","devID","serial","vendor", "type") as $post){ - $this->attrs['gotoHotplugDevice'] .= $this->$post."|"; - } - $this->attrs['gotoHotplugDevice'] = preg_replace("/\|$/","",$this->attrs['gotoHotplugDevice']); - - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->cat($this->dn); - if($ldap->count()){ - $ldap->cd($this->dn); - $ldap->modify($this->attrs); - }else{ - $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$this->dn)); - $ldap->cd($this->dn); - $ldap->add($this->attrs); - } - if (!$ldap->success()){ - msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + + /* Save all */ + function saveCopyDialog() + { + $attrs = array("cn"); + foreach($attrs as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = get_post($attr); + } + } } - } - /* check if given str in like this 0xffff*/ - function is_2byteHex($str) - { - return !strlen($str) || preg_match("/^(0x|x|)[a-f0-9]{4}$/i",$str); - } + /* Return plugin informations for acl handling */ + public static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Device generic")." ("._("Hotplug").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plRequirements"=> array( + 'ldapSchema' => array('gotoDevice' => '>=2.7'), + 'onFailureDisablePlugin' => array(get_class(), 'deviceManagement') + ), + "plCategory" => array("devices" => array("description" => _("Devices"), + "objectClass" => "gotoDevice")), + "plProperties" => + array( + array( + "name" => "deviceRDN", + "type" => "rdn", + "default" => "ou=devices,", + "description" => _("The 'deviceRDN' statement defines the location where new devices will be created. The default is 'ou=devices,'."), + "check" => "gosaProperty::isRdn", + "migrate" => "migrate_deviceRDN", + "group" => "plugin", + "mandatory" => FALSE)), + + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "type" => _("Type"), + "serial" => _("Serial"), + "vendor" => _("Vendor"), + "devID" => _("Device ID")) + )); - function PrepareForCopyPaste($source) - { - plugin::PrepareForCopyPaste($source); - $source_o = new deviceGeneric($this->config,$source['dn']); - foreach($this->CopyPasteVars as $post){ - $this->$post = $source_o->$post; } - } - - - /* Return a dialog with all fields that must be changed, - if we want to copy this entry */ - function getCopyDialog() - { - $str = ""; - $smarty = get_smarty(); - $smarty->assign("cn", $this->cn); - $str = $smarty->fetch(get_template_path("paste_deviceGeneric.tpl",TRUE,dirname(__FILE__))); - - $ret = array(); - $ret['string'] = $str; - $ret['status'] = ""; - return($ret); - } - - - /* Save all */ - function saveCopyDialog() - { - $attrs = array("cn"); - foreach($attrs as $attr){ - if(isset($_POST[$attr])){ - $this->$attr = $_POST[$attr]; - } - } - } - - - - /* Return plugin informations for acl handling */ - public static function plInfo() - { - return (array( - "plShortName" => _("Generic"), - "plDescription" => _("Device generic")." ("._("Hotplug").")", - "plSelfModify" => FALSE, - "plDepends" => array(), - "plPriority" => 0, - "plSection" => array("administration"), - "plRequirements"=> array( - 'ldapSchema' => array('gotoDevice' => '>=2.7'), - 'onFailureDisablePlugin' => array(get_class(), 'deviceManagement') - ), - "plCategory" => array("devices" => array("description" => _("Devices"), - "objectClass" => "gotoDevice")), - "plProperties" => - array( - array( - "name" => "deviceRDN", - "type" => "rdn", - "default" => "ou=devices,", - "description" => _("The 'deviceRDN' statement defines the location where new devices will be created. The default is 'ou=devices,'."), - "check" => "gosaProperty::isRdn", - "migrate" => "migrate_deviceRDN", - "group" => "plugin", - "mandatory" => FALSE)), - - "plProvidedAcls"=> array( - "cn" => _("Name"), - "base" => _("Base"), - "description" => _("Description"), - "type" => _("Type"), - "serial" => _("Serial"), - "vendor" => _("Vendor"), - "devID" => _("Device ID")) - )); - - } - + } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>