query($query); while (($row = $db->fetchByAssoc($result)) != null) { if(!isset($rows[$row['id']])) { $rows[]=$row; } } $count = 0; $emails = array(); $emailStr = ''; while(isset($_POST['emailAddress' . $count])) { $emailStr .= ",'" . strtoupper(trim($_POST['emailAddress' . $count++])) . "'"; } //while if($count > 0) { $emailStr = substr($emailStr, 1); $query = 'SELECT DISTINCT er.bean_id AS id FROM email_addr_bean_rel er, ' . 'email_addresses ea WHERE ea.id = er.email_address_id ' . 'AND ea.deleted = 0 AND er.deleted = 0 AND er.bean_module = \'Contacts\' ' . 'AND email_address_caps IN (' . $emailStr . ')'; $result = $db->query($query); while (($row= $db->fetchByAssoc($result)) != null) { if(!isset($rows[$row['id']])) { $query2 = "SELECT id, first_name, last_name, title FROM contacts WHERE deleted = 0 AND id = '" . $row['id'] . "'"; $result2 = $db->query($query2); $r = $db->fetchByAssoc($result2); if(isset($r['id']) && !array_key_exists('id', $r)) { $rows[]=$r; } } //if } } //if return !empty($rows) ? $rows : null; } function buildTableForm($rows, $mod=''){ global $action; if(!empty($mod)){ global $current_language; $mod_strings = return_module_language($current_language, $mod); }else global $mod_strings; global $app_strings; $cols = sizeof($rows[0]) * 2 + 1; if ($action != 'ShowDuplicates') { $form = '
'.$mod_strings['MSG_DUPLICATE']. '
'; $form .= "
"; $form .= getPostToForm('/emailAddress(PrimaryFlag|OptOutFlag|InvalidFlag)?[0-9]*?$/', true); } else { $form = '
'.$mod_strings['MSG_SHOW_DUPLICATES']. '
'; } $form .= ""; if ($action != 'ShowDuplicates') { $form .= ""; } require_once('include/formbase.php'); if(isset($_POST['return_action']) && $_POST['return_action'] == 'SubPanelViewer') { $_POST['return_action'] = 'DetailView'; } if(isset($_POST['return_action']) && $_POST['return_action'] == 'DetailView' && empty($_REQUEST['return_id'])) { unset($_POST['return_action']); } $form .= getPostToForm(); if(isset($rows[0])){ foreach ($rows[0] as $key=>$value){ if($key != 'id'){ $form .= ""; } } $form .= ""; } $rowColor = 'oddListRowS1'; foreach($rows as $row){ $form .= ""; if ($action != 'ShowDuplicates') { $form .= "\n"; } $wasSet = false; foreach ($row as $key=>$value){ if($key != 'id'){ if(isset($_POST['popup']) && $_POST['popup']==true){ $form .= "\n"; } else if(!$wasSet){ $form .= "\n"; $wasSet = true; }else{ $form .= "\n"; } } } if($rowColor == 'evenListRowS1'){ $rowColor = 'oddListRowS1'; }else{ $rowColor = 'evenListRowS1'; } $form .= ""; } $form .= "
"; if ($action == 'ShowDuplicates') { $form .= "\n"; if (!empty($_REQUEST['return_module']) && !empty($_REQUEST['return_action']) && !empty($_REQUEST['return_id'])) $form .= ""; else if (!empty($_POST['return_module']) && !empty($_POST['return_action'])) $form .= ""; else $form .= ""; } else { $form .= ""; } $form .= "
 ". $mod_strings[$mod_strings['db_'.$key]]. "
