diff --git a/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc b/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc
index f3848c291d06652ec6f90619d683a946d55f9d35..f0d9fb3c6ec50f9526ce725460e8114bb995c8b5 100644 (file)
class gotoLpdEnable extends plugin
{
- public $parent;
-
- protected $DevID = 0;
- private $data = array();
- private $default_entry = array();
-
- protected $s_Type = "USB";
- protected $s_Device = "/dev/usb/lp";
- protected $i_Port = 9100;
- protected $s_Options = "";
- protected $s_WriteOnly = "Y";
-
- protected $s_Speed = 9600;
- protected $s_FlowControl = "S";
- protected $s_Parity = "E";
- protected $i_Bit = 5;
-
- /* Option predefinition */
- private $a_Types = array();
- private $a_FlowControls = array(); //
- private $a_Parities = array(); //
- private $a_Speeds = array(); //
- private $a_Bits = array(); //
- private $a_Devices = array();
-
- public $attributes = array("s_Type","s_Device","i_Port","s_Options","s_WriteOnly",
- "s_Speed","s_FlowControl","s_Parity","i_Bit");
-
- /*! \brief Create gotoLpdEnable dialog, allows to edit printer settings.
+ public $parent;
+
+ protected $DevID = 0;
+ private $data = array();
+ private $default_entry = array();
+
+ protected $s_Type = "U";
+ protected $s_Device = "/dev/usb/lp";
+ protected $i_Port = 9100;
+ protected $s_Options = "";
+ protected $s_WriteOnly = "Y";
+
+ protected $s_Speed = 9600;
+ protected $s_FlowControl = "S";
+ protected $s_Parity = "E";
+ protected $i_Bit = 5;
+
+ /* Option predefinition */
+ private $a_Types = array();
+ private $a_FlowControls = array(); //
+ private $a_Parities = array(); //
+ private $a_Speeds = array(); //
+ private $a_Bits = array(); //
+ private $a_Devices = array();
+ public $attributes = array("s_Type","s_Device","i_Port","s_Options","s_WriteOnly",
+ "s_Speed","s_FlowControl","s_Parity","i_Bit");
+
+ /*! \brief Create gotoLpdEnable dialog, allows to edit printer settings.
@param Object $config The GOsa configuration object.
@param Array $data The values for attribute 'gotoLpdEnable'
- e.g. array("USB:/dev/usb/lp0:9100:9600:S:E:0:Y:options",
- "USB:/dev/usb/lp1:9101:9600:S:E:5:Y:", ...)
+ e.g. array("U:/dev/usb/lp0:9100:9600:S:E:0:Y:options",
+ "U:/dev/usb/lp1:9101:9600:S:E:5:Y:", ...)
@param Object $parent A reference to the parent plugin-object.
@return Object gotoLpdEnable (plugin)
- */
- public function __construct($config,$data,&$parent)
- {
- plugin::plugin($config,NULL);
- $this->parent = $parent;
- $this->DevID = 0;
-
- /* Predefine selectable values
- */
- $this->a_Types = array(
- "USB" => _("USB"),
- "Parallel" => _("Parallel port"),
- "Serial" => _("Serial"));
- $this->a_FlowControl = array(
- "S" => _("Software"),
- "H" => _("Hardware"));
- $this->a_Parities = array(
- "E" => _("Even"),
- "O" => _("Odd"),
- "N" => _("None"));
- $this->a_Speeds = array(
- "4800" => "4.800 "._("bit/s"),
- "9600" => "9.600 "._("bit/s"),
- "19200" => "19.200 "._("bit/s"),
- "38400" => "38.400 "._("bit/s"),
- "57600" => "57.600 "._("bit/s"),
- "115200"=> "115.200 "._("bit/s"),
- "230400"=> "230.400 "._("bit/s"),
- "460800"=> "460.800 "._("bit/s"));
- $this->a_Bits = array(
- 5,6,7,8);
- $this->a_Devices = array(
- "USB" => "/dev/usb/lp",
- "Parallel" => "/dev/lp",
- "Serial" => "/dev/ttyS");
-
- /* Create default entry
*/
- foreach($this->attributes as $attr){
- $this->default_entry[$attr] = $this->$attr;
- }
-
- /* Load current settings
- */
- if(count($data) == 0){
- $this->is_account = FALSE;
- }else{
- foreach($data as $dat){
- if(substr_count($dat,":") < 8) continue;
- list($s_Type,$s_Device,$i_Port,$s_Speed,$s_FlowControl,$s_Parity,$i_Bit,$s_WriteOnly,$s_Options) = split("\:",$dat);
- $entry = array();
+ public function __construct($config,$data,&$parent)
+ {
+ plugin::plugin($config,NULL);
+ $this->parent = $parent;
+ $this->DevID = 0;
+
+ /* Predefine selectable values
+ */
+ $this->a_Types = array(
+ "U" => _("USB"),
+ "P" => _("Parallel port"),
+ "S" => _("Serial"));
+ $this->a_FlowControl = array(
+ "S" => _("Software"),
+ "H" => _("Hardware"));
+ $this->a_Parities = array(
+ "E" => _("Even"),
+ "O" => _("Odd"),
+ "N" => _("None"));
+ $this->a_Speeds = array(
+ "4800" => "4.800 "._("bit/s"),
+ "9600" => "9.600 "._("bit/s"),
+ "19200" => "19.200 "._("bit/s"),
+ "38400" => "38.400 "._("bit/s"),
+ "57600" => "57.600 "._("bit/s"),
+ "115200"=> "115.200 "._("bit/s"),
+ "230400"=> "230.400 "._("bit/s"),
+ "460800"=> "460.800 "._("bit/s"));
+ $this->a_Bits = array(
+ 5,6,7,8);
+ $this->a_Devices = array(
+ "U" => "/dev/usb/lp",
+ "P" => "/dev/lp",
+ "S" => "/dev/ttyS");
+
+ /* Create default entry
+ */
foreach($this->attributes as $attr){
- $entry[$attr] = $$attr;
+ $this->default_entry[$attr] = $this->$attr;
}
- $this->data[] = $entry;
- }
- /* Set first entry values
- From "$this->data[0]" to "$this->"
- */
- if(count($this->data)){
- foreach($this->attributes as $attr){
- $this->$attr = $this->data[$this->DevID][$attr];
+ /* Load current settings
+ */
+ if(count($data) == 0){
+ $this->is_account = FALSE;
+ }else{
+ foreach($data as $dat){
+ if(substr_count($dat,":") < 8) continue;
+ list($s_Type,$s_Device,$i_Port,$s_Speed,$s_FlowControl,$s_Parity,$i_Bit,$s_WriteOnly,$s_Options) = explode(":",$dat);
+ $entry = array();
+ foreach($this->attributes as $attr){
+ $entry[$attr] = $$attr;
+ }
+ $this->data[] = $entry;
+ }
+
+ /* Set first entry values
+ From "$this->data[0]" to "$this->"
+ */
+ if(count($this->data)){
+ foreach($this->attributes as $attr){
+ $this->$attr = $this->data[$this->DevID][$attr];
+ }
+ $this->is_account = TRUE;
+ }
}
- $this->is_account = TRUE;
- }
+ $this->initially_was_account = $this->is_account;
}
- $this->initially_was_account = $this->is_account;
- }
- /*! \brief Create HTML output of this plugin.
- Depending on the current plugin status, there is a
- 'create' and a 'remove'account button displayed on top
- followed by the gotoLpdEnable options.
+ /*! \brief Create HTML output of this plugin.
+ Depending on the current plugin status, there is a
+ 'create' and a 'remove'account button displayed on top
+ followed by the gotoLpdEnable options.
@param .
@return String HTML content
- */
- public function execute()
- {
- $display = "";
-
- /* Handle account add/remove
*/
- if(isset($_POST['modify_state'])){
- $this->is_account = !$this->is_account;
-
- /* Reset account or create a new one
- */
- if(!$this->is_account){
- $this->data = array();
- }else{
-
- /* Initialize plugin with default entries
+ public function execute()
+ {
+ plugin::execute();
+
+ $display = "";
+
+ /* Set smarty variables
*/
- $entry = $this->default_entry;
- $entry['i_Port'] = $entry['i_Port'] + count($this->data);
- $entry['s_Device'] = $entry['s_Device'].count($this->data);
- $this->data = array(0 => $entry);
- $this->DevID = 0;
+ $smarty = get_smarty();
+ $smarty->assign("acl",$this->parent->getacl("gotoLpdEnable"));
foreach($this->attributes as $attr){
- $this->$attr = $this->data[$this->DevID][$attr];
+ $smarty->assign($attr, set_post($this->$attr));
}
- }
- }
-
- /* Add toggle plugin buttons on top of the generated page
- */
- if($this->is_account){
- $display .= $this->show_disable_header(msgPool::removeFeaturesButton(_("Printer")),"",FALSE);
- }else{
- $display .= $this->show_enable_header(msgPool::addFeaturesButton(_("Printer")),"",FALSE);
- }
-
- /* Set smarty variables
- */
- $smarty = get_smarty();
- foreach($this->attributes as $attr){
- $smarty->assign($attr,$this->$attr);
- }
- foreach(array("DevID","a_Types","a_FlowControl","a_Parities","a_Speeds","a_Bits") as $attr){
- $smarty->assign($attr,$this->$attr);
+ foreach(array("DevID","a_Types","a_FlowControl","a_Parities","a_Speeds","a_Bits") as $attr){
+ $smarty->assign($attr,set_post($this->$attr));
+ }
+ ksort($this->data);
+ $smarty->assign("data_cnt",count($this->data));
+ $smarty->assign("data",$this->data);
+ $smarty->assign("a_DevIDs",array_keys($this->data));
+ $smarty->assign("is_account",$this->is_account);
+ return($display.$smarty->fetch(get_template_path("gotoLpdEnable.tpl",TRUE,dirname(__FILE__))));
}
- ksort($this->data);
- $smarty->assign("data_cnt",count($this->data));
- $smarty->assign("data",$this->data);
- $smarty->assign("a_DevIDs",array_keys($this->data));
- $smarty->assign("is_account",$this->is_account);
- return($display.$smarty->fetch(get_template_path("gotoLpdEnable.tpl",TRUE,dirname(__FILE__))));
- }
- /*! \brief Checks the given informations and returns an array
- with the error messages or an empty array if everything went fine.
+ /*! \brief Checks the given informations and returns an array
+ with the error messages or an empty array if everything went fine.
@param .
@return Array of Strings Error messages.
- */
- public function check()
- {
- $messages = plugin::check();
- if(!$this->is_account){
- return($messages);
- }
- foreach($this->data as $id => $entry){
- if(!tests::is_id($entry['i_Port'])){
- $messages[] = msgPool::invalid(_("Port"));
- }
- if(preg_match("/:/",$entry['s_Options'])){
- $messages[] = msgPool::invalid(_("Options"));
- }
- }
- return($messages);
- }
+ */
+ public function check()
+ {
+ $messages = plugin::check();
+ if(!$this->is_account){
+ return($messages);
+ }
+ foreach($this->data as $id => $entry){
+ if(!tests::is_id($entry['i_Port'])){
+ $messages[] = msgPool::invalid(_("Port"));
+ }
+ if(preg_match("/:/",$entry['s_Options'])){
+ $messages[] = msgPool::invalid(_("Options"));
+ }
+ }
+ return($messages);
+ }
- /*! \brief Save all ui inputs.
+ /*! \brief Save all ui inputs.
@param .
@return .
- */
- public function save_object()
- {
- if(!$this->is_account || !isset($_POST['gotoLpdEnable_entry_posted'])){
- return;
- }
-
- /* Check if we have to propose device settings
- (current device info is empty and the printer type has changed)
*/
- $propose_device = "";
- if(isset($_POST['s_Device']) && empty($_POST['s_Device']) &&
- isset($_POST['s_Type']) && $_POST['s_Type'] != $this->s_Type){
- $propose_device = $this->a_Devices[$_POST['s_Type']].$this->DevID;
- }
+ public function save_object()
+ {
+ if(!$this->parent->acl_is_writeable("gotoLpdEnable")){
+ return;
+ }
- plugin::save_object();
+ if(!isset($_POST['gotoLpdEnable_entry_posted'])){
+ return;
+ }
- if(!empty($propose_device)){
- $this->s_Device = $propose_device;
- }
+ /* Handle account add/remove
+ */
+ if(isset($_POST['gotoLpdEnable_enabled'])){
+ $this->is_account = TRUE;
+ }else{
+ $this->is_account = FALSE;
+ }
- /* Get checkbox changes
- */
- if(isset($_POST['s_WriteOnly'])){
- $this->s_WriteOnly = "Y";
- }else{
- $this->s_WriteOnly = "N";
- }
+ /* Check if we have to propose device settings
+ (current device info is empty and the printer type has changed)
+ */
+ $propose_device = "";
+ if(isset($_POST['s_Device']) && empty($_POST['s_Device']) &&
+ isset($_POST['s_Type']) && $_POST['s_Type'] != $this->s_Type){
+ $propose_device = $this->a_Devices[get_post('s_Type')].$this->DevID;
+ }
- /* Write back attributes to data array ($this->data)
- */
- foreach($this->attributes as $attr){
- $this->data[$this->DevID][$attr] = $this->$attr;
- }
-
- /* Device ID has changed another printer was selected * /
- if(isset($_POST['DevID']) && $_POST['DevID'] != $this->DevID){
- $this->DevID = $_POST['DevID'];
- foreach($this->attributes as $attr){
- $this->$attr = $this->data[$this->DevID][$attr];
- }
- }
- */
-
- /* Add and remove additional printer settings
- if(isset($_POST['del_printer'])){
- unset($this->data[$this->DevID]);
- $this->data = array_values($this->data);
- if(count($this->data) == 0){
- $this->is_account = FALSE;
- }
- $this->DevID = key($this->data);
- }
- if(isset($_POST['add_printer'])){
- if(count($this->data) < 3){
- $entry = $this->default_entry;
- $entry['i_Port'] = $entry['i_Port'] + count($this->data);
- $entry['s_Device'] = $entry['s_Device'].count($this->data);
- $this->DevID = count($this->data);
- $this->data[] = $entry;
- foreach($this->attributes as $attr){
- $this->$attr = $this->data[$this->DevID][$attr];
+ plugin::save_object();
+
+ if(!empty($propose_device)){
+ $this->s_Device = $propose_device;
}
- }
+
+ /* Get checkbox changes
+ */
+ if(isset($_POST['s_WriteOnly'])){
+ $this->s_WriteOnly = "Y";
+ }else{
+ $this->s_WriteOnly = "N";
+ }
+
+ /* Write back attributes to data array ($this->data)
+ */
+ foreach($this->attributes as $attr){
+ $this->data[$this->DevID][$attr] = $this->$attr;
+ }
}
- */
- }
- /*! \brief Creates an array containing all gotoLpdEnabled values,
- see constructor for more details.
+ /*! \brief Creates an array containing all gotoLpdEnabled values,
+ see constructor for more details.
@param .
@return Array of gotoLpdEnabled Strings.
- */
- public function save()
- {
- $ret = array();
- $attrs = array("s_Type","s_Device","i_Port","s_Speed","s_FlowControl","s_Parity","i_Bit","s_WriteOnly","s_Options");
- foreach($this->data as $entry){
- $str = "";
- foreach($attrs as $attr){
- $str .= $entry[$attr].":";
- }
- $ret[] = preg_replace("/:$/","",$str);
+ */
+ public function save()
+ {
+ $ret = array();
+ $serial_only = array("s_Speed","s_FlowControl","s_Parity","i_Bit");
+ $attrs = array("s_Type","s_Device","i_Port","s_Speed","s_FlowControl","s_Parity","i_Bit","s_WriteOnly","s_Options");
+ foreach($this->data as $entry){
+ $str = "";
+ foreach($attrs as $attr){
+ if(in_array($attr,$serial_only) && $entry['s_Type'] != "Serial"){
+ $str .= ":";
+ }else{
+ $str .= $entry[$attr].":";
+ }
+ }
+ $ret[] = preg_replace("/:$/","",$str);
+ }
+ return($ret);
}
- return($ret);
- }
- /*! \brief .
+ /*! \brief .
@param .
@return .
- */
- public function acl_is_writeable($attr,$skip_write = FALSE)
- {
- return(TRUE);
- }
+ */
+ public function acl_is_writeable($attr,$skip_write = FALSE)
+ {
+ return(TRUE);
+ }
- /*! \brief .
+ /*! \brief .
@param .
@return .
- */
- public function acl_is_removeable($skip_write = FALSE)
- {
- return(TRUE);
- }
+ */
+ public function acl_is_removeable($skip_write = FALSE)
+ {
+ return(TRUE);
+ }
- /*! \brief .
+ /*! \brief .
@param .
@return .
- */
- public function acl_is_createable($skip_write = FALSE)
- {
- return(TRUE);
- }
+ */
+ public function acl_is_createable($skip_write = FALSE)
+ {
+ return(TRUE);
+ }
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: