function setRequest() { if ($this->parentGroup == Null) { $parent_gid = xmlrpc_get_convergence_parent_group_id($this->id); /* Get parent group with root context @see #2240 Needed to get parent name for package edition */ $parent_group = new Group($parent_gid, True, False, True); $this->setParentGroup($parent_group); } $this->request = new Request(); /* Create dyngroup based on parent group's name */ $subReqModule = 'dyngroup'; $subReqCriterion = 'groupname'; $subReqValue = $this->parentGroup->name; $subReqValue2 = ''; $subReqOperator = '='; $subReq = new SubRequest($subReqModule, $subReqCriterion, $subReqValue, $subReqValue2, $subReqOperator); /* Add subrequest */ $this->request->addSub($subReq); /* Create convergence groups subrequest */ $subReqModule = in_array('glpi', $_SESSION['modulesList']) ? 'glpi' : 'inventory'; $subReqCriterion = 'Installed software (specific vendor and version)'; if (in_array('inventory', $_SESSION['modulesList'])) { $subReqCriterion = 'Software/Company:ProductName:ProductVersion'; } $Qvendor = $this->package->Qvendor ? str_replace(',', '*', $this->package->Qvendor) : '*'; $Qsoftware = $this->package->Qsoftware ? str_replace(',', '*', $this->package->Qsoftware) : '*'; $Qversion = $this->package->Qversion ? str_replace(',', '*', $this->package->Qversion) : '*'; $subReqValue = sprintf('>%s, %s, %s<', $Qvendor, $Qsoftware, $Qversion); $subReqValue2 = ''; $subReqOperator = '='; $subReq = new SubRequest($subReqModule, $subReqCriterion, $subReqValue, $subReqValue2, $subReqOperator); /* Add convergence subrequest to main request */ $this->request->addSub($subReq); /* Set request with root context @see #2240 * second param is True * Needed for package edition */ parent::setRequest($this->request->toS(), True); }
function setRequest() { if ($this->parentGroup == Null) { $parent_gid = xmlrpc_get_convergence_parent_group_id($this->id); /* Get parent group with root context @see #2240 Needed to get parent name for package edition */ $parent_group = new Group($parent_gid, True, False, True); $this->setParentGroup($parent_group); } $request = array(); /* Create convergence groups subrequest */ $subReqModule = in_array('glpi', $_SESSION['modulesList']) ? 'glpi' : 'inventory'; $subReqCriterion = 'Installed software (specific vendor and version)'; if (in_array('inventory', $_SESSION['modulesList'])) { $subReqCriterion = 'Software/Company:ProductName:ProductVersion'; } // Arrays are for bundles (multiple convergence criterions) if (!is_array($this->package->Qvendor)) { $this->package->Qvendor = array($this->package->Qvendor); $this->package->Qsoftware = array($this->package->Qsoftware); $this->package->Qversion = array($this->package->Qversion); } $i = 0; for ($i = 0; $i < count($this->package->Qvendor); $i++) { $Qvendor = $this->package->Qvendor[$i] ? str_replace(',', '*', $this->package->Qvendor[$i]) : '*'; $Qsoftware = $this->package->Qsoftware[$i] ? str_replace(',', '*', $this->package->Qsoftware[$i]) : '*'; $Qversion = $this->package->Qversion[$i] ? str_replace(',', '*', $this->package->Qversion[$i]) : '*'; $request[] = sprintf("%d==%s::%s==>%s, %s, %s<", $i + 1, $subReqModule, $subReqCriterion, $Qvendor, $Qsoftware, $Qversion); } // Adding parent group condition in last $request[] = $i + 1 . '==dyngroup::groupname==' . $this->parentGroup->name; $request = implode('||', $request); parent::setRequest($request, True); }