]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/Campaigns/WebToLeadCapture.php
Release 6.2.0beta4
[Github/sugarcrm.git] / modules / Campaigns / WebToLeadCapture.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6  * 
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.
13  * 
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
17  * details.
18  * 
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
22  * 02110-1301 USA.
23  * 
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.
26  * 
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.
30  * 
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  ********************************************************************************/
37
38 require_once('include/formbase.php');
39 require_once('modules/Leads/LeadFormBase.php');
40
41
42
43 global $app_strings, $app_list_strings, $sugar_config, $timedate, $current_user;
44
45 $mod_strings = return_module_language($sugar_config['default_language'], 'Leads');
46
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',
48
49 );
50
51 /**
52  * To make your changes upgrade safe create a file called leadCapture_override.php and place the changes there
53  */
54 $users = array(
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'),
56 );
57
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);
67                 
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']);
71                 } 
72
73             if(isset($camp_data) && $camp_data != null ){
74                         $leadForm = new LeadFormBase();
75             $lead = new Lead();
76                         $prefix = '';
77                         if(!empty($_POST['prefix'])){
78                                 $prefix = $_POST['prefix'];
79                         }
80
81                         if(empty($lead->id)) {
82                 $lead->id = create_guid();
83                 $lead->new_with_id = true;
84             }
85             $GLOBALS['check_notify'] = true;
86
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             $lead = $leadForm->handleSave($prefix, false, true, false, $lead);
92             
93                         if(!empty($lead)){
94                                 
95                     //create campaign log
96                     $camplog = new CampaignLog();
97                     $camplog->campaign_id  = $_POST['campaign_id'];
98                     $camplog->related_id   = $lead->id;
99                     $camplog->related_type = $lead->module_dir;
100                     $camplog->activity_type = "lead";
101                     $camplog->target_type = $lead->module_dir;
102                     $campaign_log->activity_date=$timedate->now();
103                     $camplog->target_id    = $lead->id;
104                     $camplog->save();
105
106                         //link campaignlog and lead
107
108                         if(isset($_POST['webtolead_email1']) && $_POST['webtolead_email1'] != null){
109                     $lead->email1 = $_POST['webtolead_email1'];
110                         }
111                         if(isset($_POST['webtolead_email2']) && $_POST['webtolead_email2'] != null){
112                     $lead->email2 = $_POST['webtolead_email2'];
113                         }
114                         $lead->load_relationship('campaigns');
115                         $lead->campaigns->add($camplog->id);
116                 if(!empty($GLOBALS['check_notify'])) {
117                     $lead->save($GLOBALS['check_notify']);
118                 }
119                 else {
120                     $lead->save(FALSE);
121                 }
122             }
123
124             //in case there are forms out there still using email_opt_out
125             if(isset($_POST['webtolead_email_opt_out']) || isset($_POST['email_opt_out'])){
126                     
127                 if(isset ($lead->email1) && !empty($lead->email1)){
128                     $sea = new SugarEmailAddress();
129                     $sea->AddUpdateEmailAddress($lead->email1,0,1);
130                 }   
131                 if(isset ($lead->email2) && !empty($lead->email2)){
132                     $sea = new SugarEmailAddress();
133                     $sea->AddUpdateEmailAddress($lead->email2,0,1);
134                     
135                 }
136             }              
137                         if(isset($_POST['redirect_url']) && !empty($_POST['redirect_url'])){
138                             // Get the redirect url, and make sure the query string is not too long
139                         $redirect_url = $_POST['redirect_url'];
140                         $query_string = '';
141                                 $first_char = '&';
142                                 if(strpos($redirect_url, '?') === FALSE){
143                                         $first_char = '?';
144                                 }
145                                 $first_iteration = true;
146                                 $get_and_post = array_merge($_GET, $_POST);
147                                 foreach($get_and_post as $param => $value) {
148
149                                         if($param == 'redirect_url' || $param == 'submit')
150                                                 continue;
151                                         
152                                         if($first_iteration){
153                                                 $first_iteration = false;
154                                                 $query_string .= $first_char;
155                                         }
156                                         else{
157                                                 $query_string .= "&";
158                                         }
159                                         $query_string .= "{$param}=".urlencode($value);
160                                 }
161                                 if(empty($lead)) {
162                                         if($first_iteration){
163                                                 $query_string .= $first_char;
164                                         }
165                                         else{
166                                                 $query_string .= "&";
167                                         }
168                                         $query_string .= "error=1";
169                                 }
170                                 
171                                 $redirect_url = $redirect_url.$query_string;
172                                 
173                                 // Check if the headers have been sent, or if the redirect url is greater than 2083 characters (IE max URL length)
174                                 //   and use a javascript form submission if that is the case.
175                             if(headers_sent() || strlen($redirect_url) > 2083){
176                                 echo '<html><head><title>SugarCRM</title></head><body>';
177                                 echo '<form name="redirect" action="' .$_POST['redirect_url']. '" method="GET">';
178     
179                                 foreach($_POST as $param => $value) {
180                                         if($param != 'redirect_url' ||$param != 'submit') {
181                                                 echo '<input type="hidden" name="'.$param.'" value="'.$value.'">';
182                                         }
183                                 }
184                                 if(empty($lead)) {
185                                         echo '<input type="hidden" name="error" value="1">';
186                                 }
187                                 echo '</form><script language="javascript" type="text/javascript">document.redirect.submit();</script>';
188                                 echo '</body></html>';
189                         }
190                                 else{
191                                 header("Location: {$redirect_url}");
192                                 die();
193                             }
194                         }
195                         else{
196                                 echo $mod_strings['LBL_THANKS_FOR_SUBMITTING_LEAD'];
197                         }
198                         sugar_cleanup();
199                         // die to keep code from running into redirect case below
200                         die();
201             }
202            else{
203                   echo $mod_strings['LBL_SERVER_IS_CURRENTLY_UNAVAILABLE'];
204           }
205 }
206
207 if (!empty($_POST['redirect'])) {
208     if(headers_sent()){
209         echo '<html><head><title>SugarCRM</title></head><body>';
210         echo '<form name="redirect" action="' .$_POST['redirect']. '" method="GET">';
211         echo '</form><script language="javascript" type="text/javascript">document.redirect.submit();</script>';
212         echo '</body></html>';
213     }
214     else{
215         header("Location: {$_POST['redirect']}");
216         die();
217     }
218 }
219 echo $mod_strings['LBL_SERVER_IS_CURRENTLY_UNAVAILABLE'];
220 ?>