*/ require_once AWP_LIB_DIR . '/Plugin.php'; require_once AWP_ASSETS_DIR.'/captcha/simple-captcha/simple-captcha.php'; require_once AWP_APPTIVO_DIR.'ConfigDataUtil.php'; require_once AWP_APPTIVO_DIR.'DataRetrieval.php'; class AWP_Cases extends AWP_Base { function &instance() { static $instances = array(); if (!isset($instances[0])) { $class = __CLASS__; $instances[0] = new $class(); } return $instances[0]; } function get_case_settings($formname){ $formExists=""; $cases_forms=array(); $caseform=array(); $formname=trim($formname); $cases_forms=get_option('awp_casesforms'); if($formname=="") $formExists=""; else if(!empty($cases_forms)) $formExists = awp_recursive_array_search($cases_forms,$formname,'name' ); if(trim($formExists)!=="" ){ $caseform=$cases_forms[$formExists]; } return $caseform; } function __construct() { $this->_plugin_activated = false; $settings=array(); $this->_plugin_activated=false; $settings=get_option("awp_plugins"); if(get_option("awp_plugins")!=="false"){ if($settings["cases"]) $this->_plugin_activated=true; } $this->fields = array( array('fieldid' => 'subject','fieldname' => 'Subject','defaulttext' => 'Subject','must_require'=>1,'must'=>1,'showorder' => '1','validation' => 'text','fieldtype' => 'text'), array('fieldid' => 'description','fieldname' => 'Description','defaulttext' => 'Description','must_require'=>0,'must'=>0,'showorder' => '2','validation' => 'textarea','fieldtype' => 'textarea'), array('fieldid' => 'status','fieldname' => 'Status','defaulttext' => 'Status','must_require'=>1,'must'=>0,'showorder' => '3','validation' => 'text','fieldtype' => 'select'), array('fieldid' => 'priority','fieldname' => 'Priority','defaulttext' => 'Priority','must_require'=>1,'must'=>0,'showorder' => '4','validation' => 'text','fieldtype' => 'select'), array('fieldid' => 'type','fieldname' => 'Type','defaulttext' => 'Type','must_require'=>1,'must'=>0,'showorder' => '9','validation' => 'text','fieldtype' => 'select'), array('fieldid' => 'firstname','fieldname' => 'First Name','defaulttext' => 'First Name','must_require'=>0,'must'=>0,'showorder' => '5','validation' => 'text','fieldtype' => 'text'), array('fieldid' => 'lastname','fieldname' => 'Last Name','defaulttext' => 'Last Name','must_require'=>1,'must'=>1,'showorder' => '6','validation' => 'text','fieldtype' => 'text'), array('fieldid' => 'email','fieldname' => 'Email','defaulttext' => 'Email','showorder' => '7','must_require'=>1,'must'=>1,'validation' => 'email','fieldtype' => 'text'), array('fieldid' => 'phone','fieldname' => 'Telephone Number','defaulttext' => 'Telephone Number','must_require'=>0,'must'=>0,'showorder' => '8','validation' => 'phonenumber','fieldtype' => 'text'), array('fieldid' => 'captcha','fieldname' => 'Captcha','defaulttext' => 'Captcha','must_require'=>1,'must'=>0,'showorder' => '10','validation' => 'text','fieldtype' => 'captcha'), array('fieldid' => 'customfield1','fieldname' => 'Custom Field 1','defaulttext' => 'Custom Field1','showorder' => '11','validation' => '','fieldtype' => 'select'), array('fieldid' => 'customfield2','fieldname' => 'Custom Field 2','defaulttext' => 'Custom Field2','showorder' => '12','validation' => '','fieldtype' => 'select'), array('fieldid' => 'customfield3','fieldname' => 'Custom Field 3','defaulttext' => 'Custom Field3','showorder' => '13','validation' => '','fieldtype' => 'select'), array('fieldid' => 'customfield4','fieldname' => 'Custom Field 4','defaulttext' => 'Custom Field4','showorder' => '14','validation' => '','fieldtype' => 'radio'), array('fieldid' => 'customfield5','fieldname' => 'Custom Field 5','defaulttext' => 'Custom Field5','showorder' => '15','validation' => '','fieldtype' => 'checkbox') ); $this->validations = array( array('validationLabel' => 'None','validation' => 'none'), array('validationLabel' => 'Email ID','validation' => 'email'), array('validationLabel' => 'Number','validation' => 'number') ); $this->fieldtypes = array( array('fieldtypeLabel' => 'Checkbox','fieldtype' => 'checkbox'), array('fieldtypeLabel' => 'Radio Option','fieldtype' => 'radio'), array('fieldtypeLabel' => 'Select','fieldtype' => 'select'), array('fieldtypeLabel' => 'Textbox','fieldtype' => 'text'), array('fieldtypeLabel' => 'Textarea','fieldtype' => 'textarea') ); } /** * Runs plugin */ function run() { if($this->_plugin_activated){ add_shortcode('apptivocases',array(&$this,'apptivo_business_casesnew')); add_shortcode( 'apptivo_cases', array( &$this, 'apptivo_business_casesnew' ) ); /* To View Old Plugin form */ $oldForm = get_option('absp_cases_form_fields'); if($oldForm!="") { $addOldform= array("name"=>"CasesFormOld"); $form= array_merge($addOldform,$oldForm); $newform= get_option("awp_casesforms"); foreach ($newform as $key => $val) { if ($val['name'] === 'CasesFormOld') { $formpresent="present"; } } if($newform!="") { $countform= count($newform); $form= array($form); $updatedForm= array_merge($newform,$form); } else { $updatedForm= array($form); } if($oldForm!="" && $formpresent=="") { update_option("awp_casesforms",$updatedForm); // delete_option("absp_cases_form_fields"); To delete old cases formfield data } } } } //validate_load_script function validate_load_script() { wp_enqueue_script("jquery"); wp_register_script('jquery_validation',AWP_PLUGIN_BASEURL. '/assets/js/validator-min.js',false,false,true); wp_print_scripts('jquery_validation'); } function get_cases_form_fields($formname) { $caseform=array(); $cases_forms=array(); $formexist=""; $casesformdetails=array(); $formname=trim($formname); $cases_forms=get_option("awp_casesforms"); $formexists=awp_recursive_array_search($cases_forms,$formname,'name'); if(trim($formexists)!="") { $customfields=""; $caseform=$cases_forms[$formexists]; $formFields = $caseform['fields']; foreach($formFields as $fields): $fieldid=$fields['fieldid']; $pos=strpos($fieldid, "customfield"); if($pos===false) : else: if(isset($_POST[$fieldid]) || isset($customfieldVal)){ $customfieldVal = $_POST[$fieldid]; if( is_array($customfieldVal) || isset($customfieldVal)) : $customfieldVal = implode(",", (array)$customfieldVal); endif; if($customfieldVal != '') : $customfields .= "
".$fields['showtext'].":".stripslashes($customfieldVal); $customfieldArr[$formLabelName] = stripslashes($customfieldVal); endif; } endif; endforeach; if(isset($customfields)){ $customfields .= "
Requested IP:".stripslashes(get_RealIpAddr()); } if(!empty($customfields)){ $parent1NoteId=""; $awp_services_obj=new AWPAPIServices(); $parent1details = nl2br($customfields); $noteDetails = $awp_services_obj->notes('Custom Fields',$parent1details,$parent1NoteId); } $case = array(); $case['firmid'] = null; $case['caseid'] = null; if(isset($_POST['firstname'])){ $case['firstName'] = sanitize_text_field(trim($_POST['firstname'])); } if(isset($_POST['lastname'])){ $case['lastName'] = sanitize_text_field(trim($_POST['lastname'])); } if(isset($_POST['email'])){ $case['emailId'] = sanitize_email(trim($_POST['email'])); } if(isset($_POST['phone'])){ $case['phoneNumber']=sanitize_text_field(trim($_POST['phone'])); } $case['comments'] = NULL; if(isset($_POST['description'])){ //$case['description'] = sanitize_text_field(trim($_POST['description'])); $case['description'] = nl2br(trim($_POST['description'])); } if(isset($_POST['type'])){ $case['type'] = sanitize_text_field(trim($_POST['type'])); } if(isset($_POST['status'])){ $case['status'] = sanitize_text_field(trim($_POST['status'])); } if(isset($_POST['priority'])){ $case['priority'] = sanitize_text_field(trim($_POST['priority'])); } $case['account'] = NULL; $case['productName'] = NULL; if(isset($_POST['subject'])){ $case['subject'] = sanitize_text_field(trim($_POST['subject'])); } $case['responseString']=null; $case['noteDetails']=$noteDetails; $case['userIdStr']=NULL; return $caseform; } } function apptivo_business_casesnew($atts) { $cases_fields_properties = get_option('awp_casesforms'); if($atts=="") { $atts=array("name" => "CasesFormOld"); } extract(shortcode_atts(array('name'=> ''), $atts)); ob_start(); $formname=trim($name); $case_form=$this->get_cases_form_fields($formname); $cases_width_size=$case_form["properties"]["cases_width_type"]; if(isset($_POST['awp_caseformname'])){ $submitformname=$_POST['awp_caseformname']; } $success_message=""; if(isset ($_POST["awp_casesforms_submit"]) && $submitformname==$formname ) { $customfields = ''; $formFields = $case_form['fields']; if(isset($_POST["simple_captcha"]) ) { $awp_simple_captcha_challenge=sanitize_text_field($_POST['awp_simple_captcha_challenge']); if(isset($awp_simple_captcha_challenge)){ $captcha_instance = new AWPSimpleCaptcha(); $response = $captcha_instance->check($_POST['awp_simple_captcha_challenge'], $_POST["simple_captcha"]); $captcha_instance->remove( $_POST['awp_simple_captcha_challenge'] ); if($response!="1") { $value_present = true; $captcha_error = awp_messagelist("recaptcha_error"); } else { $captcha_error=""; $success_message=""; } }else{ $captcha_instance = new AWPSimpleCaptcha(); $captcha_instance->remove( $_POST['awp_simple_captcha_challenge'] ); $captch_error = awp_messagelist("recaptcha_error"); } } elseif (isset($_POST["g-recaptcha-response"])) { $captcha_error=""; $response_field = $_POST["g-recaptcha-response"]; //$challenge_field= $_POST["recaptcha_challenge_field"]; $option=get_option('apptivo_business_recaptcha_settings'); $option=json_decode($option); $private_key = $option->recaptcha_privatekey; $response = captchaValidation($private_key, $response_field); if($response!="1") { $value_present = true; $captcha_error = awp_messagelist("recaptcha_error"); } else { $captcha_error=""; $success_message=""; } } foreach($formFields as $fields): if($fields['fieldid']=="firstname"): $firstName=sanitize_text_field(trim($_POST['firstname'])); if($firstName!=''){ $stdcustomfields.="
".$fields['showtext'].":".$firstName; } endif; if($fields['fieldid']=="lastname"): $lastName=sanitize_text_field(trim($_POST['lastname'])); $stdcustomfields.="
".$fields['showtext'].":".$lastName; endif; if($fields['fieldid']=="phone"): $phone=sanitize_text_field(trim($_POST['phone'])); if($phone!=''){ $stdcustomfields.="
".$fields['showtext'].":".$phone; } endif; $fieldid=$fields['fieldid']; $pos=strpos($fieldid, "customfield"); if($pos===false) : else: $customfieldVal = $_POST[$fieldid]; if( is_array($customfieldVal)){ $formLabelName = $fields['showtext']; $customfieldArr[$formLabelName] = stripslashes($customfieldVal); $customfieldVal = implode(",", $customfieldVal); } if($customfieldVal != ''){ $formLabelName = $fields['showtext']; $customfieldArr[$formLabelName] = stripslashes($customfieldVal); $customfields .= "
".$fields['showtext'].":".stripslashes($customfieldVal); } endif; endforeach; $stdcustomfields .= "
Requested IP:".stripslashes(get_RealIpAddr()); $_SESSION['AddradioMismatchValues'] = ''; $_SESSION['AddselectMismatchValues'] = ''; $_SESSION['AddcheckMismatchValues'] = ''; /* Custom Field mapping with Apptivo Leads Config data */ $apptivoArr = array(); $unmatchFields = array(); $configObj = new configData(); $sections = $configObj->appConfigData(APPTIVO_CASE_V6_API,APPTIVO_CASES_OBJECT_ID); foreach($sections as $section){ $sectionName = $section->getSecLabel(); $attributes = $section->getAttributeList(); foreach($attributes as $attribute){ $labelName = $attribute->getAttributeLabel(); $fieldType = $attribute->getAttributeType(); if($fieldType == 'Custom'){ if(array_key_exists($labelName, $customfieldArr)){ $apptivoArr[] = $labelName; $dataRetriObj = new DataRetrieval(); $cust = $dataRetriObj->customAttribute($customAttributes,$sectionName,$labelName,$attribute, $customfieldArr); if(!empty($cust)){ $customAttributes[] = $cust; } } } } } /* Creating note text for unmatched fields */ $Addcustomfields = ''; if(isset($customfieldArr)){ foreach($customfieldArr as $customLabelName => $customValue){ if(!in_array($customLabelName, $apptivoArr)){ $Addcustomfields .= "".$customLabelName.":".trim($customValue)."
"; } } } /*copying selected mismatched values to notes tab*/ if(isset($_SESSION['AddcheckMismatchValues'])){ foreach($_SESSION['AddcheckMismatchValues'] as $checkLablename => $checkval){ foreach($checkval as $values){ $AddcheckMismatchValues .= "".$checkLablename.":".trim($values)."
"; } } } $customfields = $stdcustomfields.'
'.$Addcustomfields.'
'.$_SESSION['AddradioMismatchValues'].'
'.$_SESSION['AddselectMismatchValues'].'
'.$AddcheckMismatchValues; $_SESSION['AddradioMismatchValues'] = ''; $_SESSION['AddselectMismatchValues'] = ''; $_SESSION['AddcheckMismatchValues'] = ''; if(!empty($customfields)){ $parent1NoteId=""; $parent1details = nl2br($customfields); $awp_services_obj=new AWPAPIServices(); $noteDetails = $awp_services_obj->notes('Custom Fields',$parent1details,$parent1NoteId); } $case = array(); $case['firmid'] = null; $case['caseid'] = null; if(isset($_POST['firstname'])){ $case['firstName'] = sanitize_text_field(trim($_POST['firstname'])); } $case['lastName'] = sanitize_text_field(trim($_POST['lastname'])); $case['emailId'] = sanitize_text_field(trim($_POST['email'])); if(isset($_POST['phone'])){ $case['phoneNumber']=sanitize_text_field(trim($_POST['phone'])); } $case['comments'] = null; if(isset($_POST['description'])){ $case['description'] = nl2br(trim($_POST['description'])); } $case['type'] = sanitize_text_field(trim($_POST['type'])); $case['type_name'] = sanitize_text_field(trim($_POST['type_name'])); $case['status'] = sanitize_text_field(trim($_POST['status_name'])); $case['status_name']=sanitize_text_field(trim($_POST['status'])); $case['priority'] = sanitize_text_field(trim($_POST['priority'])); $case['priority_name']=sanitize_text_field(trim($_POST['priority_name'])); $case['account'] = NULL; $case['productName'] = NULL; $case['subject'] = sanitize_text_field(trim($_POST['subject'])); $case['responseString']=null; $case['noteDetails']=$noteDetails; $case['userIdStr']=null; /* create an array for method inputs */ if(isset($case['firstName'])){ $firstName=$case['firstName']; } if(isset($case['lastName'])){ $lastName=$case['lastName']; } if(isset($case['phoneNumber'])){ $phoneNumber=$case['phoneNumber']; } $caseStatus= $case['status']; $caseStatusId= $case['status_name']; $caseType = $case['type_name']; $caseTypeId = $case['type']; $casePriority= $case['priority_name']; $casePriorityId= $case['priority']; $emailId=$case['emailId']; $caseSummary= $case['subject']; $caseDescription=""; if(isset($case['description'])){ $caseDescription= $case['description']; } $contactAccountName=""; $customerAccountName=""; $caseNumber = 'Auto generated number'; if(strlen(trim($case['lastName']))==0 || strlen(trim($emailId))==0 || !filter_var($emailId, FILTER_VALIDATE_EMAIL)){ if(empty($captcha_error)) echo awp_messagelist('no_redirection'); } elseif(empty ($captcha_error)) { /* check manually and update the values */ $submit_form_name = sanitize_text_field($_POST['awp_caseformname']); $case_formvalues =$this->get_cases_form_fields($submit_form_name); if($caseStatus=="" && $caseStatusId==""){$caseStatus=$case_formvalues["properties"]["case_status"];$caseStatusId=$case_formvalues["cases_config"]["awp_caseStatus_selected"];} if($casePriority=="" && $casePriorityId==""){$casePriority=$case_formvalues["properties"]["case_priority"];$casePriorityId=$case_formvalues["cases_config"]["awp_casePriority_selected"];} if($caseType=="" && $caseTypeId==""){$caseType=$case_formvalues["properties"]["case_type"];$caseTypeId=$case_formvalues["cases_config"]["awp_caseType_selected"];} $assigneeName = trim($case_formvalues["properties"]["case_assignee_name"]); $assigneeObjId = ($case_formvalues["properties"]["case_assignee_type"] == 'team') ? APPTIVO_TEAM_OBJECT_ID : APPTIVO_EMPLOYEE_OBJECT_ID; $assigneeObjRefId = $case_formvalues["properties"]["case_assignee_type_id"]; $caseAssociates = trim($case_formvalues["properties"]["case_associates"]); $createAssociates = trim($case_formvalues["properties"]["case_create_associates"]); /* Check wheather Team exist or not */ if($assigneeName=='No Team'){ $assigneeName=""; $assigneeObjId=""; $assigneeObjRefId=""; } //echo $assigneeName."--".$assigneeObjId."--".$assigneeObjRefId;exit; if($caseAssociates != "No Need") { $associates=$awp_services_obj->awpCaseAssocciates($emailId,$caseAssociates); } $contactAccountId = $contactAccountName = $customerAccountId = $customerAccountName =""; if(count($associates) != "") { $contactAccountId = $associates["caseContactId"]; $contactAccountName = $associates["caseContact"]; if(isset($associates["caseCustomerId"])){ $customerAccountId = $associates["caseCustomerId"]; } if(isset($associates["caseCustomer"])){ $customerAccountName = $associates["caseCustomer"]; } } if($contactAccountId == "" && $createAssociates=="contact") { if($caseAssociates == "Both" || $caseAssociates == "Contact" || $caseAssociates == "Customer") { $createContactResponse=$awp_services_obj->createContact($firstName,$lastName,$assigneeName,$assigneeObjRefId,$assigneeObjId,$phoneNumber,$emailId); $contactAccountId= $createContactResponse['leadContactId']; $contactAccountName= $createContactResponse['leadContact']; } } if($customerAccountId =="" && $createAssociates == "customer") { if($caseAssociates =="Both" || $caseAssociates == "Customer" || $caseAssociates=="Contact") { $createCustomerResponse=$awp_services_obj->createCustomer($lastName,$assigneeName,$assigneeObjId,$assigneeObjRefId,$phoneNumber,$emailId); $customerAccountId=$createCustomerResponse['leadCustomerId']; $customerAccountName=$createCustomerResponse['leadCustomer']; } } $verification = check_blockip(); if($verification){ $success_message= awp_messagelist('IP_banned'); } else{ if($caseStatusId == ''){ $oldCaseValue = json_decode(get_option('awp_cases_status')); $caseStatus = $oldCaseValue[0]->meaning; $caseStatusId = $oldCaseValue[0]->lookupId; } if(!_isCurl()) { $params = array ( "arg0" => APPTIVO_BUSINESS_API_KEY, "arg1" => APPTIVO_BUSINESS_ACCESS_KEY, "arg2" => $case, ); $response = getsoapCall(APPTIVO_BUSINESS_SERVICES,'createCase',$params); //Custom success Message. $properties = $case_form['properties']; $success_message = $properties['confmsg']; } else{ $awp_services_obj = new AWPAPIServices(); $createCaseResponse= $awp_services_obj->createCases($caseNumber,$caseStatus,$caseStatusId,$caseType,$caseTypeId,$casePriority,$casePriorityId,$assigneeName,$assigneeObjId,$assigneeObjRefId,$caseSummary,$caseDescription,$customerAccountName,$customerAccountId,$contactAccountName,$contactAccountId,$emailId,$customAttributes); $caseId = $createCaseResponse->csCase->caseId; $caseNumber = $createCaseResponse->csCase->caseNumber; if($noteDetails!="" && $caseId !="") { $noteText=$noteDetails->noteText; $createNotesResponse=$awp_services_obj->saveNotes(APPTIVO_CASES_OBJECT_ID,$caseId,$caseNumber,$noteText); } } if($caseId !=''){ $properties = $case_form['properties']; $success_message = $properties['confmsg']; if($success_message == "") { $success_message="Case Submitted Successfully"; } } else{ $success_message="