Code

Updated Deamon class
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 21 Jan 2008 14:02:26 +0000 (14:02 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 21 Jan 2008 14:02:26 +0000 (14:02 +0000)
- 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
gosa-core/plugins/addons/gotomasses/class_goto_task.inc
gosa-core/plugins/addons/gotomasses/class_gotomasses.inc

index 0b2e3e83f2ed30950f2006e15a0677bf3f1a3d63..14f84f7c80c33d49429093305865911d1926709a 100644 (file)
@@ -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 = "<xml>
+                  <header>gosa_query_jobdb</header>
+                  <where>id</where>
+                  <id>".$id."</id>
+                </xml>";
+    $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 = "<xml>
+                  <header>gosa_query_jobdb</header>
+                  <where>id</where>
+                  <id>".$id."</id>
+                </xml>";
+    $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 = "<xml>
+                  <header>gosa_delete_jobdb_entry</header>
+                  <where>id</where>
+                  <id>".$id."</id>
+                </xml>";
+    $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 = "<xml>
-                  <header>gosa_query_jobdb</header>
-                  <where>id</where>
-                  <id>".$id."</id>
-                </xml>";
-
-    $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."</".strtolower($name).">\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 = "<xml>
-                  <header>gosa_delete_jobdb_entry</header>
-                  <where>id</where>
-                  <id>".$id."</id>
+    $xml_msg = "<xml> 
+                  <header>gosa_update_status_jobdb_entry</header>
+                  <where>
+                    <id>".$id."</id> 
+                  </where>
+                  <update>
+                    ".$attr." 
+                  </update>
                 </xml>";
     $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);
index b4d855cb5d753352c16d35563b78708a4d91fe5a..91ddf6f3fb66ec2bb8b3ec4ecabdd178321fea8e 100644 (file)
@@ -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:
index e727422aa43d8e71e0249544986133cbe3029fea..9d08ad8fb07d8e8ec4f8893660dff4eb5acce362 100644 (file)
@@ -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']."&nbsp;".$task['3'];
+            $tmp.= "\n".$task['HEADERTAG']."&nbsp;".$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"), "<br><br>".$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;
     }