eZ\Publish\Core\Persistence\Legacy\User\Role\Gateway\DoctrineDatabase::addPolicy PHP Method

addPolicy() public method

Adds a policy to a role.
public addPolicy ( mixed $roleId, eZ\Publish\SPI\Persistence\User\Policy $policy ) : eZ\Publish\SPI\Persistence\User\Policy
$roleId mixed
$policy eZ\Publish\SPI\Persistence\User\Policy
return eZ\Publish\SPI\Persistence\User\Policy
    public function addPolicy($roleId, Policy $policy)
    {
        $query = $this->handler->createInsertQuery();
        $query->insertInto($this->handler->quoteTable('ezpolicy'))->set($this->handler->quoteColumn('id'), $this->handler->getAutoIncrementValue('ezpolicy', 'id'))->set($this->handler->quoteColumn('function_name'), $query->bindValue($policy->function))->set($this->handler->quoteColumn('module_name'), $query->bindValue($policy->module))->set($this->handler->quoteColumn('original_id'), $query->bindValue($policy->originalId ?: 0, null, \PDO::PARAM_INT))->set($this->handler->quoteColumn('role_id'), $query->bindValue($roleId, null, \PDO::PARAM_INT));
        $query->prepare()->execute();
        $policy->id = $this->handler->lastInsertId($this->handler->getSequenceName('ezpolicy', 'id'));
        $policy->roleId = $roleId;
        // Handle the only valid non-array value "*" by not inserting
        // anything. Still has not been documented by eZ Systems. So we
        // assume this is the right way to handle it.
        if (is_array($policy->limitations)) {
            $this->addPolicyLimitations($policy->id, $policy->limitations);
        }
        return $policy;
    }