2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4 * SugarCRM Community Edition is a customer relationship management program developed by
5 * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
7 * This program is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU Affero General Public License version 3 as published by the
9 * Free Software Foundation with the addition of the following permission added
10 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
14 * This program is distributed in the hope that it will be useful, but WITHOUT
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
19 * You should have received a copy of the GNU Affero General Public License along with
20 * this program; if not, see http://www.gnu.org/licenses or write to the Free
21 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
24 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
27 * The interactive user interfaces in modified source and object code versions
28 * of this program must display Appropriate Legal Notices, as required under
29 * Section 5 of the GNU Affero General Public License version 3.
31 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32 * these Appropriate Legal Notices must retain the display of the "Powered by
33 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34 * technical reasons, the Appropriate Legal Notices must display the words
35 * "Powered by SugarCRM".
36 ********************************************************************************/
38 require_once('include/formbase.php');
39 require_once('modules/Leads/LeadFormBase.php');
43 global $app_strings, $app_list_strings, $sugar_config, $timedate, $current_user;
45 $mod_strings = return_module_language($sugar_config['default_language'], 'Leads');
47 $app_list_strings['record_type_module'] = array('Contact'=>'Contacts', 'Account'=>'Accounts', 'Opportunity'=>'Opportunities', 'Case'=>'Cases', 'Note'=>'Notes', 'Call'=>'Calls', 'Email'=>'Emails', 'Meeting'=>'Meetings', 'Task'=>'Tasks', 'Lead'=>'Leads','Bug'=>'Bugs',
52 * To make your changes upgrade safe create a file called leadCapture_override.php and place the changes there
55 'PUT A RANDOM KEY FROM THE WEBSITE HERE' => array('name'=>'PUT THE USER_NAME HERE', 'pass'=>'PUT THE USER_HASH FOR THE RESPECTIVE USER HERE'),
58 if (isset($_POST['campaign_id']) && !empty($_POST['campaign_id'])) {
59 //adding the client ip address
60 $_POST['client_id_address'] = query_client_ip();
61 $campaign_id=$_POST['campaign_id'];
62 $campaign = new Campaign();
63 $camp_query = "select name,id from campaigns where id='$campaign_id'";
64 $camp_query .= " and deleted=0";
65 $camp_result=$campaign->db->query($camp_query);
66 $camp_data=$campaign->db->fetchByAssoc($camp_result);
68 if (isset($_REQUEST['assigned_user_id']) && !empty($_REQUEST['assigned_user_id'])) {
69 $current_user = new User();
70 $current_user->retrieve($_REQUEST['assigned_user_id']);
73 if(isset($camp_data) && $camp_data != null ){
74 $leadForm = new LeadFormBase();
77 if(!empty($_POST['prefix'])){
78 $prefix = $_POST['prefix'];
81 if(empty($lead->id)) {
82 $lead->id = create_guid();
83 $lead->new_with_id = true;
85 $GLOBALS['check_notify'] = true;
87 //bug: 42398 - have to unset the id from the required_fields since it is not populated in the $_POST
88 unset($lead->required_fields['id']);
89 unset($lead->required_fields['team_name']);
90 unset($lead->required_fields['team_count']);
91 // checkRequired needs a major overhaul before it works for web to lead forms.
92 $lead = $leadForm->handleSave($prefix, false, false, false, $lead);
97 $camplog = new CampaignLog();
98 $camplog->campaign_id = $_POST['campaign_id'];
99 $camplog->related_id = $lead->id;
100 $camplog->related_type = $lead->module_dir;
101 $camplog->activity_type = "lead";
102 $camplog->target_type = $lead->module_dir;
103 $campaign_log->activity_date=$timedate->now();
104 $camplog->target_id = $lead->id;
107 //link campaignlog and lead
109 if(isset($_POST['webtolead_email1']) && $_POST['webtolead_email1'] != null){
110 $lead->email1 = $_POST['webtolead_email1'];
112 if(isset($_POST['webtolead_email2']) && $_POST['webtolead_email2'] != null){
113 $lead->email2 = $_POST['webtolead_email2'];
115 $lead->load_relationship('campaigns');
116 $lead->campaigns->add($camplog->id);
117 if(!empty($GLOBALS['check_notify'])) {
118 $lead->save($GLOBALS['check_notify']);
125 //in case there are forms out there still using email_opt_out
126 if(isset($_POST['webtolead_email_opt_out']) || isset($_POST['email_opt_out'])){
128 if(isset ($lead->email1) && !empty($lead->email1)){
129 $sea = new SugarEmailAddress();
130 $sea->AddUpdateEmailAddress($lead->email1,0,1);
132 if(isset ($lead->email2) && !empty($lead->email2)){
133 $sea = new SugarEmailAddress();
134 $sea->AddUpdateEmailAddress($lead->email2,0,1);
138 if(isset($_POST['redirect_url']) && !empty($_POST['redirect_url'])){
139 // Get the redirect url, and make sure the query string is not too long
140 $redirect_url = $_POST['redirect_url'];
143 if(strpos($redirect_url, '?') === FALSE){
146 $first_iteration = true;
147 $get_and_post = array_merge($_GET, $_POST);
148 foreach($get_and_post as $param => $value) {
150 if($param == 'redirect_url' || $param == 'submit')
153 if($first_iteration){
154 $first_iteration = false;
155 $query_string .= $first_char;
158 $query_string .= "&";
160 $query_string .= "{$param}=".urlencode($value);
163 if($first_iteration){
164 $query_string .= $first_char;
167 $query_string .= "&";
169 $query_string .= "error=1";
172 $redirect_url = $redirect_url.$query_string;
175 // Check if the headers have been sent, or if the redirect url is greater than 2083 characters (IE max URL length)
176 // and use a javascript form submission if that is the case.
177 if(headers_sent() || strlen($redirect_url) > 2083){
178 echo '<html ' . get_language_header() . '><head><title>SugarCRM</title></head><body>';
179 echo '<form name="redirect" action="' .$_POST['redirect_url']. '" method="GET">';
181 foreach($_POST as $param => $value) {
182 if($param != 'redirect_url' ||$param != 'submit') {
183 echo '<input type="hidden" name="'.$param.'" value="'.$value.'">';
187 echo '<input type="hidden" name="error" value="1">';
189 echo '</form><script language="javascript" type="text/javascript">document.redirect.submit();</script>';
190 echo '</body></html>';
193 header("Location: {$redirect_url}");
198 echo $mod_strings['LBL_THANKS_FOR_SUBMITTING_LEAD'];
201 // die to keep code from running into redirect case below
205 echo $mod_strings['LBL_SERVER_IS_CURRENTLY_UNAVAILABLE'];
209 if (!empty($_POST['redirect'])) {
211 echo '<html ' . get_language_header() . '><head><title>SugarCRM</title></head><body>';
212 echo '<form name="redirect" action="' .$_POST['redirect']. '" method="GET">';
213 echo '</form><script language="javascript" type="text/javascript">document.redirect.submit();</script>';
214 echo '</body></html>';
217 header("Location: {$_POST['redirect']}");
221 echo $mod_strings['LBL_SERVER_IS_CURRENTLY_UNAVAILABLE'];