summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 00b174b)
raw | patch | inline | side by side (parent: 00b174b)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 29 Jul 2010 12:48:38 +0000 (12:48 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 29 Jul 2010 12:48:38 +0000 (12:48 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19237 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-plugins/goto/admin/devices/class_deviceGeneric.inc | patch | blob | history |
diff --git a/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc b/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc
index 3239adeb8fd047cc605166e192cc1209f011e162..f22223f7ec530fe3f338bb205470e18342ed1a28 100644 (file)
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:
?>