You are here

function user_relationship_node_access_form_alter in User Relationships 5.3

Same name and namespace in other branches
  1. 5.2 plugins/user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_form_alter()
  2. 6 user_relationship_node_access/user_relationship_node_access.module \user_relationship_node_access_form_alter()

hook_form_alter()

File

user_relationship_node_access/user_relationship_node_access.module, line 38

Code

function user_relationship_node_access_form_alter($form_id, &$form) {
  global $user;
  if ($form['#node'] && $form['#node']->uid != $user->uid) {
    return;
  }
  if ((is_null($form['type']) || $form['type']['#value'] . '_node_form' != $form_id) && $form_id != 'node_type_form' || !count($types = user_relationships_types_load())) {
    return;
  }

  // Node form
  if ($form_id != 'node_type_form') {
    $form['user_relationship_node_access'] = array(
      '#type' => 'fieldset',
      '#title' => t('User Relationships Node Access'),
      '#description' => t('Node access based on your relationships to other users'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#tree' => TRUE,
      '#theme' => 'user_relationship_node_access_form',
    );
    foreach ($types as $rtid => $type) {
      unset($types[$rtid]);
      if ($type->is_oneway) {
        $types["{$rtid}_yt"] = t('@type (you to them)', array(
          '@type' => $type->plural_name,
        ));
        $types["{$rtid}_ty"] = t('@type (them to you)', array(
          '@type' => $type->plural_name,
        ));
      }
      else {
        $types[$rtid] = $type->plural_name;
      }
    }
    asort($types);

    // reverse the optimization made after saving
    $permissions = array();
    if (is_array($form['#node']->user_relationship_node_access)) {
      foreach ($form['#node']->user_relationship_node_access as $rtid => $permission) {
        foreach ($permission as $action => $trash) {
          $permissions[$action][$rtid] = $rtid;
        }
      }
    }
    $form['user_relationship_node_access'] = array(
      '#type' => 'fieldset',
      '#title' => t('User Relationships Node Access'),
      '#description' => t('Node access based on your relationships to other users'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#tree' => TRUE,
    );
    foreach (array(
      'view',
      'update',
      'delete',
    ) as $action) {
      $form['user_relationship_node_access'][$action] = array(
        '#type' => 'checkboxes',
        '#multiple' => TRUE,
        '#options' => $types,
        '#title' => t(ucfirst($action)),
        '#default_value' => $permissions[$action],
        '#description' => t('If no box is ticked, then anyone can @action.', array(
          '@action' => $action,
        )),
      );
    }
  }
}