You are here

function user_relationships_type_save in User Relationships 7

Same name and namespace in other branches
  1. 5.3 user_relationships_api/user_relationships_api.api.inc \user_relationships_type_save()
  2. 6 user_relationships_api/user_relationships_api.api.inc \user_relationships_type_save()

Create or Update a User Relationship Type

Parameters

$rtype: A User Relationship type object

7 calls to user_relationships_type_save()
UserRelationshipsBaseTestCase::createDefaultRelationshipTypes in ./user_relationships.test
Create a number of relationship types.
UserRelationshipsPrivatemsgRecipientTestCase::testManyRelations in user_relationship_privatemsg/user_relationship_privatemsg.test
Test a relationship with bath api processing.
UserRelationshipsPrivatemsgRecipientTestCase::testSendToRelationship in user_relationship_privatemsg/user_relationship_privatemsg.test
Tests sending a message to related users.
UserRelationshipsTestCase::testTypeAPI in ./user_relationships.test
Test API functions for relationship types.
UserRelationshipUserSettings::setUp in user_relationships_ui/user_relationships_ui.test
Set up the test case.

... See full list

File

./user_relationships.module, line 481
User Relationships API. Module shell.

Code

function user_relationships_type_save($rtype) {

  // #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 (empty($rtype->is_oneway)) {
    $rtype->is_reciprocal = 0;
  }

  // Ensure "expires_val" is numeric and not negative.
  if (!isset($rtype->expires_val) || !is_numeric($rtype->expires_val) || $rtype->expires_val < 0) {
    $rtype->expires_val = 0;
  }
  module_invoke_all('user_relationships_type_presave', $rtype);
  $op = isset($rtype->rtid) && $rtype->rtid ? 'update' : 'insert';

  // Find a relationship type with the name we're trying to save
  // if it's an update action check to see that the rtypes match
  // otherwise it's just invalid.
  $found_rt = user_relationships_type_load(array(
    'name' => $rtype->name,
  ));
  if ($found_rt && ($op == 'update' && $found_rt->rtid != $rtype->rtid || $op == 'insert')) {
    return FALSE;
  }

  // ensure "expires_val" is numeric and not negative
  if (!isset($rtype->expires_val) || !$rtype->expires_val >= 0) {
    $rtype->expires_val = 0;
  }
  drupal_write_record('user_relationship_types', $rtype, $op == 'update' ? 'rtid' : array());
  module_invoke_all('user_relationships_type_' . $op, $rtype);
  if (module_exists('i18n_string')) {
    i18n_string_object_update('user_relationships_type', $rtype);
  }
  drupal_static_reset('user_relationships_types_load');
  menu_rebuild();
}