PHP code example of bernacamargo / template_codeigniter-3.1.10

1. Go to this page and download the library: Download bernacamargo/template_codeigniter-3.1.10 library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bernacamargo / template_codeigniter-3.1.10 example snippets


$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'YOURHOST',
    'username' => 'DB_USERNAME',
    'password' => 'DB_PASSWORD',
    'database' => 'DB_NAME',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

/**
 * debug
 *
 * Exibe o conteúdo detalhado e identado de uma variável no PHP
 * 
 * @param  Array $arry
 * @return void
 */
function debug($arry) {
	echo '<pre>' . var_export($arry, TRUE) . '</pre>';
}

/**
 * str_slug
 *
 * Normaliza uma string removendo todos os caracteres especiais, espaços e acentos.
 * 
 * @param  String $str
 * @return String
 */
function str_slug($str) {
    return url_title(convert_accented_characters($str), "-", true);
}

/**
 * format_money
 *
 * Recebe um valor float/ e converte para a exibição padrão do Real com 2 casas decimais, separando os decimais com virgula e a casa de milhares com ponto.
 * 
 * @param  Mixed $money
 * @return void
 */
function format_money($money) {
    $money = floatval($money);
    echo number_format($money, 2, ',', '.');
}

/**
 * validate_card
 *
 * Recebe um número de cartão de crédito e retorna o número do cartão, a bandeira dele e se é valido ou não.
 * 
 * @param  String $number
 * @return array $return
 */
function validate_card($number){
    // Remove spaces
    $number = str_replace(" ", "", $number);

    $cardtype = array(
        'visa'              =>    "/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/",
        'mastercard'        =>    "/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/",
        'discover'          =>    "/^6011-?\d{4}-?\d{4}-?\d{4}$/",
        'amex'              =>    "/^3[4,7]\d{13}$/",
        'diners'            =>    "/^3[0,6,8]\d{12}$/",
        'bankcard'          =>    "/^5610-?\d{4}-?\d{4}-?\d{4}$/",
        'jcb'               =>    "/^[3088|3096|3112|3158|3337|3528]\d{12}$/",
        'enroute'           =>    "/^[2014|2149]\d{11}$/",
        'switch'            =>    "/^[4903|4911|4936|5641|6333|6759|6334|6767]\d{12}$/"
    );

    $type = false;

    if (preg_match($cardtype['visa'], $number)) {
        $type = "visa";
    } else if (preg_match($cardtype['mastercard'], $number)) {
        $type = "mastercard";
    } else if (preg_match($cardtype['amex'], $number)) {
        $type = "amex";
    } else if (preg_match($cardtype['diners'], $number)) {
        $type = 'diners';
    } else if (preg_match($cardtype['bankcard'], $number)) {
        $type = 'bankcard';
    } else if (preg_match($cardtype['jcb'], $number)) {
        $type = 'jcb';
    } else if (preg_match($cardtype['enroute'], $number)) {
        $type = 'enroute';
    } else if (preg_match($cardtype['switch'], $number)) {
        $type = 'switch';
    } else {
        $type =  false;
    }

    $return['valid']    =    LuhnCheck($number);
    $return['ccnum']    =    $number;
    $return['type']     =    $type;

    return $return;
}

/**
 * time_ago
 *
 * Recebe um Timestamp e retorna o tempo que passou desta data até o momento atual.
 * 
 * @param  Integer $time
 * @return boolean
 */

function time_ago($time){
    $time_difference = time() - $time;
    if ($time_difference < 1) {
        return 'less than 1 second ago';
    }
    $condition = array(
        12 * 30 * 24 * 60 * 60 =>  'year',
        30 * 24 * 60 * 60       =>  'month',
        24 * 60 * 60            =>  'day',
        60 * 60                 =>  'hour',
        60                      =>  'minute',
        1                       =>  'second'
    );
    foreach ($condition as $secs => $str) {
        $d = $time_difference / $secs;
        if ($d >= 1) {
            $t = round($d);
            return 'about ' . $t . ' ' . $str . ($t > 1 ? 's' : '') . ' ago';
        }
    }
}

/**
 * hextorgba
 *
 * Recebe uma string referente a um valor hexadecimal, um valor de transparencia entre 0-1 e converte para RGBA.
 * 
 * @param  String $hex
 * @param  Float $transp
 * @return boolean
 */
function hextorgba($hex, $transp = 1) {
    list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
    echo 'rgba(' . $r . ',' . $g . ',' . $b . ', ' . $transp . ')';
}

$config['default'] = ['bootstrap', 'vendors', 'toastr', 'custom'];

