You are here

class GroupType in Group 7

Main class for group type entities.

Hierarchy

Expanded class hierarchy of GroupType

1 string reference to 'GroupType'
group_entity_info in ./group.entity.inc
Implements hook_entity_info().

File

classes/group_type.inc, line 10
Defines the Entity API class for group types.

View source
class GroupType extends Entity {

  /**
   * Cache of GroupRole entities.
   *
   * @var array
   */
  protected $entityCache = array();

  /**
   * Resets the internal entity cache.
   *
   * @param array $ids
   *   (optional) If specified, the cache is reset for the GroupRole entities
   *   with the given ids only.
   */
  public function resetCache(array $ids = NULL) {
    if (isset($ids)) {
      foreach ($ids as $id) {
        unset($this->entityCache[$id]);
      }
    }
    else {
      $this->entityCache = array();
    }
  }

  /**
   * Retrieve all possible roles for a group type.
   *
   * @param bool $special
   *   Include special roles 'anonymous', 'outsider' and 'member'.
   * @param bool $reset
   *   Whether to reset the internal cache.
   *
   * @return array
   *   A list of GroupRole entities.
   *
   * @see group_roles()
   */
  public function getRoles($special = TRUE, $reset = FALSE) {
    if (empty($this->entityCache) || $reset) {

      // We're about to fake two type specific roles: outsider and member.
      $values = array(
        'type' => $this->name,
        'global' => 0,
      );

      // Fake the anonymous role.
      $values['name'] = 'anonymous';
      $values['label'] = t('Anonymous');
      $values['permissions'] = $this->anonymous_permissions;
      $group_roles['anonymous'] = entity_create('group_role', $values);

      // Fake the outsider role.
      $values['name'] = 'outsider';
      $values['label'] = t('Outsider');
      $values['permissions'] = $this->outsider_permissions;
      $group_roles['outsider'] = entity_create('group_role', $values);

      // Fake the member role.
      $values['name'] = 'member';
      $values['label'] = t('Member');
      $values['permissions'] = $this->member_permissions;
      $group_roles['member'] = entity_create('group_role', $values);

      // Unset the is_new flags to avoid confusion.
      unset($group_roles['anonymous']->is_new, $group_roles['outsider']->is_new, $group_roles['member']->is_new);

      // Add the local roles for this group type.
      $query = new EntityFieldQuery();
      $query
        ->entityCondition('entity_type', 'group_role');
      $query
        ->propertyCondition('type', $this->name);
      $query
        ->propertyOrderBy('weight');
      $result = $query
        ->execute();
      if (isset($result['group_role'])) {
        $group_roles += group_roles(array_keys($result['group_role']));
      }

      // Add global roles.
      $query = new EntityFieldQuery();
      $query
        ->entityCondition('entity_type', 'group_role');
      $query
        ->propertyCondition('global', 1);
      $query
        ->propertyOrderBy('weight');
      $result = $query
        ->execute();
      if (isset($result['group_role'])) {
        $group_roles += group_roles(array_keys($result['group_role']));
      }
      $this->entityCache = $group_roles;
    }
    $group_roles = $this->entityCache;
    if (!$special) {
      unset($group_roles['anonymous'], $group_roles['outsider'], $group_roles['member']);
    }
    return $group_roles;
  }

  /**
   * Delete all possible roles for a group type.
   *
   * Does not delete global or special (outsider or member) roles.
   *
   * @see group_roles()
   */
  public function removeRoles() {
    $roles = array();
    foreach ($this
      ->getRoles(FALSE) as $name => $group_role) {
      if (empty($group_role->global)) {
        $roles[] = $name;
      }
    }

    // Delete all roles specific to this group type.
    group_role_delete_multiple($roles);

    // Remove all deleted roles from the internal cache.
    $this
      ->resetCache($roles);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Entity::$defaultLabel protected property 1
Entity::$entityInfo protected property
Entity::$entityType protected property
Entity::$idKey protected property
Entity::$wrapper protected property
Entity::buildContent public function Builds a structured array representing the entity's content. Overrides EntityInterface::buildContent 1
Entity::bundle public function Returns the bundle of the entity. Overrides EntityInterface::bundle
Entity::defaultLabel protected function Defines the entity label if the 'entity_class_label' callback is used. 1
Entity::defaultUri protected function Override this in order to implement a custom default URI and specify 'entity_class_uri' as 'uri callback' hook_entity_info().
Entity::delete public function Permanently deletes the entity. Overrides EntityInterface::delete
Entity::entityInfo public function Returns the info of the type of the entity. Overrides EntityInterface::entityInfo
Entity::entityType public function Returns the type of the entity. Overrides EntityInterface::entityType
Entity::export public function Exports the entity. Overrides EntityInterface::export
Entity::getTranslation public function Gets the raw, translated value of a property or field. Overrides EntityInterface::getTranslation
Entity::hasStatus public function Checks if the entity has a certain exportable status. Overrides EntityInterface::hasStatus
Entity::identifier public function Returns the entity identifier, i.e. the entities name or numeric id. Overrides EntityInterface::identifier
Entity::internalIdentifier public function Returns the internal, numeric identifier. Overrides EntityInterface::internalIdentifier
Entity::isDefaultRevision public function Checks whether the entity is the default revision. Overrides EntityInterface::isDefaultRevision
Entity::label public function Returns the label of the entity. Overrides EntityInterface::label
Entity::save public function Permanently saves the entity. Overrides EntityInterface::save
Entity::setUp protected function Set up the object instance on construction or unserializiation.
Entity::uri public function Returns the uri of the entity just as entity_uri(). Overrides EntityInterface::uri
Entity::view public function Generate an array for rendering the entity. Overrides EntityInterface::view
Entity::wrapper public function Returns the EntityMetadataWrapper of the entity. Overrides EntityInterface::wrapper
Entity::__construct public function 1
Entity::__sleep public function Magic method to only serialize what's necessary.
Entity::__wakeup public function Magic method to invoke setUp() on unserialization.
GroupType::$entityCache protected property Cache of GroupRole entities.
GroupType::getRoles public function Retrieve all possible roles for a group type.
GroupType::removeRoles public function Delete all possible roles for a group type.
GroupType::resetCache public function Resets the internal entity cache.