You are here

function user_relationships_ui_type_edit_submit in User Relationships 6

Process the relationship edit page form submission.

File

user_relationships_ui/user_relationships_ui.admin_actions.inc, line 57
User Relationships admin submit handlers

Code

function user_relationships_ui_type_edit_submit($form, &$form_state) {
  $relationship_type = (object) $form_state['values'];
  if ($form_state['values']['action'] == 'add') {

    //#348025 when editing a type, make sure that two-way relationships are not left as reciprocal, just in case, as the UI allows it.
    if (!$relationship_type->is_oneway) {
      $relationship_type->is_reciprocal = 0;
    }
    drupal_write_record('user_relationship_types', $relationship_type);

    // Update strings for translation
    _user_relationships_ui_update_translations($relationship_type);
    $form_state['values']['rtid'] = $relationship_type->rtid;
    _user_relationships_invoke('insert', $relationship_type, TRUE);
    drupal_set_message(t('Relationship %name has been added.', array(
      '%name' => $relationship_type->name,
    )));
    watchdog('u_relationship', 'User Relationships form: relationship %name added.', array(
      '%name' => $relationship_type->name,
    ), WATCHDOG_NOTICE, l(t('view'), 'admin/user/user_relationship/types/' . $relationship_type->rtid . '/edit'));
  }
  else {

    //#348025 when editing a type, make sure that two-way relationships are not left as reciprocal, just in case, as the UI allows it.
    if (!$relationship_type->is_oneway) {
      $relationship_type->is_reciprocal = 0;
    }
    drupal_write_record('user_relationship_types', $relationship_type, 'rtid');

    // Update strings for translation
    _user_relationships_ui_update_translations($relationship_type);
    _user_relationships_invoke('update', $relationship_type, TRUE);
    drupal_set_message(t('Relationship %name has been updated.', array(
      '%name' => $relationship_type->name,
    )));
    watchdog('u_relationship', 'User Relationships form: relationship %name updated.', array(
      '%name' => $relationship_type->name,
    ), WATCHDOG_NOTICE, l(t('view'), 'admin/user/relationships/' . $relationship_type->rtid . '/edit'));
  }

  //save role permissions for this rtype
  db_query('DELETE FROM {user_relationship_type_roles} WHERE rtid = %d', $relationship_type->rtid);
  if ($form_state['values']['roles']) {
    $role_record = new StdClass();
    $role_record->rtid = $relationship_type->rtid;
    foreach ($form_state['values']['roles'] as $rid => $selected) {
      if ($rid == $selected) {
        $role_record->rid = $selected;
        drupal_write_record('user_relationship_type_roles', $role_record);
      }
    }
  }

  //save role receive permissions for this rtype
  db_query('DELETE FROM {user_relationship_type_roles_receive} WHERE rtid = %d', $relationship_type->rtid);
  if ($form_state['values']['roles_receive']) {
    $role_receive_record = new StdClass();
    $role_receive_record->rtid = $relationship_type->rtid;
    foreach ($form_state['values']['roles_receive'] as $rid => $selected) {
      if ($rid == $selected) {
        $role_receive_record->rid = $selected;
        drupal_write_record('user_relationship_type_roles_receive', $role_receive_record);
      }
    }
  }
  user_relationships_types_load(TRUE);
  menu_rebuild();
  $form_state['redirect'] = 'admin/user/relationships';
}