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

createRole() public method

Create new role.
public createRole ( eZ\Publish\SPI\Persistence\User\Role $role ) : eZ\Publish\SPI\Persistence\User\Role
$role eZ\Publish\SPI\Persistence\User\Role
return eZ\Publish\SPI\Persistence\User\Role
    public function createRole(Role $role)
    {
        // Role original ID is set when creating a draft from an existing role
        if ($role->status === Role::STATUS_DRAFT && $role->id) {
            $roleOriginalId = $role->id;
        } elseif ($role->status === Role::STATUS_DRAFT) {
            // Not using a constant here as this is legacy storage engine specific.
            // -1 means "Newly created role".
            $roleOriginalId = -1;
        } else {
            // Role::STATUS_DEFINED value is 0, which is the expected value for version column for this status.
            $roleOriginalId = Role::STATUS_DEFINED;
        }
        $query = $this->handler->createInsertQuery();
        $query->insertInto($this->handler->quoteTable('ezrole'))->set($this->handler->quoteColumn('id'), $this->handler->getAutoIncrementValue('ezrole', 'id'))->set($this->handler->quoteColumn('is_new'), 0)->set($this->handler->quoteColumn('name'), $query->bindValue($role->identifier))->set($this->handler->quoteColumn('value'), 0)->set($this->handler->quoteColumn('version'), $query->bindValue($roleOriginalId));
        $query->prepare()->execute();
        if (!isset($role->id) || (int) $role->id < 1 || $role->status === Role::STATUS_DRAFT) {
            $role->id = $this->handler->lastInsertId($this->handler->getSequenceName('ezrole', 'id'));
        }
        $role->originalId = $roleOriginalId;
    }