[${app_strings['LBL_SELECT_BUTTON_LABEL']}]  $value$value$value
"; if ($action == 'ShowDuplicates') { $form .= "\n"; if (!empty($_REQUEST['return_module']) && !empty($_REQUEST['return_action']) && !empty($_REQUEST['return_id'])) $form .= ""; else if (!empty($_POST['return_module']) && !empty($_POST['return_action'])) $form .= ""; else $form .= ""; } else { $form .= ""; } $form .= "
"; return $form; } function getWideFormBody($prefix, $mod='',$formname='', $contact = '', $portal = true){ if(!ACLController::checkAccess('Contacts', 'edit', true)){ return ''; } if(empty($contact)){ $contact = new Contact(); } global $mod_strings; $temp_strings = $mod_strings; if(!empty($mod)){ global $current_language; $mod_strings = return_module_language($current_language, $mod); } global $app_strings; global $current_user; global $app_list_strings; $primary_address_country_options = get_select_options_with_id($app_list_strings['countries_dom'], $contact->primary_address_country); $lbl_required_symbol = $app_strings['LBL_REQUIRED_SYMBOL']; $lbl_first_name = $mod_strings['LBL_FIRST_NAME']; $lbl_last_name = $mod_strings['LBL_LAST_NAME']; $lbl_phone = $mod_strings['LBL_OFFICE_PHONE']; $lbl_address = $mod_strings['LBL_PRIMARY_ADDRESS']; if (isset($contact->assigned_user_id)) { $user_id=$contact->assigned_user_id; } else { $user_id = $current_user->id; } //Retrieve Email address and set email1, email2 $sugarEmailAddress = new SugarEmailAddress(); $sugarEmailAddress->handleLegacyRetrieve($contact); if(!isset($contact->email1)){ $contact->email1 = ''; } if(!isset($contact->email2)){ $contact->email2 = ''; } if(!isset($contact->email_opt_out)){ $contact->email_opt_out = ''; } $lbl_email_address = $mod_strings['LBL_EMAIL_ADDRESS']; $salutation_options=get_select_options_with_id($app_list_strings['salutation_dom'], $contact->salutation); if (isset($contact->lead_source)) { $lead_source_options=get_select_options_with_id($app_list_strings['lead_source_dom'], $contact->lead_source); } else { $lead_source_options=get_select_options_with_id($app_list_strings['lead_source_dom'], ''); } $form=""; if ($formname == 'ConvertProspect') { $lead_source_label = " "; $lead_source_field = " "; } else { $lead_source_label = "${mod_strings['LBL_LEAD_SOURCE']}"; $lead_source_field = ""; } global $timedate; $birthdate = ''; if(!empty($_REQUEST['birthdate'])){ $birthdate=$_REQUEST['birthdate']; } $jsCalendarImage = SugarThemeRegistry::current()->getImageURL('jscalendar.gif'); $ntc_date_format = $timedate->get_user_date_format(); $cal_dateformat = $timedate->get_cal_date_format(); $lbl_required_symbol = $app_strings['LBL_REQUIRED_SYMBOL']; $form .= << $lead_source_label $lead_source_field EOQ; $form .= $sugarEmailAddress->getEmailAddressWidgetEditView($contact->id, $_REQUEST['action']=='ConvertLead'?'Leads':'Contacts', false, 'include/SugarEmailAddress/templates/forWideFormBodyView.tpl'); require_once('include/SugarFields/Fields/Text/SugarFieldText.php'); $sugarfield = new SugarFieldText('Text'); $description_text = $sugarfield->getClassicEditView('description', $contact->description, $prefix, true); $form .= << EOQ; //carry forward custom lead fields common to contacts during Lead Conversion $tempContact = new Contact(); if (method_exists($contact, 'convertCustomFieldsForm')) $contact->convertCustomFieldsForm($form, $tempContact, $prefix); unset($tempContact); $form .= << EOQ; if ($portal == true){ if (isset($contact->portal_name)) { $form.=""; } else { $form.=""; } if (isset($contact->portal_app)) { $form.=""; } else { $form.=""; } if(!empty($contact->portal_name) && !empty($contact->portal_app)){ $form .= ""; } if(isset($contact->portal_password)){ $form.=""; $form.=""; $form .= ""; }else{ $form.=""; $form.=""; $form .= ""; } } $form .= << Calendar.setup ({ inputField : "{$prefix}jscal_field", daFormat : "$cal_dateformat", ifFormat : "$cal_dateformat", showsTime : false, button : "{$prefix}jscal_trigger", singleClick : true, step : 1, weekNumbers:false }); EOQ; $javascript = new javascript(); $javascript->setFormName($formname); $javascript->setSugarBean(new Contact()); $javascript->addField('email1','false',$prefix); $javascript->addField('email2','false',$prefix); $javascript->addRequiredFields($prefix); $form .=$javascript->getScript(); $mod_strings = $temp_strings; return $form; } function getFormBody($prefix, $mod='', $formname=''){ if(!ACLController::checkAccess('Contacts', 'edit', true)){ return ''; } global $mod_strings; $temp_strings = $mod_strings; if(!empty($mod)){ global $current_language; $mod_strings = return_module_language($current_language, $mod); } global $app_strings; global $current_user; $lbl_required_symbol = $app_strings['LBL_REQUIRED_SYMBOL']; $lbl_first_name = $mod_strings['LBL_FIRST_NAME']; $lbl_last_name = $mod_strings['LBL_LAST_NAME']; $lbl_phone = $mod_strings['LBL_PHONE']; $user_id = $current_user->id; $lbl_email_address = $mod_strings['LBL_EMAIL_ADDRESS']; if ($formname == 'EmailEditView') { $form = << $lbl_first_name