$config['modulo_name'] = [
    'css'   =>  [
        site_url('assets/path/to/css/file1.css'),
        site_url('assets/path/to/css/file2.css'),
        site_url('assets/path/to/css/file3.css'),
        site_url('assets/path/to/css/file4.css')
    ],
    'js'    =>  [
        site_url('assets/path/to/js/file1.js'),
        site_url('assets/path/to/js/file2.js'),
        site_url('assets/path/to/js/file3.js'),
        site_url('assets/path/to/js/file4.js')
    ]
];

// Bootstrap 4.3.1
$config['bootstrap'] = [
    'css' => [ 
        'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css',
        site_url('assets/vendors/bootstrap-datepicker-1.9.0-dist/css/bootstrap-datepicker.min.css')
    ],
    'js'  => [
        'https://unpkg.com/popper.js/dist/umd/popper.min.js',
        'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js',
        site_url('assets/vendors/bootstrap-datepicker-1.9.0-dist/js/bootstrap-datepicker.min.js')
    ]
];
// Toastr notification
$config['toastr'] = [
    'css'   =>  [
        site_url('assets/vendors/toastr/toastr.min.css')
    ],
    'js'    =>  [
        site_url('assets/vendors/toastr/toastr.min.js')
    ]
];


/**
 * ====================================
 * ADICIONAR OS PLUGINS NO ARRAY ABAIXO
 * ====================================
 */

// Plugins localizados na pasta assets/vendors
$config['vendors'] = [
    'css' => [

    ],

    'js' => [

    ]
];

// Ultimo módule a ser carregado
$config['custom'] = [
    'css' => [  
        site_url('assets/css/style.css'),
    ],
    'js' => [ 
        site_url('assets/js/functions.js'),         
    ]
];

class Template {

    // instancia do codeigniter
    public $ci;

    // arquivos de css para carregar na página
    public $css;

    // arquivos de js para carregar na página
    public $js;

    // as views que serão carregadas
    public $views = array();

    // modulos para carregar
    public $modules = array();

    // adiciona uma variavel a ser carregada na view
    public $data = array();

    // pagina a ser carregada
    public $p_page = 'home';

    // guard
    public $guard;

    // titulo da pagina
    public $title = '';

    // método construtor
    public function __construct() {

        // pega a instancia do ci
        $this->ci =& get_instance();

        // pega a biblioteca de configuração
        $this->ci->config->load( 'assets' );

        // pega a biblioteca de guard
        $this->ci->load->library( 'Guard' );
        $this->guard = $this->ci->guard;

        // carrega os módulos padrão
        $this->loadDefault();
    }
}

    /**
     * set
     *
     * seta o valor para uma variavel
     * 
     * @param String $chave
     * @param String $valor
     * @return void
     */
    public function set( $chave, $valor ) {
        $this->data[$chave] = $valor;
    }

class Usuario extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('Usuarios_model');
    }

    public function index(){
        $usuarios = $this->Usuarios_model->getAll(); // busca todos os usuarios no bd
        $this->template->set("usuarios", $usuarios); // seta os usuarios ($usuarios) encontrados para a posição 'usuarios' do array do template
    }
}

    /**
     * item
     *
     * pega o valor de uma varivel
     * 
     * @param  String
     * @return mixed [Retorna o objeto do array indicado pela $chave ou null caso não exista]
     */
    public function item( $chave ) {
        return ( isset( $this->data[$chave] ) ) ? $this->data[$chave] : null;
    }

$usuarios = $this->template->item('usuarios'); //Armazena em $usuarios os dados adicionados anteriormente no controller

foreach ($usuarios as $user) {
    echo $user['nome'] . '<br>';
}

    /**
     * set_title
     *
     * Define o titulo da página html
     * 
     * @param String $title [Titulo da página]
     * @return void
     */
    public function set_title( $title ) {
        $this->title = $title;
    }

