X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FBAO%2FRelationship.php;h=93ef64b11e806dc8600807323e8390598c4c488b;hb=cdeb4bdffdfc26d382057594206ed1f39721f6f6;hp=492df4b0bbe456f241145e15d797f13a3a4fbd88;hpb=6c23ae8c0e7b47682f7366dd673ec18ccfe54bc8;p=civicrm-core.git diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index 492df4b0bb..93ef64b11e 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -47,22 +47,30 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { * * @param array $params (reference ) an assoc array of name/value pairs * @param array $ids the array that holds all the db ids + * per http://wiki.civicrm.org/confluence/display/CRM/Database+layer + * "we are moving away from the $ids param " * * @return object CRM_Contact_BAO_Relationship object * @access public * @static */ - static function create(&$params, &$ids) { + static function create(&$params, $ids = array()) { $valid = $invalid = $duplicate = $saved = 0; - $relationshipId = CRM_Utils_Array::value('relationship', $ids); + $relationships = array(); + $relationshipId = CRM_Utils_Array::value('relationship', $ids, CRM_Utils_Array::value('id', $params)); //CRM-9015 - the hooks are called here & in add (since add doesn't call create) // but in future should be tidied per ticket - if (CRM_Utils_Array::value('relationship', $ids)) { - CRM_Utils_Hook::pre('edit', 'Relationship', $ids['relationship'], $params); + if(empty($relationshipId)){ + $hook = 'create'; + $action = CRM_Core_Action::ADD; } - else { - CRM_Utils_Hook::pre('create', 'Relationship', NULL, $params); + else{ + $hook = 'edit'; + $action = CRM_Core_Action::UPDATE; } + + CRM_Utils_Hook::pre($hook, 'Relationship', $relationshipId, $params); + if (!$relationshipId) { // creating a new relationship $dataExists = self::dataExists($params); @@ -98,6 +106,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { $relationship = self::add($params, $ids, $key); $relationshipIds[] = $relationship->id; + $relationships[$relationship->id] = $relationship; $valid++; } // editing the relationship @@ -131,6 +140,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { // editing an existing relationship $relationship = self::add($params, $ids, $ids['contactTarget']); $relationshipIds[] = $relationship->id; + $relationships[$relationship->id] = $relationship; $saved++; } } @@ -161,7 +171,6 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { $title = CRM_Contact_BAO_Contact::displayName($relationship->contact_id_a) . ' (' . CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_RelationshipType', $relationship->relationship_type_id, 'label_a_b' ) . ' ' . CRM_Contact_BAO_Contact::displayName($relationship->contact_id_b) . ')'; - // add the recently created Relationship CRM_Utils_Recent::add($title, $url, @@ -173,7 +182,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { ); } - return array($valid, $invalid, $duplicate, $saved, $relationshipIds); + return array($valid, $invalid, $duplicate, $saved, $relationshipIds, $relationships); } /**