You are here

function apply_for_role_update_7001 in Apply for role 7.2

Same name and namespace in other branches
  1. 7 apply_for_role.install \apply_for_role_update_7001()

Set the 'deny role applications' and 'delete role applications' permissions for users who have the 'approve role applications' permission.

File

./apply_for_role.install, line 178
Installs the Apply for Role (AFR) module.

Code

function apply_for_role_update_7001(&$sandbox) {
  $sandbox['#finished'] = 0;

  // Multi-part update.
  if (!isset($sandbox['permission_from'])) {
    $sandbox['permission_from'] = 0;
    $sandbox['permission_count'] = db_query("SELECT COUNT(rid) FROM {role_permission} WHERE permission = :permission", array(
      ':permission' => 'approve role applications',
    ))
      ->fetchField();
  }
  else {
    $has_rows = FALSE;

    // Update this many per page load.
    $count = 1000;
    $results = db_query_range("SELECT rid FROM {role_permission} WHERE permission = :permission", $sandbox['permission_from'], $count, array(
      ':permission' => 'approve role applications',
    ));
    foreach ($results as $result) {
      $has_rows = TRUE;
      db_insert('role_permission')
        ->fields(array(
        'rid' => $result->rid,
        'permission' => 'view role applications',
      ))
        ->execute();
      db_insert('role_permission')
        ->fields(array(
        'rid' => $result->rid,
        'permission' => 'deny role applications',
      ))
        ->execute();
      db_insert('role_permission')
        ->fields(array(
        'rid' => $result->rid,
        'permission' => 'delete role applications',
      ))
        ->execute();
    }
    $sandbox['#finished'] = $sandbox['permission_from'] / $sandbox['permission_count'];
    $sandbox['permission_from'] += $count;
    if (!$has_rows) {
      $sandbox['#finished'] = 1;
      return t('The role permissions for <em>Apply for Role</em> have been updated.');
    }
  }
}