Code

Updated package list query
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 14 Apr 2008 07:55:52 +0000 (07:55 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 14 Apr 2008 07:55:52 +0000 (07:55 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@10380 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/include/class_gosaSupportDaemon.inc

index b33e59eb82c889809c535dba0359a69b45a1fbc6..5f160733477b1c4b4aae02c7ae594f82a9535981 100644 (file)
@@ -134,7 +134,52 @@ class gosaSupportDaemon
   }
 
 
-  public function FAI_get_packages($release,$attrs, $package = array())
+
+
+  public function FAI_get_package_sections($release)
+  {
+    $xml_msg = "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
+      "<select>distinct section</select>".
+      "<where><clause><phrase><distribution>".$release."</distribution></phrase></clause></where></xml>";
+
+    if($this->connect()){
+      $this->o_sock->write($xml_msg);
+      $str = trim($this->o_sock->read());
+
+      /* Check if something went wrong while reading */
+      if($this->o_sock->is_error()){
+        $this->set_error($this->o_sock->get_error());
+        return($ret);
+      }
+
+      $entries = $this->xml_to_array($str);
+      if(isset($entries['XML']) && is_array($entries['XML'])){
+
+        /* Check if returned values represent a valid answer */
+        if(isset($entries['XML'])){
+          if(isset($entries['XML']['ERROR_STRING'])) {
+            $this->set_error($entries['XML']['ERROR_STRING']);
+            new log("debug","GOsa-si",
+                get_class($this)."::".__FUNCTION__, array(),
+                "FAILED error was ".$this->get_error());
+            return($ret);
+          }
+
+          /* Unset header tags */
+          foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){
+            if(isset($entries['XML'][$type])){
+              unset($entries['XML'][$type]);
+            }
+          }
+          $ret = $entries['XML'];
+        }
+      }
+    }
+    return($ret);
+  }
+
+
+  public function FAI_get_packages($release,$attrs,$package,$from=-1,$to=-1)
   {
     $this->reset_error();
     $ret = array();
@@ -157,43 +202,32 @@ class gosaSupportDaemon
       $attr.= "<select>".$at."</select>";
     }
 
+    /* If no package is given, search for all */
+    if(!count($package)) $package = array("%");
+
+    /* Create limit tag */
+    if($from == -1){
+      $limit =""; 
+    }else{
+      $limit = "<limit><from>".$from."</from><to>".$to."</to></limit>";
+    }
+
     /* Create list of attributes to fetch */
     $pkgs = ""; 
     foreach($package as $pkg){
-      $pkgs .="
-               <phrase>
-                <operator>like</operator>
-                <package>".$pkg."</package>
-               </phrase>
-             ";
-
+      $pkgs .="<phrase><operator>like</operator><package>".$pkg."</package></phrase>";
     }
 
-    /* Create Daemon query */
-    if(!count($package)){
-      $xml_msg = "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
-        $attr.
-        "<where><clause><phrase><distribution>".$release."</distribution></phrase></clause></where>
-        </xml>";
-    }else{
-         $xml_msg = "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
-        $attr.
-        "<where>
-
-          <clause>
-            <phrase>
-              <distribution>".$release."</distribution>
-            </phrase>
-          </clause>
-
-          <clause>
-            <connector>OR</connector>
-                ".$pkgs."
-          </clause>
-        </where>
-        <limit><from>0</from><to>100</to></limit>
-        </xml>";
-    }
+    $xml_msg = "<xml><header>gosa_query_packages_list</header><target>GOSA</target><source>GOSA</source>".
+      $attr.
+      "<where>
+      <clause><phrase><distribution>".$release."</distribution></phrase></clause>
+      <clause><connector>OR</connector>
+      ".$pkgs."
+      </clause>
+      </where>".
+      $limit.
+      "</xml>";
 
     if($this->connect()){
       $this->o_sock->write($xml_msg);