eZ\Publish\Core\Persistence\Legacy\User\Mapper::mapRoleAssignments PHP Method

mapRoleAssignments() public method

Map data for a set of role assignments.
public mapRoleAssignments ( array $data ) : eZ\Publish\SPI\Persistence\User\RoleAssignment[]
$data array
return eZ\Publish\SPI\Persistence\User\RoleAssignment[]
    public function mapRoleAssignments(array $data)
    {
        $roleAssignmentData = array();
        foreach ($data as $row) {
            $id = (int) $row['id'];
            $roleId = (int) $row['role_id'];
            $contentId = (int) $row['contentobject_id'];
            // if user already have full access to a role, continue
            if (isset($roleAssignmentData[$roleId][$contentId]) && $roleAssignmentData[$roleId][$contentId] instanceof RoleAssignment) {
                continue;
            }
            $limitIdentifier = $row['limit_identifier'];
            if (!empty($limitIdentifier)) {
                $roleAssignmentData[$roleId][$contentId][$limitIdentifier][$id] = new RoleAssignment(array('id' => $id, 'roleId' => $roleId, 'contentId' => $contentId, 'limitationIdentifier' => $limitIdentifier, 'values' => array($row['limit_value'])));
            } else {
                $roleAssignmentData[$roleId][$contentId] = new RoleAssignment(array('id' => $id, 'roleId' => $roleId, 'contentId' => $contentId));
            }
        }
        $roleAssignments = array();
        array_walk_recursive($roleAssignmentData, function ($roleAssignment) use(&$roleAssignments) {
            $roleAssignments[] = $roleAssignment;
        });
        return $roleAssignments;
    }

Usage Example

示例#1
0
 /**
  * Loads roles assignments to a user/group.
  *
  * Role Assignments with same roleId and limitationIdentifier will be merged together into one.
  *
  * @param mixed $groupId In legacy storage engine this is the content object id roles are assigned to in ezuser_role.
  *                      By the nature of legacy this can currently also be used to get by $userId.
  * @param bool $inherit If true also return inherited role assignments from user groups.
  *
  * @return \eZ\Publish\SPI\Persistence\User\RoleAssignment[]
  */
 public function loadRoleAssignmentsByGroupId($groupId, $inherit = false)
 {
     $data = $this->roleGateway->loadRoleAssignmentsByGroupId($groupId, $inherit);
     if (empty($data)) {
         return array();
     }
     return $this->mapper->mapRoleAssignments($data);
 }