From d70dbf60d7601cb8f3d1b2a43ac20ac11d000de7 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 22 Sep 2009 13:33:33 +0000 Subject: [PATCH] Updated licenses git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14314 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../opsiLicenses/class_licenceGeneric.inc | 343 +++--------------- .../opsiLicenses/class_opsiLicenseHandler.inc | 13 +- .../opsi/admin/opsiLicenses/generic.tpl | 85 ----- 3 files changed, 66 insertions(+), 375 deletions(-) delete mode 100644 gosa-plugins/opsi/admin/opsiLicenses/generic.tpl diff --git a/gosa-plugins/opsi/admin/opsiLicenses/class_licenceGeneric.inc b/gosa-plugins/opsi/admin/opsiLicenses/class_licenceGeneric.inc index eacafcd14..7473f68ff 100644 --- a/gosa-plugins/opsi/admin/opsiLicenses/class_licenceGeneric.inc +++ b/gosa-plugins/opsi/admin/opsiLicenses/class_licenceGeneric.inc @@ -21,172 +21,82 @@ */ -class licenseGeneric extends plugin { +class licenseGeneric extends plugin +{ - // The variables this plugin takes care of. - var $cn = ""; - var $description =""; - var $telephoneNumber = ""; - var $facsimileTelephoneNumber = ""; + var $orig_dn = ""; + var $data = array(); + var $orig_data = array(); - // The objects base - var $base = ""; - - // Keep track if possible ng aming modifications - var $orig_dn = ""; - var $orig_cn = ""; - var $orig_base = ""; - - // The object classes written by this plugin - var $objectclasses = array("top","organizationalLicense"); - - // The list of occupants ([dn]) - var $licenseOccupant = array(); - - // The licenseOccupant cache, dn=>attrs - var $licenseOccCache = array(); - - // A list of attributes managed by this plugin - var $attributes = array("cn","description", - "telephoneNumber","facsimileTelephoneNumber","licenseOccupant"); - + var $productIds = array(); + var $softwareIds= array(); - /* Initialize the class - */ - function __construct($config,$dn){ - plugin::plugin($config,$dn); - $this->is_account = TRUE; - - // Initialize list of occupants - $this->licenseOccupant = array(); - if(isset($this->attrs['licenseOccupant'])){ - for($i=0;$i<$this->attrs['licenseOccupant']['count']; $i++){ - $this->licenseOccupant[] = $this->attrs['licenseOccupant'][$i]; - } - } - // Detect the objects base - if ($this->dn == "new"){ - $this->base = session::get('CurrentMainBase'); - } else { - $this->base= preg_replace("/^[^,]+,".preg_quote(get_ou("licenseRDN"), '/i')."/","",$this->dn); - } + var $attributes =array("cn","description"); - // Keep track of naming attribute modifications - $this->orig_base = $this->base; - $this->orig_dn = $dn; - $this->orig_cn = $this->cn; + function __construct(&$config,$dn) + { + $this->config = $config; + $this->dn = $this->orig_dn = $dn; - // Reload the occupant cache. - $this->reload(); + // Extract pool name out of the fake dn. + $this->cn = preg_replace("/^opsi:cn=([^,]*),.*$/","\\1",$dn); + $this->init(); } - - /* Keep occupant cache up to date. - * Else, we may have entries we can't display. - */ - function reload() - { - // Entries can't be added twice. - $attrs = array("description", "objectClass", "uid","cn"); - $this->licenseOccupant = array_unique($this->licenseOccupant); - $this->licenseOccupant = array_values($this->licenseOccupant); - $ldap = $this->config->get_ldap_link(); - foreach($this->licenseOccupant as $dn){ - if(!isset($this->licenseOccCache[$dn])){ - if($ldap->dn_exists($dn)){ - $ldap->cat($dn, $attrs); + function init() + { + $si = new opsiLicenceHandler($this->config); + $res = $si->getPool($this->cn); + if($si->is_error()){ + $this->init_successfull = FALSE; + return(FALSE); + }else{ + $this->data = $this->orig_data = $res; + $this->description = $this->data['description'][0]; - $tmp = $ldap->fetch(); - if(!isset($tmp['cn'])){ - - // Extract the namingAttribute out of the dn. - $cn = preg_replace("/^[^=]*+=([^,]*).*$/","\\1",$tmp['dn']); - if(isset($tmp['uid'])){ - $cn = $tmp['uid'][0]; - } - if(isset($tmp['description'])){ - $cn.= " [".$tmp['description'][0]."]"; - } - $tmp['cn'][0] = $cn; - } + // Load software IDs + if(isset($this->data['softwareId'])){ + for($i = 0; $i < $this->data['softwareId']['count']; $i++){ + $this->softwareIds[] = $this->data['softwareId'][$i]; + } + } - $this->licenseOccCache[$dn] = $tmp; + // Load product IDs + if(isset($this->data['productId'])){ + for($i = 0; $i < $this->data['productId']['count']; $i++){ + $this->productIds[] = $this->data['productId'][$i]; } } + $this->init_successfull = TRUE; + return; } - } - - function getOccupants(){ - return($this->licenseOccupant); - } - /* Generate HTML output of this plugin. - */ function execute() { - // Get list of possible ldap bases, will be selectable in the ui. - $tmp = $this->allowedBasesToMoveTo(); - - - /*************** - * Dialog handling - ***************/ - - if(isset($_POST['edit_membership']) && !$this->dialog instanceOf plugin){ - $this->dialog = new occupantSelect($this->config,$this->dn,$this); - } - if(isset($_POST['delete_membership']) && !$this->dialog instanceOf plugin){ - if(isset($_POST['members'])){ - foreach($_POST['members'] as $id){ - if(isset($this->licenseOccupant[$id])){ - unset($this->licenseOccupant[$id]); - } - } - $this->reload(); - } + // Handle initialization failures. + if(isset($_POST['retry_init'])) $this->init(); + if(!$this->init_successfull){ + $smarty = get_smarty(); + $smarty->assign("init_successfull", $this->init_successfull); + return($smarty->fetch(get_template_path('licenseGeneric.tpl',TRUE,dirname(__FILE__)))); } - if(isset($_POST['add_object_cancel']) && $this->dialog instanceOf plugin){ - $this->dialog = NULL; - } - if(isset($_POST['add_object_finish']) && $this->dialog instanceOf plugin){ - $ret = $this->dialog->save(); - foreach($ret as $key => $entry){ - $this->licenseOccupant[] = $entry['dn']; - $this->licenseOccCache[$entry['dn']] = $entry['attrs']; - } - $this->reload(); - $this->dialog = NULL; - } + $smarty = get_smarty(); - if($this->dialog instanceOf plugin){ - $this->dialog->save_object(); - return($this->dialog->execute()); + // Assign ACls + $plInfo = $this->plInfo(); + foreach($plInfo['plProvidedAcls'] as $name => $desc){ + $smarty->assign("{$name}ACL",$this->getacl($name)); } - - - /*************** - * Template handling - ***************/ - - // Get smarty instance and assign required variables. - $smarty = get_smarty(); - $smarty->assign("bases", $tmp); - $smarty->assign("base_select",$this->base); - $smarty->assign("members",$this->convert_list()); foreach($this->attributes as $attr){ $smarty->assign($attr,$this->$attr); } - // Assign current permissions for each attribute. - $tmp = $this->plInfo(); - foreach($tmp['plProvidedAcls'] as $attr => $desc){ - $smarty->assign($attr."ACL",$this->getacl($attr)); - } + $smarty->assign("init_successfull", $this->init_successfull); return($smarty->fetch(get_template_path('licenseGeneric.tpl',TRUE,dirname(__FILE__)))); } @@ -196,74 +106,15 @@ class licenseGeneric extends plugin { function check() { $message = plugin::check(); - - // Set the new acl base - if($this->dn == "new") { - $this->set_acl_base($this->base); - } - - // Check if we are allowed to create/move this user - if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ - $message[]= msgPool::permCreate(); - }elseif($this->orig_dn != "new" && - !$this->acl_is_moveable($this->base) && - ($this->orig_base != $this->base || $this->orig_cn != $this->cn )){ - $message[]= msgPool::permMove(); - } - - /* must: cn */ - if ($this->cn == ""){ - $message[]= msgPool::required(_("Name")); - } - - // Check if this name is uniq for licenses. - $ldap= $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->search("(&(objectClass=organizationalLicense)(cn=$this->cn))", array("cn")); - $ldap->fetch(); - if ($ldap->count() != 0 && ( $this->dn == 'new' || $this->cn != $this->orig_cn)){ - $message[]= msgPool::duplicated(_("Name")); - } - return($message); } - /* Returns list of occupants as \n"; - } - return ($temp); - } - /* Removes the object from the ldap database */ function remove_from_parent() { - plugin::remove_from_parent(); - - // Remove this object. - $ldap= $this->config->get_ldap_link(); - $ldap->rmdir($this->dn); - if (!$ldap->success()){ - msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); - } - // Log action. new log("remove","licenses/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); @@ -274,41 +125,19 @@ class licenseGeneric extends plugin { /* Saves object modifications */ - function save(){ + function save() + { plugin::save(); - /* Save data. Using 'modify' implies that the entry is already present, use 'add' for - new entries. So do a check first... */ - $ldap = $this->config->get_ldap_link(); - $ldap->cat ($this->dn, array('dn')); - if ($ldap->fetch()){ - $mode= "modify"; - } else { - $mode= "add"; - $ldap->cd($this->config->current['BASE']); - $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); - } - @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save via $mode"); - // Finally write data with selected 'mode' - $this->cleanup(); - $ldap->cd ($this->dn); - $ldap->$mode ($this->attrs); - if (!$ldap->success()){ - msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), - $this->dn, LDAP_MOD, get_class())); - return (1); + // Send modify/add events + $mode = "modify"; + if($this->orig_dn == "new"){ + $mode = "add"; } - // Send modify/add events $this->handle_post_events($mode); - // Update ACL dependencies too - if($this->dn != $this->orig_dn && $this->orig_dn != "new"){ - $tmp = new acl($this->config,$this->parent,$this->dn); - $tmp->update_acl_membership($this->orig_dn,$this->dn); - } - // Log action if($mode == "modify"){ new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); @@ -318,64 +147,15 @@ class licenseGeneric extends plugin { return 0; } - - - /* This avoids that users move themselves out of their rights. - */ - function allowedBasesToMoveTo() - { - $bases = $this->get_allowed_bases(); - return($bases); - } - - + + /* Save HTML inputs */ function save_object() { plugin::save_object(); - if(isset($_POST['base'])){ - $this->base = get_post('base'); - } } - - function PrepareForCopyPaste($source) - { - plugin::PrepareForCopyPaste($source); - - /* Load member objects */ - $this->licenseOccupant = array(); - if (isset($source['licenseOccupant'])){ - foreach ($source['licenseOccupant'] as $key => $value){ - if ("$key" != "count"){ - $value= @LDAP::convert($value); - $this->licenseOccupant["$value"]= "$value"; - } - } - } - $this->reload(); - } - - - function getCopyDialog() - { - $smarty = get_smarty(); - $smarty->assign("cn", $this->cn); - $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); - $ret = array(); - $ret['string'] = $str; - $ret['status'] = ""; - return($ret); - } - - function saveCopyDialog() - { - if(isset($_POST['cn'])){ - $this->cn = $_POST['cn']; - } - } - static function plInfo() { @@ -386,15 +166,10 @@ class licenseGeneric extends plugin { "plDepends" => array(), "plPriority" => 1, "plSection" => array("administration"), - "plCategory" => array("licenses" => array("description" => _("Licenses"), - "objectClass" => "organizationalLicense")), + "plCategory" => array("opsi"), "plProvidedAcls"=> array( "cn" => _("Name"), - "description" => _("Description"), - "base" => _("Base"), - "telephoneNumber" => _("Telefon number"), - "facsimileTelephoneNumber" => _("Fax number"), - "licenseOccupant" => _("Occupants")) + "description" => _("Description")) )); } } diff --git a/gosa-plugins/opsi/admin/opsiLicenses/class_opsiLicenseHandler.inc b/gosa-plugins/opsi/admin/opsiLicenses/class_opsiLicenseHandler.inc index bad066d42..6a3ea5bc9 100644 --- a/gosa-plugins/opsi/admin/opsiLicenses/class_opsiLicenseHandler.inc +++ b/gosa-plugins/opsi/admin/opsiLicenses/class_opsiLicenseHandler.inc @@ -85,19 +85,20 @@ class opsiLicenceHandler extends opsi { $data= array(); $data['licensePoolId'] = htmlentities($licensePoolId); $res = $this->send_data("gosa_opsi_getLicensePool_hash",$this->target,$data,TRUE); - - print_a($res); if(isset($res['XML'][0]['ANSWER_OPSI_GETLICENSEPOOL_HASH'])){ $item = array(); - foreach(array("LICENSEPOOLID" => "licensePoolId", + foreach(array("LICENSEPOOLID" => "cn", "DESCRIPTION" => "description", - "WINDOWSSOFTWAREIDS" => "windowsSoftwareIds", - "PRODUCTIDS" => "productIds") as $source => $target){ + "WINDOWSSOFTWAREIDS" => "softwareId", + "PRODUCTIDS" => "productId") as $source => $target){ if(isset($res['XML'][0][$source])){ + + $item[$target] = array('count' => 0); foreach($res['XML'][0][$source] as $data){ - $item[$target][] = $res['XML'][0][$source][0]['VALUE']; + $item[$target][] = $data['VALUE']; } + $item[$target]['count'] = count($item[$target]) -1 ; } } return($item); diff --git a/gosa-plugins/opsi/admin/opsiLicenses/generic.tpl b/gosa-plugins/opsi/admin/opsiLicenses/generic.tpl deleted file mode 100644 index bdf10f457..000000000 --- a/gosa-plugins/opsi/admin/opsiLicenses/generic.tpl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -
- -

  - {t}Generic{/t} -

- - - - - - - - - - - - - - - - - - - - - - - - - -
{t}Name{/t}{$must} - {render acl=$cnACL} - - {/render} -
{t}Description{/t} - {render acl=$descriptionACL} - - {/render} -
-
- -
-
- {render acl=$baseACL} - - {/render} - {render acl=$baseACL disable_picture='images/lists/folder_grey.png'} - - {/render} -

 


{t}Phone number{/t} - {render acl=$telephoneNumberACL} - - {/render} -
{t}Fax number{/t} - {render acl=$facsimileTelephoneNumberACL} - - {/render} -
- -
-

  - {t}Occupants{/t} -

- -{render acl=$licenseOccupantACL} - -{/render} -
-{render acl=$licenseOccupantACL} -   -{/render} -{render acl=$licenseOccupantACL} - -{/render} -
-- 2.30.2