From 583b5832914fc51931e945b16c1243ed0662ff00 Mon Sep 17 00:00:00 2001 From: hickert Date: Mon, 21 Jan 2008 14:02:26 +0000 Subject: [PATCH] Updated Deamon class - Added functions : update entry, Entry Exists, Get entry.. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@8520 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/include/class_gosaSupportDaemon.inc | 288 +++++++++++------- .../addons/gotomasses/class_goto_task.inc | 8 +- .../addons/gotomasses/class_gotomasses.inc | 10 +- 3 files changed, 192 insertions(+), 114 deletions(-) diff --git a/gosa-core/include/class_gosaSupportDaemon.inc b/gosa-core/include/class_gosaSupportDaemon.inc index 0b2e3e83f..14f84f7c8 100644 --- a/gosa-core/include/class_gosaSupportDaemon.inc +++ b/gosa-core/include/class_gosaSupportDaemon.inc @@ -10,12 +10,17 @@ class gosaSupportDaemon private $is_connected = FALSE; private $s_encryption_key = ""; - private $entries = array(); - private $pointer = 0; - private $s_error = ""; private $b_error = FALSE; + + /*! \brief Creates a new gosaSupportDaemon object. + @param string Host The Host where the deamon is running on. + @param integer Port The port which the deamon use. + @param string Key The encryption string. + @param boolean Connect Directly connect to deamon socket. + @param float Timeout The timelimit for all socket actions. + */ public function __construct($host,$port,$key="secret-gosa-password",$connect=TRUE,$timeout=0.2) { $this->s_host = $host; @@ -27,6 +32,10 @@ class gosaSupportDaemon } } + + /*! \brief Establish deamon connection. + @return boolean Returns true if the connection was succesfully established. + */ public function connect() { $this->o_sock = new Socket_Client($this->s_host,$this->i_port,TRUE,$this->f_timeout); @@ -38,6 +47,9 @@ class gosaSupportDaemon } } + + /*! \brief Disconnect from gosa deamon. + */ public function disconnect() { $this->o_sock->close(); @@ -45,10 +57,39 @@ class gosaSupportDaemon } - public function __reload() + /*! \brief Sets an error message, which can be returned with get_error(). + @param string The Error message, + */ + private function set_error($str) + { + $this->b_error = TRUE; + $this->s_error = $str; + } + + + /*! \brief Checks if an error occured. + @return boolean returns TRUE or FALSE, whether there is an error or not. + */ + public function is_error() + { + return($this->b_error); + } + + + /*! \brief Returns the last error. + @return Returns the last error. + */ + public function get_error() + { + return($this->s_error); + } + + + /*! \brief Returns an array containing all queued entries. + @return Array All queued entries as an array. + */ + public function get_queued_entries() { - $this->entries = array(); - $this->pointer = 0; $this->b_error = FALSE; $this->s_error = ""; @@ -61,17 +102,118 @@ class gosaSupportDaemon if(!isset($entries['XML'])){ $this->set_error("Couldn't parse xml."); $this->disconnect(); - return(FALSE); + return; }else{ $ret = array_values($entries['XML']); } - $this->entries = $ret; + return($ret); + } + $this->set_error("Could not establish socket connection."); + $this->disconnect(); + return; + } + + + /*! \brief Checks if the given id is in use. + @param Integer The ID of the entry. + @return Boolean TRUE if entry exists. + */ + public function id_exists($id) + { + if(!is_numeric($id)){ + trigger_error("gosaSupportDaemon::get_entry() requires an integer value as ID parameter."); + return; + } + + $this->b_error = FALSE; + $this->s_error = ""; + $xml_msg = " +
gosa_query_jobdb
+ id + ".$id." +
"; + $this->connect(); + if(!$this->is_connected){ + $this->set_error("Could not establish socket connection."); + }else{ + $this->o_sock->write($xml_msg); + $str = trim($this->o_sock->read()); + $entries = $this->xml_to_array($str); + if(isset($entries['XML']['ANSWER1'])){ + $this->disconnect(); + return(TRUE); + } + } + $this->disconnect(); + return(FALSE); + } + + + /*! \brief Returns an entry from the gosaSupportQueue + @param Integer The ID of the entry we want to return. + @return Array Of the requested entry. + */ + public function get_entry($id) + { + if(!is_numeric($id)){ + trigger_error("gosaSupportDaemon::get_entry() requires an integer value as ID parameter."); + return; + } + + $this->b_error = FALSE; + $this->s_error = ""; + $xml_msg = " +
gosa_query_jobdb
+ id + ".$id." +
"; + $this->connect(); + if(!$this->is_connected){ + $this->set_error("Could not establish socket connection."); + }else{ + $this->o_sock->write($xml_msg); + $str = trim($this->o_sock->read()); + $entries = $this->xml_to_array($str); + if(!isset($entries['XML']['ANSWER1'])){ + $this->set_error("Entry with id (".$id.") not found."); + $this->disconnect(); + }else{ + $ret = $entries['XML']['ANSWER1']; + return($ret); + } + } + return; + } + + + /*! \brief Removes an entry from the GOsa support queue. + @param Integer The ID of the entry we want to remove. + @return Boolean True on success. + */ + public function remove_entry($id) + { + $this->b_error = FALSE; + $this->s_error = ""; + + $xml_msg = " +
gosa_delete_jobdb_entry
+ id + ".$id." +
"; + $this->connect(); + if($this->is_connected){ + $this->o_sock->write($xml_msg); return(TRUE); } $this->set_error("Could not establish socket connection."); return(FALSE); } + + /*! \brief Parses the given xml string into an array + @param String XML string + @return Array Returns an array containing the xml structure. + */ function xml_to_array($xml) { $params = array(); @@ -109,125 +251,51 @@ class gosaSupportDaemon return($params); } - public function load() - { - return($this->__reload()); - } - - public function fetch() - { - if(isset($this->entries[$this->pointer])){ - $p = $this->entries[$this->pointer]; - $this->pointer ++; - return($p); - } - return(FALSE); - } - private function set_error($str) - { - $this->b_error = TRUE; - $this->s_error = $str; - } - - public function is_error() - { - return($this->b_error); - } - - public function get_error() - { - return($this->s_error); - } - - public function decrease_entry_priority($id) - { - } - - public function increase_entry_priority($id) - { - } - - public function max_entry_priority($id) - { - } - - public function min_entry_priority($id) - { - } - - public function id_exists($id) - { - return(TRUE); - } - - public function get_entry($id) + /*! \brief Updates an entry with a set of new values, + @param Integer The ID of the entry, we want to update. + @param Array The variables to update. + @return Boolean Returns TRUE on success. + */ + public function update_entry($id,$entry) { if(!is_numeric($id)){ - trigger_error("gosaSupportDaemon::get_entry() requires an integer value as ID parameter."); + trigger_error("Requires an integer value as ID parameter."); return; } - $this->b_error = FALSE; - $this->s_error = ""; - - $xml_msg = " -
gosa_query_jobdb
- id - ".$id." -
"; - - $this->connect(); - if($this->is_connected){ - $this->o_sock->write($xml_msg); - $str = trim($this->o_sock->read()); - $entries = $this->xml_to_array($str); - if(!isset($entries['XML']['ANSWER1'])){ - $this->set_error("Entry with id (".$id.") not found."); - $this->disconnect(); - return(FALSE); - }else{ - $ret = array_values($entries['XML']['ANSWER1']); - return($ret); - } + if(!is_array($entry)){ + trigger_error("Requires an array as second parameter."); + return; } - $this->set_error("Could not establish socket connection."); - return(FALSE); - } - - public function update_entry($id,$entry) - { - $xml_msg = ""; - if($this->is_connected){ - #$this->o_sock->write($xml_msg); - #$str = trim($this->o_sock->read()); - #$entries = $this->xml_to_array($str); - #$this->disconnect(); - return(TRUE); + $attr = ""; + foreach($entry as $name => $entry){ + $attr.="<".strtolower($name).">".$entry."\n"; } - $this->set_error("Could not establish socket connection."); - return(FALSE); - } - - public function add_multiple($multiple) - { - } - public function remove_entry($id) - { $this->b_error = FALSE; $this->s_error = ""; - $xml_msg = " -
gosa_delete_jobdb_entry
- id - ".$id." + $xml_msg = " +
gosa_update_status_jobdb_entry
+ + ".$id." + + + ".$attr." +
"; $this->connect(); if($this->is_connected){ + echo $xml_msg; $this->o_sock->write($xml_msg); - return(TRUE); + $str = trim($this->o_sock->read()); + $entries = $this->xml_to_array($str); + if(!empty($str)){ + return(TRUE); + } + return(FALSE); } $this->set_error("Could not establish socket connection."); return(FALSE); diff --git a/gosa-core/plugins/addons/gotomasses/class_goto_task.inc b/gosa-core/plugins/addons/gotomasses/class_goto_task.inc index b4d855cb5..91ddf6f3f 100644 --- a/gosa-core/plugins/addons/gotomasses/class_goto_task.inc +++ b/gosa-core/plugins/addons/gotomasses/class_goto_task.inc @@ -50,7 +50,13 @@ class goto_task extends plugin function save() { - return($this->data); + $tmp = array(); + foreach($this->attributes as $attr){ + if(isset($this->data[$attr])){ + $tmp[$attr] = $this->data[$attr]; + } + } + return($tmp); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: diff --git a/gosa-core/plugins/addons/gotomasses/class_gotomasses.inc b/gosa-core/plugins/addons/gotomasses/class_gotomasses.inc index e727422aa..9d08ad8fb 100644 --- a/gosa-core/plugins/addons/gotomasses/class_gotomasses.inc +++ b/gosa-core/plugins/addons/gotomasses/class_gotomasses.inc @@ -126,7 +126,7 @@ class gotomasses extends plugin foreach($this->ids_to_remove as $key => $id){ if($this->o_queue->id_exists($id)){ $task = $this->o_queue->get_entry($id); - $tmp.= "\n".$task['5']." ".$task['3']; + $tmp.= "\n".$task['HEADERTAG']." ".$task['MACADDRESS']; }else{ unset($this->ids_to_remove[$key]); } @@ -231,13 +231,17 @@ class gotomasses extends plugin */ function get_queue_entries() { - if(!$this->o_queue->load()){ + + $entries = $this->o_queue->get_queued_entries(); + + if(!is_array($entries)){ msg_dialog::display(_("Error"), sprintf(_("Cannot load queue entries: %s"), "

".$this->o_queue->get_error()), ERROR_DIALOG); return(array()); } + $tasks = array(); $ret = array(); - while($entry = $this->o_queue->fetch()){ + foreach($entries as $entry){ $task = $entry['ID']; $ret[]= $entry; } -- 2.30.2