Code

Updated listing table summary
[gosa.git] / gosa-plugins / opsi / admin / opsiLicenses / class_opsiLicenseHandler.inc
index 45a5bce36a520b9ce4620f6eebdc1794e9829186..fd8b01f472f7580ace9d88cc517779db0045c6d8 100644 (file)
@@ -19,29 +19,34 @@ class opsiLicenceHandler extends opsi  {
     $data= array();
     $res = $this->send_data("gosa_opsi_getLicensePools_listOfHashes",$this->target,$data,TRUE);
     $items  = array();
-    if(isset($res['XML'][0]['RESULT'][0]['HIT'])){
-      $items = $res['XML'][0]['RESULT'][0]['HIT'];
-      $data =array();
-      foreach($items as $item){
-        $entry = array();
-        foreach(
-          array(
-            "DESCRIPTION"       => "description",
-            "LICENSEPOOLID"     => "cn",
-            "PRODUCTIDS"        => "productId",
-            "WINDOWSSOFTWAREIDS"=> "softwareId") as $source => $dest){
-        
-          if(isset($item[$source])){
-            $entry[$dest] = array('count' => 0);
-            foreach($item[$source] as $obj){
-              $entry[$dest][] = $obj['VALUE'];
-            }
-            $entry[$dest]['count'] = (count($entry[$dest]) -1 );
-          } 
+    if(isset($res['XML'][0]['ANSWER_OPSI_GETLICENSEPOOLS_LISTOFHASHES'])){
+      if(isset($res['XML'][0]['RESULT'][0]['HIT'])){
+        $items = $res['XML'][0]['RESULT'][0]['HIT'];
+        $data =array();
+        foreach($items as $item){
+          $entry = array();
+          foreach(
+              array(
+                "DESCRIPTION"       => "description",
+                "LICENSEPOOLID"     => "cn",
+                "PRODUCTIDS"        => "productId",
+                "WINDOWSSOFTWAREIDS"=> "softwareId") as $source => $dest){
+
+            if(isset($item[$source])){
+              $entry[$dest] = array('count' => 0);
+              foreach($item[$source] as $obj){
+                $entry[$dest][] = $obj['VALUE'];
+              }
+              $entry[$dest]['count'] = (count($entry[$dest]) -1 );
+            } 
+          }
+          $data[] =$entry;
         }
-        $data[] =$entry;
+        return($data);
+      }else{
+        // No entries, but got an answer. We probably do not have any pools yet.
+        return(array());
       }
-      return($data);
     }
     return(FALSE);
   }
@@ -140,6 +145,51 @@ class opsiLicenceHandler extends opsi  {
    * LICENSES
    *******************/
 
+  
+  function listLicenses()
+  {
+    $data= array();
+    $res = $this->send_data("gosa_opsi_getAllSoftwareLicenses",$this->target,$data,TRUE);
+
+    if(isset($res['XML'][0]['ANSWER_OPSI_GETALLSOFTWARELICENSES'])){
+
+      $licenses = array();
+      if(isset($res['XML'][0]['LICENSES'][0]['HIT'])){
+        foreach($res['XML'][0]['LICENSES'][0]['HIT'] as $entry){
+
+          $item = array();
+
+          // License keys are indexed by the pool id, map it here.
+          if(isset($entry['LICENSEPOOLIDS'][0]['VALUE'])){
+            $n = strtoupper($entry['LICENSEPOOLIDS'][0]['VALUE']);
+            $entry['LICENSEKEYS'] = $entry['LICENSEKEYS'][0][$n];
+          }
+
+          // Now fake an ldap like result
+          foreach(array(
+                "BOUNDTOHOST"         => "boundToHost",
+                "LICENSEKEYS"         => "licenseKey",
+                "LICENSEPOOLIDS"      => "licensePoolId",
+                "LICENSETYPE"         => "licenseType",
+                "SOFTWARELICENSEID"   => "softwareLicenseId") as $source => $target){
+            if(isset($entry[$source])){
+              $item[$target] = array('count' => 0);
+              foreach($entry[$source] as $data){
+                $item[$target][] = $data['VALUE'];
+              }
+              $item[$target]['count'] = count($item[$target]) -1 ;
+            }
+          }
+
+          $licenses[] = $item;
+        } 
+      }
+      return($licenses);
+    }
+    return(FALSE);
+  }
+
+
   /*  
    * @brief 
    *     Create a license contract, create a software 
@@ -401,9 +451,12 @@ class opsiLicenceHandler extends opsi  {
   {
     $data= array();
     $data['productId'] = htmlentities($productId);
-    $res = $this->send_data("gosa_opsi_getLicenseInformationForProduct",$this->target,$data,TRUE);
-    if(isset($res['XML'][0]['ANSWER_OPSI_GETLICENSEINFORMATIONFORPRODUCT'])){
-      return($res['XML'][0]);
+    $res = $this->send_data("gosa_opsi_getSoftwareLicenseUsagesForProductId",$this->target,$data,TRUE);
+    if(isset($res['XML'][0]['ANSWER_OPSI_GETSOFTWARELICENSEUSAGESFORPRODUCTID'])){
+      if(isset($res['XML'][0]['RESULT'][0]['HIT'])){
+        return($res['XML'][0]['RESULT'][0]['HIT']);
+      } 
+      return(array());
     }
     return(FALSE);
   }