<?php
    /*
      Plugin Name: Gama SMS
      Plugin URI: https://gamanet.pe/gama-sms-plugin-para-wordpress/
      Description: Notificaciones de registro, contacto, pedidos, etc. Envio de mensajes de texto SMS y whatsapp. Integracion con Contact Form 7, wpforms, woocommerce, Gravity forms, lista de envio, etc. 
      Author: Jaime Wong Q.
      Version: 2.3.3
      Author URI: http://www.soporte-voip.com/soporte-profesionales.html
    */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
} // Exit if accessed directly

/**
 * Load Plugin Defines and class
 */
require_once dirname(__FILE__) . '/admin/defines.php';
require_once dirname(__FILE__) . '/class/gama-form.php';
require_once dirname(__FILE__) . '/class/gama-sms.php';
require_once dirname(__FILE__) . '/class/gama-integrations.php';
require_once dirname(__FILE__) . '/plugin-update-checker/plugin-update-checker.php';


session_start();
// Verificar que la libreria gd est activa
if(extension_loaded('gd')){
  require_once dirname(__FILE__) . '/admin/catpcha/simple-php-captcha.php';
  $_SESSION['captcha'] = simple_php_captcha();
}

/**
 * Get plugin options
 */
$wpgamasms_option = get_option( 'wpgamasms_settings' );

/**
 * sms send functions
 */
$gama_sms = new gama_sms;

/**
 * integrations
 */
new GamaIntegrations();

/**
 * funcion api para desarrolladores
 */
require_once dirname(__FILE__) . '/admin/api_functions.php';


/**
 * funciones diversas
 */
require_once dirname(__FILE__) . '/admin/functions.php';
   
     // Funciones de install de plugin
     register_activation_hook(__FILE__,'gamasms_activar');
     register_deactivation_hook(__FILE__,'gamasms_desactivar');
	 register_uninstall_hook(__FILE__,'gamasms_uninstall');

// Funciones que crea el menu
     function gamasms_crear_menu(){
         add_menu_page(
            '',
            'GamaSMS',
            '', 
            'gama_menu',
            '',
             plugin_dir_url(__FILE__).'admin/img/sms-icon3-24.jpg',
             '1'
         );



         add_submenu_page(
            'gama_menu',
            'Enviar SMS',
            'Enviar SMS',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/EnviarMenu.php', // ruta de pagina que se muestra
            null
         );



         add_submenu_page(
            'gama_menu',
            'Suscriptores',
            'Suscriptores',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/SubscribesMenu.php', // ruta de pagina que se muestra
            null
         );


         add_submenu_page(
            'gama_menu',
            'Grupos',
            'Grupos',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/GroupsMenu.php', // ruta de pagina que se muestra
            null
         );

         add_submenu_page(
            'gama_menu',
            'Formularios',
            'Formularios',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/FormsMenu.php', // ruta de pagina que se muestra
            null
         );
	 
         add_submenu_page(
            'gama_menu',
            'Lista No Permitidos',
            'Lista No Permitidos',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/BlackListMenu.php', // ruta de pagina que se muestra
            null
         );
		 
         add_submenu_page(
            'gama_menu',
            'Reporte Enviados',
            'Reporte Enviados',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/MsgDetailsMenu.php', // reporte de mensajes enviados
            null
         );
		 
         add_submenu_page(
            'gama_menu',
            'Mensajes Recibidos',
            'Mensajes Recibidos',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/MsgIncomingMenu.php', // Mensajes recibidos
            null
         );

         add_submenu_page(
            'gama_menu',
            'Configuracion',
            'Configuracion',
            'manage_options',
            plugin_dir_path(__FILE__).'admin/ConfigMenu.php', // ruta de pagina que se muestra
            null
         );


     }	 
	 // Genera menus
     add_action('admin_menu','gamasms_crear_menu');


