117 lines
3.9 KiB
PHP
117 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Name: Sistema de Ramais Telefônicos
|
|
* Description: Plugin para gerenciar e exibir ramais telefônicos com busca, filtros e paginação.
|
|
* Shortcodes disponíveis: [lista_ramais], [lista_ramais per_page="10"]
|
|
* Version: 1.0
|
|
* Author: Marco Antonio Vivas
|
|
* Text Domain: ramais-telefonicos
|
|
*/
|
|
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
// Definição de constantes
|
|
define('RAMAIS_TELEFONICOS_VERSION', '4.0');
|
|
define('RAMAIS_TELEFONICOS_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
|
define('RAMAIS_TELEFONICOS_PLUGIN_URL', plugin_dir_url(__FILE__));
|
|
define('RAMAIS_TELEFONICOS_CSV_DIR', wp_upload_dir()['basedir'] . '/ramais-telefonicos/');
|
|
define('RAMAIS_TELEFONICOS_CSV_FILE', RAMAIS_TELEFONICOS_CSV_DIR . 'bancodados.csv');
|
|
define('RAMAIS_TELEFONICOS_PER_PAGE', 15);
|
|
|
|
// Carrega as classes necessárias
|
|
require_once RAMAIS_TELEFONICOS_PLUGIN_DIR . 'includes/class-ramais-database.php';
|
|
require_once RAMAIS_TELEFONICOS_PLUGIN_DIR . 'includes/class-ramais-admin.php';
|
|
require_once RAMAIS_TELEFONICOS_PLUGIN_DIR . 'includes/class-ramais-frontend.php';
|
|
require_once RAMAIS_TELEFONICOS_PLUGIN_DIR . 'includes/class-ramais-ajax.php';
|
|
|
|
class Ramais_Telefonicos {
|
|
private static $instance = null;
|
|
public $database;
|
|
public $admin;
|
|
public $frontend;
|
|
public $ajax;
|
|
|
|
private function __construct() {
|
|
$this->init();
|
|
}
|
|
|
|
public static function get_instance() {
|
|
if (null === self::$instance) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
private function init() {
|
|
// Inicializa os componentes
|
|
$this->database = new Ramais_Database();
|
|
$this->admin = new Ramais_Admin($this->database);
|
|
$this->frontend = new Ramais_Frontend($this->database);
|
|
$this->ajax = new Ramais_Ajax($this->database);
|
|
|
|
// Hooks de ativação/desativação
|
|
register_activation_hook(__FILE__, array($this, 'activate'));
|
|
register_deactivation_hook(__FILE__, array($this, 'deactivate'));
|
|
|
|
// Inicialização
|
|
add_action('plugins_loaded', array($this, 'load_textdomain'));
|
|
add_action('wp_enqueue_scripts', array($this, 'enqueue_assets'));
|
|
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets'));
|
|
}
|
|
|
|
public function activate() {
|
|
// Cria o diretório se não existir
|
|
if (!file_exists(RAMAIS_TELEFONICOS_CSV_DIR)) {
|
|
wp_mkdir_p(RAMAIS_TELEFONICOS_CSV_DIR);
|
|
}
|
|
|
|
// Se o arquivo CSV não existe, cria com cabeçalho
|
|
if (!file_exists(RAMAIS_TELEFONICOS_CSV_FILE)) {
|
|
$header = array('Ramal', 'Responsável', 'Secretaria', 'Setor', 'Email');
|
|
$this->database->write_csv_row($header);
|
|
}
|
|
}
|
|
|
|
public function deactivate() {
|
|
// Nada a fazer por enquanto
|
|
}
|
|
|
|
public function load_textdomain() {
|
|
load_plugin_textdomain('ramais-telefonicos', false, dirname(plugin_basename(__FILE__)) . '/languages/');
|
|
}
|
|
|
|
public function enqueue_assets() {
|
|
wp_enqueue_style(
|
|
'ramais-telefonicos-css',
|
|
RAMAIS_TELEFONICOS_PLUGIN_URL . 'assets/css/ramais.css',
|
|
array(),
|
|
RAMAIS_TELEFONICOS_VERSION
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'ramais-telefonicos-js',
|
|
RAMAIS_TELEFONICOS_PLUGIN_URL . 'assets/js/ramais.js',
|
|
array('jquery'),
|
|
RAMAIS_TELEFONICOS_VERSION,
|
|
true
|
|
);
|
|
|
|
wp_localize_script('ramais-telefonicos-js', 'ramaisVars', array(
|
|
'ajaxurl' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('ramais_telefonicos_nonce')
|
|
));
|
|
}
|
|
|
|
public function enqueue_admin_assets() {
|
|
wp_enqueue_style(
|
|
'ramais-telefonicos-admin-css',
|
|
RAMAIS_TELEFONICOS_PLUGIN_URL . 'assets/css/admin-ramais.css',
|
|
array(),
|
|
RAMAIS_TELEFONICOS_VERSION
|
|
);
|
|
}
|
|
}
|
|
|
|
// Inicializa o plugin
|
|
Ramais_Telefonicos::get_instance(); |