/**
* 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 . ')';
}
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;
}
/**
* 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;
}
/**
* 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;
}
/**
* 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);
}
/**
* 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!');
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.