diff --git a/gosa-plugins/opsi/admin/opsiLicenses/class_filterOpsiLicense.inc b/gosa-plugins/opsi/admin/opsiLicenses/class_filterOpsiLicense.inc
index 2a45bb0ebdfbf0634eeb7422015da7ef71b9b4dd..10d0e19588d7a5eacac7645da3e993cc11ebae2d 100644 (file)
class filterOpsiLicense {
static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
+ {
+
+ if(!class_available('opsi')) return(array());
+
+ $config= session::global_get('config');
+ $ldap= $config->get_ldap_link(TRUE);
+ $flag= ($scope == "sub")?GL_SUBSEARCH:0;
+ $result= filterOpsiLicense::get_list($base, $filter, $attributes, $category, $objectStorage, $flag);
+
+ // Simple filtering
+ if(!empty($filter)){
+ foreach($result as $key => $entry){
+ if(!preg_match($filter, $entry['cn'][0])){
+ unset($result[$key]);
+ }
+ }
+ }
+
+ return(filterACL::unifyResult($result));
+ }
+
+ static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH)
{
$config= session::global_get('config');
$si = new opsiLicenceHandler($config);
+
+ if(!$si->enabled()) return(array());
+
$res = $si->listPools();
$result = array();
if($si->is_error() || !is_array($res)){
// Reset the list of licenses
foreach($res as $item){
+ $item['objectClass'] = array('fake_opsiLicense');
+
// Fake an ldap entry, this enables ACL checks.
+ $entry = array();
$entry['dn'] = "opsi:cn=".$item['cn'][0].",".$config->current['BASE'];
foreach($item as $name => $value){
$entry[] = $name;
$result[] = $entry;
}
}
- return(filterACL::unifyResult($result));
+ return($result);
}
static function unifyResult($result)