email_address = $address; $email_address->save(); self::$createdAddresses[] = $email_address; return $email_address; } /** * Add specified email address to the person * * @param Person $person * @param string|EmailAddress $address * @param array $additional_values * @return boolean|EmailAddress * @throws InvalidArgumentException */ public static function addAddressToPerson(Person $person, $address, array $additional_values = array()) { if (is_string($address)) { $address = self::createEmailAddress($address); } if (!$address instanceof EmailAddress) { throw new InvalidArgumentException( 'Address must be a string or an instance of EmailAddress, ' . gettype($address) . ' given' ); } if (!$person->load_relationship('email_addresses')) { return false; } // create relation between user and email address $person->email_addresses->add(array($address), $additional_values); $GLOBALS['db']->commit(); return $address; } public static function removeAllCreatedAddresses() { $ids = self::getCreatedEmailAddressIds(); if (count($ids) > 0) { $GLOBALS['db']->query('DELETE FROM email_addresses WHERE id IN (\'' . implode("', '", $ids) . '\')'); } self::$createdAddresses = array(); } public static function getCreatedEmailAddressIds() { $ids = array(); foreach (self::$createdAddresses as $address) { $ids[] = $address->id; } return $ids; } }