//Encolar js bootstarp.min.js
    function BootstrapJS($hook){
		// solo es cargdo desde el path del plugin gamasms
		if( strpos($hook,"gamasms") === false ){
           return ; // regresa si no es llamado dede el path gamasms
        }
        wp_enqueue_script('BootstrapJS',plugin_dir_url(__FILE__).'admin/bootstrap/js/bootstrap.min.js',array('jquery'),'1.1');
     } 
     add_action( 'admin_enqueue_scripts', 'BootstrapJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php

    //Encolar js bootstrap.min.css
    function BootstrapCSS($hook){
		// solo es cargdo desde el path del plugin gamasms
		if( strpos($hook,"gamasms") === false ){
           return ; // regresa si no es llamado dede el path gamasms 
        }
        wp_enqueue_style('BootstrapCSS',plugin_dir_url(__FILE__).'admin/bootstrap/css/bootstrap.min.css');
     } 
     add_action( 'admin_enqueue_scripts', 'BootstrapCSS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php

// Encolar js gamasms.css
    function GamasmsCSS($hook){
		// solo es cargdo desde el path del plugin gamasms
		if( strpos($hook,"gamasms") === false ){
           return ; // regresa si no es llamado dede el path gamasms 
        }
        wp_enqueue_style('GamasmsCSS',plugin_dir_url(__FILE__).'admin/css/gamasms.css');
     } 
     add_action( 'admin_enqueue_scripts', 'GamasmsCSS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.css

    //Encolar js ConfigMenu.js
    function ConfigMenuJS($hook){
		// solo es cargdo desde el path del plugin gamasms
        if($hook != "gamasms/admin/ConfigMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('ConfigMenuJS',plugin_dir_url(__FILE__).'admin/js/ConfigMenu.js',array('jquery'),'2.2');
		// Inyecta en el script ConfigMenu.js el objeto gama_obj
		wp_localize_script('ConfigMenuJS','gama_obj',['url'=>admin_url('admin-ajax.php'),'sec'=>wp_create_nonce('my_secure')]);

     }

     // cargando javascrit de configmenu 
     add_action( 'admin_enqueue_scripts', 'ConfigMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php		
	 
	 // Guardado la configuracion integrations
	 add_action( 'wp_ajax_save-config-integrations','save_config_integrations');
	  
	 // Guardado la configuracion general
	 add_action( 'wp_ajax_save-config-general','save_config_general');


//Encolar js EnviarMenu.js
    function EnviarMenuJS($hook){
        if($hook != "gamasms/admin/EnviarMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('EnviarMenuJS',plugin_dir_url(__FILE__).'admin/js/EnviarMenu.js',array('jquery'),'2.1');

     }

     add_action( 'admin_enqueue_scripts', 'EnviarMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php


//Encolar js FormsMenu.js
    function FormsMenuJS($hook){
        if($hook != "gamasms/admin/FormsMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('FormsMenuJS',plugin_dir_url(__FILE__).'admin/js/FormsMenu.js',array('jquery'),'1.9');
        wp_localize_script('FormsMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'FormsMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php


//Encolar js GroupsMenu.js
    function GroupsMenuJS($hook){
        if($hook != "gamasms/admin/GroupsMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('GroupsMenuJS',plugin_dir_url(__FILE__).'admin/js/GroupsMenu.js',array('jquery'),'1.2');
        wp_localize_script('GroupsMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'GroupsMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php

//Encolar js SubscribesMenu.js
    function SubscribesMenuJS($hook){
        if($hook != "gamasms/admin/SubscribesMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('SubscribesMenuJS',plugin_dir_url(__FILE__).'admin/js/SubscribesMenu.js',array('jquery'),'3.13');
        wp_localize_script('SubscribesMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'SubscribesMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php
	 
	 
//Encolar js MsgDetailsMenu.js
    function MsgDetailsMenuJS($hook){
        if($hook != "gamasms/admin/MsgDetailsMenu.php"){
           return ; // regresa si no es llamado dede el archivo MsgDetailsMenu.php 
        }
        wp_enqueue_script('MsgDetailsMenuJS',plugin_dir_url(__FILE__).'admin/js/MsgDetailsMenu.js',array('jquery'),'1.14');
        wp_localize_script('MsgDetailsMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'MsgDetailsMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php
	 
	 
//Encolar js MsgIncomingMenu.js
    function MsgIncomingMenuJS($hook){
        if($hook != "gamasms/admin/MsgIncomingMenu.php"){
           return ; // regresa si no es llamado dede el archivo MsgIncomingMenu.php 
        }
        wp_enqueue_script('MsgIncomingMenuJS',plugin_dir_url(__FILE__).'admin/js/MsgIncomingMenu.js',array('jquery'),'1.18');
        wp_localize_script('MsgIncomingMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'MsgIncomingMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php


// Ajax de editar y borrar los forms   
    add_action('wp_ajax_peticionajax','OptionsForms');

 // Ajax de editar y borrar los Groups  
    add_action('wp_ajax_peticiongroupsajax','OptionsGroups');


// Ajax de editar y borrar los Subscribes
    add_action('wp_ajax_peticionsubscribesajax','OptionsSubscribes');
	
// Ajax de borrar los Msg Details
    //add_action('wp_ajax_peticionsubscribesajax','OptionsMsgDetails');
	add_action('wp_ajax_peticiondetailsajax','OptionsMsgDetails');
	
// Ajax de borrar los Msg Incoming
	add_action('wp_ajax_peticionincomingajax','OptionsMsgIncoming');

// Shortcode forms
    add_shortcode("FORM_SMS","showform");
	  
	  
	  
//Encolar js BlackListMenu.js

    function BlackListMenuJS($hook){
        if($hook != "gamasms/admin/BlackListMenu.php"){
           return ; // regresa si no es llamado dede el archivo EnviarMenu.php 
        }
        wp_enqueue_script('BlackListMenuJS',plugin_dir_url(__FILE__).'admin/js/BlackListMenu.js',array('jquery'),'1.1');
        wp_localize_script('BlackListMenuJS','SolicitudesAjax',[
            'url' => admin_url('admin-ajax.php'),
            'seguridad' => wp_create_nonce('seg')
        ]);

     }

     add_action( 'admin_enqueue_scripts', 'BlackListMenuJS' ); // add_action, esta funcion solo puede ser ejecutada desde gamanetsms.php


 // Ajax de editar y borrar los BlackList  
    add_action('wp_ajax_peticionblacklistajax','OptionsBlackList');
	
	// Sistema de actualizcion https://github.com/YahnisElsts/wp-update-server
	$MyUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
		'https://www.gamanet.pe/plugin-update-server/?action=get_metadata&slug=gamasms', //Metadata URL.
		__FILE__, //Full path to the main plugin file.
		'gamasms' //Plugin slug. Usually it's the same as the name of the directory.
	);
	
	
	
/**
 * This function runs when WordPress completes its upgrade process
 * It iterates through each plugin updated to see if ours is included
 * @param $upgrader_object Array
 * @param $options Array
 */
function wp_gamasms_upgrade_completed( $upgrader_object, $options ) {
 // The path to our plugin's main file
 $our_plugin = plugin_basename( __FILE__ );
 // If an update has taken place and the updated type is plugins and the plugins element exists
 if( $options['action'] == 'update' && $options['type'] == 'plugin' && isset( $options['plugins'] ) ) {
  // Iterate through the plugins being updated and check if ours is there
  foreach( $options['plugins'] as $plugin ) {
   if( $plugin == $our_plugin ) {
    // actualizamos db y otros
    gamasms_update_plugin();
   }
  }
 }
}
add_action( 'upgrader_process_complete', 'wp_gamasms_upgrade_completed', 10, 2 );


/**
 * @snippet       Add Select Field to "My Account" Register Form | WooCommerce
 * @how-to        Get CustomizeWoo.com FREE
 * @sourcecode    https://businessbloomer.com/?p=72508
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.5.7
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
// -------------------
// 1. Show field @ My Account Registration

/*  
add_action( 'woocommerce_register_form', 'bbloomer_extra_register_select_field' );
  
function bbloomer_extra_register_select_field() {
    
    ?>
  
<p class="form-row form-row-wide">
<label for="user_town">Telefono<br />
<input type="text" id="billing_phone" name="billing_phone" class="input" size="25" value=""></label>
</p>
  
<?php
    
}
  
// -------------------
// 2. Save field on Customer Created action
  
add_action( 'woocommerce_created_customer', 'bbloomer_save_extra_register_select_field' );
   
function bbloomer_save_extra_register_select_field( $customer_id ) {
if ( isset( $_POST['billing_phone'] ) ) {
        update_user_meta( $customer_id, 'billing_phone', $_POST['billing_phone'] );
}
}
*/  
  
?>