| Server IP : 138.197.176.125 / Your IP : 216.73.217.55 Web Server : Apache/2.4.41 (Ubuntu) System : Linux SuiteCRM-8 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.3.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /mnt/volume_fra1_01/demo74new/ |
Upload File : |
<?php
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
require_once 'config.inc.php';
require_once('include/utils/utils.php');
require_once('include/database/PearDatabase.php');
include_once 'includes/main/WebUI.php';
global $current_user, $adb, $root_directory, $site_URL;
//file_put_contents('test_m_01.txt', print_r($current_user, true), FILE_APPEND);
$current_user = Users::getActiveAdminUser();
$currentDateTime = date("Y-m-d H:i:s");
$currentusername = $current_user->first_name.' '.$current_user->last_name;
$isExpired = CTWhatsApp_Record_Model::checkLicenceExpired();
if($isExpired == 'no'){
$configurationData = Settings_CTWhatsApp_Record_Model::getUserConfigurationDataWithId();
$botidealtime = $configurationData['botidealtime']; //5
$whatsappBotQuery = $adb->pquery("SELECT idealdatetime, prequemobilenumber FROM whatsappbot_pre_que");
$botRows = $adb->num_rows($whatsappBotQuery);
for ($i=0; $i < $botRows; $i++) {
$idealdatetime = $adb->query_result($whatsappBotQuery, $i, 'idealdatetime');
$prequemobilenumber = $adb->query_result($whatsappBotQuery, $i, 'prequemobilenumber');
$messageTimeDiffrence = strtotime($currentDateTime) - strtotime($idealdatetime);
$minutes = floor(($messageTimeDiffrence / 60) % 60);
if($minutes >= $botidealtime){
$adb->pquery("DELETE FROM whatsappbot_pre_que WHERE prequemobilenumber = ?", array($prequemobilenumber));
}
}
$getMassBatchConfiguration = Settings_CTWhatsApp_ConfigurationDetail_View::getMassBatchConfigurationData(); //vtiger_ctwhatsappmassbatch DBTable
if($getMassBatchConfiguration){
$getLicenseDetail = CTWhatsApp_Record_Model::getWhatsAppLicenseDetail(); //vtiger_ctwhatsapp_license_setting DBTable
$licenseKey = $getLicenseDetail['licenseKey']; //f92ceb918783be8a2ce4a492e320b8dd
//$getWhatsappAccount = CTWhatsApp_Record_Model::getWhatsappAccountDetail($licenseKey);// API : {"message":"Valid","type":"premium","scanallowed":"3","curversion":"1.5.1","latestversion":"M.1.6.1"}
//$oneDayMessages = CTWhatsApp_Record_Model::getOneDaysMessages();
$batch = $getMassBatchConfiguration['batch'] == '' ? 5 : $getMassBatchConfiguration['batch']; //10
$timeInterval = $getMassBatchConfiguration['timeInterval'];
$cronDateTime = $currentDateTime;
// campaigns
$massMessageQuery = $adb->pquery("SELECT vtiger_ctwhatsappmassmessage.massmessageid, vtiger_ctwhatsappmassmessage.massmsgdatetime, vtiger_ctwhatsappmassmessage.templatesid, vtiger_ctwhatsappmassmessage.connectuserid FROM vtiger_ctwhatsappmassmessage INNER JOIN vtiger_ctwhatsappschedulesendmsg ON vtiger_ctwhatsappschedulesendmsg.schedulesendmsgid = vtiger_ctwhatsappmassmessage.massmessageid WHERE vtiger_ctwhatsappschedulesendmsg.status = 0 GROUP BY vtiger_ctwhatsappmassmessage.massmessageid");
$massMessageRows = $adb->num_rows($massMessageQuery);
for ($m=0; $m < $massMessageRows; $m++) {
$massMessageId = $adb->query_result($massMessageQuery, $m, 'massmessageid');
$massMsgDateTime = $adb->query_result($massMessageQuery, $m, 'massmsgdatetime');
$templatesid = $adb->query_result($massMessageQuery, $m, 'templatesid'); //0
$connectuserid = $adb->query_result($massMessageQuery, $m, 'connectuserid');
// user details
$configurationData = Settings_CTWhatsApp_Record_Model::getUserConfigurationAllDataWithId($connectuserid); //scanned user data DBTable vtiger_ctwhatsappusers
$apiUrl = $configurationData['api_url'];
$authToken = $configurationData['authtoken'];
$customfield1 = $configurationData['customfield1'];
$whatsappScanNo = $configurationData['whatsappno']; //wp scanned number
$configureUserid = $configurationData['configureUserid']; //customfield5 wp user id
if($massMsgDateTime == ''){
$msgSentCronDateTime = $cronDateTime;
}else{
$msgSentCronDateTime = $massMsgDateTime;
}
if(strtotime($currentDateTime) >= strtotime($msgSentCronDateTime)){
// total messages use wise
$getMassRecordQuery = $adb->pquery("SELECT recordid, status, body, schedulesendmsgid FROM vtiger_ctwhatsappschedulesendmsg WHERE status = 0 AND schedulesendmsgid = $massMessageId LIMIT 0,$batch");
$massRecordCount = $adb->num_rows($getMassRecordQuery);
for ($i=0; $i < $massRecordCount; $i++) {
$wptemplateImage = '';
$moduleRecordid = $adb->query_result($getMassRecordQuery, $i, 'recordid');
$status = $adb->query_result($getMassRecordQuery, $i, 'status');
$body = $adb->query_result($getMassRecordQuery, $i, 'body');
$schedulesendmsgid = $adb->query_result($getMassRecordQuery, $i, 'schedulesendmsgid');
// all in one message
$getOneMassMessage = $adb->pquery("SELECT count(recordid) as totalrecord FROM vtiger_ctwhatsappschedulesendmsg WHERE status = 0 AND recordid = ? AND schedulesendmsgid = ?", array($moduleRecordid, $schedulesendmsgid)); //Row-Count
$getOneMassMessageCount = $adb->query_result($getOneMassMessage, 0, 'totalrecord');
if($getOneMassMessageCount){
$adb->pquery("UPDATE vtiger_ctwhatsappschedulesendmsg SET status = 1 WHERE recordid = ? AND schedulesendmsgid = ?", array($moduleRecordid, $schedulesendmsgid));
//check module
$setTypeQuery = $adb->pquery("SELECT setype, deleted FROM vtiger_crmentity WHERE crmid = ?", array($moduleRecordid));
$sourceModule = $adb->query_result($setTypeQuery, 0, 'setype');
$deleted = $adb->query_result($setTypeQuery, 0, 'deleted');
// how many modules
$whatsappModuleFieldsData = CTWhatsApp_Record_Model::getWhatsappAllowModuleFields($sourceModule); // DBTable vtiger_ctwharsappallow_whatsappmodule
$phoneField = $whatsappModuleFieldsData['phoneField']; // mobile, phone
if($deleted == 1){
$adb->pquery("UPDATE vtiger_ctwhatsappschedulesendmsg SET status = 1, send_msg = 1 WHERE recordid = ?", array($moduleRecordid));
}else{
// sender data from module
$recordModelModel = Vtiger_Record_Model::getInstanceById($moduleRecordid, $sourceModule);
$displaymobileno = preg_replace('/[^A-Za-z0-9]/', '', $recordModelModel->get($phoneField));
$bodydata = str_replace('\r\n',' ',html_entity_decode($body));
$msgbody = getMergedDescription($bodydata,$moduleRecordid,$sourceModule);
//displayname changes Person Name
if($moduleRecordid){
$setype = VtigerCRMObject::getSEType($moduleRecordid);
$recordModel = Vtiger_Record_Model::getInstanceById($moduleRecordid, $setype);
$displayname = $recordModel->get('label');
}else{
$displayname = $displaymobileno;
}
file_put_contents('displaymobileno.txt', print_r($displaymobileno, true), FILE_APPEND);
// mobile number sender number
$mobileno = CTWhatsApp_Module_Model::getMobileNumber($displaymobileno, $customfield1); // DBTable vtiger_ctwhatsappconfiguration
file_put_contents('mobileno.txt', print_r($mobileno, true), FILE_APPEND);
if($mobileno){
//imp user 0/1
$getnumberImportant = CTWhatsApp_Record_Model::getWhatsappNumberImportant($mobileno);
$checkNumberWhatsAppQuery = CTWhatsApp_Record_Model::getWhatsAppLogData($mobileno, $moduleRecordid, $whatsappScanNo);
$numberactive = $checkNumberWhatsAppQuery['numberactive'];
if($numberactive != 1){
$whatsappactiveURL = $apiUrl.'/chat/whatsappNumbers/'.$authToken;
$postfieldWhatsAppnumber = array('numbers' => array($mobileno));
$whatsAppActiveInActive = CTWhatsApp_WhatsappChat_View::callCURL($whatsappactiveURL, $postfieldWhatsAppnumber, $authToken);
$numberactive = $whatsAppActiveInActive[0]['exists'];
}
if($templatesid != ''){
$whatsappFolderPath = "/modules/CTWhatsApp/CTWhatsAppStorage/";
$generateFolders = CTWhatsApp_Record_Model::generateFoldersforUploadMedia($whatsappFolderPath);
$year = $generateFolders['year'];
$month = $generateFolders['month'];
$week = $generateFolders['week'];
}
// if media exist [ return URL]
if($templatesid){
$getMediaUrl = CTWhatsApp_Record_Model::getMediaUrl($templatesid, $whatsappFolderPath, '' , '' ,'', $year, $month, $week);
$simple_text = $getMediaUrl['simple_text'];
}else{
$simple_text = 1;
}
$filetype = $getMediaUrl['filetype'];
$filename = $getMediaUrl['filename'];
$newfileURL = $getMediaUrl['newfileURL'];
$newBodyfileURL = $getMediaUrl['newBodyfileURL'];
$isTemplatesMedia = $getMediaUrl['isTemplatesMedia'];
if($msgbody != ''){
$filename = $msgbody;
}
if($simple_text == 0){
if($newBodyfileURL){
// send media documents message api parameters
$sendMediaMessageRequest = CTWhatsApp_Record_Model::sendMediaMessageRequest($apiUrl, $authToken, $mobileno, $filetype, $filename, $newfileURL);
$url = $sendMediaMessageRequest['url'];
$postfields = $sendMediaMessageRequest['postfields'];
}
}else{
$url = $apiUrl.'/message/sendText/'.$authToken;
$postfields = array(
'number' => $mobileno,
'text' => $msgbody
);
}
file_put_contents('postfields.txt', print_r($postfields, true), FILE_APPEND);
$val = CTWhatsApp_WhatsappChat_View::callCURL($url, $postfields, $authToken);
file_put_contents('val.txt', print_r($val, true), FILE_APPEND);
$configurationData = Settings_CTWhatsApp_Record_Model::getUserConfigurationDataWithId();
$whatsapplog = $configurationData['whatsapplog'];
//Check WhatsAppLog Exist or Not
$whatsappLogQuery = CTWhatsApp_Record_Model::getWhatsAppLogData($mobileno, $moduleRecordid, $whatsappScanNo);
file_put_contents('whatsappLogQuery.txt', print_r($whatsappLogQuery, true), FILE_APPEND);
$whatsapplogRows = $whatsappLogQuery['rows'];
if($whatsapplogRows == 0){
$recordModel = Vtiger_Record_Model::getCleanInstance('WhatsAppLog');
$recordModel->set('whatsapplog_sendername', $currentusername);
$recordModel->set('messagelog_type', 'Mass Message');
if($newfileURL){
$recordModel->set('messagelog_body', $newBodyfileURL);
}else{
$recordModel->set('messagelog_body', $msgbody);
}
$recordModel->set('whatsapplog_contactid', $moduleRecordid);
$recordModel->set('whatsapplog_displayname', $displayname);
$recordModel->set('whatsapplog_unreadread', 'Unread');
$recordModel->set('whatsapplog_important', $getnumberImportant);
$recordModel->set('whatsapplog_your_number', $whatsappScanNo);
$recordModel->set('assigned_user_id', $currenUserID);
$recordModel->set('whatsapplog_quotemessage', $replymessageText);
$recordModel->set('whatsapplog_withccode', $mobileno);
$recordModel->set('whatsapplog_withoccode', $schedulesendmsgid);
$recordModel->set('whatsapplog_msgid', $val['key']['id']);
$recordModel->set('whatsapplog_datetime', $adb->formatDate($currentDateTime, true));
if($numberactive == 1){
$recordModel->set('whatsapp_numberactive', 1);
}else{
$recordModel->set('whatsapp_numberactive', 0);
}
$requestParam = $url.' ';
$requestParam .= json_encode($postfields);
if($whatsapplog == 1){
$recordModel->set('whatsapplog_request', $requestParam);
$recordModel->set('whatsapplog_response', json_encode($val));
}
// if($msgbody != ''){
// if($getWhatsappAccount->type == 'free' && $oneDayMessages < '100'){
// $recordModel->save();
// }else if($getWhatsappAccount->type == 'premium'){
// $recordModel->save();
// }
// }
$recordModel->save();
$whatsAppLogId = $recordModel->getId();
}else{
$whatsapplogid = $whatsappLogQuery['whatsapplogid'];
$recordModel = Vtiger_Record_Model::getInstanceById($whatsapplogid, 'WhatsAppLog');
$recordModel->set('mode', 'edit');
$recordModel->set('id', $whatsapplogid);
$recordModel->set('whatsapplog_sendername', $currentusername);
$recordModel->set('whatsapplog_datetime', $adb->formatDate($currentDateTime, true));
$recordModel->set('messagelog_type', 'Send');
if($newfileURL){
$recordModel->set('messagelog_body', $newBodyfileURL);
}else{
$recordModel->set('messagelog_body', $msgbody);
}
$recordModel->set('whatsapplog_contactid', $moduleRecordid);
$recordModel->set('whatsapplog_displayname', $displayname);
if($numberactive == 1){
$recordModel->set('whatsapp_numberactive', 1);
}else{
$recordModel->set('whatsapp_numberactive', 0);
}
$recordModel->set('whatsapplog_msgid', $val['key']['id']);
$recordModel->set('whatsapplog_withccode', $mobileno);
$recordModel->set('whatsapplog_withoccode', $schedulesendmsgid);
$requestParam = $url.' ';
$requestParam .= json_encode($postfields);
if($whatsapplog == 1){
$recordModel->set('whatsapplog_request', $requestParam);
$recordModel->set('whatsapplog_response', json_encode($val));
}
$recordModel->save();
$whatsAppLogId = $recordModel->getId();
}
//CTWhatsApp Message add
$recordWpModel = Vtiger_Record_Model::getCleanInstance('CTWhatsApp');
$recordWpModel->set('whatsapp_sendername', $currentusername);
$recordWpModel->set('message_type', 'Mass Message');
if($newfileURL){
if($msgbody != ''){
$recordWpModel->set('message_caption', $msgbody);
}
$recordWpModel->set('message_body', $newBodyfileURL);
}else{
$recordWpModel->set('message_body', $msgbody);
}
$recordWpModel->set('whatsapp_displayname', $displayname);
$recordWpModel->set('whatsapp_contactid', $moduleRecordid);
$recordWpModel->set('whatsapp_unreadread', 'Unread');
$recordWpModel->set('whatsapp_fromno', $whatsappScanNo);
$recordWpModel->set('whatsapp_important', $getnumberImportant);
$recordWpModel->set('your_number', $whatsappScanNo);
$recordWpModel->set('whatsapp_datetime', $adb->formatDate($currentDateTime, true));
$recordWpModel->set('assigned_user_id', $currenUserID);
$recordWpModel->set('whatsapp_quotemessage', $replymessageText);
$recordWpModel->set('whatsapplog_id', $whatsAppLogId);
$recordWpModel->set('whatsapp_withccode', $mobileno);
$recordWpModel->set('whatsapp_withoccode', $schedulesendmsgid);
$recordWpModel->set('msgid', $val['key']['id']);
$requestParam = $url.' ';
$requestParam .= json_encode($postfields);
if($whatsapplog == 1){
$recordWpModel->set('whatsapp_request', $requestParam);
$recordWpModel->set('whatsapp_response', json_encode($val));
}
// if($msgbody != ''){
// if($getWhatsappAccount->type == 'free' && $oneDayMessages < '100'){
// $recordWpModel->save();
// }else if($getWhatsappAccount->type == 'premium'){
// $recordWpModel->save();
// }
// }
$recordWpModel->save();
$whatsAppModuleId = $recordWpModel->getId();
//update record send msg
$adb->pquery("UPDATE vtiger_ctwhatsappschedulesendmsg SET send_msg = 1 WHERE recordid = ? AND schedulesendmsgid = ?", array($moduleRecordid, $schedulesendmsgid));
//get Latest Message in top
if($moduleRecordid){
$query = "UPDATE vtiger_crmentity SET modifiedtime = '". $adb->formatDate($currentDateTime, true)."' WHERE crmid = ?";
$updateQuery = $adb->pquery($query, array($moduleRecordid));
}
}else{
$whatsappMessageid = '-';
$whatsAppLogId = '-';
$recordModel = Vtiger_Record_Model::getCleanInstance('CTWhatsApp');
$recordModel->set('whatsapp_sendername', $currentusername);
$recordModel->set('msgid', '-');
$recordModel->set('message_type', 'Mass Message');
$recordModel->set('message_body', $msgbody);
$recordModel->set('whatsapp_contactid', $moduleRecordid);
$recordModel->set('whatsapp_unreadread', 'Unread');
$recordModel->set('whatsapp_withccode', $mobileno);
$recordModel->set('whatsapp_withoccode', $schedulesendmsgid);
$recordModel->set('whatsapp_fromno', $whatsappScanNo);
$recordModel->set('your_number', $whatsappScanNo);
$recordModel->set('assigned_user_id', $currenUserID);
$recordModel->set('whatsapp_datetime', $adb->formatDate($currentDateTime, true));
$requestParam = $url.' ';
$requestParam .= json_encode($postfields);
$recordModel->set('whatsapp_request', $requestParam);
$recordModel->set('whatsapp_response', 'Number is not available.');
$recordModel->set('whatsapplog_id', $whatsAppLogId);
// if($getWhatsappAccount->type == 'free' && $oneDayMessages < '100'){
// $recordModel->save();
// $whatsAppLogId = $recordModel->getId();
// }else if($getWhatsappAccount->type == 'premium'){
// $recordModel->save();
// $whatsAppLogId = $recordModel->getId();
// }
$recordModel->save();
//update record send msg
$adb->pquery("UPDATE vtiger_ctwhatsappschedulesendmsg SET send_msg = 1 WHERE recordid = ? AND schedulesendmsgid = ?", array($moduleRecordid, $schedulesendmsgid));
}
}
}
echo "run ".$moduleRecordid;echo "<br>";
}
}
}
}
echo "exit";
}