You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
443 lines
18 KiB
443 lines
18 KiB
4 months ago
|
<?php
|
||
|
/*********************************************************************************
|
||
|
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||
|
* ("License"); You may not use this file except in compliance with the
|
||
|
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||
|
* the specific language governing rights and limitations under the License.
|
||
|
* The Original Code is: SugarCRM Open Source
|
||
|
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||
|
* All Rights Reserved.
|
||
|
* Contributor(s): ______________________________________.
|
||
|
********************************************************************************/
|
||
|
/*********************************************************************************
|
||
|
* $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/modules/Emails/Email.php,v 1.41 2005/04/28 08:11:21 rank Exp $
|
||
|
* Description: TODO: To be written.
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||
|
* All Rights Reserved.
|
||
|
* Contributor(s): ______________________________________..
|
||
|
********************************************************************************/
|
||
|
|
||
|
include_once('config.php');
|
||
|
require_once('include/logging.php');
|
||
|
require_once('include/database/PearDatabase.php');
|
||
|
require_once('data/SugarBean.php');
|
||
|
require_once('data/CRMEntity.php');
|
||
|
require_once('modules/Contacts/Contact.php');
|
||
|
require_once('modules/Accounts/Account.php');
|
||
|
require_once('modules/Potentials/Opportunity.php');
|
||
|
require_once('modules/Users/User.php');
|
||
|
|
||
|
|
||
|
// Email is used to store customer information.
|
||
|
class Email extends CRMEntity {
|
||
|
var $log;
|
||
|
var $db;
|
||
|
|
||
|
// Stored fields
|
||
|
var $id;
|
||
|
var $mode;
|
||
|
|
||
|
var $emailid;
|
||
|
var $description;
|
||
|
var $name;
|
||
|
var $date_start;
|
||
|
var $time_start;
|
||
|
var $module_id="emailid";
|
||
|
var $default_email_name_values = array('Assemble catalogs', 'Make travel arrangements', 'Send a letter', 'Send contract', 'Send fax', 'Send a follow-up letter', 'Send literature', 'Send proposal', 'Send quote');
|
||
|
|
||
|
var $table_name = "emails";
|
||
|
var $tab_name = Array('crmentity','activity','emails','seactivityrel','cntactivityrel');
|
||
|
var $tab_name_index = Array('crmentity'=>'crmid','activity'=>'activityid','emails'=>'emailid','seactivityrel'=>'activityid','cntactivityrel'=>'activityid');
|
||
|
|
||
|
// This is the list of fields that are in the lists.
|
||
|
var $list_fields = Array(
|
||
|
'Subject'=>Array('activity'=>'subject'),
|
||
|
// 'Contact Name'=>Array('contactdetails'=>'lastname'),
|
||
|
'Related to'=>Array('seactivityrel'=>'activityid'),
|
||
|
'Date Sent'=>Array('activity'=>'date_start'),
|
||
|
'Assigned To'=>Array('crmentity','smownerid')
|
||
|
);
|
||
|
|
||
|
var $list_fields_name = Array(
|
||
|
'Subject'=>'subject',
|
||
|
// 'Contact Name'=>'lastname',
|
||
|
'Related to'=>'activityid',
|
||
|
'Date Sent'=>'date_start',
|
||
|
'Assigned To'=>'assigned_user_id');
|
||
|
|
||
|
var $list_link_field= 'subject';
|
||
|
|
||
|
|
||
|
var $rel_users_table = "salesmanactivityrel";
|
||
|
var $rel_contacts_table = "cntactivityrel";
|
||
|
var $rel_cases_table = "emails_cases";
|
||
|
var $rel_accounts_table = "emails_accounts";
|
||
|
var $rel_opportunities_table = "emails_opportunities";
|
||
|
var $rel_serel_table = "seactivityrel";
|
||
|
|
||
|
var $object_name = "Email";
|
||
|
|
||
|
var $column_fields = Array();
|
||
|
|
||
|
function Email() {
|
||
|
$this->log = LoggerManager::getLogger('email');
|
||
|
$this->db = new PearDatabase();
|
||
|
$this->column_fields = getColumnFields('Emails');
|
||
|
}
|
||
|
|
||
|
var $new_schema = true;
|
||
|
|
||
|
function create_tables () {
|
||
|
|
||
|
}
|
||
|
|
||
|
function drop_tables () {
|
||
|
}
|
||
|
|
||
|
|
||
|
/** Returns a list of the associated contacts
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
||
|
* All Rights Reserved..
|
||
|
* Contributor(s): ______________________________________..
|
||
|
*/
|
||
|
function get_contacts($id)
|
||
|
{
|
||
|
// First, get the list of IDs.
|
||
|
$query = 'select contactdetails.accountid, contactdetails.contactid, contactdetails.firstname,contactdetails.lastname, contactdetails.department, contactdetails.title, contactdetails.email, contactdetails.phone, contactdetails.emailoptout, crmentity.crmid, crmentity.smownerid, crmentity.modifiedtime from contactdetails inner join seactivityrel on seactivityrel.crmid=contactdetails.contactid inner join crmentity on crmentity.crmid = contactdetails.contactid where seactivityrel.activityid='.$id.' and crmentity.deleted=0';
|
||
|
renderRelatedContacts($query,$id);
|
||
|
}
|
||
|
|
||
|
/** Returns a list of the associated users
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
||
|
* All Rights Reserved..
|
||
|
* Contributor(s): ______________________________________..
|
||
|
*/
|
||
|
function get_users($id)
|
||
|
{
|
||
|
// First, get the list of IDs.
|
||
|
$query = 'SELECT users.id, users.first_name,users.last_name, users.user_name, users.email1, users.email2, users.yahoo_id, users.phone_home, users.phone_work, users.phone_mobile, users.phone_other, users.phone_fax from users inner join salesmanactivityrel on salesmanactivityrel.smid=users.id and salesmanactivityrel.activityid='.$id;
|
||
|
//include_once('modules/Emails/RenderRelatedListUI.php');
|
||
|
renderRelatedUsers($query);
|
||
|
}
|
||
|
|
||
|
function get_leads($id)
|
||
|
{
|
||
|
// First, get the list of IDs.
|
||
|
$query = 'SELECT leaddetails.leadid, leaddetails.firstname,leaddetails.lastname, leaddetails.leadstatus, crmentity.modifiedtime from leaddetails inner join seactivityrel on seactivityrel.crmid=leaddetails.leadid inner join crmentity on crmentity.crmid = leaddetails.leadid where seactivityrel.activityid='.$id;
|
||
|
//include_once('modules/Emails/RenderRelatedListUI.php');
|
||
|
renderRelatedLeads($query);
|
||
|
}
|
||
|
|
||
|
function get_potentials($id)
|
||
|
{
|
||
|
// First, get the list of IDs.
|
||
|
$query = 'SELECT potential.potentialid, potential.potentialname, potential.potentialtype, potential.amount, potential.closingdate, crmentity.modifiedtime from potential inner join seactivityrel on seactivityrel.crmid=potential.potentialid inner join crmentity on crmentity.crmid = potential.potentialid where seactivityrel.activityid='.$id;
|
||
|
renderRelatedPotentials($query);
|
||
|
}
|
||
|
function get_attachments($id)
|
||
|
{
|
||
|
$query = "select notes.title,'Notes ' ActivityType, notes.filename, attachments.type FileType,crm2.modifiedtime lastmodified, seattachmentsrel.attachmentsid attachmentsid, notes.notesid crmid from notes inner join senotesrel on senotesrel.notesid= notes.notesid inner join crmentity on crmentity.crmid= senotesrel.crmid inner join crmentity crm2 on crm2.crmid=notes.notesid left join seattachmentsrel on seattachmentsrel.crmid =notes.notesid left join attachments on seattachmentsrel.attachmentsid = attachments.attachmentsid where crmentity.crmid=".$id;
|
||
|
$query .= ' union all ';
|
||
|
$query .= "select attachments.description title ,'Attachments' ActivityType, attachments.name filename, attachments.type FileType,crm2.modifiedtime lastmodified, attachments.attachmentsid attachmentsid, seattachmentsrel.attachmentsid crmid from attachments inner join seattachmentsrel on seattachmentsrel.attachmentsid= attachments.attachmentsid inner join crmentity on crmentity.crmid= seattachmentsrel.crmid inner join crmentity crm2 on crm2.crmid=attachments.attachmentsid where crmentity.crmid=".$id;
|
||
|
|
||
|
renderRelatedAttachments($query,$id);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function save_relationship_changes($is_update)
|
||
|
{
|
||
|
if($this->account_id != "")
|
||
|
{
|
||
|
$this->set_emails_account_relationship($this->id, $this->account_id);
|
||
|
}
|
||
|
if($this->opportunity_id != "")
|
||
|
{
|
||
|
$this->set_emails_opportunity_relationship($this->id, $this->opportunity_id);
|
||
|
}
|
||
|
if($this->case_id != "")
|
||
|
{
|
||
|
$this->set_emails_case_relationship($this->id, $this->case_id);
|
||
|
}
|
||
|
if($this->contact_id != "")
|
||
|
{
|
||
|
$this->set_emails_contact_invitee_relationship($this->id, $this->contact_id);
|
||
|
$this->set_emails_se_invitee_relationship($this->id, $this->contact_id);
|
||
|
}
|
||
|
if($this->user_id != "")
|
||
|
{
|
||
|
$this->set_emails_user_invitee_relationship($this->id, $this->user_id);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function set_emails_account_relationship($email_id, $account_id)
|
||
|
{
|
||
|
$query = "insert into $this->rel_accounts_table (id,account_id,email_id) values ('".create_guid()."', '$account_id', '$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to account relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function set_emails_opportunity_relationship($email_id, $opportunity_id)
|
||
|
{
|
||
|
$query = "insert into $this->rel_opportunities_table (id, opportunity_id, email_id) values ('".create_guid()."','$opportunity_id','$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to opportunity relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function set_emails_case_relationship($email_id, $case_id)
|
||
|
{
|
||
|
$query = "insert into $this->rel_cases_table (id,case_id,email_id) values ('".create_guid()."','$case_id','$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to case relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function set_emails_contact_invitee_relationship($email_id, $contact_id)
|
||
|
{
|
||
|
// $query = "insert into $this->rel_contacts_table (id,contact_id,email_id) values('".create_guid()."','$contact_id','$email_id')";
|
||
|
$query = "insert into $this->rel_contacts_table (contactid,activityid) values('$contact_id','$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to contact relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function set_emails_se_invitee_relationship($email_id, $contact_id)
|
||
|
{
|
||
|
// $query = "insert into $this->rel_contacts_table (id,contact_id,email_id) values('".create_guid()."','$contact_id','$email_id')";
|
||
|
$query = "insert into $this->rel_serel_table (crmid,activityid) values('$contact_id','$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to contact relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function set_emails_user_invitee_relationship($email_id, $user_id)
|
||
|
{
|
||
|
//$query = "insert into $this->rel_users_table (id,user_id,email_id) values ('".create_guid()."', '$user_id', '$email_id')";
|
||
|
$query = "insert into $this->rel_users_table (smid,activityid) values ('$user_id', '$email_id')";
|
||
|
$this->db->query($query,true,"Error setting email to user relationship: "."<BR>$query");
|
||
|
}
|
||
|
|
||
|
function get_summary_text()
|
||
|
{
|
||
|
return "$this->name";
|
||
|
}
|
||
|
|
||
|
function create_list_query(&$order_by, &$where)
|
||
|
{
|
||
|
$contact_required = ereg("contacts", $where);
|
||
|
|
||
|
if($contact_required)
|
||
|
{
|
||
|
$query = "SELECT emails.emailid, emails.date_start, emails.time_start, contacts.first_name, contacts.last_name FROM contacts, emails, emails_contacts ";
|
||
|
$where_auto = "emails_contacts.contact_id = contacts.id AND emails_contacts.email_id = emails.emailid AND emails.deleted=0 AND contacts.deleted=0";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$query="SELECT emails.emailid, emails.name, crmentity.smcreatorid FROM emails inner join crmentity on crmentity.crmid=emails.emailid ";
|
||
|
$where_auto = " emails.deleted=0 ";
|
||
|
|
||
|
}
|
||
|
|
||
|
if($where != "")
|
||
|
$query .= "where $where AND ".$where_auto;
|
||
|
else
|
||
|
$query .= "where ".$where_auto;
|
||
|
|
||
|
if($order_by != "")
|
||
|
$query .= " ORDER BY $order_by";
|
||
|
else
|
||
|
$query .= " ORDER BY emails.name";
|
||
|
return $query;
|
||
|
}
|
||
|
|
||
|
function create_export_query(&$order_by, &$where)
|
||
|
{
|
||
|
$contact_required = ereg("contacts", $where);
|
||
|
|
||
|
if($contact_required)
|
||
|
{
|
||
|
$query = 'SELECT emails.emailid,emails.filename,emails.description as email_content,activity.*,contactdetails.firstname, contactdetails.lastname FROM emails inner join crmentity on crmentity.crmid=emails.emailid inner join activity on activity.activityid=crmentity.crmid left join seactivityrel on seactivityrel.activityid = emails.emailid inner join contactdetails on contactdetails.contactid=seactivityrel.crmid where crmentity.deleted=0 ';
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$query = 'SELECT emails.emailid,emails.filename,emails.description as email_content,activity.* FROM emails inner join crmentity on crmentity.crmid=emails.emailid inner join activity on activity.activityid=crmentity.crmid where crmentity.deleted=0 ';
|
||
|
|
||
|
}
|
||
|
|
||
|
return $query;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function fill_in_additional_list_fields()
|
||
|
{
|
||
|
$this->fill_in_additional_detail_fields();
|
||
|
}
|
||
|
|
||
|
function fill_in_additional_detail_fields()
|
||
|
{
|
||
|
// Fill in the assigned_user_name
|
||
|
$this->assigned_user_name = get_assigned_user_name($this->assigned_user_id);
|
||
|
|
||
|
$query = "SELECT c.firstname, c.lastname, c.phone, c.email, c.contactid FROM contactdetails c, seactivityrel s ";
|
||
|
$query .= "WHERE s.crmid=c.contactid AND s.activityid='$this->id' AND c.deleted=0";
|
||
|
$result =$this->db->query($query,true," Error filling in additional detail fields: ");
|
||
|
|
||
|
// Get the id and the name.
|
||
|
$row = $this->db->fetchByAssoc($result);
|
||
|
|
||
|
$this->log->info($row);
|
||
|
|
||
|
if($row != null)
|
||
|
{
|
||
|
$this->contact_name = return_name($row, 'first_name', 'last_name');
|
||
|
$this->contact_phone = $row['phone_work'];
|
||
|
$this->contact_id = $row['id'];
|
||
|
$this->contact_email = $row['email1'];
|
||
|
$this->log->debug("Call($this->id): contact_name = $this->contact_name");
|
||
|
$this->log->debug("Call($this->id): contact_phone = $this->contact_phone");
|
||
|
$this->log->debug("Call($this->id): contact_id = $this->contact_id");
|
||
|
$this->log->debug("Call($this->id): contact_email1 = $this->contact_email");
|
||
|
}
|
||
|
else {
|
||
|
$this->contact_name = '';
|
||
|
$this->contact_phone = '';
|
||
|
$this->contact_id = '';
|
||
|
$this->contact_email = '';
|
||
|
$this->log->debug("Call($this->id): contact_name = $this->contact_name");
|
||
|
$this->log->debug("Call($this->id): contact_phone = $this->contact_phone");
|
||
|
$this->log->debug("Call($this->id): contact_id = $this->contact_id");
|
||
|
$this->log->debug("Call($this->id): contact_email1 = $this->contact_email");
|
||
|
}
|
||
|
|
||
|
if ($this->parent_type == "Opportunities") {
|
||
|
require_once("modules/Opportunities/Opportunity.php");
|
||
|
$parent = new Opportunity();
|
||
|
$query = "SELECT name from $parent->table_name where id = '$this->parent_id'";
|
||
|
$result =$this->db->query($query,true," Error filling in additional detail fields: ");
|
||
|
|
||
|
// Get the id and the name.
|
||
|
$row = $this->db->fetchByAssoc($result);
|
||
|
|
||
|
if($row != null)
|
||
|
{
|
||
|
$this->parent_name = stripslashes($row['name']);
|
||
|
}
|
||
|
}
|
||
|
elseif ($this->parent_type == "Cases") {
|
||
|
require_once("modules/Cases/Case.php");
|
||
|
$parent = new aCase();
|
||
|
$query = "SELECT name from $parent->table_name where id = '$this->parent_id'";
|
||
|
$result =$this->db->query($query,true," Error filling in additional detail fields: ");
|
||
|
|
||
|
// Get the id and the name.
|
||
|
$row = $this->db->fetchByAssoc($result);
|
||
|
|
||
|
if($row != null)
|
||
|
{
|
||
|
$this->parent_name = stripslashes($row['name']);
|
||
|
}
|
||
|
}
|
||
|
elseif ($this->parent_type == "Accounts") {
|
||
|
require_once("modules/Accounts/Account.php");
|
||
|
$parent = new Account();
|
||
|
$query = "SELECT name from $parent->table_name where id = '$this->parent_id'";
|
||
|
$result =$this->db->query($query,true," Error filling in additional detail fields: ");
|
||
|
|
||
|
// Get the id and the name.
|
||
|
$row = $this->db->fetchByAssoc($result);
|
||
|
|
||
|
if($row != null)
|
||
|
{
|
||
|
$this->parent_name = stripslashes($row['name']);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
$this->parent_name = '';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function mark_relationships_deleted($id)
|
||
|
{
|
||
|
$query = "UPDATE $this->rel_users_table set deleted=1 where email_id='$id'";
|
||
|
$this->db->query($query,true,"Error marking record deleted: ");
|
||
|
|
||
|
$query = "UPDATE $this->rel_contacts_table set deleted=1 where email_id='$id'";
|
||
|
$this->db->query($query,true,"Error marking record deleted: ");
|
||
|
/*
|
||
|
$query = "UPDATE $this->rel_cases_table set deleted=1 where email_id='$id'";
|
||
|
$this->db->query($query,true,"Error marking record deleted: ");
|
||
|
$query = "UPDATE $this->rel_accounts_table set deleted=1 where email_id='$id'";
|
||
|
$this->db->query($query,true,"Error marking record deleted: ");
|
||
|
$query = "UPDATE $this->rel_opportunities_table set deleted=1 where email_id='$id'";
|
||
|
$this->db->query($query,true,"Error marking record deleted: ");
|
||
|
*/
|
||
|
|
||
|
}
|
||
|
|
||
|
function mark_email_contact_relationship_deleted($contact_id, $email_id)
|
||
|
{
|
||
|
$query = "UPDATE $this->rel_contacts_table set deleted=1 where contact_id='$contact_id' and email_id='$email_id' and deleted=0";
|
||
|
$this->db->query($query,true,"Error clearing email to contact relationship: ");
|
||
|
}
|
||
|
|
||
|
function mark_email_user_relationship_deleted($user_id, $email_id)
|
||
|
{
|
||
|
$query = "UPDATE $this->rel_users_table set deleted=1 where user_id='$user_id' and email_id='$email_id' and deleted=0";
|
||
|
$this->db->query($query,true,"Error clearing email to user relationship: ");
|
||
|
}
|
||
|
function mark_email_case_relationship_deleted($id, $email_id)
|
||
|
{
|
||
|
/*
|
||
|
$query = "UPDATE $this->rel_cases_table set deleted=1 where case_id='$id' and email_id='$email_id' and deleted=0";
|
||
|
$this->db->query($query,true,"Error clearing email to user relationship: ");
|
||
|
*/
|
||
|
}
|
||
|
function mark_email_account_relationship_deleted($id, $email_id)
|
||
|
{
|
||
|
/*
|
||
|
$query = "UPDATE $this->rel_accounts_table set deleted=1 where account_id='$id' and email_id='$email_id' and deleted=0";
|
||
|
$this->db->query($query,true,"Error clearing email to user relationship: ");
|
||
|
*/
|
||
|
}
|
||
|
function mark_email_opportunity_relationship_deleted($id, $email_id)
|
||
|
{
|
||
|
/*
|
||
|
$query = "UPDATE $this->rel_opportunities_table set deleted=1 where opportunity_id='$id' and email_id='$email_id' and deleted=0";
|
||
|
$this->db->query($query,true,"Error clearing email to user relationship: ");
|
||
|
*/
|
||
|
}
|
||
|
function get_list_view_data(){
|
||
|
$email_fields = $this->get_list_view_array();
|
||
|
global $app_list_strings;
|
||
|
if (isset($this->parent_type) && $this->parent_type != "")
|
||
|
$email_fields['PARENT_MODULE'] = $this->parent_type;
|
||
|
return $email_fields;
|
||
|
}
|
||
|
|
||
|
/** Returns a list of the associated opportunities
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
||
|
* All Rights Reserved..
|
||
|
* Contributor(s): ______________________________________..
|
||
|
*/
|
||
|
|
||
|
/** Returns a list of the associated accounts
|
||
|
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
|
||
|
* All Rights Reserved..
|
||
|
* Contributor(s): ______________________________________..
|
||
|
*/
|
||
|
|
||
|
|
||
|
function get_accounts($id)
|
||
|
{
|
||
|
$query = 'SELECT account.accountid, account.accountname, account.account_type, crmentity.modifiedtime from account inner join seactivityrel on seactivityrel.crmid=account.accountid inner join crmentity on crmentity.crmid=account.accountid and seactivityrel.activityid='.$id;
|
||
|
renderRelatedAccounts($query);
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
?>
|