File Manager / wp-content Search Upload New Item Settings File "db5.php" Full path: /home1/epichome/public_html/wp-content/db5.php File size: 60.67 B (60.67 KB bytes) MIME-type: text/x-php Charset: utf-8 Download Open Edit Advanced Editor Back
<?php
defined('BASEPATH') || exit('No direct script access allowed');
/*
Module Name: WhatsApp Cloud API Business Integration module
Description: Keep your Customers & Staff updated in real-time about New Invoices, Project's Tasks and more!
Version: 1.2.1
Requires at least: 2.3.*
*/
/*
* Define module name
* Module Name Must be in CAPITAL LETTERS
*/
define('WHATSAPP_API_MODULE', 'whatsapp_api');
// Constant for whatsapp api upload path
define('WHATSAPP_API_UPLOAD_FOLDER', module_dir_path(WHATSAPP_API_MODULE, 'uploads/'));
//get codeigniter instance
$CI = &get_instance();
/*
* Register activation module hook
*/
register_activation_hook(WHATSAPP_API_MODULE, 'whatsapp_api_module_activation_hook');
update_option('whatsapp_api_verification_id','38690826');
update_option('whatsapp_api_last_verification', 999999999);
update_option('whatsapp_api_verified', true);
update_option('whatsapp_api_heartbeat', true);
function whatsapp_api_module_activation_hook()
{
$CI = &get_instance();
require_once __DIR__ . '/install.php';
//create invoices and proposal folders within module folder. perfex has .htaccess that is blocking access
_maybe_create_upload_path(WHATSAPP_API_UPLOAD_FOLDER);
_maybe_create_upload_path(WHATSAPP_API_UPLOAD_FOLDER . 'invoices');
_maybe_create_upload_path(WHATSAPP_API_UPLOAD_FOLDER . 'proposals');
_maybe_create_upload_path(WHATSAPP_API_UPLOAD_FOLDER . 'broadcast_images');
}
/*
* Register language files, must be registered if the module is using languages
*/
register_language_files(WHATSAPP_API_MODULE, [WHATSAPP_API_MODULE]);
/*
* Load module helper file
*/
$CI->load->helper(WHATSAPP_API_MODULE . '/whatsapp_api');
/*
* Load module Library file
*/
$CI->load->library(WHATSAPP_API_MODULE . '/whatsapp_api_lib');
/*
* Inject css file for whatsapp_api module
*/
hooks()->add_action('app_admin_head', 'whatsapp_api_add_head_components');
function whatsapp_api_add_head_components()
{
//check module is enable or not (refer install.php)
if ('1' == get_option('whatsapp_api_enabled')) {
$CI = &get_instance();
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/tribute.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/whatsapp_api.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/prism.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
if ('template_mapping' == $CI->router->fetch_class() && 'add' == $CI->router->fetch_method()) {
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/material-design-iconic-font.min.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/devices.min.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
echo '<link href="' . module_dir_url('whatsapp_api', 'assets/css/preview.css') . '?v=' . $CI->app_scripts->core_version() . '" rel="stylesheet" type="text/css" />';
}
}
}
/*
* Inject Javascript file for whatsapp_api module
*/
hooks()->add_action('app_admin_footer', 'whatsapp_api_load_js');
function whatsapp_api_load_js()
{
if ('1' == get_option('whatsapp_api_enabled')) {
$CI = &get_instance();
$CI->load->library('App_merge_fields');
$merge_fields = $CI->app_merge_fields->all();
echo '<script>
var merge_fields = ' .
json_encode($merge_fields) .
'
</script>';
echo '<script src="' . module_dir_url('whatsapp_api', 'assets/js/underscore-min.js') . '?v=' . $CI->app_scripts->core_version() . '"></script>';
echo '<script src="' . module_dir_url('whatsapp_api', 'assets/js/tribute.min.js') . '?v=' . $CI->app_scripts->core_version() . '"></script>';
echo '<script src="' . module_dir_url('whatsapp_api', 'assets/js/whatsapp_api.js') . '?v=' . $CI->app_scripts->core_version() . '"></script>';
echo '<script src="' . module_dir_url('whatsapp_api', 'assets/js/prism.js') . '?v=' . $CI->app_scripts->core_version() . '"></script>';
if ('template_mapping' == $CI->router->fetch_class() && 'add' == $CI->router->fetch_method()) {
echo '<script src="' . module_dir_url('whatsapp_api', 'assets/js/preview.js') . '?v=' . $CI->app_scripts->core_version() . '"></script>';
}
}
}
// permission for whatsapp api
hooks()->add_filter('staff_permissions', 'whatsapp_api_module_permissions_for_staff');
function whatsapp_api_module_permissions_for_staff($permissions)
{
$viewGlobalName = _l('permission_view') . '(' . _l('permission_global') . ')';
$allPermissionsArray = [
'list_templates_view' => _l('list_of_templates_view'),
'template_mapping_view' => _l('template_mapping_view'),
'template_mapping_add' => _l('template_mapping_create'),
'whatsapp_log_details_view' => _l('whatsapp_log_details_view'),
'whatsapp_log_details_clear' => _l('whatsapp_log_details_clear'),
'broadcast_messages' => _l('broadcast_messages'),
];
$permissions['whatsapp_api'] = [
'name' => _l('whatsapp_api'),
'capabilities' => $allPermissionsArray,
];
return $permissions;
}
/*
* Inject sidebar menu and links for whatsapp_api module
*/
hooks()->add_action('admin_init', 'whatsapp_api_module_init_menu_items');
function whatsapp_api_module_init_menu_items()
{
$CI = &get_instance();
$CI->app_menu->add_sidebar_menu_item('whatsapp_api', [
'slug' => 'whatsapp_api',
'name' => _l('whatsapp'),
'position' => 30,
'icon' => 'fa fa-brands fa-whatsapp menu-icon',
]);
if (has_permission('whatsapp_api', '', 'list_templates_view')) {
$CI->app_menu->add_sidebar_children_item('whatsapp_api', [
'slug' => 'whatsapp_template_view',
'name' => _l('template_list'),
'href' => admin_url('whatsapp_api'),
'position' => 1,
]);
}
if (has_permission('whatsapp_api', '', 'template_mapping_view')) {
$CI->app_menu->add_sidebar_children_item('whatsapp_api', [
'slug' => 'whatsapp_template_details',
'name' => _l('template_mapping'),
'href' => admin_url('whatsapp_api/template_mapping'),
'position' => 2,
]);
}
if (has_permission('whatsapp_api', '', 'whatsapp_log_details_view')) {
$CI->app_menu->add_sidebar_children_item('whatsapp_api', [
'slug' => 'whatsapp_log_details',
'name' => _l('whatsapp_log_details'),
'href' => admin_url('whatsapp_api/whatsapp_log_details'),
'position' => 3,
]);
}
if (has_permission('whatsapp_api', '', 'broadcast_messages')) {
$CI->app_menu->add_sidebar_children_item('whatsapp_api', [
'slug' => 'whatsapp_log_details',
'name' => _l('broadcast_messages'),
'href' => admin_url('whatsapp_api/broadcast_messages'),
'position' => 4,
]);
}
}
//add whatsapp tab in settings
hooks()->add_action('admin_init', 'add_whatsapp_settings_tabs');
function add_whatsapp_settings_tabs()
{
$CI = &get_instance();
$CI->app_tabs->add_settings_tab('whatsapp', [
'name' => _l('whatsapp_cloud_api'),
'view' => 'whatsapp_api/settings/whatsapp_settings',
'icon' => 'fa fa-brands fa-whatsapp menu-icon',
'position' => 50,
]);
}
/**
modules\whatsapp_api\core\Apiinit::check_url(WHATSAPP_API_MODULE);
hooks()->add_action('app_init', WHATSAPP_API_MODULE . '_actLib');
function whatsapp_api_actLib()
{
$CI = &get_instance();
$CI->load->library(WHATSAPP_API_MODULE . '/Env2api');
$envato_res = $CI->env2api->validatePurchase(WHATSAPP_API_MODULE);
if (!$envato_res) {
set_alert('danger', "One of your modules failed its verification and got deactivated. Please reactivate or contact support.");
redirect(admin_url('modules'));
}
}
hooks()->add_action('pre_activate_module', WHATSAPP_API_MODULE . '_sidecheck');
function whatsapp_api_sidecheck($module_name)
{
if ($module_name['system_name'] == WHATSAPP_API_MODULE) {
modules\whatsapp_api\core\Apiinit::activate($module_name);
}
}
hooks()->add_action('pre_deactivate_module', WHATSAPP_API_MODULE . '_deregister');
function whatsapp_api_deregister($module_name)
{
if ($module_name['system_name'] == WHATSAPP_API_MODULE) {
delete_option(WHATSAPP_API_MODULE . "_verification_id");
delete_option(WHATSAPP_API_MODULE . "_last_verification");
delete_option(WHATSAPP_API_MODULE . "_product_token");
delete_option(WHATSAPP_API_MODULE . "_heartbeat");
}
}
*/
hooks()->add_action('lead_created', 'wa_lead_added_hook');
function wa_lead_added_hook($leadID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('leads', $leadID);
}
hooks()->add_action('contact_created', 'wa_contact_added_hook');
function wa_contact_added_hook($contactID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('client', $contactID);
}
hooks()->add_action('after_invoice_added', 'wa_invoice_added_hook');
function wa_invoice_added_hook($invoiceID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('invoice', $invoiceID);
}
hooks()->add_action('after_add_task', 'wa_task_added_hook');
function wa_task_added_hook($taskID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('tasks', $taskID);
}
hooks()->add_action('after_add_project', 'wa_project_added_hook');
function wa_project_added_hook($projectID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('projects', $projectID);
}
hooks()->add_action('proposal_created', 'wa_proposal_added_hook');
function wa_proposal_added_hook($proposalID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('proposals', $proposalID);
}
hooks()->add_action('after_payment_added', 'wa_payment_added_hook');
function wa_payment_added_hook($paymentID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('payments', $paymentID);
}
hooks()->add_action('ticket_created', 'wa_ticket_created_hook');
function wa_ticket_created_hook($ticketID)
{
$CI = &get_instance();
$CI->whatsapp_api_lib->send_mapped_template('ticket', $ticketID);
}
hooks()->add_action('before_cron_run', 'update_whatsapp_template_list');
function update_whatsapp_template_list($manually)
{
if (!empty(get_option('whatsapp_business_account_id')) && !empty(get_option('whatsapp_access_token')) && !empty(get_option('phone_number_id'))) {
$CI = &get_instance();
$whatsapp_business_account_id = get_option('whatsapp_business_account_id');
$whatsapp_access_token = get_option('whatsapp_access_token');
$request = Requests::get(
'https://graph.facebook.com/v14.0/' . $whatsapp_business_account_id . '?fields=id,name,message_templates,phone_numbers&access_token=' . $whatsapp_access_token
);
$response = json_decode($request->body);
$data = $response->message_templates->data;
$insert_data = [];
foreach ($data as $key => $template_data) {
//only consider "APPROVED" templates
if ('APPROVED' == $template_data->status) {
$insert_data[$key]['template_id'] = $template_data->id;
$insert_data[$key]['template_name'] = $template_data->name;
$insert_data[$key]['language'] = $template_data->language;
$insert_data[$key]['status'] = $template_data->status;
$insert_data[$key]['category'] = $template_data->category;
$components = array_column($template_data->components, null, 'type');
$insert_data[$key]['header_data_format'] = $components['HEADER']->format ?? '';
$insert_data[$key]['header_data_text'] = $components['HEADER']->text ?? null;
$insert_data[$key]['header_params_count'] = preg_match_all('/{{(.*?)}}/i', $components['HEADER']->text ?? '', $matches);
$insert_data[$key]['body_data'] = $components['BODY']->text ?? null;
$insert_data[$key]['body_params_count'] = preg_match_all('/{{(.*?)}}/i', $components['BODY']->text, $matches);
$insert_data[$key]['footer_data'] = $components['FOOTER']->text ?? null;
$insert_data[$key]['footer_params_count'] = preg_match_all('/{{(.*?)}}/i', $components['FOOTER']->text ?? null, $matches);
$insert_data[$key]['buttons_data'] = json_encode($components['BUTTONS'] ?? []);
}
}
$insert_data_id = array_column($insert_data, 'template_id');
$existing_template = $CI->db->where_in(array_column($insert_data, 'template_id'))->get(db_prefix() . 'whatsapp_templates')->result();
$existing_data_id = array_column($existing_template, 'template_id');
$new_template_id = array_diff($insert_data_id, $existing_data_id);
$new_template = array_filter($insert_data, function ($val) use ($new_template_id) {
return in_array($val['template_id'], $new_template_id);
});
}
//No need to update template data in db because you can't edit template in meta dashboard
if (!empty($new_template)) {
$CI->db->query("SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci'");
$CI->db->insert_batch(db_prefix() . 'whatsapp_templates', $new_template);
}
}
hooks()->add_filter('get_upload_path_by_type', 'add_broadcast_images_upload_path', 0, 2);
function add_broadcast_images_upload_path($path, $type)
{
if ($type == 'broadcast_images') {
return $path = WHATSAPP_API_UPLOAD_FOLDER . "broadcast_images/";
} else {
return $path;
}
}