class Home extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index(){
        $this->template->set_title("Página inicial"); // Seta o titulo da pagina
    }
}

    /**
     * print_title
     *
     * Exibe o titulo atual
     * 
     * @return void
     */
    public function print_title() {
        echo $this->title;
    }

    /**
     * print_js
     *
     * Imprime o js
     * 
     * @return void
     */
    public function print_js() {
        if(count($this->js) > 0){
            foreach( $this->js as $js ) {
                if(ENVIRONMENT == 'production')
                echo '<script src="'.$js.'" type="text/javascript"></script>';
                else{
                    echo '<script src="'.$js.'?version='.time().'" type="text/javascript"></script>';
                }
            }
        }
    }

        .
        .
        .
        <!-- PRINT JS - CONFIG IN config/assets.php -->
         $template->print_js(); 

    /**
     * print_css
     *
     * Imprime o css
     * 
     * @return void
     */
    public function print_css() {
        if(count($this->css) > 0){
            foreach( $this->css as $css ) {
                if(ENVIRONMENT == 'production'){
                    echo '<link href="'.$css.'" rel="stylesheet" media="screen"/>';
                }
                else{
                    echo '<link href="'.$css.'?version='.time().'" rel="stylesheet" media="screen"/>';   
                }
                
            }
        }
    }

    /**
     * page
     *
     * carrega um componente
     * 
     * @param  String
     * @param Array $var [Array de dados a serem enviados para a view]
     * @return void
     */
    public function print_component( $component , $var = false) {
        
        // carrega a pagina
        $this->ci->load->view( 'components/'.$component, $var);
    }

    /**
     * print_page
     *
     * Carrega uma view salva em views/pages/[view].php
     * 
     * @param  String
     * @return void
     */
    public function print_page( $page = false ){

        // verifica se o usuário deseja carregar uma pagina em especifico
        $this->p_page = $page ? $page : $this->p_page;

        // carrega a pagina
        $this->ci->load->view( 'pages/'.$this->p_page );
    }

    /**
     * render
     *
     * Renderiza a página escolhida em um layout escolhido (master.php)
     * 
     * @param  String $layout
     * @param  String $page
     * @return void
     */
    public function render( $layout = false, $page = false ) {

        // carrega os modulos
        $this->loadModules();

        // verifica se o usuário deseja carregar uma pagina em especifico
        $this->p_page = $page ? $page : $this->p_page;

        // carrega a view
        $this->ci->load->view( $layout, [ 'template' => $this ] );
    }

class Home extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index(){
        $this->template->set_title("Página inicial"); // Seta o titulo da pagina
        $this->template->render('master', 'home'); // Carrega a view /views/pages/home.php dentro do layout views/master.php
    }
}

class Guard {

    // instancia do codeigniter
    public $ci;

    // dados do usuario logado
    public $user = false;

    // método construtor
    public function __construct() {

        // pega a instancia do ci
        $this->ci =& get_instance();

        // carrega a librarie de sessao
        $this->ci->load->library( 'session' );

        // pega os dados do usuario
        if ( $user = $this->ci->session->userdata( 'user' ) ) {
            $this->user = $user;
        }
    }

    /**
     * logged
     *
     * Verifica se o usuário está logado ou não
     * 
     * @return Boolean
     */
    public function logged(){
        return $this->user ? true : false;
    }

  if($this->guard->logged()){
    echo 'Usuário logado';
  }
  else{
    echo 'Usuário deslogado';
  }
  

    /**
     * item
     *
     * Retorna um item do array $user salvo na sessão
     * 
     * @param  String $key [Campo do array $user]
     * @return Object or NULL
     */
    public function item( $key ) {
        return isset( $this->user[$key] ) ? $this->user[$key] : null;
    }

$nome = $this->guard->item('nome');
echo $nome;
// Fulano da Silva

    /**
     * login
     *
     * Tenta fazer o login do usuario através de um e-mail e senha inseridos
     * 
     * @param  String $email [E-mail para logar]
     * @param  String $senha [Senha para logar]
     * @return Boolean
     */
    public function login( $email, $senha ) {

        // carrega a model de usuários
        $this->ci->load->model( 'Usuarios_model' );

        // faz o login
        if ( $user = $this->ci->Usuarios_model->validate( $email ) ) {
            
            // Valida a senha do usuário
            // Para cadastrar a senha no banco utilize a função password_hash() do PHP
            if(password_verify($senha, $user['senha'])){        
                // guarda na sessao
                $this->ci->session->set_userdata( 'user', $user );            
                
                // guarda no atributo
                $this->user = $user;
                
                return true;
            }
        }
        
        return false;
    }

$email = '[email protected]';
$senha = '123456';

if($this->guard->login($email, $senha)){
    echo 'Bem-vindo!';
}
else{
    echo 'Credenciais inválidas';
}

