added tokens for "greetings" for couples, housholds, and single people.
This commit is contained in:
parent
b17dd2d8b4
commit
d60bdb098b
@ -13,3 +13,5 @@ Main features:
|
|||||||
D) There is one token for each active profile that does not use any fields that would prevent it from being used as a stand-alone profile form. For example, it does not create tokens for profiles that use participant or contribution fields. This token will produce a hyperlink that includes the checksum for the recipient. The clickable text will be the title of the profile.
|
D) There is one token for each active profile that does not use any fields that would prevent it from being used as a stand-alone profile form. For example, it does not create tokens for profiles that use participant or contribution fields. This token will produce a hyperlink that includes the checksum for the recipient. The clickable text will be the title of the profile.
|
||||||
|
|
||||||
E) If this extension is running under Drupal and the CiviCRM-WebForm integration module is installed, then one token will be created for each published WebForm. (This logic checks if Drupal is in use before attempting to call any Drupal APIs. So this extension is safe to use with WordPress, Joomla and Stand-Alone. (Note: The only version of Drupal this has been tested with is Drupal7.)
|
E) If this extension is running under Drupal and the CiviCRM-WebForm integration module is installed, then one token will be created for each published WebForm. (This logic checks if Drupal is in use before attempting to call any Drupal APIs. So this extension is safe to use with WordPress, Joomla and Stand-Alone. (Note: The only version of Drupal this has been tested with is Drupal7.)
|
||||||
|
|
||||||
|
F) There are a set of tokens under the category "Greetings" that provide convenient tokens for addressing married couples, households, and also single people. For example, Sometimes you want to use the nickname if not empty, otherwise fallback to their first name. (The greetings for couples currently only work for the English language)
|
||||||
|
@ -143,8 +143,28 @@ function fancytokens_civicrm_tokens( &$tokens ){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$tok_category_label = " :: Greeting";
|
||||||
|
|
||||||
|
$tokens['greetings'] = array(
|
||||||
|
'greetings.joint_casual' => 'Casual: Mike and Judy Kline (Uses nickname if available) '.$tok_category_label,
|
||||||
|
'greetings.solo_casual' => 'Casual: Mike Kline (Uses nickname if available, does not show spouse) '.$tok_category_label,
|
||||||
|
'greetings.joint_casual_firstname_lastname' => 'Casual first name and last name: Michael and Judith Kline'.$tok_category_label,
|
||||||
|
'greetings.joint_casual_nickname_only' => 'Casual nickname only: Mike and Judy (Uses nickname if available)'.$tok_category_label,
|
||||||
|
'greetings.solo_casual_nickname_only' => 'Casual nickname only: Mike(Uses nickname if available, does not show spouse)'.$tok_category_label,
|
||||||
|
'greetings.joint_casual_firstname_only' => 'Casual first name only: Michael and Judith'.$tok_category_label,
|
||||||
|
'greetings.joint_formal' => 'Formal: Mr. and Mrs. Kline'.$tok_category_label,
|
||||||
|
'greetings.joint_formal_firstname' => 'Formal with first name: Mr. and Mrs. Michael Kline'.$tok_category_label,
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function getUserFrameworkDatabaseName(){
|
function getUserFrameworkDatabaseName(){
|
||||||
// ['userFrameworkDSN'] => mysql://dev1_username:mypassword@localhost/dev1_main?new_link=true
|
// ['userFrameworkDSN'] => mysql://dev1_username:mypassword@localhost/dev1_main?new_link=true
|
||||||
|
|
||||||
@ -166,7 +186,42 @@ function fancytokens_civicrm_tokens( &$tokens ){
|
|||||||
function fancytokens_civicrm_tokenValues( &$values, &$contactIDs, $job = null, $tokens = array(), $context = null) {
|
function fancytokens_civicrm_tokenValues( &$values, &$contactIDs, $job = null, $tokens = array(), $context = null) {
|
||||||
|
|
||||||
|
|
||||||
|
if (!empty($tokens['greetings'])) {
|
||||||
|
|
||||||
|
$greetings_token_names = array(
|
||||||
|
'greetings.joint_casual' => 'greetings.joint_casual',
|
||||||
|
'greetings.joint_casual_firstname_lastname' => 'greetings.joint_casual_firstname_lastname',
|
||||||
|
'greetings.joint_casual_nickname_only' => 'greetings.joint_casual_nickname_only',
|
||||||
|
'greetings.joint_casual_firstname_only' => 'greetings.joint_casual_firstname_only',
|
||||||
|
'greetings.solo_casual' => 'greetings.solo_casual',
|
||||||
|
'greetings.solo_casual_nickname_only' => 'greetings.solo_casual_nickname_only',
|
||||||
|
|
||||||
|
'greetings.joint_formal' => 'greetings.joint_formal',
|
||||||
|
'greetings.joint_formal_firstname' => 'greetings.joint_formal_firstname',
|
||||||
|
|
||||||
|
);
|
||||||
|
if ( is_array( $contactIDs ) ) {
|
||||||
|
|
||||||
|
require_once ('utils/GreetingHelper.php');
|
||||||
|
|
||||||
|
$tmpGreetingHelper = new GreetingHelper();
|
||||||
|
$prefixes = $tmpGreetingHelper->get_all_prefixes();
|
||||||
|
$suffixes = $tmpGreetingHelper->get_all_suffixes();
|
||||||
|
|
||||||
|
$tmp_contactIds = $contactIDs ;
|
||||||
|
// process all spouses using 'Spouse of' relationships.
|
||||||
|
$household_id = '';
|
||||||
|
$tmpGreetingHelper->process_spouses( $suffixes, $prefixes, $values, $contactIDs , $greetings_token_names, $household_id );
|
||||||
|
$tmpGreetingHelper->process_households( $suffixes, $prefixes, $values, $contactIDs , $greetings_token_names);
|
||||||
|
// process people not in households and without spouses.
|
||||||
|
$tmpGreetingHelper->process_singles( $suffixes, $prefixes, $values, $greetings_token_names);
|
||||||
|
|
||||||
|
// process organizations
|
||||||
|
$tmpGreetingHelper->process_organizations( $suffixes, $prefixes, $values, $greetings_token_names);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if(!empty($tokens['communitynews'])){
|
if(!empty($tokens['communitynews'])){
|
||||||
|
|
||||||
|
2
info.xml
2
info.xml
@ -15,7 +15,7 @@
|
|||||||
<email>info@fountaintribe.com</email>
|
<email>info@fountaintribe.com</email>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
<releaseDate>2016-07-24</releaseDate>
|
<releaseDate>2016-07-24</releaseDate>
|
||||||
<version>3.7</version>
|
<version>3.8.0</version>
|
||||||
<develStage>stable</develStage>
|
<develStage>stable</develStage>
|
||||||
<compatibility>
|
<compatibility>
|
||||||
<ver>4.4</ver>
|
<ver>4.4</ver>
|
||||||
|
957
utils/GreetingHelper.php
Normal file
957
utils/GreetingHelper.php
Normal file
@ -0,0 +1,957 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class GreetingHelper{
|
||||||
|
|
||||||
|
|
||||||
|
function process_spouses(&$suffixes, &$prefixes, &$values, &$contactIDs, $greetings_token_names, $household_id){
|
||||||
|
|
||||||
|
|
||||||
|
$id_list = "";
|
||||||
|
$i = 1;
|
||||||
|
foreach ( $contactIDs as $cid ) {
|
||||||
|
$id_list = $id_list.$cid;
|
||||||
|
if( $i < count($contactIDs) ){
|
||||||
|
$id_list = $id_list.' ,';
|
||||||
|
}
|
||||||
|
$i = $i +1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $i == 1){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// print "<br><br>Inside process_spouses: ".$id_list;
|
||||||
|
$sqlstr = "SELECT rel.contact_id_a as cid_a, rel.contact_id_b as cid_b, c1.prefix_id , c1.first_name, c1.nick_name,
|
||||||
|
c1.last_name, c1.suffix_id, c1.birth_date, c1.gender_id, c1.is_deceased , c2.prefix_id as spouse_prefix_id,
|
||||||
|
c2.first_name as spouse_first_name, c2.nick_name as spouse_nick_name, c2.last_name as spouse_last_name, c2.suffix_id as spouse_suffix_id, c2.gender_id as spouse_gender_id, c2.is_deceased as spouse_is_deceased
|
||||||
|
FROM civicrm_relationship AS rel
|
||||||
|
JOIN (
|
||||||
|
civicrm_contact AS c1,
|
||||||
|
civicrm_contact AS c2,
|
||||||
|
civicrm_relationship_type AS reltype)
|
||||||
|
ON rel.contact_id_a = c1.id
|
||||||
|
AND rel.contact_id_b = c2.id
|
||||||
|
AND rel.relationship_type_id = reltype.id
|
||||||
|
WHERE ( lower(name_a_b) LIKE '%spouse%' OR lower(name_a_b) LIKE '%partner%' )
|
||||||
|
and rel.is_active = 1
|
||||||
|
AND (rel.contact_id_a in ( $id_list) or rel.contact_id_b in ( $id_list ) )
|
||||||
|
AND c1.is_deleted <> 1 and c2.is_deleted <> 1
|
||||||
|
AND c1.is_deceased <> 1 AND c2.is_deceased <> 1
|
||||||
|
group by rel.contact_id_a , rel.contact_id_b , c1.prefix_id , c1.first_name, c1.last_name
|
||||||
|
order by rel.contact_id_b, c1.birth_date ";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$contact_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
// print "<br><br>sql: ".$sqlstr;
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
//Lets get greetings for spouses.
|
||||||
|
while ( $contact_dao->fetch( ) ) {
|
||||||
|
$i = $i + 1;
|
||||||
|
// Load up cur_contact with current record data
|
||||||
|
// print "<br>record :".$i;
|
||||||
|
$prefix_id = $contact_dao->prefix_id;
|
||||||
|
|
||||||
|
if( strlen($prefix_id) > 0 ){
|
||||||
|
$prefix_label = $prefixes[$prefix_id];
|
||||||
|
}else{
|
||||||
|
$prefix_label = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$prefix_id_spouse = $contact_dao->spouse_prefix_id;
|
||||||
|
|
||||||
|
if( strlen( $prefix_id_spouse ) > 0 ){
|
||||||
|
$prefix_label_spouse = $prefixes[$prefix_id_spouse];
|
||||||
|
}else{
|
||||||
|
$prefix_label_spouse = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$suffix_id = $contact_dao->suffix_id;
|
||||||
|
if(strlen($suffix_id) > 0){
|
||||||
|
$suffix_label = $suffixes[$suffix_id];
|
||||||
|
}else{
|
||||||
|
$suffix_label = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$suffix_id_spouse = $contact_dao->spouse_suffix_id;
|
||||||
|
if(strlen( $suffix_id_spouse ) > 0 ){
|
||||||
|
$suffix_label_spouse = $suffixes[$suffix_id_spouse];
|
||||||
|
}else{
|
||||||
|
$suffix_label_spouse = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// deal with genders
|
||||||
|
$gender_id = $contact_dao->gender_id;
|
||||||
|
if ($gender_id == 1){
|
||||||
|
$gender_label = "Female";
|
||||||
|
}else{
|
||||||
|
$gender_label = "Male";
|
||||||
|
}
|
||||||
|
|
||||||
|
$spouse_gender_id = $contact_dao->spouse_gender_id;
|
||||||
|
if ($spouse_gender_id == 1){
|
||||||
|
$spouse_gender_label = "Female";
|
||||||
|
}else{
|
||||||
|
$spouse_gender_label = "Male";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$cur_contact_a["contact_id"] = $contact_dao->cid_a;
|
||||||
|
$cur_contact_a["prefix"] = $prefix_label;
|
||||||
|
$cur_contact_a["first_name"] = $contact_dao->first_name;
|
||||||
|
$cur_contact_a["nick_name"] = $contact_dao->nick_name;
|
||||||
|
$cur_contact_a["last_name"] = $contact_dao->last_name;
|
||||||
|
$cur_contact_a["suffix"] = $suffix_label;
|
||||||
|
$cur_contact_a["gender"]= $gender_label;
|
||||||
|
$cur_contact_a["is_deceased"] = $contact_dao->is_deceased;
|
||||||
|
|
||||||
|
// add cur_contact to the family array.
|
||||||
|
$current_family[] = $cur_contact_a ;
|
||||||
|
|
||||||
|
$cur_contact_b["contact_id"] = $contact_dao->cid_b;
|
||||||
|
$cur_contact_b["prefix"] = $prefix_label_spouse;
|
||||||
|
$cur_contact_b["first_name"] = $contact_dao->spouse_first_name;
|
||||||
|
$cur_contact_b["nick_name"] = $contact_dao->spouse_nick_name;
|
||||||
|
$cur_contact_b["last_name"] = $contact_dao->spouse_last_name;
|
||||||
|
$cur_contact_b["suffix"] = $suffix_label_spouse;
|
||||||
|
$cur_contact_b["gender"]= $spouse_gender_label;
|
||||||
|
$cur_contact_b["is_deceased"] = $contact_dao->spouse_is_deceased;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// add cur_contact to the family array.
|
||||||
|
$current_family[] = $cur_contact_b ;
|
||||||
|
|
||||||
|
// Add current household to family array if not empty.
|
||||||
|
if( $household_id <> '' ){
|
||||||
|
$cur_hh["contact_id"] = $household_id ;
|
||||||
|
$current_family[] = $cur_hh;
|
||||||
|
}
|
||||||
|
// print "<br>About to call process family greetings:<br> ";
|
||||||
|
// print_r($current_family);
|
||||||
|
|
||||||
|
$this->process_family_greetings( $current_family, $values, $greetings_token_names);
|
||||||
|
$current_family = array();
|
||||||
|
//print "<br>";
|
||||||
|
//print_r($cur_contact);
|
||||||
|
}
|
||||||
|
// print "<br>Count ".$i;
|
||||||
|
$contact_dao->free( );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function greetings_determine_middle_content( $contact_id ){
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
'version' => 3,
|
||||||
|
'sequential' => 1,
|
||||||
|
'contact_id' => $contact_id,
|
||||||
|
);
|
||||||
|
$result = civicrm_api('JointGreetings', 'getsingle', $params);
|
||||||
|
|
||||||
|
$middle_html = "";
|
||||||
|
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Casual (nickname last name):</td> <td class='html-adjust'>".$result['greetings.joint_casual']."</td> </tr> \n ";
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Casual (first name last name):</td> <td class='html-adjust'>".$result['greetings.joint_casual_firstname_lastname']."</td> </tr> \n ";
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Casual (nickname):</td> <td class='html-adjust'>".$result['greetings.joint_casual_nickname_only']."</td> </tr> \n ";
|
||||||
|
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Casual (first name):</td> <td class='html-adjust'>".$result['greetings.joint_casual_firstname_only']."</td> </tr> \n ";
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Formal (prefix last name):</td> <td class='html-adjust'>".$result['greetings.joint_formal']."</td> </tr> \n ";
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Formal (prefix first name last name):</td> <td class='html-adjust'>".$result['greetings.joint_formal_firstname']."</td> </tr> \n ";
|
||||||
|
|
||||||
|
|
||||||
|
return $middle_html;
|
||||||
|
|
||||||
|
/*
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Solo Casual:</td> <td class='html-adjust'>".$result['greetings.solo_casual']."</td> </tr> \n ";
|
||||||
|
$middle_html = $middle_html." <tr> <td class='label'>Solo Casual nickname only:</td> <td class='html-adjust'>".$result['greetings.solo_casual_nickname_only']."</td> </tr> \n ";
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function greetings_determine_beginning_content( $label ){
|
||||||
|
|
||||||
|
$html_rtn = " <div id='customFields'>
|
||||||
|
<div class='contact_panel'>
|
||||||
|
<div class='contactCardLeft'>
|
||||||
|
<div class='customFieldGroup ui-corner-all'>
|
||||||
|
<table>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan='2' class='grouplabel'>$label</td>
|
||||||
|
</tr> \n
|
||||||
|
";
|
||||||
|
|
||||||
|
return $html_rtn;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function greetings_determine_ending_content(){
|
||||||
|
|
||||||
|
$html_rtn = " </table>
|
||||||
|
</div>
|
||||||
|
</div><!--contactCardLeft-->
|
||||||
|
|
||||||
|
<div class='contactCardRight'>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='clear'></div>
|
||||||
|
</div>
|
||||||
|
</div> \n
|
||||||
|
";
|
||||||
|
|
||||||
|
return $html_rtn;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
* Get the greetings for everyone in a single family.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
**********************************************************************************/
|
||||||
|
function process_family_greetings( &$family, &$values, $greetings_token_names){
|
||||||
|
|
||||||
|
|
||||||
|
$token_formal_short = $token_formal_long = $greetings_token_names['greetings.joint_formal'];
|
||||||
|
$token_formal_fn_short = $token_formal_fn_long = $greetings_token_names['greetings.joint_formal_firstname'];
|
||||||
|
|
||||||
|
// $token_firstname_only_short = $token_firstname_only_long = $greetings_token_names['greetings.joint_casual_firstname_only'];
|
||||||
|
// $token_name_long = $greetings_token_names['greetings.joint_casual'];
|
||||||
|
|
||||||
|
$token_joint_casual = $greetings_token_names['greetings.joint_casual'];
|
||||||
|
$token_joint_casual_firstname_only = $greetings_token_names['greetings.joint_casual_firstname_only'];
|
||||||
|
$token_joint_casual_firstname_lastname = $greetings_token_names['greetings.joint_casual_firstname_lastname'];
|
||||||
|
$token_joint_casual_nickname_only = $greetings_token_names['greetings.joint_casual_nickname_only'];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// get family greeting
|
||||||
|
$have_greeting = false;
|
||||||
|
$needed_greets = array();
|
||||||
|
|
||||||
|
foreach($family as $cur_contact){
|
||||||
|
$tmp_cid = $cur_contact['contact_id'];
|
||||||
|
//print "<br>tmp_cid: $tmp_cid";
|
||||||
|
if(array_key_exists($tmp_cid, $values)){
|
||||||
|
|
||||||
|
if(isset( $values[$tmp_cid][$token_joint_casual] )){
|
||||||
|
$test_greet = $values[$tmp_cid][$token_joint_casual];
|
||||||
|
}else{
|
||||||
|
$test_greet = "";
|
||||||
|
}
|
||||||
|
if($test_greet != ""){
|
||||||
|
$have_greeting = true;
|
||||||
|
$needed_greets['casual'] = $values[$tmp_cid][$token_joint_casual] ;
|
||||||
|
$needed_greets['casual_firstname_only'] = $values[$tmp_cid][$token_joint_casual_firstname_only] ;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $values[$tmp_cid][$token_joint_casual_firstname_lastname];
|
||||||
|
$needed_greets['casual_nickname_only'] = $values[$tmp_cid][$token_joint_casual_nickname_only] ;
|
||||||
|
|
||||||
|
$needed_greets['formal'] = $values[$tmp_cid][$token_formal_long] ;
|
||||||
|
$needed_greets['formal_firstname'] = $values[$tmp_cid][$token_formal_fn_long] ;
|
||||||
|
// print "<br><br>needed greets: casual_firstname_only: ".$needed_greets['casual_firstname_only'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if($have_greeting == false){
|
||||||
|
if(count($family) == 1){
|
||||||
|
|
||||||
|
if( $family[0][spouse_last_name]){
|
||||||
|
// this is a married couple or a widow.
|
||||||
|
if($family[0]['is_deceased'] OR $family[0]['spouse_is_deceased'] ){
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_widow( $family[0]['prefix'], $family[0]['first_name'], $family[0]['last_name'], $family[0]['suffix'], $family[0]['gender'], $family[0]['is_deceased'], $family[0]['spouse_prefix'], $family[0]['spouse_first_name'], $family[0]['spouse_last_name'], $family[0]['spouse_suffix'], $family[0]['spouse_gender'], $family[0]['spouse_is_deceased'], $family[0]['nick_name'], $family[0]['spouse_nick_name'] );
|
||||||
|
}else{
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_couple( $family[0]['prefix'], $family[0]['first_name'], $family[0]['last_name'], $family[0]['suffix'], $family[0]['gender'], $family[0]['is_deceased'], $family[0]['spouse_prefix'], $family[0]['spouse_first_name'], $family[0]['spouse_last_name'], $family[0]['spouse_suffix'], $family[0]['spouse_gender'], $family[0]['spouse_is_deceased'], $family[0]['nick_name'], $family[0]['spouse_nick_name'] );
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// this is a person in a one person household.
|
||||||
|
$uses_spouses_name = false;
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_single( $family[0]['prefix'], $family[0]['first_name'], $family[0]['last_name'], $family[0]['suffix'], $family[0]['gender'], $uses_spouses_name, $family[0]['nick_name'] );
|
||||||
|
|
||||||
|
}
|
||||||
|
}else if(count($family) >= 2){
|
||||||
|
if($family[0]['is_deceased'] OR $family[1]['is_deceased'] ){
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_widow( $family[0]['prefix'], $family[0]['first_name'], $family[0]['last_name'], $family[0]['suffix'], $family[0]['gender'], $family[0]['is_deceased'], $family[1]['prefix'], $family[1]['first_name'], $family[1]['last_name'], $family[1]['suffix'], $family[1]['gender'], $family[1]['is_deceased'] );
|
||||||
|
}else{
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_couple( $family[0]['prefix'], $family[0]['first_name'], $family[0]['last_name'], $family[0]['suffix'], $family[0]['gender'], $family[0]['is_deceased'], $family[1]['prefix'], $family[1]['first_name'], $family[1]['last_name'], $family[1]['suffix'], $family[1]['gender'], $family[1]['is_deceased'], $family[0]['nick_name'], $family[1]['nick_name'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// fill in family greeting for each contact.
|
||||||
|
$i =0;
|
||||||
|
foreach($family as $cur_contact){
|
||||||
|
|
||||||
|
// print "<br>cur contact: ";
|
||||||
|
// print_r( $cur_contact) ;
|
||||||
|
$family[$i]['needed_greets'] = $needed_greets ;
|
||||||
|
|
||||||
|
|
||||||
|
//$token_formal_long, $token_formal_short, $token_formal_fn_long, $token_formal_fn_short
|
||||||
|
$cur_cid = $cur_contact['contact_id'];
|
||||||
|
|
||||||
|
if(isset($cur_contact['hh_id'])){
|
||||||
|
$cur_hhid = $cur_contact['hh_id'];
|
||||||
|
}else{
|
||||||
|
$cur_hhid = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(array_key_exists($cur_cid, $values)){
|
||||||
|
//print "<br> Contains $cur_cid use greeting: $greeting";
|
||||||
|
$values[$cur_cid][$token_joint_casual] = $needed_greets['casual'];
|
||||||
|
$values[$cur_cid][$token_formal_short] = $values[$cur_cid][$token_formal_long] = $needed_greets['formal'] ;
|
||||||
|
$values[$cur_cid][$token_formal_fn_short] = $values[$cur_cid][$token_formal_fn_long] = $needed_greets['formal_firstname'];
|
||||||
|
|
||||||
|
$values[$cur_cid][$token_joint_casual_firstname_only] = $needed_greets['casual_firstname_only'];
|
||||||
|
$values[$cur_cid][$token_joint_casual_firstname_lastname] = $needed_greets['casual_firstname_lastname'];
|
||||||
|
$values[$cur_cid][$token_joint_casual_nickname_only] = $needed_greets['casual_nickname_only'];
|
||||||
|
}else{
|
||||||
|
//print "<br>Does NOT Contain $cur_cid";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(array_key_exists($cur_hhid, $values)){
|
||||||
|
//print "<br> Contains hhid $cur_hhid use greeting: $greeting";
|
||||||
|
$values[$cur_hhid][$token_joint_casual] = $needed_greets['casual'];
|
||||||
|
$values[$cur_hhid][$token_formal_short] = $values[$cur_hhid][$token_formal_long] = $needed_greets['formal'] ;
|
||||||
|
$values[$cur_hhid][$token_formal_fn_short] = $values[$cur_hhid][$token_formal_fn_long] = $needed_greets['formal_firstname'];
|
||||||
|
|
||||||
|
|
||||||
|
$values[$cur_hhid][$token_joint_casual_firstname_only] = $needed_greets['casual_firstname_only'];
|
||||||
|
$values[$cur_hhid][$token_joint_casual_firstname_lastname] = $needed_greets['casual_firstname_lastname'];
|
||||||
|
$values[$cur_hhid][$token_joint_casual_nickname_only] = $needed_greets['casual_nickname_only'];
|
||||||
|
}else{
|
||||||
|
// print "<br>Does NOT Contain hhid $cur_hhid";
|
||||||
|
}
|
||||||
|
$i = $i + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// print "<br><b>End of process_family_greetings</b><br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function get_formatted_greeting_for_couple( $adult_a_prefix, $adult_a_first_name, $adult_a_last_name, $adult_a_suffix, $adult_a_gender, $adult_a_deceased, $adult_b_prefix, $adult_b_first_name, $adult_b_last_name, $adult_b_suffix, $adult_b_gender, $adult_b_deceased, $a_nick_name, $b_nick_name ){
|
||||||
|
|
||||||
|
$needed_greets = array();
|
||||||
|
$and_label = " and "; // English.
|
||||||
|
|
||||||
|
$b_has_real_title = false;
|
||||||
|
|
||||||
|
if( strlen($a_nick_name) > 0){
|
||||||
|
$a_casual_first_name = $a_nick_name;
|
||||||
|
}else{
|
||||||
|
$a_casual_first_name = $adult_a_first_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if( strlen($b_nick_name) > 0){
|
||||||
|
$b_casual_first_name = $b_nick_name;
|
||||||
|
}else{
|
||||||
|
$b_casual_first_name = $adult_b_first_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_a_first_name.$and_label.$adult_b_first_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $a_casual_first_name.$and_label.$b_casual_first_name ;
|
||||||
|
|
||||||
|
if( $adult_a_last_name == $adult_b_last_name ){
|
||||||
|
// This couple shares a last name.
|
||||||
|
$uses_spouses_name = true;
|
||||||
|
$prefix_info_a = $this->determine_title($adult_a_prefix, $adult_a_gender, $uses_spouses_name);
|
||||||
|
$prefix_info_b = $this->determine_title($adult_b_prefix, $adult_b_gender, $uses_spouses_name);
|
||||||
|
|
||||||
|
|
||||||
|
if($prefix_info_b['real_title'] and !($prefix_info_a['real_title'])) {
|
||||||
|
$needed_greets['casual'] = $prefix_info_b['prefix']." ".$b_casual_first_name.$and_label.$a_casual_first_name." ".$adult_a_last_name;
|
||||||
|
$needed_greets['formal'] = $prefix_info_b['prefix'].$and_label.$prefix_info_a['prefix']." ".$adult_a_last_name;
|
||||||
|
}else if($prefix_info_a['real_title'] and !($prefix_info_b['real_title'])){
|
||||||
|
$needed_greets['casual'] = $prefix_info_a['prefix']." ".$a_casual_first_name.$and_label.$b_casual_first_name." ".$adult_a_last_name;
|
||||||
|
$needed_greets['formal'] = $prefix_info_a['prefix'].$and_label.$prefix_info_b['prefix']." ".$adult_a_last_name ;
|
||||||
|
}else if($prefix_info_a['real_title'] and $prefix_info_b['real_title']){
|
||||||
|
// both have real titles.
|
||||||
|
$needed_greets['casual'] = $prefix_info_a['prefix']." ".$a_casual_first_name.$and_label.$prefix_info_b['prefix']." ".$b_casual_first_name." ".$adult_a_last_name;
|
||||||
|
$needed_greets['formal'] = $prefix_info_a['prefix'].$and_label.$prefix_info_b['prefix']." ".$adult_a_last_name ;
|
||||||
|
}else{
|
||||||
|
// no one has a real title.
|
||||||
|
$needed_greets['casual'] = $a_casual_first_name.$and_label.$b_casual_first_name." ".$adult_a_last_name;
|
||||||
|
//
|
||||||
|
if($adult_b_gender == 'Male' ){
|
||||||
|
// Make sure Mr. is the start.
|
||||||
|
$needed_greets['formal'] = $prefix_info_b['prefix'].$and_label.$prefix_info_a['prefix']." ".$adult_a_last_name ;
|
||||||
|
}else{
|
||||||
|
$needed_greets['formal'] = $prefix_info_a['prefix'].$and_label.$prefix_info_b['prefix']." ".$adult_a_last_name ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// deal with casual greetings that do not include title.
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_a_first_name.$and_label.$adult_b_first_name." ".$adult_b_last_name;
|
||||||
|
|
||||||
|
// Deal with formal greetings with first names. Such as Mr. and Mrs. John Smith
|
||||||
|
if( ($adult_a_gender == 'Male') and (!($prefix_info_b['real_title'])) and ($adult_b_gender == 'Female')){
|
||||||
|
$needed_greets['formal_firstname'] = $prefix_info_a['prefix'].$and_label.$prefix_info_b['prefix']." ".$adult_a_first_name." ".$adult_a_last_name." ".$adult_a_suffix;
|
||||||
|
}else if( $adult_b_gender == 'Male' and !($prefix_info_a['real_title']) and $adult_a_gender == 'Female'){
|
||||||
|
$needed_greets['formal_firstname'] = $prefix_info_b['prefix'].$and_label.$prefix_info_a['prefix']." ".$adult_b_first_name." ".$adult_b_last_name." ".$adult_b_suffix;
|
||||||
|
}else{
|
||||||
|
$needed_greets_a = $this->get_formatted_greeting_for_single( $adult_a_prefix, $adult_a_first_name, $adult_a_last_name, $adult_a_suffix, $adult_a_gender, $uses_spouses_name , $a_nick_name );
|
||||||
|
$needed_greets_b = $this->get_formatted_greeting_for_single( $adult_b_prefix, $adult_b_first_name, $adult_b_last_name, $adult_b_suffix, $adult_b_gender, $uses_spouses_name, $b_nick_name );
|
||||||
|
if($b_has_real_title) {
|
||||||
|
$needed_greets['formal_firstname'] = $needed_greets_b['formal_firstname'].$and_label.$needed_greets_a['formal_firstname'];
|
||||||
|
}else{
|
||||||
|
$needed_greets['formal_firstname'] = $needed_greets_a['formal_firstname'].$and_label.$needed_greets_b['formal_firstname'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
// the couple has different last names.
|
||||||
|
$uses_spouses_name = false;
|
||||||
|
$needed_greets_a = $this->get_formatted_greeting_for_single( $adult_a_prefix, $adult_a_first_name, $adult_a_last_name, $adult_a_suffix, $adult_a_gender, $uses_spouses_name, $a_nick_name );
|
||||||
|
$needed_greets_b = $this->get_formatted_greeting_for_single( $adult_b_prefix, $adult_b_first_name, $adult_b_last_name, $adult_b_suffix, $adult_b_gender, $uses_spouses_name, $b_nick_name );
|
||||||
|
|
||||||
|
$prefix_info_a = $this->determine_title($adult_a_prefix, $adult_a_gender, $uses_spouses_name);
|
||||||
|
$prefix_info_b = $this->determine_title($adult_b_prefix, $adult_b_gender, $uses_spouses_name);
|
||||||
|
|
||||||
|
|
||||||
|
if($prefix_info_b['real_title']){
|
||||||
|
$needed_greets['casual_firstname_only'] = $needed_greets_b['formal_firstname'].$and_label.$needed_greets_a['formal_firstname'];
|
||||||
|
$needed_greets['casual'] = $needed_greets_b['casual'].$and_label.$needed_greets_a['casual'];
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_b_first_name." ".$adult_b_last_name.$and_label.$adult_a_first_name." ".$adult_a_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $needed_greets_b['casual_nickname_only'].$and_label.$needed_greets_a['casual_nickname_only'];
|
||||||
|
|
||||||
|
$needed_greets['formal'] = $needed_greets_b['formal'].$and_label.$needed_greets_a['formal'];
|
||||||
|
$needed_greets['formal_firstname'] = $needed_greets_b['formal_firstname'].$and_label.$needed_greets_a['formal_firstname'];
|
||||||
|
}else{
|
||||||
|
$needed_greets['casual_firstname_only'] = $needed_greets_a['casual_firstname_only'].$and_label.$needed_greets_b['casual_firstname_only'];
|
||||||
|
$needed_greets['casual'] = $needed_greets_a['casual'].$and_label.$needed_greets_b['casual'];
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_a_first_name." ".$adult_a_last_name.$and_label.$adult_b_first_name." ".$adult_b_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $needed_greets_a['casual_nickname_only'].$and_label.$needed_greets_b['casual_nickname_only'];
|
||||||
|
|
||||||
|
|
||||||
|
$needed_greets['formal'] = $needed_greets_a['formal'].$and_label.$needed_greets_b['formal'];
|
||||||
|
$needed_greets['formal_firstname'] = $needed_greets_a['formal_firstname'].$and_label.$needed_greets_b['formal_firstname'];
|
||||||
|
}
|
||||||
|
} // end else
|
||||||
|
|
||||||
|
// print_r( $needed_greets);
|
||||||
|
return $needed_greets;
|
||||||
|
}
|
||||||
|
|
||||||
|
// format as a single person.
|
||||||
|
function get_formatted_greeting_for_single($adult_prefix, $adult_first_name, $adult_last_name, $adult_suffix, $adult_gender, $uses_spouses_name, $nick_name ){
|
||||||
|
|
||||||
|
$needed_greets = array();
|
||||||
|
|
||||||
|
if( !($adult_last_name)){
|
||||||
|
if(strlen( $nick_name ) > 0){
|
||||||
|
|
||||||
|
$needed_greets['casual'] = $nick_name;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $nick_name;
|
||||||
|
}else{
|
||||||
|
$needed_greets['casual'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $adult_first_name;
|
||||||
|
}
|
||||||
|
$needed_greets['formal'] = $adult_first_name;
|
||||||
|
$needed_greets['formal_firstname'] = $adult_first_name;
|
||||||
|
return $needed_greets;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$prefix_info = $this->determine_title($adult_prefix, $adult_gender, $uses_spouses_name);
|
||||||
|
|
||||||
|
if($prefix_info['real_title']){
|
||||||
|
if(strlen( $nick_name ) > 0){
|
||||||
|
$needed_greets['casual'] = $prefix_info['prefix']." ".$nick_name." ".$adult_last_name." ".$adult_suffix;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name." ".$adult_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $nick_name;
|
||||||
|
}else{
|
||||||
|
$needed_greets['casual'] = $prefix_info['prefix']." ".$adult_first_name." ".$adult_last_name." ".$adult_suffix;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name." ".$adult_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $adult_first_name;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(strlen( $nick_name ) > 0){
|
||||||
|
$needed_greets['casual'] = $nick_name." ".$adult_last_name." ".$adult_suffix;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name." ".$adult_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $nick_name;
|
||||||
|
}else{
|
||||||
|
$needed_greets['casual'] = $adult_first_name." ".$adult_last_name." ".$adult_suffix;
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
$needed_greets['casual_firstname_lastname'] = $adult_first_name." ".$adult_last_name;
|
||||||
|
$needed_greets['casual_nickname_only'] = $adult_first_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$needed_greets['formal'] = $prefix_info['prefix']." ".$adult_last_name." ".$adult_suffix ;
|
||||||
|
$needed_greets['formal_firstname'] = $prefix_info['prefix']." ".$adult_first_name." ".$adult_last_name." ".$adult_suffix ;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(strlen( $nick_name ) > 0){
|
||||||
|
$needed_greets['casual_firstname_only'] = $nick_name;
|
||||||
|
}else{
|
||||||
|
$needed_greets['casual_firstname_only'] = $adult_first_name;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
return $needed_greets;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Determine courtesy title for someone without a professional title.
|
||||||
|
// For example, if someone is a doctor, then return the stored prefix ie Dr.
|
||||||
|
// If someone doesn't have a title, return Mr or Ms
|
||||||
|
function determine_title($prefix, $gender, $uses_spouses_name){
|
||||||
|
|
||||||
|
$prefix_info = array();
|
||||||
|
$prefix_info['real_title'] = false;
|
||||||
|
|
||||||
|
if(!($prefix) ){
|
||||||
|
$prefix_info['real_title'] = false;
|
||||||
|
if( $gender == 'Female' and $uses_spouses_name ){
|
||||||
|
$prefix = "Mrs.";
|
||||||
|
}else if($gender == 'Female'){
|
||||||
|
$prefix = "Ms.";
|
||||||
|
}else{
|
||||||
|
$prefix = "Mr.";
|
||||||
|
}
|
||||||
|
}else if( $prefix == 'Mr' or $prefix == 'Mr.' or $prefix == 'Mrs' or $prefix == 'Mrs.' or $prefix == 'Ms' or $prefix == 'Ms.' or $prefix == 'Miss'){
|
||||||
|
$prefix_info['real_title'] = false;
|
||||||
|
if($gender == 'Female' and $uses_spouses_name ){
|
||||||
|
// This means the woman shares her spouse's last name and may be part of "Mr and Mrs"
|
||||||
|
// It is never correct to write Mr. and Ms. Smith or Mr. and Ms. John Smith
|
||||||
|
$prefix = "Mrs.";
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
$prefix_info['real_title'] = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if period is needed, due to typo in CiviCRM data.
|
||||||
|
if($prefix == 'Dr' or $prefix == 'Mr' or $prefix == 'Mrs' or $prefix == 'Ms'){
|
||||||
|
$prefix = "$prefix.";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$prefix_info['prefix'] = $prefix ;
|
||||||
|
return $prefix_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function process_households(&$suffixes, &$prefixes, &$values, &$contactIDs,$greetings_token_names ){
|
||||||
|
|
||||||
|
|
||||||
|
$token_name_long = $greetings_token_names['greetings.joint_casual'];
|
||||||
|
$token_formal_short = $token_formal_long = $greetings_token_names['greetings.joint_formal'];
|
||||||
|
$token_formal_fn_short = $token_formal_fn_long = $greetings_token_names['greetings.joint_formal_firstname'];
|
||||||
|
|
||||||
|
//print "<hr><br>Inside process households<br>";
|
||||||
|
|
||||||
|
$i = 1;
|
||||||
|
$cid_list = "";
|
||||||
|
foreach ( $contactIDs as $cid ) {
|
||||||
|
$cid_list = $cid_list.$cid;
|
||||||
|
if( $i < count($contactIDs) ){
|
||||||
|
$cid_list = $cid_list.' ,';
|
||||||
|
}
|
||||||
|
$i = $i +1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if($i == 1){
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$sqlstr = "SELECT r2.contact_id_a AS cid_a, r2.contact_id_b AS cid_b, c1.contact_type, c1.prefix_id, c1.first_name, c1.nick_name, c1.last_name, c1.suffix_id, c1.birth_date, name_a_b
|
||||||
|
FROM civicrm_relationship AS r1
|
||||||
|
JOIN (
|
||||||
|
civicrm_relationship AS r2, civicrm_contact AS c1, civicrm_relationship_type AS reltype
|
||||||
|
) ON r1.contact_id_b = r2.contact_id_b
|
||||||
|
AND r2.contact_id_a = c1.id
|
||||||
|
AND r2.relationship_type_id = reltype.id
|
||||||
|
WHERE (reltype.name_a_b = 'Head of Household for' or reltype.name_a_b = 'Household Member of' )
|
||||||
|
AND r1.is_active =1
|
||||||
|
AND r2.is_active =1
|
||||||
|
and (r1.contact_id_a in ( $cid_list) or r1.contact_id_b in ( $cid_list ) )
|
||||||
|
and c1.is_deleted <> 1
|
||||||
|
GROUP BY r2.contact_id_a, r2.contact_id_b, c1.prefix_id, c1.first_name, c1.last_name, reltype.name_a_b
|
||||||
|
ORDER BY r2.contact_id_b, reltype.name_a_b, c1.birth_date ";
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
$sqlstr = "SELECT r2.contact_id_a AS cid_a, r2.contact_id_b AS cid_b, c1.contact_type, c1.prefix_id, c1.first_name, c1.last_name,
|
||||||
|
c1.suffix_id, c1.birth_date, r3.contact_id_a, r3.contact_id_b, reltype.name_a_b , reltype3.name_a_b
|
||||||
|
FROM
|
||||||
|
civicrm_relationship AS r1 JOIN ( civicrm_relationship AS r2, civicrm_contact AS c1
|
||||||
|
civicrm_relationship_type AS reltype, civicrm_relationship as r3, civicrm_relationship_type AS reltype3 )
|
||||||
|
ON r1.contact_id_b = r2.contact_id_b AND r2.contact_id_a = c1.id AND r2.relationship_type_id = reltype.id and
|
||||||
|
(r2.contact_id_a = r3.contact_id_a or r2.contact_id_a = r3.contact_id_b) and r3.relationship_type_id = reltype3.id and
|
||||||
|
lower(reltype3.name_a_b) LIKE '%spouse%'
|
||||||
|
WHERE (reltype.name_a_b = 'Head of Household for' or reltype.name_a_b = 'Household Member of' ) AND r1.is_active =1
|
||||||
|
AND r2.is_active =1 and (r1.contact_id_a in ( $cid_list) or r1.contact_id_b in ( $cid_list ) ) GROUP BY r2.contact_id_a,
|
||||||
|
r2.contact_id_b, c1.prefix_id, c1.first_name, c1.last_name, reltype.name_a_b ORDER BY r2.contact_id_b, reltype.name_a_b, c1.birth_date";
|
||||||
|
|
||||||
|
*/
|
||||||
|
// print "<br>sql: ".$sqlstr;
|
||||||
|
|
||||||
|
$contact_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
$current_hh = array();
|
||||||
|
$last_hh_id = "";
|
||||||
|
//Lets get greetings for everyone in a household.
|
||||||
|
while ( $contact_dao->fetch( ) ) {
|
||||||
|
|
||||||
|
$cur_contact_id = $contact_dao->cid_a;
|
||||||
|
$cur_hh_id = $contact_dao->cid_b;
|
||||||
|
|
||||||
|
|
||||||
|
$tmp_contactIDs = array();
|
||||||
|
$tmp_contactIDs[] = $cur_contact_id ;
|
||||||
|
|
||||||
|
|
||||||
|
$this->process_spouses($suffixes, $prefixes, $values, $tmp_contactIDs, $greetings_token_names, $cur_hh_id );
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$contact_dao->free( );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Get the greetings for people not in a household or spousal relationship.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
***********************************************************************************************/
|
||||||
|
function process_singles(&$suffixes, &$prefixes, &$values, $greetings_token_names){
|
||||||
|
|
||||||
|
// print_r($values);
|
||||||
|
|
||||||
|
$token_formal_long = $greetings_token_names['greetings.joint_formal'];
|
||||||
|
$token_formal_fn_long = $greetings_token_names['greetings.joint_formal_firstname'];
|
||||||
|
|
||||||
|
$token_joint_casual = $greetings_token_names['greetings.joint_casual'];
|
||||||
|
$token_joint_casual_firstname_only = $greetings_token_names['greetings.joint_casual_firstname_only'];
|
||||||
|
$token_joint_casual_firstname_lastname = $greetings_token_names['greetings.joint_casual_firstname_lastname'];
|
||||||
|
$token_joint_casual_nickname_only = $greetings_token_names['greetings.joint_casual_nickname_only'];
|
||||||
|
|
||||||
|
$token_solo_casual = $greetings_token_names['greetings.solo_casual'];
|
||||||
|
$token_solo_casual_nickname_only = $greetings_token_names['greetings.solo_casual_nickname_only'];
|
||||||
|
$cid_list = "";
|
||||||
|
foreach ( $values as $cur_contact ) {
|
||||||
|
// print "<br>cur contact:";
|
||||||
|
// print_r($cur_contact);
|
||||||
|
// print "<br>current joint_greeting: ".$cur_contact['contact.joint_greeting'];
|
||||||
|
if(! (array_key_exists( $token_joint_casual , $cur_contact) ) ){
|
||||||
|
$cid = $cur_contact[contact_id];
|
||||||
|
if(strlen($cid_list) > 0 && strlen($cid) >0 ){
|
||||||
|
$cid_list = $cid_list.",";
|
||||||
|
|
||||||
|
}
|
||||||
|
$cid_list = "$cid_list $cid ";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strlen($cid_list) > 0 ){
|
||||||
|
$tmp_pos = strlen($cid_list) - 1;
|
||||||
|
$last = $cid_list[$tmp_pos] ;
|
||||||
|
}else{
|
||||||
|
$last = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($last == ","){
|
||||||
|
$cid_list[strlen($cid_list)-1] = " ";
|
||||||
|
}
|
||||||
|
$cid_list = trim($cid_list);
|
||||||
|
|
||||||
|
//print "<br> cidlist length: ";
|
||||||
|
//print strlen($cid_list);
|
||||||
|
if( strlen($cid_list) > 0 ) {
|
||||||
|
$where_clause = " WHERE c.id in ( $cid_list) ";
|
||||||
|
|
||||||
|
$sqlstr = "(SELECT c.id, c.contact_type, c.prefix_id, c.first_name, c.nick_name, c.last_name, c.suffix_id, c.gender_id
|
||||||
|
FROM civicrm_contact AS c $where_clause and contact_type = 'Individual')
|
||||||
|
UNION
|
||||||
|
(SELECT c1.id, c1.contact_type, c2.prefix_id, c2.first_name, c2.nick_name, c2.last_name, c2.suffix_id, c2.gender_id
|
||||||
|
FROM civicrm_contact c1,civicrm_relationship r, civicrm_contact c2, civicrm_relationship_type rt
|
||||||
|
where c1.id in ($cid_list) and c1.id = r.contact_id_b and r.contact_id_a = c2.id and r.relationship_type_id = rt.id
|
||||||
|
and r.is_active = 1
|
||||||
|
and c1.contact_type = 'Household' and rt.name_a_b = 'Household Member of'
|
||||||
|
group by c1.id
|
||||||
|
having count(c1.id) = 1 )
|
||||||
|
UNION
|
||||||
|
(SELECT c1.id, c1.contact_type, c2.prefix_id, c2.first_name, c2.nick_name, c2.last_name, c2.suffix_id, c2.gender_id
|
||||||
|
FROM civicrm_contact c1,civicrm_relationship r, civicrm_contact c2, civicrm_relationship_type rt
|
||||||
|
where c1.id in ($cid_list) and c1.id = r.contact_id_b and r.contact_id_a = c2.id and r.relationship_type_id = rt.id
|
||||||
|
and r.is_active = 1
|
||||||
|
and c1.contact_type = 'Household' and rt.name_a_b = 'Head of Household for'
|
||||||
|
group by c1.id
|
||||||
|
having count(c1.id) = 1) " ;
|
||||||
|
|
||||||
|
|
||||||
|
$contact_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
//Lets get greetings for singles
|
||||||
|
while ( $contact_dao->fetch( ) ) {
|
||||||
|
$cur_cid = $contact_dao->id;
|
||||||
|
$cur_contact_type = $contact_dao->contact_type;
|
||||||
|
$prefix_id = $contact_dao->prefix_id ;
|
||||||
|
$prefix_label = $prefixes[$prefix_id];
|
||||||
|
|
||||||
|
$suffix_id = $contact_dao->suffix_id ;
|
||||||
|
$suffix_label = $suffixes[$suffix_id];
|
||||||
|
|
||||||
|
// deal with genders
|
||||||
|
$gender_id = $contact_dao->gender_id;
|
||||||
|
if ($gender_id == 1){
|
||||||
|
$gender_label = "Female";
|
||||||
|
}else{
|
||||||
|
$gender_label = "Male";
|
||||||
|
}
|
||||||
|
|
||||||
|
$cur_prefix = $prefix_label;
|
||||||
|
$cur_first_name = $contact_dao->first_name;
|
||||||
|
$cur_last_name = $contact_dao->last_name;
|
||||||
|
$cur_gender = $gender_label;
|
||||||
|
$cur_nick_name = $contact_dao->nick_name;
|
||||||
|
|
||||||
|
//print "<br>contact type: $cur_contact_type";
|
||||||
|
if($cur_contact_type == 'Individual'){
|
||||||
|
$uses_spouses_name = false;
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_single($cur_prefix, $cur_first_name, $cur_last_name, $suffix_label, $gender_label, $uses_spouses_name , $cur_nick_name );
|
||||||
|
}else{
|
||||||
|
//$needed_greets = array();
|
||||||
|
//print "<br>Contact type household, what to do? ".$cur_cid;
|
||||||
|
$uses_spouses_name = false;
|
||||||
|
$needed_greets = $this->get_formatted_greeting_for_single($cur_prefix, $cur_first_name, $cur_last_name, $suffix_label, $gender_label, $uses_spouses_name , $cur_nick_name );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$values[$cur_cid][$token_joint_casual] = $needed_greets['casual'];
|
||||||
|
$values[$cur_cid][$token_formal_long] = $needed_greets['formal'];
|
||||||
|
$values[$cur_cid][$token_formal_fn_long] = $needed_greets['formal_firstname'];
|
||||||
|
$values[$cur_cid][$token_joint_casual_firstname_only] = $needed_greets['casual_firstname_only'];
|
||||||
|
|
||||||
|
$values[$cur_cid][$token_joint_casual_firstname_lastname] = $needed_greets['casual_firstname_lastname'];
|
||||||
|
$values[$cur_cid][$token_joint_casual_nickname_only] = $needed_greets['casual_nickname_only'];
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
$contact_dao->free( );
|
||||||
|
|
||||||
|
}else{
|
||||||
|
//print "<br>No contacts to process";
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle solo greetings (including for married contacts)
|
||||||
|
|
||||||
|
|
||||||
|
//print "<br> cidlist length: ";
|
||||||
|
//print strlen($cid_list);
|
||||||
|
if( strlen($cid_list) > 0 ) {
|
||||||
|
$where_clause = " WHERE c.id in ( $cid_list) ";
|
||||||
|
|
||||||
|
$sql = " SELECT c.id, c.contact_type, c.prefix_id, c.first_name, c.nick_name, c.last_name, c.suffix_id, c.gender_id
|
||||||
|
FROM civicrm_contact AS c $where_clause and contact_type = 'Individual' ";
|
||||||
|
|
||||||
|
$contact_dao =& CRM_Core_DAO::executeQuery( $sql );
|
||||||
|
|
||||||
|
//Lets get greetings for singles
|
||||||
|
while ( $contact_dao->fetch( ) ) {
|
||||||
|
$cur_cid = $contact_dao->id;
|
||||||
|
$cur_contact_type = $contact_dao->contact_type;
|
||||||
|
$prefix_id = $contact_dao->prefix_id ;
|
||||||
|
$prefix_label = $prefixes[$prefix_id];
|
||||||
|
|
||||||
|
$suffix_id = $contact_dao->suffix_id ;
|
||||||
|
$suffix_label = $suffixes[$suffix_id];
|
||||||
|
|
||||||
|
// deal with genders
|
||||||
|
$gender_id = $contact_dao->gender_id;
|
||||||
|
if ($gender_id == 1){
|
||||||
|
$gender_label = "Female";
|
||||||
|
}else{
|
||||||
|
$gender_label = "Male";
|
||||||
|
}
|
||||||
|
|
||||||
|
$cur_prefix = $prefix_label;
|
||||||
|
$cur_first_name = $contact_dao->first_name;
|
||||||
|
$cur_last_name = $contact_dao->last_name;
|
||||||
|
$cur_gender = $gender_label;
|
||||||
|
$cur_nick_name = $contact_dao->nick_name;
|
||||||
|
//print "<br>contact type: $cur_contact_type";
|
||||||
|
if($cur_contact_type == 'Individual'){
|
||||||
|
$uses_spouses_name = false;
|
||||||
|
$needed_solo_greets = $this->get_formatted_greeting_for_single($cur_prefix, $cur_first_name, $cur_last_name, $suffix_label, $gender_label, $uses_spouses_name , $cur_nick_name );
|
||||||
|
|
||||||
|
$values[$cur_cid][$token_solo_casual] = $needed_solo_greets['casual'];
|
||||||
|
$values[$cur_cid][$token_solo_casual_nickname_only] = $needed_solo_greets['casual_nickname_only'];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Get the greetings for organizations
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
***********************************************************************************************/
|
||||||
|
function process_organizations(&$suffixes, &$prefixes, &$values, $greetings_token_names){
|
||||||
|
|
||||||
|
|
||||||
|
// print_r( $greetings_token_names );
|
||||||
|
$token_name_long = $greetings_token_names['greetings.joint_casual'];
|
||||||
|
// $token_formal_short = $token_formal_long = $greetings_token_names['greetings.joint_formal'];
|
||||||
|
// $token_formal_fn_short = $token_formal_fn_long = $greetings_token_names['greetings.joint_formal_firstname'];
|
||||||
|
// $token_firstname_only_short = $token_name_long = $greetings_token_names['greetings.joint_casual_firstname_only'];
|
||||||
|
|
||||||
|
|
||||||
|
//print "<br>first name only: ".$token_firstname_only_short;
|
||||||
|
|
||||||
|
$cid_list = "";
|
||||||
|
foreach ( $values as $cur_contact ) {
|
||||||
|
// print "<br>current joint_greeting: ".$cur_contact['contact.joint_greeting'];
|
||||||
|
if(! (array_key_exists( $token_name_long , $cur_contact) ) ){
|
||||||
|
$cid = $cur_contact['contact_id'];
|
||||||
|
if( strlen($cid_list) > 0 && strlen($cid) > 0 ){
|
||||||
|
$cid_list = "$cid_list,";
|
||||||
|
}
|
||||||
|
$cid_list = "$cid_list $cid";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if( strlen($cid_list ) > 0){
|
||||||
|
$last = $cid_list[strlen($cid_list)-1] ;
|
||||||
|
}else{
|
||||||
|
$last = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($last == "," ){
|
||||||
|
$cid_list[strlen($cid_list)-1] = " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// print "<br><br>cidlist: ".$cid_list;
|
||||||
|
$cid_list = trim( $cid_list) ;
|
||||||
|
if( strlen($cid_list) > 0 ) {
|
||||||
|
$where_clause = " WHERE c.id in ( $cid_list) ";
|
||||||
|
|
||||||
|
$sqlstr = "SELECT c.id, c.contact_type, c.display_name as display_name
|
||||||
|
FROM civicrm_contact AS c $where_clause and c.contact_type = 'Organization' " ;
|
||||||
|
|
||||||
|
//print "<br>sql: ".$sqlstr;
|
||||||
|
$contact_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
|
||||||
|
while ( $contact_dao->fetch( ) ) {
|
||||||
|
$cur_cid = $contact_dao->id;
|
||||||
|
$cur_contact_type = $contact_dao->contact_type;
|
||||||
|
$cur_display_name = $contact_dao->display_name;
|
||||||
|
|
||||||
|
foreach( $greetings_token_names as $cur_token_name){
|
||||||
|
$values[$cur_cid][$cur_token_name] = $cur_display_name;
|
||||||
|
|
||||||
|
}
|
||||||
|
// $values[$cur_cid][$token_name_long] = $cur_display_name;
|
||||||
|
// $values[$cur_cid][$token_formal_short] = $values[$cur_cid][$token_formal_long] = $cur_display_name;
|
||||||
|
// $values[$cur_cid][$token_formal_fn_short] = $values[$cur_cid][$token_formal_fn_long] = $cur_display_name;
|
||||||
|
// $values[$cur_cid][$token_firstname_only_short] = $values[$cur_cid][$token_firstname_only_short] = $cur_display_name;
|
||||||
|
}
|
||||||
|
$contact_dao->free( );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_all_prefixes(){
|
||||||
|
|
||||||
|
$sqlstr = "SELECT ov.label, ov.value FROM civicrm_option_group og join civicrm_option_value ov
|
||||||
|
on og.id = ov.option_group_id
|
||||||
|
where og.name = 'individual_prefix' ";
|
||||||
|
|
||||||
|
$prefix_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
$prefixes = array();
|
||||||
|
|
||||||
|
while ( $prefix_dao->fetch( ) ) {
|
||||||
|
$curprefix_id = $prefix_dao->value;
|
||||||
|
$curprefix_label = $prefix_dao->label;
|
||||||
|
|
||||||
|
$prefixes[$curprefix_id] = $curprefix_label;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$prefix_dao->free( );
|
||||||
|
|
||||||
|
return $prefixes;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_all_suffixes(){
|
||||||
|
|
||||||
|
$sqlstr = "SELECT ov.label, ov.value FROM civicrm_option_group og join civicrm_option_value ov
|
||||||
|
on og.id = ov.option_group_id
|
||||||
|
where og.name = 'individual_suffix' ";
|
||||||
|
|
||||||
|
$suffix_dao =& CRM_Core_DAO::executeQuery( $sqlstr );
|
||||||
|
|
||||||
|
$suffixes = array();
|
||||||
|
|
||||||
|
while ( $suffix_dao->fetch( ) ) {
|
||||||
|
$cursuffix_id = $suffix_dao->value;
|
||||||
|
$cursuffix_label = $suffix_dao->label;
|
||||||
|
|
||||||
|
$suffixes[$cursuffix_id] = $cursuffix_label;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$suffix_dao->free( );
|
||||||
|
|
||||||
|
return $suffixes;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user