$lbl_last_name $lbl_required_symbol

$lbl_email_address $lbl_required_symbol


EOQ; } else { $form = << $lbl_first_name

$lbl_last_name $lbl_required_symbol

$lbl_phone

$lbl_email_address


EOQ; } $javascript = new javascript(); $javascript->setFormName($formname); $javascript->setSugarBean(new Contact()); $javascript->addField('email1','false',$prefix); $javascript->addRequiredFields($prefix); $form .=$javascript->getScript(); $mod_strings = $temp_strings; return $form; } function getForm($prefix, $mod=''){ if(!ACLController::checkAccess('Contacts', 'edit', true)){ return ''; } if(!empty($mod)){ global $current_language; $mod_strings = return_module_language($current_language, $mod); }else global $mod_strings; global $app_strings; $lbl_save_button_title = $app_strings['LBL_SAVE_BUTTON_TITLE']; $lbl_save_button_key = $app_strings['LBL_SAVE_BUTTON_KEY']; $lbl_save_button_label = $app_strings['LBL_SAVE_BUTTON_LABEL']; $the_form = get_left_form_header($mod_strings['LBL_NEW_FORM_TITLE']); $the_form .= << EOQ; $the_form .= $this->getFormBody($prefix,'Contacts', "${prefix}ContactSave"); $the_form .= << EOQ; $the_form .= get_left_form_footer(); $the_form .= get_validate_record_js(); return $the_form; } function handleSave($prefix, $redirect=true, $useRequired=false){ global $theme, $current_user; require_once('include/formbase.php'); global $timedate; $focus = new Contact(); if($useRequired && !checkRequired($prefix, array_keys($focus->required_fields))){ return null; } if (!empty($_POST[$prefix.'new_reports_to_id'])) { $focus->retrieve($_POST[$prefix.'new_reports_to_id']); $focus->reports_to_id = $_POST[$prefix.'record']; } else { $focus = populateFromPost($prefix, $focus); if(!empty($focus->portal_password) && $focus->portal_password != $_POST[$prefix.'old_portal_password']){ $focus->portal_password = md5($focus->portal_password); } if (!isset($_POST[$prefix.'email_opt_out'])) $focus->email_opt_out = 0; if (!isset($_POST[$prefix.'do_not_call'])) $focus->do_not_call = 0; } if(!$focus->ACLAccess('Save')){ ACLController::displayNoAccess(true); sugar_cleanup(true); } if($_REQUEST['action'] != 'BusinessCard' && $_REQUEST['action'] != 'ConvertLead' && $_REQUEST['action'] != 'ConvertProspect') { if (!empty($_POST[$prefix.'sync_contact'])){ $focus->contacts_users_id = $current_user->id; } else{ if (!isset($focus->users)) { $focus->load_relationship('user_sync'); } $focus->contacts_users_id = null; $focus->user_sync->delete($focus->id, $current_user->id); } } if (isset($GLOBALS['check_notify'])) { $check_notify = $GLOBALS['check_notify']; } else { $check_notify = FALSE; } if (empty($_POST['dup_checked'])) { $duplicateContacts = $this->checkForDuplicates($prefix); if(isset($duplicateContacts)){ $location='module=Contacts&action=ShowDuplicates'; $get = ''; if(isset($_POST['inbound_email_id']) && !empty($_POST['inbound_email_id'])) { $get .= '&inbound_email_id='.$_POST['inbound_email_id']; } // Bug 25311 - Add special handling for when the form specifies many-to-many relationships if(isset($_POST['relate_to']) && !empty($_POST['relate_to'])) { $get .= '&Contactsrelate_to='.$_POST['relate_to']; } if(isset($_POST['relate_id']) && !empty($_POST['relate_id'])) { $get .= '&Contactsrelate_id='.$_POST['relate_id']; } //add all of the post fields to redirect get string foreach ($focus->column_fields as $field) { if (!empty($focus->$field) && !is_object($focus->$field)) { $get .= "&Contacts$field=".urlencode($focus->$field); } } foreach ($focus->additional_column_fields as $field) { if (!empty($focus->$field)) { $get .= "&Contacts$field=".urlencode($focus->$field); } } if($focus->hasCustomFields()) { foreach($focus->field_defs as $name=>$field) { if (!empty($field['source']) && $field['source'] == 'custom_fields') { $get .= "&Contacts$name=".urlencode($focus->$name); } } } $emailAddress = new SugarEmailAddress(); $get .= $emailAddress->getFormBaseURL($focus); //create list of suspected duplicate contact id's in redirect get string $i=0; foreach ($duplicateContacts as $contact) { $get .= "&duplicate[$i]=".$contact['id']; $i++; } //add return_module, return_action, and return_id to redirect get string $get .= "&return_module="; if(!empty($_POST['return_module'])) $get .= $_POST['return_module']; else $get .= "Contacts"; $get .= "&return_action="; if(!empty($_POST['return_action'])) $get .= $_POST['return_action']; //else $get .= "DetailView"; if(!empty($_POST['return_id'])) $get .= "&return_id=".$_POST['return_id']; if(!empty($_POST['popup'])) $get .= '&popup='.$_POST['popup']; if(!empty($_POST['create'])) $get .= '&create='.$_POST['create']; // for InboundEmail flow if(!empty($_POST['start'])) $get .= '&start='.$_POST['start']; $_SESSION['SHOW_DUPLICATES'] = $get; //now redirect the post to modules/Contacts/ShowDuplicates.php if (!empty($_POST['is_ajax_call']) && $_POST['is_ajax_call'] == '1') { ob_clean(); $json = getJSONobj(); echo $json->encode(array('status' => 'dupe', 'get' => $location)); } else if(!empty($_REQUEST['ajax_load'])) { echo ""; } else { if(!empty($_POST['to_pdf'])) $location .= '&to_pdf='.$_POST['to_pdf']; header("Location: index.php?$location"); } return null; } } global $current_user; if(is_admin($current_user)){ if (!isset($_POST[$prefix.'portal_active'])) $focus->portal_active = '0'; //if no password is set set account to inactive for portal if(empty($_POST[$prefix.'portal_name']))$focus->portal_active = '0'; } /////////////////////////////////////////////////////////////////////////////// //// INBOUND EMAIL HANDLING /////////////////////////////////////////////////////////////////////////////// if(isset($_REQUEST['inbound_email_id']) && !empty($_REQUEST['inbound_email_id'])) { // fake this case like it's already saved. $focus->save($check_notify); $email = new Email(); $email->retrieve($_REQUEST['inbound_email_id']); $email->parent_type = 'Contacts'; $email->parent_id = $focus->id; $email->assigned_user_id = $current_user->id; $email->status = 'read'; $email->save(); $email->load_relationship('contacts'); $email->contacts->add($focus->id); header("Location: index.php?&module=Emails&action=EditView&type=out&inbound_email_id=".$_REQUEST['inbound_email_id']."&parent_id=".$email->parent_id."&parent_type=".$email->parent_type.'&start='.$_REQUEST['start'].'&assigned_user_id='.$current_user->id); exit(); } //// END INBOUND EMAIL HANDLING /////////////////////////////////////////////////////////////////////////////// $focus->save($check_notify); $return_id = $focus->id; $GLOBALS['log']->debug("Saved record with id of ".$return_id); if (!empty($_POST['is_ajax_call']) && $_POST['is_ajax_call'] == '1') { $json = getJSONobj(); echo $json->encode(array('status' => 'success', 'get' => '')); $trackerManager = TrackerManager::getInstance(); $timeStamp = TimeDate::getInstance()->nowDb(); if($monitor = $trackerManager->getMonitor('tracker')){ $monitor->setValue('action', 'detailview'); $monitor->setValue('user_id', $GLOBALS['current_user']->id); $monitor->setValue('module_name', 'Contacts'); $monitor->setValue('date_modified', $timeStamp); $monitor->setValue('visible', 1); if (!empty($this->bean->id)) { $monitor->setValue('item_id', $return_id); $monitor->setValue('item_summary', $focus->get_summary_text()); } $trackerManager->saveMonitor($monitor, true, true); } return null; } if(isset($_POST['popup']) && $_POST['popup'] == 'true') { $get = '&module='; if(!empty($_POST['return_module'])) $get .= $_POST['return_module']; else $get .= 'Contacts'; $get .= '&action='; if(!empty($_POST['return_action'])) $get .= $_POST['return_action']; else $get .= 'Popup'; if(!empty($_POST['return_id'])) $get .= '&return_id='.$_POST['return_id']; if(!empty($_POST['popup'])) $get .= '&popup='.$_POST['popup']; if(!empty($_POST['create'])) $get .= '&create='.$_POST['create']; if(!empty($_POST['to_pdf'])) $get .= '&to_pdf='.$_POST['to_pdf']; $get .= '&first_name=' . urlencode($focus->first_name); $get .= '&last_name=' . urlencode($focus->last_name); $get .= '&query=true'; header("Location: index.php?$get"); return; } if($redirect){ $this->handleRedirect($return_id); }else{ return $focus; } } function handleRedirect($return_id){ if(isset($_POST['return_module']) && $_POST['return_module'] != "") { $return_module = $_POST['return_module']; } else { $return_module = "Contacts"; } if(isset($_POST['return_action']) && $_POST['return_action'] != "") { if($_REQUEST['return_module'] == 'Emails') { $return_action = $_REQUEST['return_action']; } // if we create a new record "Save", we want to redirect to the DetailView elseif($_REQUEST['action'] == "Save" && $_REQUEST['return_module'] != "Home") { $return_action = 'DetailView'; } else { // if we "Cancel", we go back to the list view. $return_action = $_REQUEST['return_action']; } } else { $return_action = "DetailView"; } if(isset($_POST['return_id']) && $_POST['return_id'] != "") { $return_id = $_POST['return_id']; } //eggsurplus Bug 23816: maintain VCR after an edit/save. If it is a duplicate then don't worry about it. The offset is now worthless. $redirect_url = "index.php?action=$return_action&module=$return_module&record=$return_id"; if(isset($_REQUEST['offset']) && empty($_REQUEST['duplicateSave'])) { $redirect_url .= "&offset=".$_REQUEST['offset']; } if(!empty($_REQUEST['ajax_load'])){ echo "\n"; } else { header("Location: ". $redirect_url); } } } ?>
$lbl_first_name $lbl_last_name $lbl_required_symbol ${mod_strings['LBL_TITLE']} ${mod_strings['LBL_DEPARTMENT']}
 
$lbl_address
${mod_strings['LBL_CITY']} ${mod_strings['LBL_STATE']} ${mod_strings['LBL_POSTAL_CODE']} ${mod_strings['LBL_COUNTRY']}
$lbl_phone ${mod_strings['LBL_MOBILE_PHONE']} ${mod_strings['LBL_FAX_PHONE']} ${mod_strings['LBL_HOME_PHONE']}
${mod_strings['LBL_OTHER_PHONE']}${mod_strings['LBL_BIRTHDATE']} 
  {$app_strings['LBL_ENTER_DATE']}
${mod_strings['LBL_DESCRIPTION']}
{$description_text}