/** * takes an associative array and creates a relationship object * * * @param array $params (reference ) an assoc array of name/value pairs * @param array $ids the array that holds all the db ids * * @return object CRM_Contact_BAO_Relationship object * @access public * @static */ function create(&$params, &$ids) { $valid = $invalid = $duplicate = $saved = 0; $relationshipId = CRM_Utils_Array::value('relationship', $ids); if (!$relationshipId) { // creating a new relationship $dataExists = CRM_Contact_BAO_Relationship::dataExists($params); if (!$dataExists) { return null; } foreach ($params['contact_check'] as $key => $value) { $errors = ''; // check if the realtionship is valid between contacts. // step 1: check if the relationship is valid if not valid skip and keep the count // step 2: check the if two contacts already have a relationship if yes skip and keep the count // step 3: if valid relationship then add the relation and keep the count $errors = CRM_Contact_BAO_Relationship::checkValidRelationship($params, $ids, $key); // step 1 if ($errors) { $invalid++; continue; } if (CRM_Contact_BAO_Relationship::checkDuplicateRelationship($params, CRM_Utils_Array::value('contact', $ids), $key)) { // step 2 $duplicate++; continue; } $relationship = CRM_Contact_BAO_Relationship::add($params, $ids, $key); $valid++; } //return array( $valid, $invalid, $duplicate, $saved ); } else { //editing the relationship // check for duplicate relationship if (CRM_Contact_BAO_Relationship::checkDuplicateRelationship($params, CRM_Utils_Array::value('contact', $ids), $ids['contactTarget'], $relationshipId)) { $duplicate++; return array($valid, $invalid, $duplicate); } // editing an existing relationship CRM_Contact_BAO_Relationship::add($params, $ids, $ids['contactTarget']); $saved++; //return array( $valid, $invalid, $duplicate, $saved ); } return array($valid, $invalid, $duplicate, $saved); }