Files
ramais/ramais-telefonicos.php
2025-08-08 22:13:35 -03:00

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();