You are here

function merci_permissions_rules_line_item_validate in MERCI (Manage Equipment Reservations, Checkout and Inventory) 7.3

1 string reference to 'merci_permissions_rules_line_item_validate'
merci_permissions_rules_action_info in merci_permissions/merci_permissions.module
Implements hook_rules_action_info() on behalf of the user module.

File

merci_permissions/merci_permissions.module, line 58

Code

function merci_permissions_rules_line_item_validate($roles_required, $roles_user, $errors) {
  if (empty($roles_user)) {
    $error = $errors
      ->offsetExists(MERCI_RESOURCE_REFERENCE) ? $errors
      ->offsetGet(MERCI_RESOURCE_REFERENCE) : array();
    $error[] = t('Patron does not have any roles assigned.');
    $errors
      ->offsetSet(MERCI_RESOURCE_REFERENCE, $error);
  }
  $suspended_id = array_search('Suspended', merci_permissions_allowed_values());
  if (in_array($suspended_id, $roles_user)) {
    $error = $errors
      ->offsetExists(MERCI_RESOURCE_REFERENCE) ? $errors
      ->offsetGet(MERCI_RESOURCE_REFERENCE) : array();
    $error[] = t('Patron is suspended from checking out resources.');
    $errors
      ->offsetSet(MERCI_RESOURCE_REFERENCE, $error);
  }
  foreach ($roles_required as $id => $role) {
    if (empty($role)) {
      unset($roles_required[$id]);
    }
  }
  if (empty($roles_required)) {
    $error = $errors
      ->offsetExists(MERCI_RESOURCE_REFERENCE) ? $errors
      ->offsetGet(MERCI_RESOURCE_REFERENCE) : array();
    $error[] = t('No roles are allowed to checkout this item.');
    $errors
      ->offsetSet(MERCI_RESOURCE_REFERENCE, $error);
  }
  else {
    $roles = array_intersect($roles_user, $roles_required);
    if (empty($roles)) {
      $role_titles = merci_permissions_allowed_values();
      $error = $errors
        ->offsetExists(MERCI_RESOURCE_REFERENCE) ? $errors
        ->offsetGet(MERCI_RESOURCE_REFERENCE) : array();
      $error[] = t('User does not have the following roles to checkout this item: %roles', array(
        '%roles' => implode(', ', array_intersect_key($role_titles, array_flip($roles_required))),
      ));
      $errors
        ->offsetSet(MERCI_RESOURCE_REFERENCE, $error);
    }
  }
}