    /**
     * update
     *
     * Busca o usuario no banco de dados e atualiza a sessão com os dados 'novos'
     * 
     * @return Boolean
     */
    public function update() {

        // verifica se existe um usuário logado
        if ( !$this->user ) return false;

        // carrega a model de usuários
        $this->ci->load->model( 'Usuarios_model' );

        // pega os dados do perfil do usuario logado
        if ( $user = $this->ci->Usuarios_model->getById( $this->user['id_usuario'] ) ) {

            // seta a sessao
            $this->ci->session->set_userdata( 'user', $user );

            // seta o usuario
            $this->user = $user;

            return true;

        } else return false;
    }

echo $this->guard->item('nome'); // Fulano da Silva

$dados = ['id' => $id_usuario, 'nome' => 'Bernardo'];  //Seta os dados para o update

$this->Usuarios_model->update($dados); // Atualiza o nome do usuario com id = $id_usuario

echo $this->guard->item('nome'); // Fulano da Silva

$this->guard->update(); // Atualiza a sessão com os valores do banco

echo $this->guard->item('nome'); // Bernardo

    /**
     * getShortName
     *
     * @param String $nome [Nome completo do usuario]
     * @return String [Concatena o primeiro e o ultimo nome do usuario]
     */
    public function getShortName($nome = false){
        if(!$nome)
            $nome = $this->user['nome'];

        $nomes = explode(" ", $nome);

        if(count($nomes) > 1)
            $nome = $nomes[0] . " " . $nomes[count($nomes)-1];        
        else
            $nome = $nomes[0];

        return $nome;
    }

echo $this->guard->item('nome'); // Fulano da Silva

echo $this->guard->getShortName(); // Fulano Silva

echo $this->guard->getShortName('Fulano de Oliveira da Silva'); // Fulano Silva


    /**
     * logout
     *
     * Limpa a sessão 'user'
     * 
     * @return void
     */
    public function logout() {
        $this->ci->session->unset_userdata('user');
    }

$this->guard->logout();

class MY_Controller extends CI_Controller {
    
    // médoto construtor
    public function __construct() {
        parent::__construct();
     
        // Carrega o Template e Guard
        $this->load->library( 'Template' );
        $this->load->library( 'Guard' );
    }
}

class MY_Model extends CI_Model {
    
    /**
    * table
    *
    * nome da tabela no model
    *
    * @protected
    */
    protected $table;

    /**
    * table_id
    *
    * chave da tabela no model
    *
    * @protected
    */
    protected $table_id;

    public function __construct() {
        parent::__construct();
    }
}

class Usuarios_model extends MY_Model {

    /**
    * table
    *
    * nome da tabela no model
    *
    * @protected
    */
    protected $table = 'usuarios';

    /**
    * table_id
    *
    * chave da tabela no model
    *
    * @protected
    */
    protected $table_id = 'id_usuario';

    // metodo construtor
    public function __construct() {
        parent::__construct();
    }
}

    /**
    * create
    * 
    * insere um novo dado
    *
    * @param Array $dados [Dados a serem inseridos na tabela]
    * @return Boolean [Retorna true caso os dados tenham sido inseridos e false caso contrario]
    */
    public function create( $dados ){
        return $this->db->insert( $this->table, $dados );
    }

$this->load->model('Usuarios_model');

$dados = [
    'nome'          => 'Fulano da Silva',
    'email'         => '[email protected]',
    'senha'         => '123456',
    'sexo'          => 'masculino',
    'data_nasc'     => '1996-04-03'
]; 

if($this->Usuarios_model->create($dados)){
    echo 'Usuário cadastrado com sucesso!';
}
else{
    echo 'Houve um erro no servidor.';
}


   /**
    * update
    * 
    * atualiza um dado
    *
    * @param Array $dados [Dados a serem atualizados. *O campo 'id' deve ser passado obrigatoriamente]
    * @return Boolean [Retorna true caso os dados tenham sido atualizados e false caso tenha algum erro de lógica no SQL]
    */
    public function update( $dados ) {

        // prepara os dados
        $this->db->where( $this->table_id, $dados['id']);

        // deleta o id
        unset( $dados['id'] );
        if ( isset( $dados[$this->table_id] ) ) unset( $dados[$this->table_id] );

        // faz o update
        return $this->db->update($this->table, $dados); 
    }

$this->load->model('Usuarios_model');

$dados = [
    'id'            => 1,
    'nome'          => 'Fulano da Silva',
    'email'         => '[email protected]',
    'senha'         => '123456',
    'sexo'          => 'masculino',
    'data_nasc'     => '1996-04-03'
]; 

if($this->Usuarios_model->update($dados)){
    echo 'Usuário atualizado com sucesso!';
}
else{
    echo 'Houve um erro no servidor.';
}


