/** * Generates a single Individual record * @param boolean $blnMaleFlag * @param boolean $blnAdultFlag whether this Individual should be a child or an adult * @param string $strLastName optional last name * @return Person */ protected static function GenerateIndividual($blnMaleFlag, $blnAdultFlag, $strLastName = null) { $objPerson = new Person(); $objPerson->Gender = $blnMaleFlag ? 'M' : 'F'; // Generate the name $objPerson->FirstName = $blnMaleFlag ? QDataGen::GenerateMaleFirstName() : QDataGen::GenerateFemaleFirstName(); switch (rand(1, 10)) { case 1: case 2: case 3: $objPerson->MiddleName = chr(rand(ord('A'), ord('Z'))) . '.'; break; case 4: case 5: $objPerson->MiddleName = $blnMaleFlag ? QDataGen::GenerateMaleFirstName() : QDataGen::GenerateFemaleFirstName(); break; } $objPerson->LastName = $strLastName ? $strLastName : QDataGen::GenerateLastName(); $objPerson->CanEmailFlag = rand(0, 1); $objPerson->CanMailFlag = rand(0, 1); $objPerson->CanPhoneFlag = rand(0, 1); if (!rand(0, 10)) { $objPerson->Nickname = $blnMaleFlag ? QDataGen::GenerateMaleFirstName() : QDataGen::GenerateFemaleFirstName(); } if (!rand(0, 5) && !$blnMaleFlag) { $objPerson->PriorLastNames = QDataGen::GenerateLastName(); } if (!rand(0, 10)) { $objPerson->MailingLabel = QString::FirstCharacter($objPerson->FirstName) . '. ' . $objPerson->LastName; } if (!rand(0, 10)) { $arrTitleArray = $blnMaleFlag ? array('Mr.', 'Dr.', 'Sir') : array('Ms.', 'Miss', 'Mrs.', 'Dr.', 'Lady'); $objPerson->Title = QDataGen::GenerateFromArray($arrTitleArray); } if (!rand(0, 10)) { $arrSuffixArray = array('Sr.', 'Jr.', 'III', 'PhD', 'MD'); $objPerson->Suffix = QDataGen::GenerateFromArray($arrSuffixArray); } // Date of Birth if ($blnAdultFlag) { if (rand(0, 1)) { $objPerson->DateOfBirth = QDataGen::GenerateDateTime(self::$LifeStartDate, self::$OldestChildBirthDate); } } else { $objPerson->DateOfBirth = QDataGen::GenerateDateTime(self::$OldestChildBirthDate, QDateTime::Now()); } if ($objPerson->DateOfBirth) { $objPerson->DobGuessedFlag = !rand(0, 12); $objPerson->DobYearApproximateFlag = !rand(0, 12); } // Refresh Membership and Marital Statuses $objPerson->RefreshMembershipStatusTypeId(false); $objPerson->RefreshMaritalStatusTypeId(false); $objPerson->RefreshAge(false); // Setup Deceased Information $objPerson->DeceasedFlag = !rand(0, 200); if ($objPerson->DeceasedFlag && rand(0, 1)) { $objPerson->DateDeceased = QDataGen::GenerateDateTime(self::$LifeStartDate, QDateTime::Now()); } $objPerson->Save(); $objPerson->RefreshNameItemAssociations(); // Head Shots $objHeadShotArray = array(); $intHeadShotCount = rand(0, 3); for ($i = 0; $i < $intHeadShotCount; $i++) { $objHeadShotArray[] = $objPerson->SaveHeadShot(self::GetRandomHeadShot($objPerson->Gender == 'M'), QDataGen::GenerateDateTime(self::$SystemStartDate, QDateTime::Now())); } if (count($objHeadShotArray)) { $objPerson->SetCurrentHeadShot(QDataGen::GenerateFromArray($objHeadShotArray)); } // Membership $intMembershipCount = 0; if ($blnAdultFlag) { if (!rand(0, 2)) { $intMembershipCount = rand(1, 3); } } else { if (!rand(0, 10)) { $intMembershipCount = rand(1, 2); } } if ($intMembershipCount) { $dttEarliestPossible = new QDateTime($objPerson->DateOfBirth ? $objPerson->DateOfBirth : self::$SystemStartDate); self::GenerateMembershipsForIndividual($objPerson, $dttEarliestPossible, $intMembershipCount); } // Past or non-defined marriage if ($blnAdultFlag && !rand(0, 10)) { $objMarriage = new Marriage(); $objMarriage->Person = $objPerson; $objMarriage->MarriageStatusTypeId = QDataGen::GenerateFromArray(array_keys(MarriageStatusType::$NameArray)); if (rand(0, 1)) { $dttStart = QDateTime::Now(); $dttStart = QDataGen::GenerateDateTime(self::$LifeStartDate, $dttStart); $dttStart = QDataGen::GenerateDateTime(self::$LifeStartDate, $dttStart); $dttStart = QDataGen::GenerateDateTime(self::$LifeStartDate, $dttStart); $dttStart = QDataGen::GenerateDateTime(self::$LifeStartDate, $dttStart); $dttStart = QDataGen::GenerateDateTime(self::$LifeStartDate, $dttStart); $objMarriage->DateStart = $dttStart; switch ($objMarriage->MarriageStatusTypeId) { case MarriageStatusType::Divorced: case MarriageStatusType::Widowed: $objMarriage->DateEnd = QDataGen::GenerateDateTime($dttStart, QDateTime::Now()); break; } } $objMarriage->Save(); $objPerson->RefreshMaritalStatusTypeId(); } // Comments $intCount = rand(0, 12); for ($intIndex = 0; $intIndex < $intCount; $intIndex++) { $dttPostDate = self::GenerateDateTime(self::$SystemStartDate, QDateTime::Now()); $objLogin = self::GenerateFromArray(self::$UserArray); $objCommentCategory = self::GenerateFromArray(self::$CommentCategoryArray); $intCommentPrivacyTypeId = self::GenerateFromArray(array_keys(CommentPrivacyType::$NameArray)); $strComment = self::GenerateContent(rand(1, 2), 5, 20); $dttActionDate = rand(0, 10) ? null : self::GenerateDateTime(self::$SystemStartDate, QDateTime::Now()); $objPerson->SaveComment($objLogin, $strComment, $intCommentPrivacyTypeId, $objCommentCategory->Id, $dttPostDate, $dttActionDate); } // Addresses and Phone self::GenerateAddressesAndPhonesForPerson($objPerson); // Attributes self::GenerateAttributesForPerson($objPerson); return $objPerson; }
$objOption->SetToken(); $objOption->OrderNumber = $intOrderNumber; $objOption->ActiveFlag = true; $objOption->Save(); } } ////////////////////// // People ////////////////////// while (QDataGen::DisplayWhileTask('Generating Person records', GENERATE_PEOPLE)) { $objPerson = new Person(); // Person Type Id $objPerson->PersonTypeId = QDataGen::GenerateFromArrayWithProbabilities(array(array(PersonType::Contributor, 5), array(PersonType::RegisteredUser, 95))); // Required Stuff $objPerson->FirstName = QDataGen::GenerateFirstName(); $objPerson->LastName = QDataGen::GenerateLastName(); $objPerson->Username = QDataGen::GenerateUsername($objPerson->FirstName, $objPerson->LastName); $objPerson->Email = QDataGen::GenerateEmail($objPerson->FirstName, $objPerson->LastName); $objPerson->SetPassword('password'); // Flags $objPerson->DisplayRealNameFlag = !rand(0, 3); $objPerson->DisplayEmailFlag = !rand(0, 7); $objPerson->OptInFlag = !rand(0, 3); $objPerson->DonatedFlag = !rand(0, 80); // Location and Country Flag if (rand(0, 2)) { $objPerson->Location = QDataGen::GenerateCity(); if (rand(0, 2)) { $objPerson->CountryId = rand(1, $intMaxCountryId); $objPerson->Location .= ', ' . $objPerson->Country->Name; }