Exemplo n.º 1
0
 /**
  * This is a bit similar to a db-load based version of Person::IsNameMatch().
  * It will utilize querying to find any and all Person objects that do a normalized name match based on the name item objects.
  * @param string $strFirstName
  * @param string $strLastName
  * @return Person[]
  */
 public static function LoadArrayByNameMatch($strFirstName, $strLastName)
 {
     // Calculate the normalized name items were are using
     $strNameItemArray = NameItem::GetNormalizedArrayFromNameString($strFirstName . ' ' . $strLastName);
     // Create an Integer[] of NameItem IDs
     $intNameItemIdArray = array();
     foreach ($strNameItemArray as $strNameItem) {
         $objNameItem = NameItem::LoadByName($strNameItem);
         if (!$objNameItem) {
             return array();
         }
         $intNameItemIdArray[] = $objNameItem->Id;
     }
     // Iterate to setup the Condition and Clauses
     $objCondition = QQ::All();
     $objClauses = array();
     $intIndex = 0;
     foreach ($intNameItemIdArray as $intNameItemId) {
         $intIndex++;
         $strAlias = 'assn_' . $intIndex;
         if ($intIndex == 2) {
             $objClauses[] = QQ::Distinct();
         }
         $objClauses[] = QQ::CustomFrom('person_nameitem_assn', $strAlias);
         $objCondition = QQ::AndCondition($objCondition, QQ::Equal(QQ::CustomNode($strAlias . '.person_id'), QQN::Person()->Id), QQ::Equal(QQ::CustomNode($strAlias . '.name_item_id'), $intNameItemId));
     }
     return Person::QueryArray($objCondition, $objClauses);
 }
Exemplo n.º 2
0
 /**
  * Given an array of normalized name items, this will associate them all to a valid NameItem object.
  * If any particular NameItem object does not exist, it will be created.
  * @param string[] $strNameArray
  * @param Person $objPerson
  * @return void
  */
 public static function AssociateNameItemArrayForPerson($strNameArray, Person $objPerson)
 {
     $intDoneArray = array();
     foreach ($strNameArray as $strName) {
         $objNameItem = NameItem::LoadByName($strName);
         if (!$objNameItem) {
             $objNameItem = new NameItem();
             $objNameItem->Name = $strName;
             $objNameItem->Save();
         }
         if (!array_key_exists($objNameItem->Id, $intDoneArray)) {
             $objPerson->AssociateNameItem($objNameItem);
             $intDoneArray[$objNameItem->Id] = $objNameItem->Id;
         }
     }
 }