2 /*********************************************************************************
3 * SugarCRM Community Edition is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
6 * This program is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Affero General Public License version 3 as published by the
8 * Free Software Foundation with the addition of the following permission added
9 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
18 * You should have received a copy of the GNU Affero General Public License along with
19 * this program; if not, see http://www.gnu.org/licenses or write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26 * The interactive user interfaces in modified source and object code versions
27 * of this program must display Appropriate Legal Notices, as required under
28 * Section 5 of the GNU Affero General Public License version 3.
30 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31 * these Appropriate Legal Notices must retain the display of the "Powered by
32 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33 * technical reasons, the Appropriate Legal Notices must display the words
34 * "Powered by SugarCRM".
35 ********************************************************************************/
38 require_once 'modules/EmailAddresses/EmailAddress.php';
40 class SugarTestEmailAddressUtilities
42 private static $createdAddresses = array();
44 private function __construct() {}
46 public static function createEmailAddress($address = null)
48 if (null === $address)
50 $address = 'address-' . mt_rand() . '@example.com';
53 $email_address = new EmailAddress();
54 $email_address->email_address = $address;
55 $email_address->save();
57 self::$createdAddresses[] = $email_address;
58 return $email_address;
62 * Add specified email address to the person
64 * @param Person $person
65 * @param string|EmailAddress $address
66 * @param array $additional_values
67 * @return boolean|EmailAddress
68 * @throws InvalidArgumentException
70 public static function addAddressToPerson(Person $person, $address, array $additional_values = array())
72 if (is_string($address))
74 $address = self::createEmailAddress($address);
77 if (!$address instanceof EmailAddress)
79 throw new InvalidArgumentException(
80 'Address must be a string or an instance of EmailAddress, '
81 . gettype($address) . ' given'
85 if (!$person->load_relationship('email_addresses'))
90 // create relation between user and email address
91 $person->email_addresses->add(array($address), $additional_values);
92 $GLOBALS['db']->commit();
96 public static function removeAllCreatedAddresses()
98 $ids = self::getCreatedEmailAddressIds();
101 $GLOBALS['db']->query('DELETE FROM email_addresses WHERE id IN (\'' . implode("', '", $ids) . '\')');
103 self::$createdAddresses = array();
106 public static function getCreatedEmailAddressIds()
109 foreach (self::$createdAddresses as $address)
111 $ids[] = $address->id;