mirror of
https://github.com/salesagility/SuiteCRM.git
synced 2024-11-21 23:47:57 +00:00
792 lines
34 KiB
PHP
Executable File
792 lines
34 KiB
PHP
Executable File
<?php
|
|
if (!defined('sugarEntry') || !sugarEntry) {
|
|
die('Not A Valid Entry Point');
|
|
}
|
|
/**
|
|
*
|
|
* SugarCRM Community Edition is a customer relationship management program developed by
|
|
* SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
|
|
*
|
|
* SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd.
|
|
* Copyright (C) 2011 - 2018 SalesAgility Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU Affero General Public License version 3 as published by the
|
|
* Free Software Foundation with the addition of the following permission added
|
|
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
|
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
|
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License along with
|
|
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA.
|
|
*
|
|
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
|
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of this program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU Affero General Public License version 3.
|
|
*
|
|
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
|
* these Appropriate Legal Notices must retain the display of the "Powered by
|
|
* SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
|
|
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
|
|
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
|
|
*/
|
|
|
|
|
|
|
|
/**************************** general UI Stuff *******************/
|
|
|
|
|
|
|
|
require_once('modules/Campaigns/utils.php');
|
|
|
|
|
|
global $app_strings;
|
|
global $timedate;
|
|
global $app_list_strings;
|
|
global $mod_strings;
|
|
global $current_user;
|
|
global $sugar_version, $sugar_config;
|
|
|
|
|
|
/**************************** GENERAL SETUP WORK*******************/
|
|
$campaign_focus = BeanFactory::newBean('Campaigns');
|
|
if (isset($_REQUEST['campaign_id']) && !empty($_REQUEST['campaign_id'])) {
|
|
$campaign_focus->retrieve($_REQUEST['campaign_id']);
|
|
} else {
|
|
sugar_die($app_strings['ERROR_NO_RECORD']);
|
|
}
|
|
|
|
global $theme;
|
|
|
|
|
|
|
|
$json = getJSONobj();
|
|
|
|
$GLOBALS['log']->info("Wizard Continue Create Wizard");
|
|
if ($campaign_focus->campaign_type=='NewsLetter') {
|
|
echo getClassicModuleTitle($mod_strings['LBL_MODULE_NAME'], array($mod_strings['LBL_NEWSLETTER WIZARD_TITLE'].' '.$campaign_focus->name), true);
|
|
} else {
|
|
echo getClassicModuleTitle($mod_strings['LBL_MODULE_NAME'], array($mod_strings['LBL_CAMPAIGN'].' '.$campaign_focus->name), true);
|
|
}
|
|
|
|
$ss = new Sugar_Smarty();
|
|
$ss->assign("MOD", $mod_strings);
|
|
$ss->assign("APP", $app_strings);
|
|
if (isset($_REQUEST['return_module'])) {
|
|
$ss->assign("RETURN_MODULE", $_REQUEST['return_module']);
|
|
}
|
|
if (isset($_REQUEST['return_action'])) {
|
|
$ss->assign("RETURN_ACTION", $_REQUEST['return_action']);
|
|
}
|
|
if (isset($_REQUEST['return_id'])) {
|
|
$ss->assign("RETURN_ID", $_REQUEST['return_id']);
|
|
}
|
|
// handle Create $module then Cancel
|
|
$ss->assign('CAMPAIGN_ID', $campaign_focus->id);
|
|
|
|
$seps = get_number_separators();
|
|
$ss->assign("NUM_GRP_SEP", $seps[0]);
|
|
$ss->assign("DEC_SEP", $seps[1]);
|
|
|
|
|
|
/**************************** MARKETING UI DIV Stuff *******************/
|
|
//$campaign_focus->load_relationship('emailmarketing');
|
|
//$mrkt_ids = $campaign_focus->emailmarketing->get();
|
|
|
|
$mrkt_lists = [];
|
|
$mrkt_focus = BeanFactory::newBean('EmailMarketing');
|
|
|
|
//override marketing by session stored selection earlier..
|
|
|
|
if (isset($_REQUEST['func']) && $_REQUEST['func'] == 'createEmailMarketing') {
|
|
unset($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
} else {
|
|
//check to see if this campaign has an email marketing already attached, and if so, create duplicate
|
|
$campaign_focus->load_relationship('emailmarketing');
|
|
$mrkt_lists = $campaign_focus->emailmarketing->get();
|
|
}
|
|
|
|
if (!empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']) && !in_array($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'], $mrkt_lists)) {
|
|
unset($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
}
|
|
|
|
if (!empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'])) {
|
|
if (!empty($_REQUEST['record']) && in_array($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'], $mrkt_lists)) {
|
|
$_REQUEST['record'] = $_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'];
|
|
}
|
|
if (!empty($_REQUEST['marketing_id']) && in_array($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'], $mrkt_lists)) {
|
|
if (!empty($_REQUEST['func']) && $_REQUEST['func'] == 'editEmailMarketing') {
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $_REQUEST['marketing_id'];
|
|
} else {
|
|
$_REQUEST['marketing_id'] = $_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$mrktListsCount = is_countable($mrkt_lists) ? count($mrkt_lists) : 0;
|
|
|
|
//if record param exists and it is not empty, then retrieve this bean
|
|
if (isset($_REQUEST['record']) && !empty($_REQUEST['record'])) {
|
|
$mrkt_focus->retrieve($_REQUEST['record']);
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_focus->id;
|
|
} else {
|
|
if (isset($_REQUEST['marketing_id']) && !empty($_REQUEST['marketing_id'])) {
|
|
$mrkt_focus->retrieve($_REQUEST['marketing_id']);
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_focus->id;
|
|
} else {
|
|
if (!isset($mrkt_lists) || !$mrkt_lists) {
|
|
unset($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
} elseif ($mrktListsCount == 1) {
|
|
if (empty($_REQUEST['func']) || (isset($_REQUEST['func']) && $_REQUEST['func'] != 'createEmailMarketing')) {
|
|
$mrkt_focus->retrieve($mrkt_lists[0]);
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_lists[0];
|
|
} else {
|
|
// if user clicks create from the email marking sub panel
|
|
$mrkt_focus->retrieve($mrkt_lists[0]);
|
|
$mrkt_focus->id = create_guid();
|
|
$mrkt_focus->name = '';
|
|
// clone
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_focus->id;
|
|
}
|
|
} else {
|
|
if ($mrktListsCount > 1) {
|
|
if (!empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']) && in_array($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'], $mrkt_lists)) {
|
|
if (!isset($_REQUEST['func']) || (empty($_REQUEST['func']) && $_REQUEST['func'] != 'createEmailMarketing')) {
|
|
$mrkt_focus->retrieve($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
} else {
|
|
// if user clicks create from the email marking sub panel
|
|
$mrkt_focus->retrieve($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
$mrkt_focus->id = create_guid();
|
|
$mrkt_focus->name = '';
|
|
// clone
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_focus->id;
|
|
}
|
|
} else {
|
|
unset($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
}
|
|
|
|
|
|
|
|
|
|
// if(!empty($mrkt_lists)){
|
|
// //reverse array so we always use the most recent one:
|
|
// $mrkt_lists = array_reverse($mrkt_lists);
|
|
// $mrkt_focus->retrieve($mrkt_lists[0]);
|
|
// $mrkt_focus->id = '';
|
|
// //$mrkt_focus->name = $mod_strings['LBL_COPY_OF'] . ' '. $mrkt_focus->name;
|
|
// }
|
|
} else {
|
|
unset($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
//throw new Exception('illegal related marketing list');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$ss->assign("CALENDAR_LANG", "en");
|
|
$ss->assign("USER_DATEFORMAT", '('. $timedate->get_user_date_format().')');
|
|
$ss->assign("CALENDAR_DATEFORMAT", $timedate->get_cal_date_format());
|
|
$ss->assign("TIME_MERIDIEM", $timedate->AMPMMenu('', $mrkt_focus->time_start));
|
|
$ss->assign("MRKT_ID", $mrkt_focus->id);
|
|
$ss->assign("MRKT_NAME", $mrkt_focus->name);
|
|
$ss->assign("MRKT_FROM_NAME", $mrkt_focus->from_name);
|
|
$ss->assign("MRKT_FROM_ADDR", $mrkt_focus->from_addr);
|
|
$def = $mrkt_focus->getFieldDefinition('from_name');
|
|
$ss->assign("MRKT_FROM_NAME_LEN", $def['len']);
|
|
|
|
//jc: bug 15498
|
|
// assigning the length of the reply name from the var defs to the template to be used
|
|
// as the max length for the input field
|
|
$def = $mrkt_focus->getFieldDefinition('reply_to_name');
|
|
$ss->assign("MRKT_REPLY_NAME_LEN", $def['len']);
|
|
$ss->assign("MRKT_REPLY_NAME", $mrkt_focus->reply_to_name);
|
|
$def = $mrkt_focus->getFieldDefinition('reply_to_addr');
|
|
$ss->assign("MRKT_REPLY_ADDR_LEN", $def['len']);
|
|
// end bug 15498
|
|
$ss->assign("MRKT_REPLY_ADDR", $mrkt_focus->reply_to_addr);
|
|
$ss->assign("MRKT_DATE_START", $mrkt_focus->date_start);
|
|
$ss->assign("MRKT_TIME_START", $mrkt_focus->time_start);
|
|
//$_REQUEST['mass'] = $mrkt_focus->id;
|
|
$ss->assign("MRKT_ID", $mrkt_focus->id);
|
|
$emails=array();
|
|
$mailboxes=get_campaign_mailboxes($emails);
|
|
|
|
/*
|
|
* get full array of stored options
|
|
*/
|
|
$IEStoredOptions = get_campaign_mailboxes_with_stored_options();
|
|
$IEStoredOptionsJSON = (!empty($IEStoredOptions)) ? $json->encode($IEStoredOptions, false) : 'new Object()';
|
|
$ss->assign("IEStoredOptions", $IEStoredOptionsJSON);
|
|
|
|
$OEStoredOptions = get_campaign_mailboxes_with_stored_options_outbound();
|
|
$OEStoredOptionsJSON = (!empty($OEStoredOptions)) ? $json->encode($OEStoredOptions, false) : 'new Object()';
|
|
$ss->assign("OEStoredOptions", $OEStoredOptionsJSON);
|
|
|
|
//add empty options.
|
|
$emails['']='nobody@example.com';
|
|
$mailboxes['']='';
|
|
|
|
//inbound_email_id
|
|
$default_email_address='nobody@example.com';
|
|
$from_emails = '';
|
|
foreach ($mailboxes as $id=>$name) {
|
|
if (!empty($from_emails)) {
|
|
$from_emails.=',';
|
|
}
|
|
if ($id=='') {
|
|
$from_emails.="'EMPTY','$name','$emails[$id]'";
|
|
} else {
|
|
$from_emails.="'$id','$name','$emails[$id]'";
|
|
}
|
|
}
|
|
$ss->assign("FROM_EMAILS", $from_emails);
|
|
$ss->assign("DEFAULT_FROM_EMAIL", $default_email_address);
|
|
$ss->assign("STATUS_OPTIONS", get_select_options_with_id($app_list_strings['email_marketing_status_dom'], $mrkt_focus->status ? $mrkt_focus->status : 'active'));
|
|
if (empty($mrkt_focus->inbound_email_id)) {
|
|
$defaultMailboxId = '';
|
|
$mailboxIds = array();
|
|
foreach ($mailboxes as $mailboxId => $mailboxName) {
|
|
if ($mailboxId) {
|
|
$mailboxIds[] = $mailboxId;
|
|
}
|
|
}
|
|
if (count($mailboxIds) == 1) {
|
|
$defaultMailboxId = $mailboxIds[0];
|
|
}
|
|
$ss->assign("MAILBOXES", get_select_options_with_id($mailboxes, $defaultMailboxId));
|
|
$ss->assign("MAILBOXES_DEAULT", $defaultMailboxId);
|
|
} else {
|
|
$ss->assign("MAILBOXES", get_select_options_with_id($mailboxes, $mrkt_focus->inbound_email_id));
|
|
}
|
|
|
|
$outboundEmailAccountLabels = array();
|
|
$outboundEmailLabels = array();
|
|
$outboundEmailAccounts = BeanFactory::getBean('OutboundEmailAccounts')->get_full_list();
|
|
if ($outboundEmailAccounts) {
|
|
foreach ($outboundEmailAccounts as $outboundEmailAccount) {
|
|
$outboundEmailLabels[$outboundEmailAccount->id] = $outboundEmailAccount->name;
|
|
}
|
|
} else {
|
|
$GLOBALS['log']->warn('There are no outbound email accounts available.');
|
|
$GLOBALS['log']->info('Please ensure that the email settings are configured correctly');
|
|
}
|
|
|
|
$ss->assign('OUTBOUND_MAILBOXES', get_select_options_with_id($outboundEmailLabels, $mrkt_focus->outbound_email_id));
|
|
|
|
$ss->assign("TIME_MERIDIEM", $timedate->AMPMMenu('', $mrkt_focus->time_start));
|
|
$ss->assign("TIME_FORMAT", '('. $timedate->get_user_time_format().')');
|
|
|
|
$email_templates_arr = get_bean_select_array(true, 'EmailTemplate', 'name', '', 'name');
|
|
if ($mrkt_focus->template_id) {
|
|
$ss->assign("TEMPLATE_ID", $mrkt_focus->template_id);
|
|
$templateId = $mrkt_focus->template_id;
|
|
if (!$templateId && !empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedTemplateId'])) {
|
|
$templateId = $_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedTemplateId'];
|
|
}
|
|
$ss->assign("EMAIL_TEMPLATE_OPTIONS", get_select_options_with_id($email_templates_arr, $templateId));
|
|
$ss->assign("EDIT_TEMPLATE", "visibility:inline");
|
|
$ss->assign('email_template_already_selected', $mrkt_focus->template_id);
|
|
} else {
|
|
$templateId = isset($_REQUEST['template_id']) && $_REQUEST['template_id'] ? $_REQUEST['template_id'] : "";
|
|
if (!$templateId && !empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedTemplateId'])) {
|
|
$templateId = $_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedTemplateId'];
|
|
}
|
|
$ss->assign("EMAIL_TEMPLATE_OPTIONS", get_select_options_with_id($email_templates_arr, isset($_REQUEST['func']) && $_REQUEST['func'] == 'createEmailMarketing' ? null : $templateId));
|
|
$ss->assign("EDIT_TEMPLATE", "visibility:hidden");
|
|
}
|
|
|
|
|
|
$scope_options=get_message_scope_dom($campaign_focus->id, $campaign_focus->name, $mrkt_focus->db);
|
|
$prospectlists=array();
|
|
if (isset($mrkt_focus->all_prospect_lists) && $mrkt_focus->all_prospect_lists==1) {
|
|
$ss->assign("ALL_PROSPECT_LISTS_CHECKED", "checked");
|
|
$ss->assign("MESSAGE_FOR_DISABLED", "disabled");
|
|
} else {
|
|
//get select prospect list.
|
|
if (!empty($mrkt_focus->id)) {
|
|
$mrkt_focus->load_relationship('prospectlists');
|
|
$prospectlists=$mrkt_focus->prospectlists->get();
|
|
} else {
|
|
$ss->assign("ALL_PROSPECT_LISTS_CHECKED", "checked");
|
|
$ss->assign("MESSAGE_FOR_DISABLED", "disabled");
|
|
};
|
|
}
|
|
|
|
// force to check all prospect list by default..
|
|
$ss->assign("ALL_PROSPECT_LISTS_CHECKED", "checked");
|
|
$ss->assign("MESSAGE_FOR_DISABLED", "disabled");
|
|
|
|
if (empty($prospectlists)) {
|
|
$prospectlists=array();
|
|
}
|
|
if (empty($scope_options)) {
|
|
$scope_options=array();
|
|
}
|
|
$ss->assign("SCOPE_OPTIONS", get_select_options_with_id($scope_options, $prospectlists));
|
|
$ss->assign("SAVE_CONFIRM_MESSAGE", $mod_strings['LBL_CONFIRM_SEND_SAVE']);
|
|
|
|
|
|
|
|
$javascript = new javascript();
|
|
$javascript->setFormName('wizform');
|
|
$javascript->setSugarBean($mrkt_focus);
|
|
$javascript->addAllFields('');
|
|
echo $javascript->getScript();
|
|
|
|
/**************************** Final Step UI DIV *******************/
|
|
|
|
//Grab the prospect list of type default
|
|
$default_pl_focus = ' ';
|
|
$campaign_focus->load_relationship('prospectlists');
|
|
$prospectlists=$campaign_focus->prospectlists->get();
|
|
|
|
|
|
$pl_count = 0;
|
|
$pl_lists = 0;
|
|
if (!empty($prospectlists)) {
|
|
foreach ($prospectlists as $prospect_id) {
|
|
$pl_focus = BeanFactory::newBean('ProspectLists');
|
|
$pl_focus->retrieve($prospect_id);
|
|
|
|
if (($pl_focus->list_type == 'default') || ($pl_focus->list_type == 'seed')) {
|
|
$default_pl_focus= $pl_focus;
|
|
// get count of all attached target types
|
|
$pl_count = $default_pl_focus->get_entry_count();
|
|
}
|
|
$pl_lists = $pl_lists+1;
|
|
}
|
|
}
|
|
//if count is 0, then hide inputs and and print warning message
|
|
$pl_diabled_test_too = true;
|
|
if ($pl_count==0) {
|
|
if ($pl_lists==0) {
|
|
//print no target list warning
|
|
if ($campaign_focus->campaign_type != "Email" || $campaign_focus->campaign_type != "NewsLetter") {
|
|
$ss->assign("WARNING_MESSAGE", $mod_strings['LBL_NO_TARGETS_WARNING_NON_EMAIL']);
|
|
$ss->assign('error_on_target_list', $mod_strings['LBL_NO_TARGETS_WARNING_NON_EMAIL']);
|
|
} else {
|
|
$ss->assign("WARNING_MESSAGE", $mod_strings['LBL_NO_TARGETS_WARNING']);
|
|
$ss->assign('error_on_target_list', $mod_strings['LBL_NO_TARGETS_WARNING']);
|
|
}
|
|
} else {
|
|
//print no entries warning
|
|
if ($campaign_focus->campaign_type=='NewsLetter' || $campaign_focus->campaign_type=='Survey') {
|
|
$ss->assign("WARNING_MESSAGE", $mod_strings['LBL_NO_SUBS_ENTRIES_WARNING']);
|
|
$ss->assign('error_on_target_list', $mod_strings['LBL_NO_SUBS_ENTRIES_WARNING']);
|
|
$pl_diabled_test_too = false;
|
|
} elseif ($campaign_focus->campaign_type=='Email') {
|
|
$ss->assign("WARNING_MESSAGE", $mod_strings['LBL_NO_TARGET_ENTRIES_WARNING']);
|
|
$ss->assign('error_on_target_list', $mod_strings['LBL_NO_TARGET_ENTRIES_WARNING']);
|
|
} else {
|
|
$ss->assign("WARNING_MESSAGE", $mod_strings['LBL_NO_TARGET_ENTRIES_WARNING_NON_EMAIL']);
|
|
$ss->assign('error_on_target_list', $mod_strings['LBL_NO_TARGET_ENTRIES_WARNING_NON_EMAIL']);
|
|
}
|
|
}
|
|
//disable the send email options
|
|
$ss->assign("PL_DISABLED", 'disabled');
|
|
$ss->assign("PL_DISABLED_TEST", $pl_diabled_test_too ? 'disabled' : false);
|
|
} else {
|
|
//show inputs and assign type to be radio
|
|
}
|
|
|
|
if (!$list = BeanFactory::getBean('EmailMarketing')->get_full_list("", "campaign_id = '{$campaign_focus->id}' AND template_id IS NOT NULL AND template_id != ''")) {
|
|
$ss->assign('error_on_templates', $mod_strings['LBL_NO_TEMPLATE_SELECTED']);
|
|
}
|
|
|
|
|
|
|
|
/**************************** WIZARD UI DIV Stuff *******************/
|
|
|
|
$additionalParams = '';
|
|
if (isset($_REQUEST['template_id']) && $_REQUEST['template_id']) {
|
|
$additionalParams .= '&template_id=' . $_REQUEST['template_id'];
|
|
}
|
|
if (isset($_REQUEST['marketing_id']) && $_REQUEST['marketing_id']) {
|
|
$additionalParams .= '&marketing_id=' . $_REQUEST['marketing_id'];
|
|
}
|
|
|
|
$camp_url = "index.php?action=WizardNewsletter&module=Campaigns&return_module=Campaigns&return_action=WizardHome";
|
|
$camp_url .= "&return_id=".$campaign_focus->id."&record=".$campaign_focus->id . $additionalParams ."&direct_step=";
|
|
$ss->assign("CAMP_WIZ_URL", $camp_url);
|
|
$summ_url = $mod_strings['LBL_NAVIGATION_MENU_SUMMARY'];
|
|
if (!empty($focus->id)) {
|
|
$summ_url = "<a href='index.php?action=WizardHome&module=Campaigns";
|
|
$summ_url .= "&return_id=".$focus->id."&record=".$focus->id;
|
|
$summ_url .= "'> ". $mod_strings['LBL_NAVIGATION_MENU_SUMMARY']."</a>";
|
|
}
|
|
$summ_url = $mod_strings['LBL_NAVIGATION_MENU_SUMMARY'];
|
|
if (!empty($focus->id)) {
|
|
$summ_url = "index.php?action=WizardHome&module=Campaigns&return_id=".$focus->id."&record=".$focus->id;
|
|
}
|
|
$ss->assign("SUMM_URL", $summ_url);
|
|
|
|
// this is the wizard control script that resides in page
|
|
$divScript = <<<EOQ
|
|
|
|
<script type="text/javascript" language="javascript">
|
|
/*
|
|
* this is the custom validation script that will call the right validation for each div
|
|
*/
|
|
function validate_wiz_form(step){
|
|
switch (step){
|
|
case 'step1':
|
|
if (!validate_step1()) {
|
|
check_form('wizform')
|
|
return false;
|
|
}
|
|
clear_all_errors();
|
|
break;
|
|
case 'step2':
|
|
return check_form('wizform');
|
|
break;
|
|
default://no additional validation needed
|
|
}
|
|
return true;
|
|
|
|
}
|
|
|
|
function validate_step1() {
|
|
if(!$('#template_id').val()) return false;
|
|
return true;
|
|
}
|
|
|
|
showfirst('marketing')
|
|
</script>
|
|
EOQ;
|
|
|
|
//$ss->assign("WIZ_JAVASCRIPT", print_wizard_jscript());
|
|
$ss->assign("DIV_JAVASCRIPT", $divScript);
|
|
|
|
|
|
|
|
|
|
|
|
/**************************** FINAL END OF PAGE UI Stuff *******************/
|
|
|
|
|
|
if ($campaign_focus->campaign_type != 'Telesales' && (!isset($_REQUEST['campaign_type']) || $_REQUEST['campaign_type'] != 'Telesales')) {
|
|
//$templateURLForProgressBar = '#';
|
|
$templateURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=1&campaign_type=Email";
|
|
if (isset($campaign_focus->id) && $campaign_focus->id && isset($mrkt_focus->id) && $mrkt_focus->id && isset($mrkt_focus->template_id) && $mrkt_focus->template_id) {
|
|
$templateURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=1&marketing_id={$mrkt_focus->id}&record={$mrkt_focus->id}&campaign_type=Email&template_id={$mrkt_focus->template_id}";
|
|
}
|
|
if (isset($campaign_focus->id) && $campaign_focus->id && isset($mrkt_focus->template_id) && $mrkt_focus->template_id) {
|
|
$templateURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=1&campaign_type=Email&template_id={$mrkt_focus->template_id}";
|
|
}
|
|
|
|
$marketingURLForProgressBar = false;
|
|
if (isset($campaign_focus->id) && $campaign_focus->id && isset($mrkt_focus->id) && $mrkt_focus->id && isset($mrkt_focus->template_id) && $mrkt_focus->template_id) {
|
|
$marketingURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=2&show_wizard_marketing=1&marketing_id={$mrkt_focus->id}&record={$mrkt_focus->id}&campaign_type=Email&template_id={$mrkt_focus->template_id}";
|
|
}
|
|
}
|
|
|
|
$summaryURLForProgressBar = '#';
|
|
if (isset($campaign_focus->id) && $campaign_focus->id && isset($mrkt_focus->id) && $mrkt_focus->id && isset($mrkt_focus->template_id) && $mrkt_focus->template_id) {
|
|
$summaryURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=3&show_wizard_marketing=1&marketing_id={$mrkt_focus->id}&record={$mrkt_focus->id}&campaign_type=Email&template_id={$mrkt_focus->template_id}";
|
|
}
|
|
|
|
$steps = array();
|
|
$steps[$mod_strings['LBL_NAVIGATION_MENU_GEN1']] = $camp_url.'1';
|
|
if ($campaign_focus->campaign_type == 'Telesales' || (isset($_REQUEST['campaign_type']) && $_REQUEST['campaign_type'] == 'Telesales')) {
|
|
$steps[$mod_strings['LBL_NAVIGATION_MENU_GEN2']] = 'index.php?action=WizardNewsletter&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id=' . $campaign_focus->id . '&record=' . $campaign_focus->id . '&direct_step=2';
|
|
$steps[$mod_strings['LBL_TARGET_LIST']] = $camp_url.'2&show_target_list=1';
|
|
} else {
|
|
$steps[$mod_strings['LBL_TARGET_LIST']] = $camp_url . '2';
|
|
}
|
|
if ($campaign_focus->campaign_type != 'Telesales' && (!isset($_REQUEST['campaign_type']) || $_REQUEST['campaign_type'] != 'Telesales')) {
|
|
$steps[$mod_strings['LBL_SELECT_TEMPLATE']] = $templateURLForProgressBar;
|
|
if (!$marketingURLForProgressBar) {
|
|
$marketingURLForProgressBar = "index.php?action=WizardMarketing&module=Campaigns&return_module=Campaigns&return_action=WizardHome&return_id={$campaign_focus->id}&campaign_id={$campaign_focus->id}&jump=2&show_wizard_marketing=1&marketing_id={$mrkt_focus->id}&record={$mrkt_focus->id}&campaign_type=Email&template_id={$mrkt_focus->template_id}";
|
|
}
|
|
$steps[$mod_strings['LBL_NAVIGATION_MENU_MARKETING']] = $marketingURLForProgressBar;
|
|
|
|
if ($summaryURLForProgressBar == '#') {
|
|
$summaryURLForProgressBar = 'javascript:$(\'#wiz_cancel_button\').click();';
|
|
}
|
|
$steps[$mod_strings['LBL_NAVIGATION_MENU_SEND_EMAIL_AND_SUMMARY']] = $summaryURLForProgressBar;
|
|
} else {
|
|
if ($summaryURLForProgressBar == '#') {
|
|
$summaryURLForProgressBar = 'javascript:$("#wiz_cancel_button").click();';
|
|
}
|
|
$steps[$mod_strings['LBL_NAVIGATION_MENU_SUMMARY']] = $summaryURLForProgressBar;
|
|
}
|
|
|
|
include_once('modules/Campaigns/DotListWizardMenu.php');
|
|
$dotListWizardMenu = new DotListWizardMenu($mod_strings, $steps, true);
|
|
// array(
|
|
// $mod_strings['LBL_NAVIGATION_MENU_GEN1'] => $camp_url.'1',
|
|
// $mod_strings['LBL_TARGET_LIST'] => $camp_url.'2',
|
|
// //$mod_strings['LBL_NAVIGATION_MENU_GEN2'] => $camp_url.'2',
|
|
// //$mod_strings['LBL_NAVIGATION_MENU_TRACKERS'] => $camp_url.'3',
|
|
// $mod_strings['LBL_SELECT_TEMPLATE'] => $templateURLForProgressBar,
|
|
// $mod_strings['LBL_NAVIGATION_MENU_MARKETING'] => $marketingURLForProgressBar, //$camp_url.'3',
|
|
// $mod_strings['LBL_NAVIGATION_MENU_SEND_EMAIL_AND_SUMMARY'] => $summaryURLForProgressBar,
|
|
// //$mod_strings['LBL_NAVIGATION_MENU_SUMMARY'] => false,
|
|
// )
|
|
// , true);
|
|
|
|
|
|
if (isset($_REQUEST['redirectToTargetList']) && $_REQUEST['redirectToTargetList']) {
|
|
$ss->assign('hideScreen', true);
|
|
$dotListWizardMenu .= <<<JS
|
|
<script type="text/javascript">
|
|
$(function(){
|
|
document.location.href = $('#nav_step2 a').first().attr('href');
|
|
});
|
|
</script>
|
|
JS;
|
|
}
|
|
|
|
$ss->assign('WIZMENU', $dotListWizardMenu);
|
|
|
|
$diagnose = diagnose($errors, $links);
|
|
|
|
$ss->assign('diagnose', $diagnose);
|
|
|
|
// validate sender details
|
|
if ($mrkt_focus->id) {
|
|
foreach ($marketingErrorResults = $mrkt_focus->validate() as $errorKey => $errorMsg) {
|
|
$errors['marketing'] = $mod_strings['LBL_ERROR_ON_MARKETING'];
|
|
$errors['marketing_' . $errorKey] = $errorMsg;
|
|
}
|
|
}
|
|
|
|
foreach ($errors as $error => $msg) {
|
|
if ($msg) {
|
|
$ss->assign('error_on_' . $error, $msg);
|
|
}
|
|
}
|
|
|
|
|
|
foreach ($links as $link => $url) {
|
|
if ($url) {
|
|
$ss->assign('link_to_' . $link, $url);
|
|
}
|
|
}
|
|
|
|
$ss->assign('link_to_campaign_header', $camp_url.'1');
|
|
|
|
if ($campaign_focus->campaign_type == 'Telesales') {
|
|
$stepValues = array_values($steps);
|
|
$ss->assign('link_to_target_list', $stepValues[2]);
|
|
} else {
|
|
$ss->assign('link_to_target_list', $camp_url.'2');
|
|
}
|
|
|
|
$ss->assign('link_to_choose_template', 'index.php?return_module=Campaigns&module=Campaigns&action=WizardMarketing&campaign_id=' . $campaign_focus->id);
|
|
$ss->assign('link_to_sender_details', 'index.php?return_module=Campaigns&module=Campaigns&action=WizardMarketing&campaign_id=' . $campaign_focus->id . '&jump=2');
|
|
|
|
|
|
// ---------------------------------
|
|
// ------------ EDITOR -------------
|
|
// ---------------------------------
|
|
|
|
|
|
require_once 'include/SuiteEditor/SuiteEditorConnector.php';
|
|
$templateWidth = 600;
|
|
$ss->assign('template_width', $templateWidth);
|
|
$ss->assign('BODY_EDITOR', SuiteEditorConnector::getHtml(SuiteEditorConnector::getSuiteSettings(isset($focus->body_html) ? html_entity_decode((string) $focus->body_html) : '', $templateWidth)));
|
|
$ss->assign('hide_width_set', $current_user->getEditorType() != 'mozaik');
|
|
|
|
// ---------------------------------
|
|
// ---------------------------------
|
|
// ---------------------------------
|
|
|
|
|
|
|
|
if (!empty($_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'])) {
|
|
$ss->assign('EmailMarketingId', $_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId']);
|
|
} else {
|
|
if (isset($mrkt_lists[0])) {
|
|
$_SESSION['campaignWizard'][$campaign_focus->id]['defaultSelectedMarketingId'] = $mrkt_lists[0];
|
|
$ss->assign('EmailMarketingId', $mrkt_lists[0]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//if campaign_id is passed then we assume this is being invoked from the campaign module and in a popup.
|
|
$has_campaign = true;
|
|
$inboundEmail = true;
|
|
if (!isset($_REQUEST['campaign_id']) || empty($_REQUEST['campaign_id'])) {
|
|
$has_campaign = false;
|
|
}
|
|
if (!isset($_REQUEST['inboundEmail']) || empty($_REQUEST['inboundEmail'])) {
|
|
$inboundEmail = false;
|
|
}
|
|
|
|
// todo : its for testing, remove this!
|
|
//$has_campaign = false;
|
|
|
|
include_once 'modules/EmailTemplates/templateFields.php';
|
|
$ss->assign("FIELD_DEFS_JS", generateFieldDefsJS2());
|
|
|
|
///////////////////////////////////////
|
|
//// CAMPAIGNS
|
|
if ($has_campaign || $inboundEmail) {
|
|
//$ss->assign("INPOPUPWINDOW", 'true');
|
|
$ss->assign("INSERT_URL_ONCLICK", "insert_variable_html_link(document.wizform.tracker_url.value)");
|
|
|
|
$get_campaign_urls = function ($campaign_id) {
|
|
$return_array=array();
|
|
|
|
if (!empty($campaign_id)) {
|
|
$db = DBManagerFactory::getInstance();
|
|
|
|
$campaign_id = $db->quote($campaign_id);
|
|
|
|
$query1="select * from campaign_trkrs where campaign_id='$campaign_id' and deleted=0";
|
|
$current=$db->query($query1);
|
|
while (($row=$db->fetchByAssoc($current)) != null) {
|
|
$return_array['{'.$row['tracker_name'].'}'] = array(
|
|
'text' => $row['tracker_name'] . ' : ' . $row['tracker_url'],
|
|
'url' => $row['tracker_url'],
|
|
'id' => $row['id']
|
|
);
|
|
}
|
|
}
|
|
return $return_array;
|
|
};
|
|
if ($has_campaign) {
|
|
$campaign_urls = $get_campaign_urls($_REQUEST['campaign_id']);
|
|
}
|
|
if (!empty($campaign_urls)) {
|
|
$ss->assign("DEFAULT_URL_TEXT", key($campaign_urls));
|
|
}
|
|
if ($has_campaign) {
|
|
$get_tracker_options = function ($label_list, $key_list, $selected_key, $massupdate = false) {
|
|
global $app_strings;
|
|
$select_options = '';
|
|
|
|
//for setting null selection values to human readable --None--
|
|
$pattern = "/'0?'></";
|
|
$replacement = "''>".$app_strings['LBL_NONE'].'<';
|
|
if ($massupdate) {
|
|
$replacement .= "/OPTION>\n<OPTION value='__SugarMassUpdateClearField__'><"; // Giving the user the option to unset a drop down list. I.e. none means that it won't get updated
|
|
}
|
|
|
|
if (empty($key_list)) {
|
|
$key_list = array();
|
|
}
|
|
//create the type dropdown domain and set the selected value if $opp value already exists
|
|
foreach ($key_list as $option_key => $option_value) {
|
|
$select_options .= '<OPTION value="'.$option_key.'" data-id="'.$label_list[$option_key]['id'].'" data-url="'.$label_list[$option_key]['url'].'">'.$label_list[$option_key]['text'].'</OPTION>';
|
|
}
|
|
$select_options = preg_replace($pattern, $replacement, $select_options);
|
|
|
|
return $select_options;
|
|
};
|
|
|
|
$ss->assign("TRACKER_KEY_OPTIONS", $get_tracker_options($campaign_urls, $campaign_urls, null));
|
|
//$ss->parse("main.NoInbound.tracker_url");
|
|
|
|
// create tracker URL fields
|
|
$campaignTracker = BeanFactory::newBean('CampaignTrackers');
|
|
if (isset($_REQUEST['campaign_tracker_id']) && $_REQUEST['campaign_tracker_id']) {
|
|
$campaignTracker->retrieve((int) $_REQUEST['campaign_tracker_id']);
|
|
}
|
|
// todo: hide tracker select if it has no trackers
|
|
$ss->assign("TRACKER_NAME", isset($focus) ? $focus->tracker_name : null);
|
|
$ss->assign("TRACKER_URL", isset($focus) ? $focus->tracker_url : null);
|
|
if (!empty($focus->is_optout) && $focus->is_optout == 1) {
|
|
$ss->assign("IS_OPTOUT_CHECKED", "checked");
|
|
$ss->assign("TRACKER_URL_DISABLED", "disabled");
|
|
}
|
|
}
|
|
}
|
|
// create option of "Contact/Lead/Task" from corresponding module
|
|
// translations
|
|
$lblContactAndOthers = implode('/', array(
|
|
isset($app_list_strings['moduleListSingular']['Contacts']) ? $app_list_strings['moduleListSingular']['Contacts'] : 'Contact',
|
|
isset($app_list_strings['moduleListSingular']['Leads']) ? $app_list_strings['moduleListSingular']['Leads'] : 'Lead',
|
|
isset($app_list_strings['moduleListSingular']['Prospects']) ? $app_list_strings['moduleListSingular']['Prospects'] : 'Target',
|
|
));
|
|
|
|
// The insert variable drodown should be conditionally displayed.
|
|
// If it's campaign then hide the Account.
|
|
if ($has_campaign) {
|
|
$dropdown = "<option value='Contacts'>
|
|
" . $lblContactAndOthers . "
|
|
</option>";
|
|
if ($campaign_focus->campaign_type == 'Survey') {
|
|
$dropdown .= "<option value='Surveys'>".translate('Surveys')."</option>";
|
|
}
|
|
$ss->assign("DROPDOWN", $dropdown);
|
|
$ss->assign("DEFAULT_MODULE", 'Contacts');
|
|
//$xtpl->assign("CAMPAIGN_POPUP_JS", '<script type="text/javascript" src="include/javascript/sugar_3.js"></script>');
|
|
} else {
|
|
$ss->assign("DROPDOWN", genDropDownJS2());
|
|
$ss->assign("DEFAULT_MODULE", 'Accounts');
|
|
}
|
|
|
|
$ss->assign("INSERT_VARIABLE_ONCLICK", "insert_variable(document.wizform.variable_text.value, \"email_template_editor\")");
|
|
|
|
|
|
///////////////////////////////////////
|
|
//// ATTACHMENTS
|
|
$attachments = '';
|
|
if (!empty($mrkt_focus->id)) {
|
|
$etid = $mrkt_focus->id;
|
|
} elseif (!empty($old_id)) {
|
|
$ss->assign('OLD_ID', $old_id);
|
|
$etid = $old_id;
|
|
}
|
|
if (!empty($etid)) {
|
|
$note = BeanFactory::newBean('Notes');
|
|
$where = "notes.parent_id='{$etid}' AND notes.filename IS NOT NULL";
|
|
$notes_list = $note->get_full_list("", $where, true);
|
|
|
|
if (!isset($notes_list)) {
|
|
$notes_list = array();
|
|
}
|
|
$notes_listCount = is_countable($notes_list) ? count($notes_list): 0;
|
|
for ($i = 0; $i < $notes_listCount; $i++) {
|
|
$the_note = $notes_list[$i];
|
|
if (empty($the_note->filename)) {
|
|
continue;
|
|
}
|
|
$secureLink = 'index.php?entryPoint=download&id=' . $the_note->id . '&type=Notes';
|
|
$attachments .= '<input type="checkbox" name="remove_attachment[]" value="' . $the_note->id . '"> ' . $app_strings['LNK_REMOVE'] . ' ';
|
|
$attachments .= '<a href="' . $secureLink . '" target="_blank">' . $the_note->filename . '</a><br>';
|
|
}
|
|
}
|
|
$attJs = '<script type="text/javascript">';
|
|
$attJs .= 'var lnk_remove = "' . $app_strings['LNK_REMOVE'] . '";';
|
|
$attJs .= '</script>';
|
|
$ss->assign('ATTACHMENTS', $attachments);
|
|
$ss->assign('ATTACHMENTS_JAVASCRIPT', $attJs);
|
|
|
|
//// END ATTACHMENTS
|
|
///////////////////////////////////////
|
|
|
|
$ss->assign('campaign_type', isset($_REQUEST['campaign_type']) && $_REQUEST['campaign_type'] ? $_REQUEST['campaign_type'] : $campaign_focus->campaign_type);
|
|
|
|
|
|
$ss->assign('fields', array(
|
|
'date_start' => array(
|
|
'name' => 'date_start',
|
|
'value' => $mrkt_focus->date_start . ' ' . $mrkt_focus->time_start,
|
|
)
|
|
));
|
|
|
|
if (isset($_SESSION['msg']) && $_SESSION['msg']) {
|
|
$ss->assign('msg', $mod_strings[$_SESSION['msg']]);
|
|
unset($_SESSION['msg']);
|
|
}
|
|
|
|
if (!empty($_REQUEST['func'])) {
|
|
echo '<input type="hidden" id="func" value="'.$_REQUEST['func'].'">';
|
|
}
|
|
$ss->display('modules/Campaigns/WizardMarketing.html');
|