diff --git a/gosa-plugins/opsi/admin/opsiLicenses/class_licenseGeneric.inc b/gosa-plugins/opsi/admin/opsiLicenses/class_licenseGeneric.inc
index d1048ac17e895e17d74442519900cb9190ef63f1..775adf0a6c9cdce1ebf0f58df3e2ecf496877269 100644 (file)
class licenseGeneric extends plugin
{
+ // License attributes
var $si = NULL;
var $data = array();
var $cn = "";
var $description = "";
var $partner = "";
+ // Date attributes
var $conclusionDate = "";
var $expirationDate = "";
var $notificationDate = "";
+ // License model related attribues
var $licenseModel = "";
var $licenseKey = array();
+ var $orig_licenseModel = "";
var $licensePoolId = "";
var $boundToHost= array(); // Reserved for Host.
var $usedByHost = array(); // Used by Host.
"notificationDate","licenseModel","licenseKey","maximumInstallations",
"licensePoolId", "usedByHost","boundToHost");
- function __construct(&$config, $license, $hosts = array())
+ function __construct(&$config, $dn, $license, $hosts = array())
{
+
$this->config = $config;
$this->data = $license;
+ $this->dn = $dn;
$this->si = new opsiLicenceHandler($this->config);
$this->opsiHosts = $hosts;
function init()
{
+ // Extract license information out of the license object ($this->data)
$this->boundToHost = array('0'=>"");
$this->usedByHost = array('0'=>"");
$this->licenseKey = array('0'=>"");
foreach($this->attributes as $attr){
$this->$attr = $this->data[$attr];
}
+
+ // Fix dates
+ foreach(array("notificationDate","expirationDate","conclusionDate") as $date) {
+ if(!empty($this->$date)){
+ $this->$date = date("d.m.Y",strtotime($this->$date));
+ }
+ }
}
$this->orig_cn = $this->cn;
+ $this->orig_licenseModel = $this->licenseModel;
$this->init_successfull = TRUE;
return;
}
function execute()
{
+ plugin::execute();
// Handle initialization failures.
if(isset($_POST['retry_init'])) $this->init();
if(!$this->init_successfull){
$smarty = get_smarty();
- // Assign ACls
+ // Assign attributes and its ACls
$plInfo = $this->plInfo();
foreach($plInfo['plProvidedAcls'] as $name => $desc){
$smarty->assign("{$name}ACL",$this->getacl($name));
$smarty->assign($attr,$this->$attr);
}
+ // Assign list of available license models
$smarty->assign("licenseModels",array(
"RETAIL" => _("Retail"),
"OEM"=>_("OEM"),
- "VOLUME" => _("Volume"),
- "CONCURRENT" => _("Concurrent")));
-
+ "VOLUME" => _("Volume")));
+ $smarty->assign("usePrototype", "true");
$smarty->assign("init_successfull", $this->init_successfull);
$smarty->assign("initially_was_account", $this->initially_was_account);
$smarty->assign("hosts", $this->getHosts());
+ $ui = get_userinfo();
+ $acl_base = $this->dn;
+ if($acl_base == "new"){
+ $acl_base = $this->config->current['BASE'];
+ }
+ $smarty->assign("licenseACL", $ui->get_permissions($acl_base,"opsi/licensePoolGeneric","licenses"));
+ $smarty->assign("writeable", preg_match("/w/",$ui->get_permissions($acl_base,"opsi/licensePoolGeneric","licenses")));
$smarty->assign("notUsedHosts", array_diff($this->getHosts(), $this->usedByHost));
$smarty->assign("boundToHost", $this->boundToHost[0]);
$smarty->assign("licenseKey", $this->licenseKey[0]);
+
+ // w3c fix, do not show empty options.
+ $tmp = $this->usedByHost;
+ if(isset($tmp[0]) && empty($tmp[0])) unset($tmp[0]);
+ $smarty->assign('usedByHost', $tmp);
+
+ foreach(array("notificationDate","expirationDate","conclusionDate") as $date) {
+ $smarty->assign($date."Writeable", $this->acl_is_writeable($date));
+ }
+
return($smarty->fetch(get_template_path('licenseGeneric.tpl',TRUE,dirname(__FILE__))));
}
if(isset($_POST['opsiLicensesPosted'])){
plugin::save_object();
+ if(isset($_POST['addLicenseUsage']) && isset($_POST['selectedHostToAdd'])){
+ $host = get_post('selectedHostToAdd');
+ if(!empty($host) &&
+ in_array($host,$this->getHosts()) &&
+ !in_array($host, $this->usedByHost)){
+ $this->usedByHost[] = $host;
+ }
+ }
+
+ if(isset($_POST['removeLicenseUsage']) && isset($_POST['selectedUsedHosts'])){
+ $todel = $_POST['selectedUsedHosts'];
+ foreach($todel as $host){
+ if(isset($this->usedByHost[$host])){
+ unset($this->usedByHost[$host]);
+ }
+ }
+ }
+
// Force licenseKey to be of type array.
- $this->licenseKey = array($this->licenseKey);
+ if(!is_array($this->licenseKey)){
+ $this->licenseKey = array($this->licenseKey);
+ }
// BoundToHost maybe multiple too, later.
- $this->boundToHost = array($this->boundToHost);
+ if(!is_array($this->boundToHost)){
+ $this->boundToHost = array($this->boundToHost);
+ }
if($this->initially_was_account){
$this->cn = $this->orig_cn;
+ $this->licenseModel = $this->orig_licenseModel;
}
}
}
// Very simple date input checks
if(!empty($this->expirationDate) &&
- !preg_match("/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/",$this->expirationDate)){
- $message[] = msgPool::invalid(_("Expiration date"),$this->expirationDate,"","2009-02-23");
+ !preg_match("/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/",$this->expirationDate)){
+ $message[] = msgPool::invalid(_("Expiration date"),$this->expirationDate,"","23.02.2009");
}
if(!empty($this->conclusionDate) &&
- !preg_match("/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/",$this->conclusionDate)){
- $message[] = msgPool::invalid(_("Expiration date"),$this->conclusionDate,"","2009-02-23");
+ !preg_match("/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/",$this->conclusionDate)){
+ $message[] = msgPool::invalid(_("Expiration date"),$this->conclusionDate,"","23.02.2009");
}
if(!empty($this->notificationDate) &&
- !preg_match("/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/",$this->notificationDate)){
- $message[] = msgPool::invalid(_("Expiration date"),$this->notificationDate,"","2009-02-23");
+ !preg_match("/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/",$this->notificationDate)){
+ $message[] = msgPool::invalid(_("Expiration date"),$this->notificationDate,"","23.02.2009");
}
if(empty($this->cn)){
$message[] = msgPool::required(_("Name"));
}
- if(empty($this->licenseKey)){
+ if(empty($this->licenseKey[0])){
$message[] = msgPool::required(_("License key"));
}
return($message);
}
-
/* Removes the object from the opsi database
*/
- function remove_from_parent()
- {
- echo "missing remove.";
-# $this->si->deletePool($this->orig_cn);
-# if($this->si->is_error()){
-# msg_dialog::display(_("Error"),msgPool::siError($this->si->get_error()),ERROR_DIALOG);
-# }else{
-#
-# // Trigger remove signal
-# $this->handle_post_events("remove");
-# }
-#
-# new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$this->si->get_error());
- }
+ function remove_from_parent() {}
/* Saves object modifications
foreach($this->attributes as $target){
$data[$target] = $this->$target;
}
+
+ // Return opsi like dates.
+ foreach(array("notificationDate","expirationDate","conclusionDate") as $date) {
+ if(!empty($this->$date)){
+ $data[$date] = date("Y-m-d",strtotime($this->$date));
+ }
+ }
+
return($data);
}
"plDescription" => _("License generic"),
"plSelfModify" => FALSE,
"plDepends" => array(),
- "plPriority" => 1,
+ "plPriority" => 8,
"plSection" => array("administration"),
"plCategory" => array("opsi"),
"plProvidedAcls"=> array(
- "cn" => _("Name"),
- "description" => _("Description"))
+ "cn" => _("Name"),
+ "partner" => _("Partner"),
+ "licenseKey" => _("License key"),
+ "licenseModel" => _("License model"),
+ "licensePoolId" => _("License pool id"),
+ "maximumInstallations"=> _("Maximum installations"),
+ "boundToHost" => _("Reserved for host"),
+ "usedByHost" => _("Usage"),
+ "notificationDate" => _("Notification date"),
+ "conclusionDate" => _("Conclusion date"),
+ "expirationDate" => _("Expiration date"),
+ "description" => _("Description"))
));
}
}