/** * Gets the historical journal for an object from the log database. * Objects will have VirtualAttributes available to lookup login, date, and action information from the journal object. * @param integer intId * @return Household[] */ public static function GetJournalForId($intId) { $objDatabase = Household::GetDatabase()->JournalingDatabase; $objResult = $objDatabase->Query('SELECT * FROM household WHERE id = ' . $objDatabase->SqlVariable($intId) . ' ORDER BY __sys_date'); return Household::InstantiateDbResult($objResult); }
/** * Given a search term, this will try and match all similarly matched households based on * hopuseholdparticipation indivudal match. * This will utilize soundex and other indexing methodologies. * * THIS IS TODO and the algorithm needs to be tuned. * * @param string $strFirstName * @param string $strLastName * @param integer $intNotHouseholdId HouseholdId NOT to include * @return Household[] */ public static function LoadArrayBySearch($strFirstName, $strLastName, $intNotHouseholdId = null) { $strClauseArray = array(); $strClauseArray[] = '(household_participation.household_id = household.id)'; $strClauseArray[] = '(household_participation.person_id = person.id)'; if (strlen($strFirstName)) { $strClauseArray[] = sprintf("(soundex(person.first_name) = soundex('%s') OR person.first_name LIKE '%s%%')", mysql_escape_string($strFirstName), mysql_escape_string($strFirstName)); } if (strlen($strLastName)) { $strClauseArray[] = sprintf("(soundex(person.last_name) = soundex('%s') OR person.last_name LIKE '%s%%')", mysql_escape_string($strLastName), mysql_escape_string($strLastName)); } if ($intNotHouseholdId) { $strClauseArray[] = sprintf("(household.id != %s)", mysql_escape_string($intNotHouseholdId)); } $strQuery = 'SELECT DISTINCT household.* FROM household, household_participation, person WHERE ' . implode(' AND ', $strClauseArray) . ' ORDER BY household.name'; return Household::InstantiateDbResult(Household::GetDatabase()->Query($strQuery)); }