   /**
    * delete
    * 
    * deleta um dado
    *
    * @param mixed $id [Chave primária da tabela]
    * @return Boolean [Retorna true caso remova a linha ou false caso contrario]
    */
    public function delete( $id ) {
        $this->db->where( $this->table_id, $id );
        return $this->db->delete( $this->table ); 
    }

$this->load->model('Usuarios_model');

if($this->Usuarios_model->delete(1)){
    echo 'Usuário deletado com sucesso!';
}
else{
    echo 'Houve um erro no servidor.';
}

    /**
    * getById
    * 
    * pega um dado por id
    *
    * @param  $id [Chave primária da tabela]
    * @return mixed [Retorna um array com os dados requisitados ou false caso não encontre nada]
    */
    public function getById( $id ){
        
        // faz a busca
        $this->db->select( '*' )
        ->from( $this->table )
        ->where( [$this->table_id => $id ] );
        $query = $this->db->get();

        // verifica se existem resultados
        return ( $query->num_rows() > 0 ) ? $query->result_array()[0] : false;
    }

$this->load->model('Usuarios_model');

$user = $this->Usuarios_model->getById(1);

if($user){
    echo $user['nome']; //Fulano da Silva
}
else{
    echo 'Usuário não encontrado';
}

    /**
    * getAll
    * 
    * pega todos os registros
    *
    * @param mixed $where [Opcional: Condições da consulta]
    * @param String $fields [Opcional: Campos do SELECT da consulta]
    * @param mixed $orderby [Opcional: Ordenação da consulta]
    * @return mixed [Retorna a coleção de dados requisitadas em uma matriz]
    */
    public function getAll( $where = false, $fields = '*', $orderby = false) {
        
        if($orderby){
            $orderby = explode(" ", $orderby);
            $order = $orderby[1];
            $order_colum = $orderby[0];
        }
        else{
            $order = 'asc';
            $order_colum = $this->table_id;
        }

        // monta a busca
        $this->db->select( $fields );
        $this->db->from( $this->table );

        //verifica se existe um where
        if ( $where ) $this->db->where( $where );

        $this->db->order_by($order_colum, $order);

        // pega os dados do banco
        $query = $this->db->get();

        // verifica se existem resultados
        return ( $query->num_rows() > 0 ) ? $query->result_array() : false;
    }   

$this->load->model('Usuarios_model');

$users = $this->Usuarios_model->getAll(); // Busca todas as tuplas da tabela `usuarios`

if($users){
    foreach ($users as $user) {
        echo $user['nome'] . '<br>';
    }
}
else{
    echo 'Usuário não encontrado';
}

$this->load->model('Usuarios_model');

$users = $this->Usuarios_model->getAll('sexo = masculino', 'usuarios.nome', 'nome asc'); // Será feita a consulta na tabela `usuarios` atrás das tuplas que possuem o sexo definido como masculino e retornará todos os nomes em ordem crescente.

if($users){
    foreach ($users as $user) {
        echo $user['nome'] . '<br>';
    }
}
else{
    echo 'Usuário não encontrado';
}

$this->load->model('Usuarios_model');

$users = $this->Usuarios_model->getAll(false, 'usuarios.nome', 'nome asc'); // Será feita a consulta na tabela `usuarios` e retornara todos os nomes dos usuarios ordenados pelo nome crescente.

if($users){
    foreach ($users as $user) {
        echo $user['nome'] . '<br>';
    }
}
else{
    echo 'Usuário não encontrado';
}

    /**
     * getAllLimit
     * 
     * @param int $limit [Inteiro que define a quantidade máxima de resultados da consulta]
     * @return Array[] [Retorna a coleção de dados requisitadas em uma matriz]    
     * 
     */
    public function getAllLimit($limit){
        $this->db->from($this->table)
        ->select('*')
        ->limit($limit);

        $busca = $this->db->get();

        return ($busca->num_rows() > 0) ? $busca->result_array() : array();

    }

$this->load->model('Usuarios_model');

$users = $this->Usuarios_model->getAllLimit(5); // Será feita a consulta na tabela `usuarios` e retornará as 5 primeiras linhas.

if($users){
    foreach ($users as $user) {
        echo $user['nome'] . '<br>';
    }
}
else{
    echo 'Usuário não encontrado';
}

public function login(){
    $post = $this->input->post();

    if($this->guard->login($post['email'], $post['senha'])){
        $this->session->set_flashdata('success', 'Bem vindo!');
    }
    else
        $this->session->set_flashdata('error', 'Credenciais inválidas.');

    redirect(site_url(),'location');
}

 if($this->session->flashdata('success')): 

$this->session->set_flashdata('success', 'Muito bom, sua ação foi concluída com sucesso!');