commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-old / civicrm / sql / GenerateReportData.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.6 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2015 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26 */
27
28 /**
29 *
30 * @package CRM
31 * @copyright CiviCRM LLC (c) 2004-2015
32 * $Id$
33 *
34 */
35
36 /*******************************************************
37 * This class generates data for the schema located in Contact.sql
38 *
39 * each public method generates data for the concerned table.
40 * so for example the addContactDomain method generates and adds
41 * data to the contact_domain table
42 *
43 * Data generation is a bit tricky since the data generated
44 * randomly in one table could be used as a FKEY in another
45 * table.
46 *
47 * In order to ensure that a randomly generated FKEY matches
48 * a field in the referened table, the field in the referenced
49 * table is always generated linearly.
50 *
51 *
52 *
53 *
54 * Some numbers
55 *
56 * Domain ID's - 1 to NUM_DOMAIN
57 *
58 * Context - 3/domain
59 *
60 * Contact - 1 to NUM_CONTACT
61 * 75% - Individual
62 * 15% - Household
63 * 10% - Organization
64 *
65 * Contact to Domain distribution should be equal.
66 *
67 *
68 * Contact Individual = 1 to 0.75*NUM_CONTACT
69 *
70 * Contact Household = 0.75*NUM_CONTACT to 0.9*NUM_CONTACT
71 *
72 * Contact Organization = 0.9*NUM_CONTACT to NUM_CONTACT
73 *
74 * Contact Location = 15% for Households, 10% for Organizations, (75-(15*4))% for Individuals.
75 * (Assumption is that each household contains 4 individuals)
76 *
77 *******************************************************/
78
79 /*******************************************************
80 *
81 * Note: implication of using of mt_srand(1) in constructor
82 * The data generated will be done in a consistent manner
83 * so as to give the same data during each run (but this
84 * would involve populating the entire db at one go - since
85 * mt_srand(1) is in the constructor, if one needs to be able
86 * to get consistent random numbers then the mt_srand(1) shld
87 * be in each function that adds data to each table.
88 *
89 *******************************************************/
90
91
92 require_once '../civicrm.config.php';
93
94 require_once 'CRM/Core/Config.php';
95 require_once 'CRM/Core/Error.php';
96 require_once 'CRM/Core/I18n.php';
97
98 require_once 'CRM/Core/DAO/Address.php';
99 require_once 'CRM/Core/DAO.php';
100 require_once 'CRM/Core/DAO/Phone.php';
101 require_once 'CRM/Core/DAO/Email.php';
102 require_once 'CRM/Core/DAO/EntityTag.php';
103 require_once 'CRM/Core/DAO/Note.php';
104 require_once 'CRM/Core/DAO/Domain.php';
105
106 require_once 'CRM/Contact/DAO/Group.php';
107 require_once 'CRM/Contact/DAO/GroupContact.php';
108 require_once 'CRM/Contact/DAO/SubscriptionHistory.php';
109 require_once 'CRM/Contact/DAO/Contact.php';
110 require_once 'CRM/Contact/DAO/Relationship.php';
111 require_once 'CRM/Event/DAO/Participant.php';
112 require_once 'CRM/Contribute/DAO/ContributionSoft.php';
113 require_once 'CRM/Member/DAO/MembershipPayment.php';
114
115 /**
116 * Class CRM_GCD
117 */
118 class CRM_GCD {
119
120 /*******************************************************
121 * constants
122 *******************************************************/
123 const DATA_FILENAME = "sample_data.xml";
124 const NUM_DOMAIN = 1;
125 const NUM_CONTACT = 5000;
126 const NUM_CONTRIBUTION = 2000;
127 const NUM_MEMBERSHIP = 2000;
128 const NUM_PARTICIPANT = 2000;
129 const INDIVIDUAL_PERCENT = 75;
130 const HOUSEHOLD_PERCENT = 15;
131 const ORGANIZATION_PERCENT = 10;
132 const NUM_INDIVIDUAL_PER_HOUSEHOLD = 4;
133 const NUM_ACTIVITY = 150;
134
135 // relationship types from the table crm_relationship_type
136 const CHILD_OF = 1;
137 const SPOUSE_OF = 2;
138 const SIBLING_OF = 3;
139 const HEAD_OF_HOUSEHOLD = 6;
140 const MEMBER_OF_HOUSEHOLD = 7;
141
142
143 // location types from the table crm_location_type
144 const HOME = 1;
145 const WORK = 2;
146 const MAIN = 3;
147 const OTHER = 4;
148 const ADD_TO_DB = TRUE;
149 //const ADD_TO_DB=FALSE;
150 const DEBUG_LEVEL = 1;
151
152 /*********************************
153 * private members
154 *********************************/
155
156 // enum's from database
157 private $preferredCommunicationMethod = array('1', '2', '3', '4', '5');
158 private $contactType = array('Individual', 'Household', 'Organization');
159 private $phoneType = array('1', '2', '3', '4');
160
161 // customizable enums (foreign keys)
162 private $prefix = array(1 => 'Mrs', 2 => 'Ms', 3 => 'Mr', 4 => 'Dr');
163 private $suffix = array(1 => 'Jr', 2 => 'Sr');
164 private $gender = array(1 => 'Female', 2 => 'Male');
165 private $greetingType = array(1 => 'Dear [first]', 2 => 'Dear [prefix] [first] [last]', 3 => 'Dear [prefix] [last]');
166
167 // store domain id's
168 private $domain = array();
169
170 // store contact id's
171 private $contact = array();
172 private $individual = array();
173 private $household = array();
174 private $organization = array();
175
176
177 // store names, firstnames, street 1, street2
178 private $firstName = array();
179 private $lastName = array();
180 private $streetName = array();
181 private $supplementalAddress1 = array();
182 private $city = array();
183 private $state = array();
184 private $country = array();
185 private $addressDirection = array();
186 private $streetType = array();
187 private $emailDomain = array();
188 private $emailTLD = array();
189 private $organizationName = array();
190 private $organizationField = array();
191 private $organizationType = array();
192 private $group = array();
193 private $note = array();
194 private $activity_type = array();
195 private $module = array();
196 private $callback = array();
197 private $party_registration = array();
198 private $degree = array();
199 private $school = array();
200
201 // stores the strict individual id and household id to individual id mapping
202 private $strictIndividual = array();
203 private $householdIndividual = array();
204
205 // sample data in xml format
206 private $sampleData = NULL;
207
208 // private vars
209 private $numIndividual = 0;
210 private $numHousehold = 0;
211 private $numOrganization = 0;
212 private $numStrictIndividual = 0;
213
214 private $CSC = array(
215 // united states
216 1228 => array(
217 // california
218 1004 => array('San Francisco', 'Los Angeles', 'Palo Alto'),
219 // new york
220 1031 => array('New York', 'Albany'),
221 ),
222 // india
223 1101 => array(
224 // maharashtra
225 1113 => array('Mumbai', 'Pune', 'Nasik'),
226 // karnataka
227 1114 => array('Bangalore', 'Mangalore', 'Udipi'),
228 ),
229 // poland
230 1172 => array(
231 // mazowieckie
232 1115 => array('Warszawa', 'PÅ‚ock'),
233 // pomorskie
234 1116 => array('Gdańsk', 'Gdynia'),
235 ),
236 );
237
238 private $groupMembershipStatus = array('Added', 'Removed', 'Pending');
239 private $subscriptionHistoryMethod = array('Admin', 'Email');
240
241 /*********************************
242 * private methods
243 ********************************
244 * @param int $size
245 * @return string
246 */
247
248 // get a randomly generated string
249 private function _getRandomString($size = 32) {
250 $string = "";
251
252 // get an ascii code for each character
253 for ($i = 0; $i < $size; $i++) {
254 $random_int = mt_rand(65, 122);
255 if (($random_int < 97) && ($random_int > 90)) {
256 // if ascii code between 90 and 97 substitute with space
257 $random_int = 32;
258 }
259 $random_char = chr($random_int);
260 $string .= $random_char;
261 }
262 return $string;
263 }
264
265 /**
266 * @return string
267 */
268 private function _getRandomChar() {
269 return chr(mt_rand(65, 90));
270 }
271
272 /**
273 * @return int
274 */
275 private function getRandomBoolean() {
276 return mt_rand(0, 1);
277 }
278
279 /**
280 * @param $array1
281 *
282 * @return mixed
283 */
284 private function _getRandomElement(&$array1) {
285 return $array1[mt_rand(1, count($array1)) - 1];
286 }
287
288 /**
289 * @param $array1
290 *
291 * @return int
292 */
293 private function _getRandomIndex(&$array1) {
294 return mt_rand(1, count($array1));
295 }
296
297
298 // country state city combo
299 /**
300 * @return array
301 */
302 private function _getRandomCSC() {
303 $array1 = array();
304
305 // $c = array_rand($this->CSC);
306 $c = 1228;
307
308 // the state array now
309 $s = array_rand($this->CSC[$c]);
310
311 // the city
312 $ci = array_rand($this->CSC[$c][$s]);
313 $city = $this->CSC[$c][$s][$ci];
314
315 $array1[] = $c;
316 $array1[] = $s;
317 $array1[] = $city;
318
319 return $array1;
320 }
321
322 /**
323 * Generate a random date.
324 *
325 * If both $startDate and $endDate are defined generate
326 * date between them.
327 *
328 * If only startDate is specified then date generated is
329 * between startDate + 1 year.
330 *
331 * if only endDate is specified then date generated is
332 * between endDate - 1 year.
333 *
334 * if none are specified - date is between today - 1year
335 * and today
336 *
337 * @param int $startDate Start Date in Unix timestamp
338 * @param int $endDate End Date in Unix timestamp
339 * @access private
340 *
341 * @return string randomly generated date in the format "Ymd"
342 *
343 */
344 private function _getRandomDate($startDate = 0, $endDate = 0) {
345
346 // number of seconds per year
347 // $numSecond = 31536000;
348 // number of seconds for 2 year
349 $numSecond = 63072000;
350
351 $dateFormat = "Ymdhis";
352 $today = time();
353
354 // both are defined
355 if ($startDate && $endDate) {
356 return date($dateFormat, mt_rand($startDate, $endDate));
357 }
358
359 // only startDate is defined
360 if ($startDate) {
361 // $nextYear = mktime(0, 0, 0, date("m", $startDate), date("d", $startDate), date("Y")+1);
362 return date($dateFormat, mt_rand($startDate, $startDate + $numSecond));
363 }
364
365 // only endDate is defined
366 if ($startDate) {
367 return date($dateFormat, mt_rand($endDate - $numSecond, $endDate));
368 }
369
370 // none are defined
371 return date($dateFormat, mt_rand($today - $numSecond, $today));
372 }
373
374
375 // insert data into db's
376 /**
377 * @param $dao
378 */
379 private function _insert(&$dao) {
380 if (self::ADD_TO_DB) {
381 if (!$dao->insert()) {
382 echo "ERROR INSERT: " . mysql_error() . "\n";
383 print_r($dao);
384 exit(1);
385 }
386 }
387 }
388
389 // update data into db's
390 /**
391 * @param $dao
392 */
393 private function _update($dao) {
394 if (self::ADD_TO_DB) {
395 if (!$dao->update()) {
396 echo "ERROR UPDATE: " . mysql_error() . "\n";
397 print_r($dao);
398 exit(1);
399 }
400 }
401 }
402
403 /**
404 * Insert a note
405 *
406 * Helper function which randomly populates "note" and
407 * "date_modified" and inserts it.
408 *
409 * @param CRM_DAO_Note DAO object for Note
410 * @access private
411 *
412 * @return none
413 *
414 */
415 private function _insertNote($note) {
416 $note->note = $this->_getRandomElement($this->note);
417 $note->modified_date = $this->_getRandomDate();
418 $this->_insert($note);
419 }
420
421 /*******************************************************
422 *
423 * Start of public functions
424 *
425 *******************************************************/
426 // constructor
427 function __construct() {
428
429 // initialize all the vars
430 $this->numIndividual = self::INDIVIDUAL_PERCENT * self::NUM_CONTACT / 100;
431 $this->numHousehold = self::HOUSEHOLD_PERCENT * self::NUM_CONTACT / 100;
432 $this->numOrganization = self::ORGANIZATION_PERCENT * self::NUM_CONTACT / 100;
433 $this->numStrictIndividual = $this->numIndividual - ($this->numHousehold * self::NUM_INDIVIDUAL_PER_HOUSEHOLD);
434 }
435
436 public function parseDataFile() {
437
438 $sampleData = simplexml_load_file(self::DATA_FILENAME);
439
440 // first names
441 foreach ($sampleData->first_names->first_name as $first_name) {
442 $this->firstName[] = trim($first_name);
443 }
444
445 // last names
446 foreach ($sampleData->last_names->last_name as $last_name) {
447 $this->lastName[] = trim($last_name);
448 }
449
450 // street names
451 foreach ($sampleData->street_names->street_name as $street_name) {
452 $this->streetName[] = trim($street_name);
453 }
454
455 // supplemental address 1
456 foreach ($sampleData->supplemental_addresses_1->supplemental_address_1 as $supplemental_address_1) {
457 $this->supplementalAddress1[] = trim($supplemental_address_1);
458 }
459
460 // cities
461 foreach ($sampleData->cities->city as $city) {
462 $this->city[] = trim($city);
463 }
464
465 // address directions
466 foreach ($sampleData->address_directions->address_direction as $address_direction) {
467 $this->addressDirection[] = trim($address_direction);
468 }
469
470 // street types
471 foreach ($sampleData->street_types->street_type as $street_type) {
472 $this->streetType[] = trim($street_type);
473 }
474
475 // email domains
476 foreach ($sampleData->email_domains->email_domain as $email_domain) {
477 $this->emailDomain[] = trim($email_domain);
478 }
479
480 // email top level domain
481 foreach ($sampleData->email_tlds->email_tld as $email_tld) {
482 $this->emailTLD[] = trim($email_tld);
483 }
484
485 // organization name
486 foreach ($sampleData->organization_names->organization_name as $organization_name) {
487 $this->organization_name[] = trim($organization_name);
488 }
489
490 // organization field
491 foreach ($sampleData->organization_fields->organization_field as $organization_field) {
492 $this->organizationField[] = trim($organization_field);
493 }
494
495 // organization type
496 foreach ($sampleData->organization_types->organization_type as $organization_type) {
497 $this->organizationType[] = trim($organization_type);
498 }
499
500 // group
501 foreach ($sampleData->groups->group as $group) {
502 $this->group[] = trim($group);
503 }
504
505 // notes
506 foreach ($sampleData->notes->note as $note) {
507 $this->note[] = trim($note);
508 }
509
510 // activity type
511 foreach ($sampleData->activity_types->activity_type as $activity_type) {
512 $this->activity_type[] = trim($activity_type);
513 }
514
515
516 // module
517 foreach ($sampleData->modules->module as $module) {
518 $this->module[] = trim($module);
519 }
520
521 // callback
522 foreach ($sampleData->callbacks->callback as $callback) {
523 $this->callback[] = trim($callback);
524 }
525
526 // custom data - party registration
527 foreach ($sampleData->party_registrations->party_registration as $party_registration) {
528 $this->party_registration[] = trim($party_registration);
529 }
530
531 // custom data - degrees
532 foreach ($sampleData->degrees->degree as $degree) {
533 $this->degree[] = trim($degree);
534 }
535
536 // custom data - schools
537 foreach ($sampleData->schools->school as $school) {
538 $this->school[] = trim($school);
539 }
540
541 // custom data - issue
542 foreach ($sampleData->issue->status as $status) {
543 $this->issue[] = trim($status);
544 }
545
546 // custom data - gotv
547 require_once 'CRM/Core/BAO/CustomOption.php';
548 foreach ($sampleData->gotv->status as $status) {
549 $this->gotv[] = CRM_Core_DAO::VALUE_SEPARATOR . trim($status) . CRM_Core_DAO::VALUE_SEPARATOR;
550 }
551
552 // custom data - marital_status
553 foreach ($sampleData->marital_status->status as $status) {
554 $this->marital_status[] = trim($status);
555 }
556 }
557
558 /**
559 * @param $id
560 *
561 * @return string
562 */
563 public function getContactType($id) {
564 if (in_array($id, $this->individual)) {
565 return 'Individual';
566 }
567 if (in_array($id, $this->household)) {
568 return 'Household';
569 }
570 if (in_array($id, $this->organization)) {
571 return 'Organization';
572 }
573 }
574
575
576 public function initDB() {
577 $config = CRM_Core_Config::singleton();
578 }
579
580 /*******************************************************
581 *
582 * this function creates arrays for the following
583 *
584 * domain id
585 * contact id
586 * contact_location id
587 * contact_contact_location id
588 * contact_email uuid
589 * contact_phone_uuid
590 * contact_instant_message uuid
591 * contact_relationship uuid
592 * contact_task uuid
593 * contact_note uuid
594 *
595 *******************************************************/
596 public function initID() {
597
598 // may use this function in future if needed to get
599 // a consistent pattern of random numbers.
600
601 // get the domain and contact id arrays
602 $this->domain = range(1, self::NUM_DOMAIN);
603 shuffle($this->domain);
604 $this->contact = range(2, self::NUM_CONTACT + 1);
605 shuffle($this->contact);
606
607 // get the individual, household and organizaton contacts
608 $offset = 0;
609 $this->individual = array_slice($this->contact, $offset, $this->numIndividual);
610 $offset += $this->numIndividual;
611 $this->household = array_slice($this->contact, $offset, $this->numHousehold);
612 $offset += $this->numHousehold;
613 $this->organization = array_slice($this->contact, $offset, $this->numOrganization);
614
615 // get the strict individual contacts (i.e individual contacts not belonging to any household)
616 $this->strictIndividual = array_slice($this->individual, 0, $this->numStrictIndividual);
617
618 // get the household to individual mapping array
619 $this->householdIndividual = array_diff($this->individual, $this->strictIndividual);
620 $this->householdIndividual = array_chunk($this->householdIndividual, self::NUM_INDIVIDUAL_PER_HOUSEHOLD);
621 $this->householdIndividual = array_combine($this->household, $this->householdIndividual);
622 }
623
624 /*******************************************************
625 *
626 * addDomain()
627 *
628 * This method adds NUM_DOMAIN domains and then adds NUM_REVISION
629 * revisions for each domain with the latest revision being the last one..
630 *
631 *******************************************************/
632 public function addDomain() {
633
634 /* Add a location for domain 1 */
635
636 // FIXME FOR NEW LOCATION BLOCK STRUCTURE
637 // $this->_addLocation(self::MAIN, 1, true);
638
639 $domain = new CRM_Core_DAO_Domain();
640 for ($id = 2; $id <= self::NUM_DOMAIN; $id++) {
641 // domain name is pretty simple. it is "Domain $id"
642 $domain->name = "Domain $id";
643 $domain->description = "Description $id";
644 $domain->contact_name = $this->randomName();
645
646 // insert domain
647 $this->_insert($domain);
648 // FIXME FOR NEW LOCATION BLOCK STRUCTURE
649 // $this->_addLocation(self::MAIN, $id, true);
650 }
651 }
652
653 /**
654 * @return string
655 */
656 public function randomName() {
657 $prefix = $this->_getRandomIndex($this->prefix);
658 $first_name = ucfirst($this->_getRandomElement($this->firstName));
659 $middle_name = ucfirst($this->_getRandomChar());
660 $last_name = ucfirst($this->_getRandomElement($this->lastName));
661 $suffix = $this->_getRandomIndex($this->suffix);
662
663 return $this->prefix[$prefix] . " $first_name $middle_name $last_name " . $this->suffix[$suffix];
664 }
665
666 /*******************************************************
667 *
668 * addContact()
669 *
670 * This method adds data to the contact table
671 *
672 * id - from $contact
673 * contact_type 'Individual' 'Household' 'Organization'
674 * preferred_communication (random 1 to 3)
675 *
676 *******************************************************/
677 public function addContact() {
678
679 // add contacts
680 $contact = new CRM_Contact_DAO_Contact();
681
682 for ($id = 1; $id <= self::NUM_CONTACT; $id++) {
683 $contact->contact_type = $this->getContactType($id + 1);
684 $contact->do_not_phone = mt_rand(0, 1);
685 $contact->do_not_email = mt_rand(0, 1);
686 $contact->do_not_post = mt_rand(0, 1);
687 $contact->do_not_trade = mt_rand(0, 1);
688 $contact->preferred_communication_method = $this->_getRandomElement($this->preferredCommunicationMethod);
689 $this->_insert($contact);
690 }
691 }
692
693 /*******************************************************
694 *
695 * addIndividual()
696 *
697 * This method adds individual's data to the contact table
698 *
699 * The following fields are generated and added.
700 *
701 * contact_uuid - individual
702 * contact_rid - latest one
703 * first_name 'First Name $contact_uuid'
704 * middle_name 'Middle Name $contact_uuid'
705 * last_name 'Last Name $contact_uuid'
706 * job_title 'Job Title $contact_uuid'
707 * greeting_type - randomly select from the enum values
708 * custom_greeting - "custom greeting $contact_uuid'
709 *
710 *******************************************************/
711 public function addIndividual() {
712
713 $contact = new CRM_Contact_DAO_Contact();
714
715 for ($id = 1; $id <= $this->numIndividual; $id++) {
716 $contact->first_name = ucfirst($this->_getRandomElement($this->firstName));
717 $contact->middle_name = ucfirst($this->_getRandomChar());
718 $contact->last_name = ucfirst($this->_getRandomElement($this->lastName));
719 $contact->prefix_id = $this->_getRandomIndex($this->prefix);
720 $contact->suffix_id = $this->_getRandomIndex($this->suffix);
721 $contact->greeting_type_id = $this->_getRandomIndex($this->greetingType);
722 $contact->gender_id = $this->_getRandomIndex($this->gender);
723 $contact->birth_date = date("Ymd", mt_rand(0, time()));
724 $contact->is_deceased = mt_rand(0, 1);
725
726 $contact->id = $this->individual[($id - 1)];
727
728 // also update the sort name for the contact id.
729 $contact->display_name = trim($this->prefix[$contact->prefix_id] . " $contact->first_name $contact->middle_name $contact->last_name " . $this->suffix[$contact->suffix_id]);
730 $contact->sort_name = $contact->last_name . ', ' . $contact->first_name;
731 $contact->hash = crc32($contact->sort_name);
732 $this->_update($contact);
733 }
734 }
735
736 /*******************************************************
737 *
738 * addHousehold()
739 *
740 * This method adds household's data to the contact table
741 *
742 * The following fields are generated and added.
743 *
744 * contact_uuid - household_individual
745 * contact_rid - latest one
746 * household_name 'household $contact_uuid primary contact $primary_contact_uuid'
747 * nick_name 'nick $contact_uuid'
748 * primary_contact_uuid = $household_individual[$contact_uuid][0];
749 *
750 *******************************************************/
751 public function addHousehold() {
752
753 $contact = new CRM_Contact_DAO_Contact();
754 for ($id = 1; $id <= $this->numHousehold; $id++) {
755 $cid = $this->household[($id - 1)];
756 $contact->primary_contact_id = $this->householdIndividual[$cid][0];
757
758 // get the last name of the primary contact id
759 $individual = new CRM_Contact_DAO_Contact();
760 $individual->id = $contact->primary_contact_id;
761 $individual->find(TRUE);
762 $firstName = $individual->first_name;
763 $lastName = $individual->last_name;
764
765 // need to name the household and nick name appropriately
766 $contact->household_name = "$firstName $lastName" . "'s home";
767 $contact->nick_name = "$lastName" . "'s home";
768
769 $contact->id = $this->household[($id - 1)];
770 // need to update the sort name for the main contact table
771 $contact->display_name = $contact->sort_name = $contact->household_name;
772 $contact->hash = crc32($contact->sort_name);
773 $this->_update($contact);
774 }
775 }
776
777 /*******************************************************
778 *
779 * addOrganization()
780 *
781 * This method adds organization data to the contact table
782 *
783 * The following fields are generated and added.
784 *
785 * contact_uuid - organization
786 * contact_rid - latest one
787 * organization_name 'organization $contact_uuid'
788 * legal_name 'legal $contact_uuid'
789 * nick_name 'nick $contact_uuid'
790 * sic_code 'sic $contact_uuid'
791 * primary_contact_id - random individual contact uuid
792 *
793 *******************************************************/
794 public function addOrganization() {
795
796 $contact = new CRM_Contact_DAO_Contact();
797
798 for ($id = 1; $id <= $this->numOrganization; $id++) {
799 $contact->id = $this->organization[($id - 1)];
800 $name = $this->_getRandomElement($this->organization_name) . " " . $this->_getRandomElement($this->organization_field) . " " . $this->_getRandomElement($this->organization_type);
801 $contact->organization_name = $name;
802 $contact->primary_contact_id = $this->_getRandomElement($this->strict_individual);
803
804 // need to update the sort name for the main contact table
805 $contact->display_name = $contact->sort_name = $contact->organization_name;
806 $contact->hash = crc32($contact->sort_name);
807 $this->_update($contact);
808 }
809 }
810
811 /*******************************************************
812 *
813 * addRelationship()
814 *
815 * This method adds data to the contact_relationship table
816 *
817 * it adds the following fields
818 *
819 *******************************************************/
820 public function addRelationship() {
821
822 $relationship = new CRM_Contact_DAO_Relationship();
823
824 // all active for now.
825 $relationship->is_active = 1;
826
827 foreach ($this->householdIndividual as $household_id => $household_member) {
828 // add child_of relationship
829 // 2 for each child
830 $relationship->relationship_type_id = self::CHILD_OF;
831 $relationship->contact_id_a = $household_member[2];
832 $relationship->contact_id_b = $household_member[0];
833 $this->_insert($relationship);
834 $relationship->contact_id_a = $household_member[3];
835 $relationship->contact_id_b = $household_member[0];
836 $this->_insert($relationship);
837 $relationship->contact_id_a = $household_member[2];
838 $relationship->contact_id_b = $household_member[1];
839 $this->_insert($relationship);
840 $relationship->contact_id_a = $household_member[3];
841 $relationship->contact_id_b = $household_member[1];
842 $this->_insert($relationship);
843
844 // add spouse_of relationship 1 for both the spouses
845 $relationship->relationship_type_id = self::SPOUSE_OF;
846 $relationship->contact_id_a = $household_member[1];
847 $relationship->contact_id_b = $household_member[0];
848 $this->_insert($relationship);
849
850 // add sibling_of relationship 1 for both the siblings
851 $relationship->relationship_type_id = self::SIBLING_OF;
852 $relationship->contact_id_a = $household_member[3];
853 $relationship->contact_id_b = $household_member[2];
854 $this->_insert($relationship);
855
856 // add head_of_household relationship 1 for head of house
857 $relationship->relationship_type_id = self::HEAD_OF_HOUSEHOLD;
858 $relationship->contact_id_a = $household_member[0];
859 $relationship->contact_id_b = $household_id;
860 $this->_insert($relationship);
861
862 // add member_of_household relationship 3 for all other members
863 $relationship->relationship_type_id = self::MEMBER_OF_HOUSEHOLD;
864 $relationship->contact_id_a = $household_member[1];
865 $this->_insert($relationship);
866 $relationship->contact_id_a = $household_member[2];
867 $this->_insert($relationship);
868 $relationship->contact_id_a = $household_member[3];
869 $this->_insert($relationship);
870 }
871 }
872
873 /*******************************************************
874 *
875 * addLocation()
876 *
877 * This method adds data to the location table
878 *
879 *******************************************************/
880 public function addLocation() {
881 // strict individuals
882 foreach ($this->strictIndividual as $contactId) {
883 $this->_addLocation(self::HOME, $contactId);
884 }
885
886 //household
887 foreach ($this->household as $contactId) {
888 $this->_addLocation(self::HOME, $contactId);
889 }
890
891 //organization
892 foreach ($this->organization as $contactId) {
893 $this->_addLocation(self::MAIN, $contactId);
894 }
895
896 // some individuals.
897 $someIndividual = array_diff($this->individual, $this->strictIndividual);
898 $someIndividual = array_slice($someIndividual, 0, (int)(75 * ($this->numIndividual - $this->numStrictIndividual) / 100));
899 foreach ($someIndividual as $contactId) {
900 $this->_addLocation(self::HOME, $contactId, FALSE, TRUE);
901 }
902 }
903
904 /**
905 * @param $locationTypeId
906 * @param $contactId
907 * @param bool $domain
908 * @param bool $isPrimary
909 */
910 private function _addLocation($locationTypeId, $contactId, $domain = FALSE, $isPrimary = TRUE) {
911 $this->_addAddress($locationTypeId, $contactId, $isPrimary);
912
913 // add two phones for each location
914 $this->_addPhone($locationTypeId, $contactId, '1', $isPrimary);
915 $this->_addPhone($locationTypeId, $contactId, '2', FALSE);
916
917 // need to get sort name to generate email id
918 $contact = new CRM_Contact_DAO_Contact();
919 $contact->id = $contactId;
920 $contact->find(TRUE);
921 // get the sort name of the contact
922 $sortName = $contact->sort_name;
923 if (!empty($sortName)) {
924 // add 2 email for each location
925 for ($emailId = 1; $emailId <= 2; $emailId++) {
926 $this->_addEmail($locationTypeId, $contactId, $sortName, ($emailId == 1) && $isPrimary);
927 }
928 }
929 }
930
931 /**
932 * @param $locationTypeId
933 * @param $contactId
934 * @param bool $isPrimary
935 * @param null $locationBlockID
936 * @param int $offset
937 */
938 private function _addAddress($locationTypeId, $contactId, $isPrimary = FALSE, $locationBlockID = NULL, $offset = 1) {
939 $addressDAO = new CRM_Core_DAO_Address();
940
941 // add addresses now currently we are adding only 1 address for each location
942 $addressDAO->location_type_id = $locationTypeId;
943 $addressDAO->contact_id = $contactId;
944 $addressDAO->is_primary = $isPrimary;
945
946 $addressDAO->street_number = mt_rand(1, 1000);
947 $addressDAO->street_number_suffix = ucfirst($this->_getRandomChar());
948 $addressDAO->street_number_predirectional = $this->_getRandomElement($this->addressDirection);
949 $addressDAO->street_name = ucwords($this->_getRandomElement($this->streetName));
950 $addressDAO->street_type = $this->_getRandomElement($this->streetType);
951 $addressDAO->street_number_postdirectional = $this->_getRandomElement($this->addressDirection);
952 $addressDAO->street_address = $addressDAO->street_number_predirectional . " " . $addressDAO->street_number . $addressDAO->street_number_suffix . " " . $addressDAO->street_name . " " . $addressDAO->street_type . " " . $addressDAO->street_number_postdirectional;
953 $addressDAO->supplemental_address_1 = ucwords($this->_getRandomElement($this->supplementalAddress1));
954
955 // some more random skips
956 // hack add lat / long for US based addresses
957 list($addressDAO->country_id, $addressDAO->state_province_id, $addressDAO->city,
958 $addressDAO->postal_code, $addressDAO->geo_code_1, $addressDAO->geo_code_2
959 ) = self::getZipCodeInfo();
960
961 //$addressDAO->county_id = 1;
962
963 $this->_insert($addressDAO);
964 }
965
966 /**
967 * @param $sortName
968 *
969 * @return mixed
970 */
971 private function _sortNameToEmail($sortName) {
972 $email = preg_replace("([^a-zA-Z0-9_-]*)", "", $sortName);
973 return $email;
974 }
975
976 /**
977 * @param $locationTypeId
978 * @param $contactId
979 * @param $phoneType
980 * @param bool $isPrimary
981 * @param null $locationBlockID
982 * @param int $offset
983 */
984 private function _addPhone($locationTypeId, $contactId, $phoneType, $isPrimary = FALSE, $locationBlockID = NULL, $offset = 1) {
985 if ($contactId % 3) {
986 $phone = new CRM_Core_DAO_Phone();
987 $phone->location_type_id = $locationTypeId;
988 $phone->contact_id = $contactId;
989 $phone->is_primary = $isPrimary;
990 $phone->phone = mt_rand(11111111, 99999999);
991 $phone->phone_type_id = $phoneType;
992 $this->_insert($phone);
993 }
994 }
995
996 /**
997 * @param $locationTypeId
998 * @param $contactId
999 * @param $sortName
1000 * @param bool $isPrimary
1001 * @param null $locationBlockID
1002 * @param int $offset
1003 */
1004 private function _addEmail($locationTypeId, $contactId, $sortName, $isPrimary = FALSE, $locationBlockID = NULL, $offset = 1) {
1005 if ($contactId % 2) {
1006 $email = new CRM_Core_DAO_Email();
1007 $email->location_type_id = $locationTypeId;
1008 $email->contact_id = $contactId;
1009 $email->is_primary = $isPrimary;
1010
1011 $emailName = $this->_sortNameToEmail($sortName);
1012 $emailDomain = $this->_getRandomElement($this->emailDomain);
1013 $tld = $this->_getRandomElement($this->emailTLD);
1014 $email->email = strtolower($emailName . "@" . $emailDomain . "." . $tld);
1015 $this->_insert($email);
1016 }
1017 }
1018
1019 /*******************************************************
1020 *
1021 * addTagEntity()
1022 *
1023 * This method populates the crm_entity_tag table
1024 *
1025 *******************************************************/
1026 public function addEntityTag() {
1027
1028 $entity_tag = new CRM_Core_DAO_EntityTag();
1029
1030 // add categories 1,2,3 for Organizations.
1031 for ($i = 0; $i < $this->numOrganization; $i += 2) {
1032 $org_id = $this->organization[$i];
1033 // echo "org_id = $org_id\n";
1034 $entity_tag->contact_id = $this->organization[$i];
1035 $entity_tag->tag_id = mt_rand(1, 3);
1036 $this->_insert($entity_tag);
1037 }
1038
1039 // add categories 4,5 for Individuals.
1040 for ($i = 0; $i < $this->numIndividual; $i += 2) {
1041 $entity_tag->contact_id = $this->individual[$i];
1042 if (($entity_tag->contact_id) % 3) {
1043 $entity_tag->tag_id = mt_rand(4, 5);
1044 $this->_insert($entity_tag);
1045 }
1046 else {
1047 // some of the individuals are in both categories (4 and 5).
1048 $entity_tag->tag_id = 4;
1049 $this->_insert($entity_tag);
1050 $entity_tag->tag_id = 5;
1051 $this->_insert($entity_tag);
1052 }
1053 }
1054 }
1055
1056 /*******************************************************
1057 *
1058 * addGroup()
1059 *
1060 * This method populates the crm_entity_tag table
1061 *
1062 *******************************************************/
1063 public function addGroup() {
1064 // add the 3 groups first
1065 $numGroup = count($this->group);
1066 require_once 'CRM/Contact/BAO/Group.php';
1067 for ($i = 0; $i < $numGroup; $i++) {
1068 $group = new CRM_Contact_BAO_Group();
1069 $group->name = $this->group[$i];
1070 $group->title = $this->group[$i];
1071 $group->group_type = "\ 11\ 12\ 1";
1072 $group->visibility = 'Public Pages';
1073 $group->is_active = 1;
1074 $group->save();
1075 $group->buildClause();
1076 $group->save();
1077 }
1078
1079 // 60 are for newsletter
1080 for ($i = 0; $i < 60; $i++) {
1081 $groupContact = new CRM_Contact_DAO_GroupContact();
1082 // newsletter subscribers
1083 $groupContact->group_id = 2;
1084 $groupContact->contact_id = $this->individual[$i];
1085 // membership status
1086 $groupContact->status = $this->_getRandomElement($this->groupMembershipStatus);
1087
1088
1089 $subscriptionHistory = new CRM_Contact_DAO_SubscriptionHistory();
1090 $subscriptionHistory->contact_id = $groupContact->contact_id;
1091
1092 $subscriptionHistory->group_id = $groupContact->group_id;
1093 $subscriptionHistory->status = $groupContact->status;
1094 // method
1095 $subscriptionHistory->method = $this->_getRandomElement($this->subscriptionHistoryMethod);
1096 $subscriptionHistory->date = $this->_getRandomDate();
1097 if ($groupContact->status != 'Pending') {
1098 $this->_insert($groupContact);
1099 }
1100 $this->_insert($subscriptionHistory);
1101 }
1102
1103 // 15 volunteers
1104 for ($i = 0; $i < 15; $i++) {
1105 $groupContact = new CRM_Contact_DAO_GroupContact();
1106 // Volunteers
1107 $groupContact->group_id = 3;
1108 $groupContact->contact_id = $this->individual[$i + 60];
1109 // membership status
1110 $groupContact->status = $this->_getRandomElement($this->groupMembershipStatus);
1111
1112 $subscriptionHistory = new CRM_Contact_DAO_SubscriptionHistory();
1113 $subscriptionHistory->contact_id = $groupContact->contact_id;
1114 $subscriptionHistory->group_id = $groupContact->group_id;
1115 $subscriptionHistory->status = $groupContact->status;
1116 // method
1117 $subscriptionHistory->method = $this->_getRandomElement($this->subscriptionHistoryMethod);
1118 $subscriptionHistory->date = $this->_getRandomDate();
1119
1120 if ($groupContact->status != 'Pending') {
1121 $this->_insert($groupContact);
1122 }
1123 $this->_insert($subscriptionHistory);
1124 }
1125
1126 // 8 advisory board group
1127 for ($i = 0; $i < 8; $i++) {
1128 $groupContact = new CRM_Contact_DAO_GroupContact();
1129 // advisory board group
1130 $groupContact->group_id = 4;
1131 $groupContact->contact_id = $this->individual[$i * 7];
1132 // membership status
1133 $groupContact->status = $this->_getRandomElement($this->groupMembershipStatus);
1134
1135 $subscriptionHistory = new CRM_Contact_DAO_SubscriptionHistory();
1136 $subscriptionHistory->contact_id = $groupContact->contact_id;
1137 $subscriptionHistory->group_id = $groupContact->group_id;
1138 $subscriptionHistory->status = $groupContact->status;
1139 // method
1140 $subscriptionHistory->method = $this->_getRandomElement($this->subscriptionHistoryMethod);
1141 $subscriptionHistory->date = $this->_getRandomDate();
1142
1143 if ($groupContact->status != 'Pending') {
1144 $this->_insert($groupContact);
1145 }
1146 $this->_insert($subscriptionHistory);
1147 }
1148
1149 //In this function when we add groups that time we are cache the contact fields
1150 //But at the end of setup we are appending sample custom data, so for consistency
1151 //reset the cache.
1152 require_once 'CRM/Core/BAO/Cache.php';
1153 CRM_Core_BAO_Cache::deleteGroup('contact fields');
1154 }
1155
1156 /*******************************************************
1157 *
1158 * addNote()
1159 *
1160 * This method populates the crm_note table
1161 *
1162 *******************************************************/
1163 public function addNote() {
1164
1165 $note = new CRM_Core_DAO_Note();
1166 $note->entity_table = 'civicrm_contact';
1167 $note->contact_id = 1;
1168
1169 for ($i = 0; $i < self::NUM_CONTACT; $i++) {
1170 $note->entity_id = $this->contact[$i];
1171 if ($this->contact[$i] % 5 || $this->contact[$i] % 3 || $this->contact[$i] % 2) {
1172 $this->_insertNote($note);
1173 }
1174 }
1175 }
1176
1177 /*******************************************************
1178 *
1179 * addActivity()
1180 *
1181 * This method populates the crm_activity_history table
1182 *
1183 *******************************************************/
1184 public function addActivity() {
1185 $contactDAO = new CRM_Contact_DAO_Contact();
1186 $contactDAO->contact_type = 'Individual';
1187 $contactDAO->selectAdd();
1188 $contactDAO->selectAdd('id');
1189 $contactDAO->orderBy('sort_name');
1190 $contactDAO->find();
1191
1192 $count = 0;
1193 $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
1194
1195 while ($contactDAO->fetch()) {
1196 if ($count++ > 2) {
1197 break;
1198 }
1199 for ($i = 0; $i < self::NUM_ACTIVITY; $i++) {
1200 $activityDAO = new CRM_Activity_DAO_Activity();
1201 $activityDAO->source_contact_id = $contactDAO->id;
1202 $activityTypeID = mt_rand(7, 10);
1203
1204 $activityDAO->activity_type_id = $activityTypeID;
1205 $activityDAO->subject = "Subject for $activity[$activityTypeID]";
1206 $activityDAO->activity_date_time = $this->_getRandomDate();
1207 $activityDAO->duration = mt_rand(1, 6);
1208 $activityDAO->status_id = 2;
1209 $this->_insert($activityDAO);
1210
1211 $activityContactDAO = new CRM_Activity_DAO_ActivityContact();
1212 $activityContactDAO->activity_id = $activityDAO->id;
1213 $activityContactDAO->contact_id = mt_rand(1, 101);
1214 $activityContactDAO->record_type_id = CRM_Utils_Array::key('Activity Source', $activityContacts);
1215 $this->_insert($activityContactDAO);
1216
1217 if (in_array($activityTypeID, array(
1218 6, 9))) {
1219 $activityTargetDAO = new CRM_Activity_DAO_ActivityContact();
1220 $activityTargetDAO->activity_id = $activityDAO->id;
1221 $activityTargetDAO->contact_id = mt_rand(1, 101);
1222 $activityTargetDAO->record_type_id = CRM_Utils_Array::key('Activity Targets', $activityContacts);
1223 $this->_insert($activityTargetDAO);
1224 }
1225
1226 if ($activityTypeID == 7) {
1227 $activityAssignmentDAO = new CRM_Activity_DAO_ActivityContact();
1228 $activityAssignmentDAO->activity_id = $activityDAO->id;
1229 $activityAssignmentDAO->contact_id = mt_rand(1, 101);
1230 $activityAssignmentDAO->record_type_id = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
1231 $this->_insert($activityAssignmentDAO);
1232 }
1233 }
1234 }
1235 }
1236
1237 /**
1238 * @return array
1239 */
1240 static function getZipCodeInfo() {
1241 $stateID = mt_rand(1000, 5132);
1242 $offset = mt_rand(1, 4132);
1243
1244 $query = "SELECT id, country_id from civicrm_state_province LIMIT $offset, 1";
1245 $dao = new CRM_Core_DAO();
1246 $dao->query($query);
1247 while ($dao->fetch()) {
1248 return array($dao->country_id, $dao->id);
1249 }
1250
1251 return array();
1252 }
1253
1254 /**
1255 * @param $zipCode
1256 *
1257 * @return array
1258 */
1259 static function getLatLong($zipCode) {
1260 $query = "http://maps.google.com/maps?q=$zipCode&output=js";
1261 $userAgent = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0";
1262
1263 $ch = curl_init();
1264 curl_setopt($ch, CURLOPT_URL, $query);
1265 curl_setopt($ch, CURLOPT_HEADER, FALSE);
1266 curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
1267 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1268
1269 // grab URL and pass it to the browser
1270 $outstr = curl_exec($ch);
1271
1272 // close CURL resource, and free up system resources
1273 curl_close($ch);
1274
1275 $preg = "/'(<\?xml.+?)',/s";
1276 preg_match($preg, $outstr, $matches);
1277 if ($matches[1]) {
1278 $xml = simplexml_load_string($matches[1]);
1279 $attributes = $xml->center->attributes();
1280 if (!empty($attributes)) {
1281 return array((float ) $attributes['lat'], (float ) $attributes['lng']);
1282 }
1283 }
1284 return array(NULL, NULL);
1285 }
1286
1287 function addMembershipType() {
1288 $organizationDAO = new CRM_Contact_DAO_Contact();
1289 $organizationDAO->id = 5;
1290 $organizationDAO->find(TRUE);
1291 $contact_id = $organizationDAO->contact_id;
1292
1293 $membershipType = "INSERT INTO civicrm_membership_type
1294 (name, description, member_of_contact_id, financial_type_id, minimum_fee, duration_unit, duration_interval, period_type, fixed_period_start_day, fixed_period_rollover_day, relationship_type_id, relationship_direction, visibility, weight, is_active)
1295 VALUES
1296 ('General', 'Regular annual membership.', " . $contact_id . ", 3, 100, 'year', 1, 'rolling',null, null, 7, 'b_a', 'Public', 1, 1),
1297 ('Student', 'Discount membership for full-time students.', " . $contact_id . ", 1, 50, 'year', 1, 'rolling', null, null, 7, 'b_a', 'Public', 2, 1),
1298 ('Lifetime', 'Lifetime membership.', " . $contact_id . ", 2, 1200, 'lifetime', 1, 'rolling', null, null, 7, 'b_a', 'Admin', 3, 1);
1299 ";
1300 CRM_Core_DAO::executeQuery($membershipType, CRM_Core_DAO::$_nullArray);
1301 }
1302
1303 function addMembership() {
1304 $contact = new CRM_Contact_DAO_Contact();
1305 $contact->query("SELECT id FROM civicrm_contact where contact_type = 'Individual'");
1306 while ($contact->fetch()) {
1307 $contacts[] = $contact->id;
1308 }
1309 shuffle($contacts);
1310
1311 $randomContacts = array_slice($contacts, 0, 350);
1312
1313 $sources = array('Payment', 'Donation', 'Check');
1314 $membershipTypes = array(2, 1);
1315 $membershipTypeNames = array('Student', 'General');
1316 $statuses = array(3, 4);
1317
1318 $membership = "
1319 INSERT INTO civicrm_membership
1320 (contact_id, membership_type_id, join_date, start_date, end_date, source, status_id)
1321 VALUES
1322 ";
1323 $activity = "
1324 INSERT INTO civicrm_activity
1325 (source_contact_id, source_record_id, activity_type_id, subject, activity_date_time, duration, location, phone_id, phone_number, details, priority_id,parent_id, is_test, status_id)
1326 VALUES
1327 ";
1328
1329 foreach ($randomContacts as $count => $dontCare) {
1330 $source = self::_getRandomElement($sources);
1331 $acititySourceId = $count + 1;
1332 if ((($count + 1) % 11 == 0)) {
1333 // lifetime membership, status can be anything
1334 $startDate = date('Y-m-d', mktime(0, 0, 0, date('m'), (date('d') - $count), date('Y')));
1335 $membership .= "( {$randomContacts[$count]}, 3, '{$startDate}', '{$startDate}', null, '{$source}', 1)";
1336 $activity .= "( {$randomContacts[$count]}, {$acititySourceId}, 7, 'Lifetime', '{$startDate} 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2 )";
1337 }
1338 elseif (($count + 1) % 5 == 0) {
1339 // Grace or expired, memberhsip type is random of 1 & 2
1340 $randId = array_rand($membershipTypes);
1341 $membershipType = self::_getRandomElement($membershipTypes);
1342 $startDate = date('Y-m-d', mktime(0, 0, 0,
1343 date('m'),
1344 (date('d') - ($count * ($randId + 1) * ($randId + 1) * ($randId + 1))),
1345 (date('Y') - ($randId + 1))
1346 ));
1347 $partOfDate = explode('-', $startDate);
1348 $endDate = date('Y-m-d', mktime(0, 0, 0,
1349 $partOfDate[1],
1350 ($partOfDate[2] - 1),
1351 ($partOfDate[0] + ($randId + 1))
1352 ));
1353 $membership .= "( {$randomContacts[$count]}, {$membershipType}, '{$startDate}', '{$startDate}', '{$endDate}', '{$source}', {$statuses[$randId]})";
1354 $activity .= "( {$randomContacts[$count]}, {$acititySourceId}, 7, '{$membershipTypeNames[$randId]}', '{$startDate} 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2 )";
1355 }
1356 elseif (($count + 1) % 2 == 0) {
1357 // membership type 2
1358 $startDate = date('Y-m-d', mktime(0, 0, 0, date('m'), (date('d') - $count), date('Y')));
1359 $endDate = date('Y-m-d', mktime(0, 0, 0, date('m'), (date('d') - $count), (date('Y') + 1)));
1360 $membership .= "( {$randomContacts[$count]}, 2, '{$startDate}', '{$startDate}', '{$endDate}', '{$source}', 1)";
1361 $activity .= "( {$randomContacts[$count]}, {$acititySourceId}, 7, 'Student', '{$startDate} 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2 )";
1362 }
1363 else {
1364 // membership type 1
1365 $startDate = date('Y-m-d', mktime(0, 0, 0, date('m'), (date('d') - $count), date('Y')));
1366 $endDate = date('Y-m-d', mktime(0, 0, 0, date('m'), (date('d') - $count), (date('Y') + 2)));
1367 $membership .= "( {$randomContacts[$count]}, 1, '{$startDate}', '{$startDate}', '{$endDate}', '{$source}', 1)";
1368 $activity .= "( {$randomContacts[$count]}, {$acititySourceId}, 7, 'General', '{$startDate} 00:00:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 2 )";
1369 }
1370
1371 if ($count != 349) {
1372 $membership .= ",";
1373 $activity .= ",";
1374 }
1375 }
1376
1377 CRM_Core_DAO::executeQuery($membership, CRM_Core_DAO::$_nullArray);
1378
1379 CRM_Core_DAO::executeQuery($activity, CRM_Core_DAO::$_nullArray);
1380 }
1381
1382 /**
1383 * @param $date
1384 *
1385 * @return string
1386 */
1387 static function repairDate($date) {
1388 $dropArray = array('-' => '', ':' => '', ' ' => '');
1389 return strtr($date, $dropArray);
1390 }
1391
1392 function addMembershipLog() {
1393 $membership = new CRM_Member_DAO_Membership();
1394 $membership->query("SELECT id FROM civicrm_membership");
1395 while ($membership->fetch()) {
1396 $ids[] = $membership->id;
1397 }
1398 require_once 'CRM/Member/DAO/MembershipLog.php';
1399 foreach ($ids as $id) {
1400 $membership = new CRM_Member_DAO_Membership();
1401 $membership->id = $id;
1402 $membershipLog = new CRM_Member_DAO_MembershipLog();
1403 if ($membership->find(TRUE)) {
1404 $membershipLog->membership_id = $membership->id;
1405 $membershipLog->status_id = $membership->status_id;
1406 $membershipLog->start_date = self::repairDate($membership->start_date);
1407 $membershipLog->end_date = self::repairDate($membership->end_date);
1408 $membershipLog->modified_id = $membership->contact_id;
1409 $membershipLog->modified_date = date("Ymd");
1410 $membershipLog->save();
1411 }
1412 $membershipLog = NULL;
1413 }
1414 }
1415
1416 function createEvent() {
1417 $event = "INSERT INTO civicrm_address ( contact_id, location_type_id, is_primary, is_billing, street_address, street_number, street_number_suffix, street_number_predirectional, street_name, street_type, street_number_postdirectional, street_unit, supplemental_address_1, supplemental_address_2, supplemental_address_3, city, county_id, state_province_id, postal_code_suffix, postal_code, usps_adc, country_id, geo_code_1, geo_code_2, timezone)
1418 VALUES
1419 ( NULL, 1, 1, 1, 'S 14S El Camino Way E', 14, 'S', NULL, 'El Camino', 'Way', NULL, NULL, NULL, NULL, NULL, 'Collinsville', NULL, 1006, NULL, '6022', NULL, 1228, 41.8328, -72.9253, NULL),
1420 ( NULL, 1, 1, 1, 'E 11B Woodbridge Path SW', 11, 'B', NULL, 'Woodbridge', 'Path', NULL, NULL, NULL, NULL, NULL, 'Dayton', NULL, 1034, NULL, '45417', NULL, 1228, 39.7531, -84.2471, NULL),
1421 ( NULL, 1, 1, 1, 'E 581O Lincoln Dr SW', 581, 'O', NULL, 'Lincoln', 'Dr', NULL, NULL, NULL, NULL, NULL, 'Santa Fe', NULL, 1030, NULL, '87594', NULL, 1228, 35.5212, -105.982, NULL)
1422 ";
1423 CRM_Core_DAO::executeQuery($event, CRM_Core_DAO::$_nullArray);
1424
1425 $sql = "SELECT id from civicrm_address where street_address = 'S 14S El Camino Way E'";
1426 $eventAdd1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1427 $sql = "SELECT id from civicrm_address where street_address = 'E 11B Woodbridge Path SW'";
1428 $eventAdd2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1429 $sql = "SELECT id from civicrm_address where street_address = 'E 581O Lincoln Dr SW'";
1430 $eventAdd3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1431
1432 $event = "INSERT INTO civicrm_email (contact_id, location_type_id, email, is_primary, is_billing, on_hold, hold_date, reset_date)
1433 VALUES
1434 (NULL, 1, 'development@example.org', 0, 0, 0, NULL, NULL),
1435 (NULL, 1, 'tournaments@example.org', 0, 0, 0, NULL, NULL),
1436 (NULL, 1, 'celebration@example.org', 0, 0, 0, NULL, NULL)
1437 ";
1438 CRM_Core_DAO::executeQuery($event, CRM_Core_DAO::$_nullArray);
1439
1440 $sql = "SELECT id from civicrm_email where email = 'development@example.org'";
1441 $eventEmail1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1442 $sql = "SELECT id from civicrm_email where email = 'tournaments@example.org'";
1443 $eventEmail2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1444 $sql = "SELECT id from civicrm_email where email = 'celebration@example.org'";
1445 $eventEmail3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1446
1447 $event = "INSERT INTO civicrm_phone (contact_id, location_type_id, is_primary, is_billing, mobile_provider_id, phone, phone_type_id)
1448 VALUES
1449 (NULL, 1, 0, 0, NULL,'204 222-1000', '1'),
1450 (NULL, 1, 0, 0, NULL,'204 223-1000', '1'),
1451 (NULL, 1, 0, 0, NULL,'303 323-1000', '1')
1452 ";
1453 CRM_Core_DAO::executeQuery($event, CRM_Core_DAO::$_nullArray);
1454
1455 $sql = "SELECT id from civicrm_phone where phone = '204 222-1000'";
1456 $eventPhone1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1457 $sql = "SELECT id from civicrm_phone where phone = '204 223-1000'";
1458 $eventPhone2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1459 $sql = "SELECT id from civicrm_phone where phone = '303 323-1000'";
1460 $eventPhone3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1461
1462 $event = "INSERT INTO civicrm_loc_block ( address_id, email_id, phone_id, address_2_id, email_2_id, phone_2_id)
1463 VALUES
1464 ( $eventAdd1, $eventEmail1, $eventPhone1, NULL,NULL,NULL),
1465 ( $eventAdd2, $eventEmail2, $eventPhone2, NULL,NULL,NULL),
1466 ( $eventAdd3, $eventEmail3, $eventPhone3, NULL,NULL,NULL)
1467 ";
1468
1469 CRM_Core_DAO::executeQuery($event, CRM_Core_DAO::$_nullArray);
1470
1471 $sql = "SELECT id from civicrm_loc_block where phone_id = $eventPhone1 AND email_id = $eventEmail1 AND address_id = $eventAdd1";
1472 $eventLok1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1473 $sql = "SELECT id from civicrm_loc_block where phone_id = $eventPhone2 AND email_id = $eventEmail2 AND address_id = $eventAdd2";
1474 $eventLok2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1475 $sql = "SELECT id from civicrm_loc_block where phone_id = $eventPhone3 AND email_id = $eventEmail3 AND address_id = $eventAdd3";
1476 $eventLok3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1477
1478 //create event fees
1479 $optionGroup = "INSERT INTO civicrm_option_group ( name, is_reserved, is_active)
1480 VALUES
1481 ( 'civicrm_event.amount.1', 0, 1),
1482 ( 'civicrm_event.amount.2', 0, 1),
1483 ( 'civicrm_event.amount.3', 0, 1)
1484 ";
1485 CRM_Core_DAO::executeQuery($optionGroup, CRM_Core_DAO::$_nullArray);
1486
1487
1488 $sql = "SELECT max(id) from civicrm_option_group where name = 'civicrm_event.amount.1'";
1489 $page1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1490
1491 $sql = "SELECT max(id) from civicrm_option_group where name = 'civicrm_event.amount.2'";
1492 $page2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1493
1494 $sql = "SELECT max(id) from civicrm_option_group where name = 'civicrm_event.amount.3'";
1495 $page3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1496
1497
1498 $optionValue = "INSERT INTO civicrm_option_value (option_group_id, label, value, is_default, weight, is_optgroup, is_reserved, is_active)
1499 VALUES
1500 ($page1, 'Single', '50', 0, 1, 0, 0, 1),
1501 ($page1, 'Couple', '100', 0, 2, 0, 0, 1),
1502 ($page1, 'Family', '200', 0, 3, 0, 0, 1),
1503 ($page2, 'Bass', '25', 0, 1, 0, 0, 1),
1504 ($page2, 'Tenor', '40', 0, 2, 0, 0, 1),
1505 ($page2, 'Soprano', '50', 0, 3, 0, 0, 1),
1506 ($page3, 'Tiny-tots (ages 5-8)', '800', 0, 1, 0, 0, 1),
1507 ($page3, 'Junior Stars (ages 9-12)', '1000', 0, 2, 0, 0, 1),
1508 ($page3, 'Super Stars (ages 13-18)', '1500', 0, 3, 0, 0, 1)";
1509
1510 CRM_Core_DAO::executeQuery($optionValue, CRM_Core_DAO::$_nullArray);
1511
1512 $sql = "SELECT max(id) FROM civicrm_option_value WHERE civicrm_option_value.option_group_id = $page1 AND civicrm_option_value.weight=2";
1513 $defaultFee1 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1514
1515 $sql = "SELECT max(id) FROM civicrm_option_value WHERE civicrm_option_value.option_group_id = $page2 AND civicrm_option_value.weight=2";
1516 $defaultFee2 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1517
1518 $sql = "SELECT max(id) FROM civicrm_option_value WHERE civicrm_option_value.option_group_id = $page3 AND civicrm_option_value.weight=2";
1519 $defaultFee3 = CRM_Core_DAO::singleValueQuery($sql, CRM_Core_DAO::$_nullArray);
1520
1521 $event = "INSERT INTO civicrm_event
1522 ( title, summary, description, event_type_id, participant_listing_id, is_public, start_date, end_date, is_online_registration, registration_link_text, max_participants, event_full_text, is_monetary, financial_type_id, is_map, is_active, fee_label, is_show_location, loc_block_id,intro_text, footer_text, confirm_title, confirm_text, confirm_footer_text, is_email_confirm, confirm_email_text, confirm_from_name, confirm_from_email, cc_confirm, bcc_confirm, default_fee_id, thankyou_title, thankyou_text, thankyou_footer_text, is_pay_later, pay_later_text, pay_later_receipt, is_multiple_registrations, allow_same_participant_emails )
1523 VALUES
1524 ( 'Fall Fundraiser Dinner', 'Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!', 'This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!', 3, 1, 1, '2010-11-21 17:00:00', '2010-11-21 23:00:00', 1, 'Register Now', 100, 'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.', 1, 4, 1, 1, 'Dinner Contribution', 1 ,$eventLok1,'Fill in the information below to join as at this wonderful dinner event.', NULL, 'Confirm Your Registration Information', 'Review the information below carefully.', NULL, 1, 'Contact the Development Department if you need to make any changes to your registration.', 'Fundraising Dept.', 'development@example.org', NULL, NULL, {$defaultFee1}, 'Thanks for Registering!', '<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>', '<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>', 1, 'I will send payment by check', 'Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110', 0, 0 ),
1525 ( 'Summer Solstice Festival Day Concert', 'Festival Day is coming! Join us and help support your parks.', 'We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.', 5, 1, 1, '2011-06-01 12:00:00', '2011-06-01 17:00:00', 1, 'Register Now', 50, 'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.', 1, 2, NULL, 1, 'Festival Fee', 1, $eventLok2, 'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.', '', 'Confirm Your Registration Information', '', '', 1, 'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.', 'Event Dept.', 'events@example.org', '', NULL, {$defaultFee2}, 'Thanks for Your Joining In!', '<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>', '<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>', 0, NULL, NULL, 1, 0 ),
1526 ( 'Rain-forest Cup Youth Soccer Tournament', 'Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.', 'This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).', 3, 1, 1, '2011-12-27 07:00:00', '2011-12-29 17:00:00', 1, 'Register Now', 500, 'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.', 1, 4, NULL, 1, 'Tournament Fees',1, $eventLok3, 'Complete the form below to register your team for this year''s tournament.', '<em>A Soccer Youth Event</em>', 'Review and Confirm Your Registration Information', '', '<em>A Soccer Youth Event</em>', 1, 'Contact our Tournament Director for eligibility details.', 'Tournament Director', 'tournament@example.org', '', NULL, {$defaultFee3}, 'Thanks for Your Support!', '<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>', '<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>', 0, NULL, NULL, 0, 0 )
1527 ";
1528 CRM_Core_DAO::executeQuery($event, CRM_Core_DAO::$_nullArray);
1529 }
1530
1531 function addParticipant() {
1532 // add participant
1533 $participant = new CRM_Event_DAO_Participant();
1534
1535 for ($id = 1; $id <= self::NUM_PARTICIPANT; $id++) {
1536 $participant->contact_id = mt_rand(1, self::NUM_CONTACT);
1537 $participant->event_id = mt_rand(1, 3);
1538 $participant->status_id = mt_rand(1, 5);
1539 $participant->role_id = mt_rand(1, 4);
1540 $participant->register_date = $this->_getRandomDate();
1541 $participant->source = "Credit Card";
1542
1543 if ($participant->event_id == 1) {
1544 $fee_level = "Single";
1545 $fee_amount = 50;
1546 }
1547 elseif ($participant->event_id == 2) {
1548 $fee_level = "Soprano";
1549 $fee_amount = 50;
1550 }
1551 else {
1552 $fee_level = "Tiny-tots (ages 5-8)";
1553 $fee_amount = 800;
1554 }
1555 $participant->fee_level = $fee_level;
1556 $participant->fee_amount = $fee_amount;
1557 $participant->is_test = 0;
1558
1559 $this->_insert($participant);
1560 }
1561 }
1562
1563 function addPCP() {
1564 $query = "
1565 INSERT INTO `civicrm_pcp`
1566 (contact_id, status_id, title, intro_text, page_text, donate_link_text, contribution_page_id, is_thermometer, is_honor_roll, goal_amount, referer, is_active)
1567 VALUES
1568 ({$this->individual[3]}, 2, 'My Personal Civi Fundraiser', 'I''m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.', '<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>', 'Contribute Now', 1, 1, 1, 5000.00, NULL, 1);
1569 ";
1570 CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray);
1571 }
1572
1573 function addContribution() {
1574 // add contributions
1575 $contribution = new CRM_Contribute_DAO_Contribution();
1576
1577 for ($id = 1; $id <= self::NUM_CONTRIBUTION; $id++) {
1578 $contribution->contact_id = mt_rand(1, self::NUM_CONTACT);
1579 $contribution->financial_type_id = mt_rand(1, 4);
1580 $contribution->contribution_page_id = mt_rand(1, 3);
1581 $contribution->payment_instrument_id = mt_rand(1, 5);
1582 $contribution->receive_date = $this->_getRandomDate();
1583 $contribution->total_amount = mt_rand(10, 99);
1584 $contribution->contribution_status_id = mt_rand(1, 6);
1585 $contribution->trxn_id = "#" . md5($contribution->receive_date);
1586 $this->_insert($contribution);
1587 }
1588 }
1589
1590 function addSoftContribution() {
1591 $pcpRollNickNAme = array('Jones Family', 'Annie and the kids', 'Anonymous', 'Adam Family');
1592
1593 $pcpPersonalNote = array('Helping Hands', 'Annie Helps', 'Anonymous', 'Adam Helps');
1594
1595 $softContribution = new CRM_Contribute_DAO_ContributionSoft();
1596
1597 $sql = "SELECT DISTINCT(contact_id), id, total_amount from civicrm_contribution LIMIT 200";
1598
1599 $contriInfo = CRM_Core_DAO::executeQuery($sql, CRM_Core_DAO::$_nullArray);
1600
1601 $prevContactID = NULL;
1602
1603 while ($contriInfo->fetch()) {
1604 if ($prevContactID) {
1605 $softContribution->contribution_id = $contriInfo->id;
1606 $softContribution->contact_id = $prevContactID;
1607 $softContribution->amount = $contriInfo->total_amount;
1608 $softContribution->pcp_id = 1;
1609 $softContribution->pcp_display_in_roll = 1;
1610 $softContribution->pcp_roll_nickname = $this->_getRandomElement($pcpRollNickNAme);
1611 $softContribution->pcp_personal_note = $this->_getRandomElement($pcpPersonalNote);
1612 $this->_insert($softContribution);
1613 }
1614 $prevContactID = $contriInfo->contact_id;
1615 }
1616 }
1617
1618 function addPledge() {
1619 $pledge = "INSERT INTO civicrm_pledge
1620 (contact_id, financial_type_id, contribution_page_id, amount, frequency_unit, frequency_interval, frequency_day, installments, start_date, create_date, acknowledge_date, modified_date, cancel_date, end_date, honor_contact_id, honor_type_id, status_id, is_test)
1621 VALUES
1622 (71, 1, 1, 500.00, 'month', 1, 1, 1, '2010-07-01 21:19:02', '2010-06-26 00:00:00', NULL, NULL, NULL,'2010-07-01 00:00:00', NULL, NULL, 1, 0),
1623 (43, 1, 1, 800.00, 'month', 3, 1, 4, '2010-07-01 10:11:09', '2010-06-23 10:11:14', '2010-06-23 10:11:18', NULL, NULL, '2010-04-01 10:11:40', NULL, NULL, 5, 0),
1624 (32, 1, 1, 600.00, 'month', 1, 1, 3, '2010-06-01 10:12:35', '2010-05-14 10:12:44', '2010-05-14 10:12:52', NULL, NULL, '2010-08-01 10:13:11', NULL, NULL, 5, 0);
1625 ";
1626 CRM_Core_DAO::executeQuery($pledge, CRM_Core_DAO::$_nullArray);
1627 }
1628
1629 function addPledgePayment() {
1630 $pledgePayment = "INSERT INTO civicrm_pledge_payment
1631 ( pledge_id, contribution_id, scheduled_amount, scheduled_date, reminder_date, reminder_count, status_id)
1632 VALUES
1633 (1, 10, 500.00, '2010-07-01 13:03:45', null, 0, 1),
1634 (2, 11, 200.00, '2010-07-01 10:59:35', null, 0, 1),
1635 (2, null, 200.00, '2010-10-01 10:59:35',null, 0, 2),
1636 (2, null, 200.00, '2010-01-01 10:59:35',null, 0, 2),
1637 (2, null, 200.00, '2010-04-01 10:59:35',null, 0, 2),
1638 (3, 12, 200.00, '2010-06-01 11:00:12', null, 0, 1),
1639 (3, 13, 200.00, '2010-07-01 10:59:35', '2010-06-28 10:59:41', 1, 1),
1640 (3, null, 200.00, '2010-08-01 11:00:12', null, 0, 2);
1641 ";
1642 CRM_Core_DAO::executeQuery($pledgePayment, CRM_Core_DAO::$_nullArray);
1643 }
1644
1645 function addMembershipPayment() {
1646 $amount = array('50', '100', '1200');
1647
1648 $contribution = new CRM_Contribute_DAO_Contribution();
1649 for ($id = 1; $id <= 200; $id++) {
1650 $contribution->contact_id = mt_rand(1, self::NUM_CONTACT);
1651 $contribution->financial_type_id = mt_rand(1, 4);
1652 $contribution->payment_instrument_id = mt_rand(1, 5);
1653 $contribution->receive_date = $this->_getRandomDate();
1654 $contribution->total_amount = $this->_getRandomElement($amount);
1655 $contribution->contribution_status_id = mt_rand(1, 6);
1656 $contribution->trxn_id = "#" . md5($contribution->receive_date);
1657 $this->_insert($contribution);
1658 }
1659 for ($i = 0; $i < 3; $i++) {
1660 $contributionsArray = $membershipArray = array();
1661 $contributionSQL = "
1662 SELECT id
1663 FROM civicrm_contribution
1664 WHERE contribution_page_id IS NULL AND
1665 total_amount = {$amount[$i]} limit 0, 50 ";
1666
1667 $contributionDAO = CRM_Core_DAO::executeQuery($contributionSQL, CRM_Core_DAO::$_nullArray);
1668
1669 while ($contributionDAO->fetch()) {
1670 $contributionsArray[] = $contributionDAO->id;
1671 }
1672 $j = $i + 1;
1673 $membershipSQL = "
1674 SELECT id
1675 FROM civicrm_membership
1676 WHERE civicrm_membership.membership_type_id = {$j} limit 0, 50";
1677 $membershipDAO = CRM_Core_DAO::executeQuery($membershipSQL, CRM_Core_DAO::$_nullArray);
1678
1679 while ($membershipDAO->fetch()) {
1680 $membershipArray[] = $membershipDAO->id;
1681 }
1682
1683 $payemntOBJ = new CRM_Member_DAO_MembershipPayment();
1684 foreach ($membershipArray as $key => $membershipid) {
1685 $payemntOBJ->contribution_id = $contributionsArray[$key];
1686 $payemntOBJ->membership_id = $membershipid;
1687 $this->_insert($payemntOBJ);
1688 }
1689 }
1690 }
1691 }
1692
1693 /**
1694 * @param null $str
1695 *
1696 * @return bool
1697 */
1698 function user_access($str = NULL) {
1699 return TRUE;
1700 }
1701
1702 /**
1703 * @return array
1704 */
1705 function module_list() {
1706 return array();
1707 }
1708
1709
1710 echo ("Starting data generation on " . date("F dS h:i:s A") . "\n");
1711 $obj1 = new CRM_GCD();
1712 $obj1->initID();
1713 $obj1->parseDataFile();
1714 $obj1->initDB();
1715 $obj1->addDomain();
1716 $obj1->addContact();
1717 $obj1->addIndividual();
1718 $obj1->addHousehold();
1719 $obj1->addOrganization();
1720 $obj1->addRelationship();
1721 $obj1->addLocation();
1722 $obj1->addEntityTag();
1723 $obj1->addGroup();
1724 $obj1->addNote();
1725 $obj1->addActivity();
1726 $obj1->addMembership();
1727 $obj1->addMembershipLog();
1728 $obj1->createEvent();
1729 $obj1->addParticipant();
1730 $obj1->addContribution();
1731 $obj1->addPCP();
1732 $obj1->addSoftContribution();
1733 $obj1->addPledge();
1734 $obj1->addPledgePayment();
1735 $obj1->addMembershipPayment();
1736 echo ("Ending data generation on " . date("F dS h:i:s A") . "\n");
1737