From b564109efb02813ba2b131941eca805d443006a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Bernigaud?= Date: Mon, 7 Jan 2013 17:01:04 +0100 Subject: [PATCH] Fixes: #1715 sambaAccount shoud be using simplePlugin --- samba/personal/samba/class_sambaAccount.inc | 6 +++- samba/personal/samba/class_sambaLogonHours.inc | 43 +++++++++++++++++++---- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/samba/personal/samba/class_sambaAccount.inc b/samba/personal/samba/class_sambaAccount.inc index a62bec0..7fe996f 100644 --- a/samba/personal/samba/class_sambaAccount.inc +++ b/samba/personal/samba/class_sambaAccount.inc @@ -297,11 +297,15 @@ class sambaAccount2 extends simplePlugin ), new DateAttribute ( _('Account expiration'), _(''), - 'sambaKickoffTime', FALSE, 'U' + 'sambaKickoffTime', FALSE, 'U', '' ), new SambaFlagsAttribute ( 'sambaAcctFlags', array('flag_pwdExpire','flag_noPwdRequired','flag_lockSamba') + ), + new ButtonAttribute ( + _('Samba logon times'), _(''), + 'sambaLogonHours', 'SambaLogonHoursDialog', _('Edit settings…') ) ) ) diff --git a/samba/personal/samba/class_sambaLogonHours.inc b/samba/personal/samba/class_sambaLogonHours.inc index 9912b91..6ff48d5 100644 --- a/samba/personal/samba/class_sambaLogonHours.inc +++ b/samba/personal/samba/class_sambaLogonHours.inc @@ -25,7 +25,7 @@ class sambaLogonHours extends plugin var $sambaLogonHours = ""; var $Matrix = array(); - var $timezone = 0; + var $timezone = 0; var $config; var $acl; @@ -67,12 +67,12 @@ class sambaLogonHours extends plugin $new = substr($new,0,168); } - /* Create matrix */ + /* Create matrix */ $this->Matrix = array(); for($day = 0 ; $day < 7 ; $day ++ ){ for($hour = 0 ; $hour < 24 ; $hour ++){ $bitpos = ($day * 24 + $hour) % 168; - $this->Matrix[$day][$hour] = $new[$bitpos]; + $this->Matrix[$day][$hour] = $new[$bitpos]; } } } @@ -101,7 +101,7 @@ class sambaLogonHours extends plugin { /* Get userinfo */ $ui = get_userinfo(); - + /* Check if dialog was opened and if there were any changes */ if(isset($_POST['sambaLogonHoursPosted'])){ foreach($this->Matrix as $day_key => $days){ @@ -115,7 +115,7 @@ class sambaLogonHours extends plugin } } } - + function save() { @@ -133,7 +133,7 @@ class sambaLogonHours extends plugin $slh = $slh[167].$slh; $slh = substr($slh,0,168); } - + /* Rework string, because it was stored in little endian */ $new = ''; for($i = 0 ; $i < 21 ; $i ++ ){ @@ -151,7 +151,7 @@ class sambaLogonHours extends plugin /* Create uppercase HEX chars */ $ret = strtoupper( $tmp); - + /* All hours and days selected */ if(substr_count($ret,'F') == 42){ $ret = ""; @@ -160,5 +160,32 @@ class sambaLogonHours extends plugin return($ret); } } -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: + +class SambaLogonHoursDialog +{ + private $dialog; + private $sambaAttribute; + + function __construct ($simplePlugin, &$sambaAttribute) + { + $this->sambaAttribute = $sambaAttribute; + $this->dialog = new sambaLogonHours( + $simplePlugin->config, $simplePlugin->dn, $sambaAttribute->getValue(), + $simplePlugin->getacl('sambaLogonHours') + ); + } + + function execute () + { + if (isset($_POST['cancel_logonHours'])) { + return FALSE; + } + $this->dialog->save_object(); + if (isset($_POST['save_logonHours'])) { + $this->sambaAttribute->setValue($this->dialog->save()); + return FALSE; + } + return $this->dialog->execute(); + } +} ?> -- 1.7.2.5