0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
vtiger
/
5.0.4
/
custom
/
12100000
/
files
/
[
Home
]
File: notify.php
<?php /** * Created on 29-Oct-08 by Raj Boyapati to insert external Campaigns and Contacts. * ******************************************************************************* * Version * Modified by * Date * Details * * ******************************************************************************* * * * * * * * * * * * * * * * * ******************************************************************************* */ // INFO: These files are required to implement Webservices and Database Operations require_once('soap/webformsdirect.php'); require('config.inc.php'); require_once('include/logging.php'); require_once("modules/Emails/mail.php"); // INFO: Variable global $adb, $campaignid, $params, $log; $pipe = "|"; $semicolon=";"; $colon=":"; $errmsg = ""; $module=""; $updstr=""; $formtype=""; $category=""; $campaign=""; $country=""; $msg=""; $log =& LoggerManager::getLogger('index'); //INFO: Database connection $dbhost = $dbconfig['db_hostname']; $dbuser = $dbconfig['db_username']; $dbpass = $dbconfig['db_password']; $dbname = $dbconfig['db_name']; try { $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to database'); mysql_select_db($dbname); } catch (Exception $e) { $errMsg = $e->getMessage(); $log->fatal("Import Data -> Error while connecting to database. ".$errMsg); throw new Exception("Import Data -> Database connection failed."); } // INFO: get contact information //if(isset($_POST["action"])) $action=$_POST["action"]; else $action=""; //if(isset($_POST["data"])) $data=$_POST["data"]; else $data=""; if(isset($_REQUEST["action"])) $action=$_REQUEST["action"]; else $action=""; if(isset($_REQUEST["data"])) $data=$_REQUEST["data"]; else $data=""; if($action != "" && $data != "") { $pair = explode($semicolon, $data); for($i=0; $i<count($pair); $i++) { $str = explode($colon,$pair[$i]); $field[$i][0] = trim($str[0]); if(count($str)>0) { $field[$i][1] = stripslashes(base64_decode(trim($str[1]))); //$field[$i][1] = urldecode(trim($str[1])); //used for testing if($field[$i][0]=="campaign") $campaign = $field[$i][1]; if($field[$i][0]=="formtype") $formtype = $field[$i][1]; } else { $field[$i][1] = ""; } } if($formtype=="") $errmsg="Formtype is required and can not be blank."; switch ($formtype) { case "campaign_np_mem": case "campaign_np_email": case "campaign_np_news": $category="np"; break; case "campaign_ps_appt": case "campaign_ps_contact_us": $category="ps"; break; case "campaign_sb_appt": case "campaign_sb_quote": case "campaign_sb_contact_us": $category="sb"; break; case "campaign_re_buyer": case "campaign_re_seller": case "campaign_re_contact_us": $category="re"; break; default: $errmsg = "Invalid formtype."; break; } if($errmsg == "") { if($action == "insertContact") { // Base details for contact $module = "Contacts"; $fieldcount = 8; $fieldname[0][0] = "firstname"; $fieldname[1][0] = "lastname"; $fieldname[2][0] = "email"; $fieldname[3][0] = "streetaddr"; $fieldname[4][0] = "city"; $fieldname[5][0] = "state"; $fieldname[6][0] = "zipcode"; $fieldname[7][0] = "phone"; for($k=0; $k<$fieldcount; $k++) { $fieldname[$k][1]=""; for($l=0; $l<count($pair); $l++) { if($fieldname[$k][0]==$field[$l][0]) { $fieldname[$k][1]=$field[$l][1]; break; } } } if($fieldname[0][1]=="" || $fieldname[1][1]=="" || $fieldname[2][1]=="") $errmsg="First Name (or) Last Name (or) Email is blank."; } else if($action == "insertLead") { $module = "Leads"; switch($category) { case "np": $fieldcount = 8; //incremented when new field added $fieldname[0][0] = "firstname"; $fieldname[1][0] = "lastname"; $fieldname[2][0] = "email"; $fieldname[3][0] = "streetaddr"; $fieldname[4][0] = "city"; $fieldname[5][0] = "state"; $fieldname[6][0] = "zipcode"; $fieldname[7][0] = "phone"; break; case "ps": $fieldcount = 14; //incremented when new field added $fieldname[0][0] = "firstname"; $fieldname[1][0] = "lastname"; $fieldname[2][0] = "email"; $fieldname[3][0] = "streetaddr"; $fieldname[4][0] = "city"; $fieldname[5][0] = "state"; $fieldname[6][0] = "zipcode"; $fieldname[7][0] = "phone"; $fieldname[8][0] = "company"; $fieldname[9][0] = "prefconmethod"; $fieldname[10][0] = "prefdate"; $fieldname[11][0] = "preftime"; $fieldname[12][0] = "message"; $fieldname[13][0] = "comments"; break; case "sb": $fieldcount = 16; //incremented when new field added $fieldname[0][0] = "firstname"; $fieldname[1][0] = "lastname"; $fieldname[2][0] = "email"; $fieldname[3][0] = "streetaddr"; $fieldname[4][0] = "city"; $fieldname[5][0] = "state"; $fieldname[6][0] = "zipcode"; $fieldname[7][0] = "phone"; $fieldname[8][0] = "company"; $fieldname[9][0] = "prefconmethod"; $fieldname[10][0] = "prefdate"; $fieldname[11][0] = "preftime"; $fieldname[12][0] = "message"; $fieldname[13][0] = "typeofservice"; $fieldname[14][0] = "details"; $fieldname[15][0] = "comments"; break; case "re": $fieldcount = 24; //incremented when new field added $fieldname[0][0] = "firstname"; $fieldname[1][0] = "lastname"; $fieldname[2][0] = "email"; $fieldname[3][0] = "streetaddr"; $fieldname[4][0] = "city"; $fieldname[5][0] = "state"; $fieldname[6][0] = "zipcode"; $fieldname[7][0] = "phone"; $fieldname[8][0] = "typeofhomeown"; $fieldname[9][0] = "typeofhomedes"; $fieldname[10][0] = "numbedroomsown"; $fieldname[11][0] = "numbedroomsdes"; $fieldname[12][0] = "numbathroomsown"; $fieldname[13][0] = "numbathroomsdes"; $fieldname[14][0] = "timeframe"; $fieldname[15][0] = "pricerange"; $fieldname[16][0] = "area"; $fieldname[17][0] = "buyercomments"; $fieldname[18][0] = "sqfootageown"; $fieldname[19][0] = "sqfootagedes"; $fieldname[20][0] = "numgarages"; $fieldname[21][0] = "amenities"; $fieldname[22][0] = "sellercomments"; $fieldname[23][0] = "comments"; break; } for($k=0; $k<$fieldcount; $k++) { $fieldname[$k][1]=""; for($l=0; $l<count($pair); $l++) { if($fieldname[$k][0]==$field[$l][0]) { $fieldname[$k][1]=$field[$l][1]; break; } } } if($fieldname[0][1]=="" || $fieldname[1][1]=="" || $fieldname[2][1]=="") $errmsg="First Name (or) Last Name (or) Email is blank."; } else if($action == "insertCampaign") { $module = "Campaigns"; if(isset($_REQUEST["name"])) $name=$_REQUEST["name"]; else $name=""; if(isset($_REQUEST["type"])) $type=$_REQUEST["type"]; else $type=""; if(isset($_REQUEST["status"])) $status=$_REQUEST["status"]; else $status=""; $fieldcount = 3; //incremented when new field added $fieldname[0][0] = "name"; $fieldname[1][0] = "type"; $fieldname[2][0] = "status"; for($k=0; $k<$fieldcount; $k++) { $fieldname[$k][1]=""; for($l=0; $l<count($pair); $l++) { if($fieldname[$k][0]==$field[$l][0]) { $fieldname[$k][1]=$field[$l][1]; break; } } } if($fieldname[0][1]=="") $errmsg="Campaign name is required."; } else { $errmsg = "Invalid action."; } //if $action } //if $errmsg } else { $errmsg = "No action/data defined."; } if($errmsg=="") { switch ($module) { case "Leads": $log->info("Information received: firstname=".$fieldname[0][1]." & lastname=".$fieldname[1][1]." & email=".$fieldname[2][1]." & campaign=".$campaign); // INFO: Parse information and get campaign names try { if($campaign != "") { // INFO: Create campaign, lead and related them $campaign = explode($pipe, $campaign); for ($counter = 0; $counter < count($campaign); $counter++) { $campaignid = ""; $log->info("Campaign: ".$campaign[$counter]); $query = "select campaignid from vtiger_campaign where campaignname = '" . $campaign[$counter] . "'"; $result = mysql_query($query); list($campaignid)= mysql_fetch_row($result); // INFO: Create a campaign if doesn't exist if($campaignid == "") { $log->info("Campaign doesn't exist. Creating a new one."); $params = array( 'module' => "Campaigns", 'campaignname' => "$campaign[$counter]", 'campaigntype' => "Others", 'campaignstatus'=>"Active", ); $msg = create_from_webform_extended($params); if($msg=="fail") { $errmsg = "Failed to create new campaign ".$campaign[$counter]; $log->fatal("Failed to create new campaign ".$campaign[$counter]); } else { $query = "select campaignid from vtiger_campaign where campaignname = '" . $campaign[$counter] . "'"; $result = mysql_query($query); list($campaignid)= mysql_fetch_row($result); $log->info("New campaign id: ".$campaignid); } } else { $log->info("Existing campaign id: ".$campaignid); } //$campaignid = '' $leadid = ""; $crmid = ""; $deleted = ""; $query = "select a.leadid,b.crmid,b.deleted from vtiger_leaddetails a left join vtiger_crmentity b on a.leadid=b.crmid where a.firstname = '" . $fieldname[0][1] . "' and a.lastname = '" . $fieldname[1][1] . "' and a.email = '" . $fieldname[2][1] . "'"; $result = mysql_query($query); list($leadid,$crmid,$deleted)= mysql_fetch_row($result); if($leadid!="") { $log->info("Existing contact id: ".$leadid); if($deleted!=0 && $crmid!="") { $query = "update vtiger_crmentity set deleted=0 where crmid='".$crmid."'"; mysql_query($query); } } else { // INFO: Create a contact if doesn't exist if($fieldname[4][0]=="city" && $fieldname[4][1] != "") $country="USA"; switch($category) { case "np": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'phone'=> $fieldname[7][1] ); break; case "ps": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'phone'=> $fieldname[7][1], 'company'=> $fieldname[8][1], 'prefconmethod'=> $fieldname[9][1], 'prefdate'=> $fieldname[10][1], 'preftime'=> $fieldname[11][1], 'message'=> $fieldname[12][1], 'comments' => $fieldname[13][1] ); break; case "sb": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'phone'=> $fieldname[7][1], 'company'=> $fieldname[8][1], 'prefconmethod'=> $fieldname[9][1], 'prefdate'=> $fieldname[10][1], 'preftime'=> $fieldname[11][1], 'message'=> $fieldname[12][1], 'typeofservice'=> $fieldname[13][1], 'details'=> $fieldname[14][1], 'comments'=> $fieldname[15][1] ); break; case "re": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'phone'=> $fieldname[7][1], 'typeofhomeown' => $fieldname[8][1], 'typeofhomedes' => $fieldname[9][1], 'numbedroomsown'=> $fieldname[10][1], 'numbedroomsdes'=> $fieldname[11][1], 'numbathroomsown'=> $fieldname[12][1], 'numbathroomsdes'=> $fieldname[13][1], 'timeframe'=> $fieldname[14][1], 'pricerange'=> $fieldname[15][1], 'area'=> $fieldname[16][1], 'buyercomments'=> $fieldname[17][1], 'sqfootageown'=> $fieldname[18][1], 'sqfootagedes'=> $fieldname[19][1], 'numgarages'=> $fieldname[20][1], 'amenities'=> $fieldname[21][1], 'sellercomments'=> $fieldname[22][1], 'comments' => $fieldname[23][1] ); break; } $msg = create_from_webform_extended($params); if($msg=="fail") { $errmsg = "Failed to create new lead for ".$fieldname[2][1]; $log->fatal("Failed to create new lead for ".$fieldname[2][1]); } else { $query = "select leadid from vtiger_leaddetails where firstname = '" . $fieldname[0][1] . "' and lastname = '" . $fieldname[1][1] . "' and email = '" . $fieldname[2][1] . "'"; $result = mysql_query($query); list($leadid)= mysql_fetch_row($result); $log->info("New contact id: ".$leadid); } } //$leadid = '' // INFO: Create relationship if doesn't exist $campaignleadid = ""; $query = "select leadid from vtiger_campaignleadrel where campaignid = '" . $campaignid . "' and leadid = '" . $leadid . "'"; $result = mysql_query($query); list($campaignleadid)= mysql_fetch_row($result); if ($campaignleadid == "") { $query = "insert into vtiger_campaignleadrel (campaignid, leadid, newsletter) values ($campaignid, $leadid, 'n')"; mysql_query($query) or die('Error, insert query failed'); $log->info("Association has been done."); } else { $log->info("This lead has already been associated to campaign."); } //Send Email to customer $to_email = $fieldname[2][1]; $from_email = $HELPDESK_SUPPORT_EMAIL_ID; $sublink = "Thank you for your subscription to the selected newsletter. Your next step is to confirm your request and activate your subscription by clicking on the link below.<br /><br /><a href=\"".$site_URL."subscribe.php?data=".base64_encode($to_email."|".convert_uuencode($to_email."!".$campaignid."!".$leadid."!".time()))."\">click here to subscribe</a><br /><br />Thank you.<br />"; $subject = "Please signup for ".$campaign[$counter]." newsletter"; $user_mail_status = send_mail('Emails',$to_email,'',$from_email,$subject,$sublink,'','','',''); } //end of for loop } else { // INFO: Create contact only $leadid=""; $crmid = ""; $deleted = ""; $query = "select a.leadid,b.crmid,b.deleted from vtiger_leaddetails a left join vtiger_crmentity b on a.leadid=b.crmid where a.firstname = '" . $fieldname[0][1] . "' and a.lastname = '" . $fieldname[1][1] . "' and a.email = '" . $fieldname[2][1] . "'"; $result = mysql_query($query); list($leadid,$crmid,$deleted)= mysql_fetch_row($result); if($leadid!="") { $log->info("This is existing lead and id is ".$leadid); if($deleted!=0 && $crmid!="") { $query = "update vtiger_crmentity set deleted=0 where crmid='".$crmid."'"; mysql_query($query); } } else { // INFO: Create a lead if doesn't exist if($fieldname[4][1] != "") $country="USA"; else $country=""; switch($category) { case "np": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'Home_Phone'=> $fieldname[7][1] ); break; case "ps": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'Home_Phone'=> $fieldname[7][1], 'company'=> $fieldname[8][1], 'prefconmethod'=> $fieldname[9][1], 'prefdate'=> $fieldname[10][1], 'preftime'=> $fieldname[11][1], 'message'=> $fieldname[12][1], 'comments' => $fieldname[13][1] ); break; case "sb": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'Home_Phone'=> $fieldname[7][1], 'company'=> $fieldname[8][1], 'prefconmethod'=> $fieldname[9][1], 'prefdate'=> $fieldname[10][1], 'preftime'=> $fieldname[11][1], 'message'=> $fieldname[12][1], 'typeofservice'=> $fieldname[13][1], 'details'=> $fieldname[14][1], 'comments'=> $fieldname[15][1] ); break; case "re": $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'lane' => $fieldname[3][1], 'city' => $fieldname[4][1], 'state' => $fieldname[5][1], 'code' => $fieldname[6][1], 'country' => $country, 'Home_Phone'=> $fieldname[7][1], 'typeofhomeown' => $fieldname[8][1], 'typeofhomedes' => $fieldname[9][1], 'numbedroomsown'=> $fieldname[10][1], 'numbedroomsdes'=> $fieldname[11][1], 'numbathroomsown'=> $fieldname[12][1], 'numbathroomsdes'=> $fieldname[13][1], 'timeframe'=> $fieldname[14][1], 'pricerange'=> $fieldname[15][1], 'area'=> $fieldname[16][1], 'buyercomments'=> $fieldname[17][1], 'sqfootageown'=> $fieldname[18][1], 'sqfootagedes'=> $fieldname[19][1], 'numgarages'=> $fieldname[20][1], 'amenities'=> $fieldname[21][1], 'sellercomments'=> $fieldname[22][1], 'comments' => $fieldname[23][1] ); break; } $msg = create_from_webform_extended($params); if($msg=="fail") { $errmsg = "Failed to create new lead for ".$fieldname[2][1]; $log->fatal("Failed to create new lead for ".$fieldname[2][1]); } } //$leadid = '' } //end of if $campaign != "" } catch (Exception $e) { $errMsg = $e->getMessage(); $log->fatal("Insert Contacts exception -> ".$errMsg); throw new Exception ($e->getMessage()); } break; case "Contacts": try { $contactid = ""; $query = "select contactid from vtiger_contactdetails where firstname = '" . $fieldname[0][1] . "' and lastname = '" . $fieldname[1][1] . "' and email = '" . $fieldname[2][1] . "'"; $result = mysql_query($query); list($contactid)= mysql_fetch_row($result); if($contactid=="") { $params = array( 'module' => $module, 'First_Name' => $fieldname[0][1], 'Last_Name' => $fieldname[1][1], 'Email' => $fieldname[2][1], 'mailingstreet' => $fieldname[3][1], 'mailingcity' => $fieldname[4][1], 'mailingstate' => $fieldname[5][1], 'mailingzip' => $fieldname[6][1], 'mailingcountry' => $country, 'Home_Phone' => $fieldname[7][1] ); $msg = create_from_webform_extended($params); if($msg=="fail") { $errmsg = "Failed to create new contact for ".$fieldname[2][1]; $log->fatal("Failed to create new contact for ".$fieldname[2][1]); } } //end of if $contactid=="" } catch (Exception $e) { $errMsg = $e->getMessage(); $log->fatal("Insert Leads exception -> ".$errMsg); throw new Exception ($e->getMessage()); } break; case "Campaigns": try { $campaignid = ""; $query = "select contactid from vtiger_campaign where campaignname = '" . $fieldname[0][1] . "'"; $result = mysql_query($query); list($campaignid)= mysql_fetch_row($result); if($campaignid=="") { if($fieldname[2][1]=="") $fieldname[2][1]="Active"; $log->info("Campaign doesn't exist. Creating a new one."); $params = array( 'module' => "$module", 'campaignname' => "$fieldname[0][1]", 'campaigntype' => "$fieldname[1][1]", 'campaignstatus'=> "$fieldname[2][1]", ); $msg = create_from_webform_extended($params); if($msg=="fail") { $errmsg = "Failed to create new campaign ".$fieldname[0][1]; $log->fatal("Failed to create new campaign ".$fieldname[0][1]); } } //end of if $leadid=="" } catch (Exception $e) { $errMsg = $e->getMessage(); $log->fatal("Insert Campaign exception -> ".$errMsg); throw new Exception ($e->getMessage()); } break; } //end of case } //end of if $errmsg mysql_close($conn); if (isset($errmsg) && $errmsg != '') { $log->fatal("Final error: ".$errmsg); echo "{\"result\":\"fail\"; \"message\":\"".$errmsg."\"}"; } else { echo "{\"result\":\"success\"}"; } ?>