/** * Add a new role * * @param array $roleInfo * string name * @return integer|string */ public function addRole(array $roleInfo) { $insertId = 0; try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $insert = $this->insert()->into('acl_role')->values(array_merge($roleInfo, ['type' => self::ROLE_TYPE_CUSTOM])); $statement = $this->prepareStatementForSqlObject($insert); $statement->execute(); $insertId = $this->adapter->getDriver()->getLastGeneratedValue(); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } // fire the add acl role event AclEvent::fireAddAclRoleEvent($insertId); return $insertId; }