emailAddress = new SugarEmailAddress(); } // need to override to have a name field created for this class function retrieve($id = -1, $encode=true) { $ret_val = parent::retrieve($id, $encode); $this->_create_proper_name_field(); $this->emailAddress->handleLegacyRetrieve($this); return $ret_val; } /** * Generate the name field from the first_name and last_name fields. */ function _create_proper_name_field() { global $locale, $app_list_strings; // Bug# 46125 - make first name, last name, salutation and title of Contacts respect field level ACLs $first_name = ""; $last_name = ""; $salutation = ""; $title = ""; // first name has at least read access $first_name = $this->first_name; // last name has at least read access $last_name = $this->last_name; // salutation has at least read access if(isset($this->field_defs['salutation']['options']) && isset($app_list_strings[$this->field_defs['salutation']['options']]) && isset($app_list_strings[$this->field_defs['salutation']['options']][$this->salutation]) ) { $salutation = $app_list_strings[$this->field_defs['salutation']['options']][$this->salutation]; } // if // last name has at least read access $title = $this->title; // Corner Case: // Both first name and last name cannot be empty, at least one must be shown // In that case, we can ignore field level ACL and just display last name... // In the ACL field level access settings, last_name cannot be set to "none" if (empty($first_name) && empty($last_name)) { $full_name = $locale->getLocaleFormattedName("", $last_name, $salutation, $title); } else { if($this->createLocaleFormattedName) { $full_name = $locale->getLocaleFormattedName($first_name, $last_name, $salutation, $title); } else { $full_name = $locale->getLocaleFormattedName($first_name, $last_name); } } $this->name = $full_name; $this->full_name = $full_name; //used by campaigns } function save($check_notify=false) { //If we are saving due to relationship changes, don't bother trying to update the emails if(!empty($GLOBALS['resavingRelatedBeans'])) { parent::save($check_notify); return $this->id; } $this->add_address_streets('primary_address_street'); $this->add_address_streets('alt_address_street'); $ori_in_workflow = empty($this->in_workflow) ? false : true; $this->emailAddress->handleLegacySave($this, $this->module_dir); parent::save($check_notify); $override_email = array(); if(!empty($this->email1_set_in_workflow)) { $override_email['emailAddress0'] = $this->email1_set_in_workflow; } if(!empty($this->email2_set_in_workflow)) { $override_email['emailAddress1'] = $this->email2_set_in_workflow; } if(!isset($this->in_workflow)) { $this->in_workflow = false; } if($ori_in_workflow === false || !empty($override_email)){ $this->emailAddress->save($this->id, $this->module_dir, $override_email,'','','','',$this->in_workflow); } return $this->id; } function get_summary_text() { $this->_create_proper_name_field(); return $this->name; } function get_list_view_data() { global $system_config; global $current_user; $this->_create_proper_name_field(); $temp_array = $this->get_list_view_array(); $temp_array['NAME'] = $this->name; $temp_array['EMAIL1'] = $this->emailAddress->getPrimaryAddress($this); $this->email1 = $temp_array['EMAIL1']; $temp_array['EMAIL1_LINK'] = $current_user->getEmailLink('email1', $this, '', '', 'ListView'); return $temp_array; } /** * @see SugarBean::populateRelatedBean() */ public function populateRelatedBean( SugarBean $newbean ) { parent::populateRelatedBean($newbean); if ( $newbean instanceOf Company ) { $newbean->phone_fax = $this->phone_fax; $newbean->phone_office = $this->phone_work; $newbean->phone_alternate = $this->phone_other; $newbean->email1 = $this->email1; $this->add_address_streets('primary_address_street'); $newbean->billing_address_street = $this->primary_address_street; $newbean->billing_address_city = $this->primary_address_city; $newbean->billing_address_state = $this->primary_address_state; $newbean->billing_address_postalcode = $this->primary_address_postalcode; $newbean->billing_address_country = $this->primary_address_country; $this->add_address_streets('alt_address_street'); $newbean->shipping_address_street = $this->alt_address_street; $newbean->shipping_address_city = $this->alt_address_city; $newbean->shipping_address_state = $this->alt_address_state; $newbean->shipping_address_postalcode = $this->alt_address_postalcode; $newbean->shipping_address_country = $this->alt_address_country; } } } ?>