/** * Given an implicit returns the matching explicit user Authorizations. * Explicit Authorizations can be modified. A null argument will be * treated as a wildcard. * * @param object Authorization $implicitAuthorization * * @return object AuthorizationIterator * * @throws object AuthorizationException An exception with * one of the following messages defined in * org.osid.authorization.AuthorizationException may be thrown: * {@link * org.osid.authorization.AuthorizationException#OPERATION_FAILED * OPERATION_FAILED}, {@link * org.osid.authorization.AuthorizationException#PERMISSION_DENIED * PERMISSION_DENIED}, {@link * org.osid.authorization.AuthorizationException#CONFIGURATION_ERROR * CONFIGURATION_ERROR}, {@link * org.osid.authorization.AuthorizationException#UNIMPLEMENTED * UNIMPLEMENTED}, {@link * org.osid.authorization.AuthorizationException#NULL_ARGUMENT * NULL_ARGUMENT}, {@link * org.osid.authorization.AuthorizationException#UNKNOWN_ID * UNKNOWN_ID}, {@link * org.osid.authorization.AuthorizationException#UNKNOWN_TYPE * UNKNOWN_TYPE} * * @access public */ function getExplicitUserAZsForImplicitAZ(Authorization $implicitAuthorization) { if ($implicitAuthorization->isExplicit()) { // "The Authorization must be implicit." throwError(new Error(AuthorizationExeption::OPERATION_FAILED(), "AuthorizationManager", true)); } return new HarmoniIterator(array($implicitAuthorization->getExplicitAZ())); }
/** * Update the reference name for this Function. * * WARNING: NOT IN OSID * * @param string $referenceName * * @throws object AuthorizationException An exception with * one of the following messages defined in * org.osid.authorization.AuthorizationException may be thrown: * {@link * org.osid.authorization.AuthorizationException#OPERATION_FAILED * OPERATION_FAILED}, {@link * org.osid.authorization.AuthorizationException#PERMISSION_DENIED * PERMISSION_DENIED}, {@link * org.osid.authorization.AuthorizationException#CONFIGURATION_ERROR * CONFIGURATION_ERROR}, {@link * org.osid.authorization.AuthorizationException#UNIMPLEMENTED * UNIMPLEMENTED}, {@link * org.osid.authorization.AuthorizationException#NULL_ARGUMENT * NULL_ARGUMENT} * * @access public */ function updateReferenceName($referenceName) { // ** parameter validation $stringRule = StringValidatorRule::getRule(); ArgumentValidator::validate($referenceName, $stringRule, true); // ** end of parameter validation if ($this->_referenceName == $referenceName) { return; } // nothing to update // update the object $this->_referenceName = $referenceName; // update the database $dbHandler = Services::getService("DatabaseManager"); $query = new UpdateQuery(); $query->setTable("az_function"); $query->addWhereEqual("function_id", $this->getId()->getIdString()); $query->addValue("function_reference_name", $referenceName); $queryResult = $dbHandler->query($query, $this->_dbIndex); if ($queryResult->getNumberOfRows() == 0) { throwError(new Error(AuthorizationExeption::OPERATION_FAILED(), "AuthorizationFunction", true)); } if ($queryResult->getNumberOfRows() > 1) { throwError(new Error(AuthorizationExeption::OPERATION_FAILED(), "AuthorizationFunction", true)); } }
/** * Given an implicit returns the matching explicit user Authorizations. * Explicit Authorizations can be modified. A null argument will be * treated as a wildcard. * * @param object Authorization $implicitAuthorization * * @return object AuthorizationIterator * * @throws object AuthorizationException An exception with * one of the following messages defined in * org.osid.authorization.AuthorizationException may be thrown: * {@link * org.osid.authorization.AuthorizationException#OPERATION_FAILED * OPERATION_FAILED}, {@link * org.osid.authorization.AuthorizationException#PERMISSION_DENIED * PERMISSION_DENIED}, {@link * org.osid.authorization.AuthorizationException#CONFIGURATION_ERROR * CONFIGURATION_ERROR}, {@link * org.osid.authorization.AuthorizationException#UNIMPLEMENTED * UNIMPLEMENTED}, {@link * org.osid.authorization.AuthorizationException#NULL_ARGUMENT * NULL_ARGUMENT}, {@link * org.osid.authorization.AuthorizationException#UNKNOWN_ID * UNKNOWN_ID}, {@link * org.osid.authorization.AuthorizationException#UNKNOWN_TYPE * UNKNOWN_TYPE} * * @access public */ function getExplicitUserAZsForImplicitAZ(Authorization $implicitAuthorization) { if ($implicitAuthorization->isExplicit()) { // "The Authorization must be implicit." throwError(new Error(AuthorizationExeption::OPERATION_FAILED(), "AuthorizationManager", true)); } $agentId = $implicitAuthorization->getAgentId(); $function = $implicitAuthorization->getFunction(); $functionId = $function->getId(); $qualifier = $implicitAuthorization->getQualifier(); $qualifierId = $qualifier->getId(); $authorizations = $this->_cache->getAZs($agentId->getIdString(), $functionId->getIdString(), $qualifierId->getIdString(), null, true, true, $implicitAuthorization->isActiveNow(), $this->_getContainingGroupIdStrings($agentId)); // isActiveNow // Make sure that we are only returning explicit AZs for implicit // AZs, not other explicit AZs at this node. This means, only return // AZs where the agentId or the qualifier Id are different from those // of the implicit AZ $explicitForImplicit = array(); foreach (array_keys($authorizations) as $key) { $az = $authorizations[$key]; $aId = $az->getAgentId(); $q = $az->getQualifier(); $qId = $q->getId(); if ($agentId->isEqual($aId) && $qualifierId->isEqual($qId)) { continue; } else { $explicitForImplicit[] = $az; } } $i = new HarmoniAuthorizationIterator($explicitForImplicit); return $i; }