Programador & consultor focado em Web Standards .::. Joomla!, PHP, Javascript, UI/UX


Navegação principal

  • Início
  • Sobre o Autor
  • Consultoria
  • Cursos & Treinamentos
  • Contato

Alguns tópicos gerais

  • Comunidade Software Livre
  • Frontend (HTML, CSS, JS)
  • Ferramentas
  • Joomla®
  • Padrões
  • Off-topic
  • UI/UX

Sobre o autor

Emerson Rocha Luiz

Emerson Rocha Luiz, 27 anos, residente de Porto Alegre, é um Web Developer com 8 anos de experiência.

Além de ativo na comunidade de software livre, costuma ser flexível ao prover consultoria para outros desenvolvedores em áreas que domina.

É sócio-fundador na Alligo, que atende projetos robustos desde o planejamento até o suporte.

Breadcrumbs

  • Você está aqui:
  • Inicio/
  • Artigos/
  • Lar doce Lar

Últimos artigos escritos por Emerson

Curso gratuito de Joomla 1.6 presencial em Porto Alegre

No sábado de 12 de Fevereiro de 2011, ministrarei o curso "Curso gratuito de Joomla! 1.6 presencial em Porto Alegre". O Objetivo do curso é fomentar o uso de Joomla! 1.6 em ambientes multi-usuário, em especial instituições de ensino ou governamental, com cuidado especial para questões de segurança. Pontos fortes do curso:

  • Otimizar o máximo o uso do Joomla! puro, em detrimento da instalação de extensões;
  • Vantagens do Joomla 1.6 em relação ao Joomla 1.5;
  • Segurança em sites Joomla!.

Ainda que o foco seja Joomla! 1.6, que atualmente é a versão mais nova deste CMS, por estar-se em uma fase de transição, no curso será explicitado as diferenças para a versão já consolidada atualmente, o Joomla 1.5, de modo que mesmo aos administradores que tiverem que continuar com essa versão tenham base para tal.

Cronograma

Este cronograma poderá sofrer alterações sutis. Caso tenha interesse em se inscrever, pode aproveitar para sugerir ideias.

Apresentação de o que é CMS

  • O que é um CMS?
  • Comparativo entre Joomla!, Wordpress, Drupal e Plone
  • História do Joomla!

Preparar o CMS Joomla para uso

  • Instalação do Joomla! 1.6
  • Visão geral das configurações do Joomla
  • Otimização para Sistemas de Busca

Administração em Joomla

  • Conceito Componente, Módulo, Plugin e Template (comum J!1.5 e J!1.6)
  • Conceito de template overides;
  • Conceito de Nested Categories (em J!1.5 o sessão/categorias);
  • Conceito da Nova ACL J1.5 (J!1.5: Visitante, Registrado e Especial, e etc);
  • Migração de Joomla! 1.5 para Joomla! 1.6.

Estendendo o CMS Joomla!

  • Aparência do Joomla!
  • O que é possível ir além do Core
  1. Exemplos de principais extensões recomendadas
  2. Visão geral de extensões Joomla

Visão geral do Framework Joomla! (versão para não programadores)

  • Visão rápida do potencial do Framework Joomla!
  1. Tabelas e referências com informações mais comuns OU Manual de primeiros socorros para não-programadores
  2. Por que isso meu código não funciona OU Por que usar o framework lhe protege de ataques
  • Exemplo prático: como criar um módulo
  • Código fonte padrão de demonstração: plugin simples
  • Código fonte padrão de demonstração: componente simples
  • Código fonte padrão de demonstração: template simples
  • Como integrar SUA aplicação dentro do Joomla
  1. Joomla Wapper OU sua página em artigos via iframe
  2. Noção geral de passos mínimos de como integrar sua aplicação dentro do Joomla

Questões de segurança e uso geral dos servidores

  • Servidores: como compactar, descompactar e afins usando por linha de comando OU como evitar fazer upload de arquivo um a um
  • Noção geral de principais tipos de ataques a sites na internet
  1. SQL injection, Cross-site scripting
  • Como invadir um site Joomla!
  1. Princiais causas de invasões em sites Joomla
  • Guia mínimo de como blindar seu site Joomla contra invasões
  • Relação administrador J! e hospedagem: como lidar com isso

Haverá tempo para perguntas.


Importante salientar que, conforme o nível do grupo que for no curso, se for perceptível que a maioria tem bom domínio sobre a administração em Joomla, naturalmente será dado maior enfoque para questões menos conhecidas e de grande importância.

 

Publico Alvo

Não só por questões de limitações da sala e computadores, mas também para melhor atender aos participantes, a quantidade será restrita a 16 pessoas. No caso de maior procura do que a quantidade de vagas não será só considerado a data da demonstração de interesse na participação, mas também dada prioridade ao seguinte publico alvo:

  • Gerentes de TI da UFRGS;
  • Membros da Comunidade JoomlaTchê;
  • Clientes e ex-clientes meus, em especial colaboradores de projetos;
  • Pessao que seja ativa na comunidade Joomla!, ou de outros softwares livres;

Como se inscrever no curso


Interessados deverão demonstrar interesse neste curso via email emerson@webdesign.eng.br, e caso seu perfil se encaixe no publico alvo, favor informar para que tenha prioridade na inscrição do curso


Short URL: http://goo.gl/rzXdE

CURRENT_TIMESTAMP e MySQL: solução de contorno para usar multiplos

CREATE  TABLE IF NOT EXISTS `jos_current_timestamp_workaround` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(255) NULL DEFAULT NULL COMMENT 'your fields here...' ,
  `hits` INT(11) NULL DEFAULT NULL COMMENT 'See J!API JTable' ,
  `ordering` INT(11) NULL DEFAULT NULL COMMENT 'See J!API JTable' ,
  `checked_out` INT(11) NULL COMMENT 'See J!API JTable' ,
  `checked_out_time` DATETIME NULL COMMENT 'See J!API JTable' ,
  `publish_up` DATETIME NULL COMMENT 'See J!API' ,
  `publish_down` DATETIME NULL COMMENT 'See J!API' ,
  `published` TINYINT NULL DEFAULT 1 COMMENT 'See J!API ' ,
  `params` TEXT NULL COMMENT 'See J!API JParameter...' ,
  `created` DATETIME NULL COMMENT 'See tigger' ,
  `updated` DATETIME NULL COMMENT 'See tigger' ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;

DELIMITER $$

DROP TRIGGER IF EXISTS `jos_ctw_created` $$
CREATE TRIGGER jos_ctw_created BEFORE INSERT ON `jos_current_timestamp_workaround` FOR EACH ROW SET
NEW.created = IFNULL(NEW.created, NOW()),
NEW.updated = IFNULL(NEW.updated, '0000-00-00 00:00:00')$$


DROP TRIGGER IF EXISTS `jos_ctw_updated` $$
CREATE TRIGGER jos_ctw_updated BEFORE UPDATE ON `jos_current_timestamp_workaround` FOR EACH ROW SET
NEW.updated = CASE
                  WHEN NEW.updated IS NULL THEN OLD.updated
                  WHEN NEW.updated = OLD.updated THEN NOW()
                  ELSE NEW.updated
              END,
    NEW.updated= IFNULL(NEW.updated, OLD.updated)$$

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

O Código acima é um exemplo de código que você pode testar para resolver seu problema. Se você chegou nesta página é porque provavelmente tentou usar vários CURRENT_TIMESTAMP e descobriu que o MySQL exibe esse erro.

O que esse exemplo faz?
Este exemplo além de conter alguns campos padrões do Joomla, em vez de usar o CURRENT_TIMESTAMP, usa Trigger (gatilhos) do MySQL que são executados antes de inserir um novo dado, e ao atualizar este dado. Como você pode perceber, ele por exemplo não comete o erro de dizer que foi atualizado quando é criado.

Short link: http://goo.gl/ZjsiM

Política anti-spam PSICOPATA

Meu querido spammer brasileiro, você recebeu este link porque você enviou spams, e o remetente desta mensagem está descontente com você, e quer que você, por favor, morra. Ou, no mínimo, peça desculpas e tenha receio de repassar emails dessa pessoa adiante para quem você não odeia.

Leia mais:Política anti-spam PSICOPATA

Receber e enviar emails com outras contas do GMail e Google Apps

Criei um tutorial de como gerenciar seus emails no Google Apps em http://www.gme.ceue.eng.br/Google_Apps.

Neste link, explica com imagens como você pode setar ou seu GMail, ou o Email do seu Google Apps para encaminhar, receber e enviar emails com outras contas

Função para criar usuário novo em Joomla 1.5

Código da Função

<?php
function CreateNewUser($name, $username, $email, $password, $registerDate = NULL, $usertype = 'Registered', $block = '0', $sendEmail = '1', $gid = '18') {
        global $db;

        $db = & JFactory::getDBO();
        jimport('joomla.user.helper');

        //Make the joomla password hash
        $salt = JUserHelper::genRandomPassword(32);
        $crypt = JUserHelper::getCryptedPassword($password, $salt);
        $joomlapassword = $crypt . ':' . $salt;

        //Table #__users
        //Informations about the user
        $user = new stdClass;
        $user->id = NULL;
        $user->name = $name;
        $user->username = $username;
        $user->email = $email;
        $user->password = $joomlapassword;
        $user->registerDate = registerDate;
        $user->usertype = $usertype;
        $user->block = $block;
        $user->sendEmail = $sendEmail;
        $user->gid = $gid;

        if (!$db->insertObject('#__users', $user, 'id')) {
            echo $db->stderr();
            return false;
        }


        //Table #__core_acl_aro
        //Discover what is the last value of value in #__core_acl_aro
        $query = "SELECT value FROM #__core_acl_aro ORDER BY id DESC LIMIT 1";
        $db->setQuery($query);
        $coreaclarolastvalue = $db->loadResult();

        $coreaclaro = new stdClass;
        $coreaclaro->id = NULL;
        $coreaclaro->section_value = 'users';
        $coreaclaro->value = $coreaclarolastvalue + 1;
        $coreaclaro->order_value = NULL;
        $coreaclaro->name = $name;
        $coreaclaro->hidden = NULL;

        if (!$db->insertObject('#__core_acl_aro', $coreaclaro, 'id')) {
            echo $db->stderr();
            return false;
        }

        //Table #__core_acl_groups_aro_map
        $coreaclmap = new stdClass;
        $coreaclmap->group_id = $gid;
        $coreaclmap->section_value = NULL;
        $coreaclmap->aro_id = $coreaclaro->id; // maybe just $user->id ?

        if (!$db->insertObject('#__core_acl_groups_aro_map', $coreaclmap)) {
            echo $db->stderr();
            return false;
        }

        $CreateNewUserInfo = array($user->id, $user->name, $user->username, $user->email);
        return $CreateNewUserInfo;
}

Exemplo de implementação 1


//This exemple will take data from one post, for example
$username = JRequest::getVar('username');
$name = JRequest::getvar('name');
$email = JRequest::getVar('email');
$password = JRequest::getVar('password');

//This code will call your funcion, then register with your data
$NewUserInfo = CreateNewUser($name, $username, $email, $password, $registerDate);

  • Openoffice/BrOffice: sim você pode usar comandos SQLs mais "Avançados"
  • Soluções de erros ao instalar extensões Joomla: componentes, módulos, pluguins e templates
  • Auto-policiamento dos JUGs: como todos podem se ajudar
  • Dê nome aos bois: assine seu nome, não seja genérico!
  • Google ama Conteúdo + Joomla
  • URLs bonitas sem extensões: o core Joomla ao seu favor
  • Locais de referência para Suporte ao Componente Virtuemart
  • Comunidades-Joomla-de-um-homem-só: a morte da essência do nome Joomla!
  • Export Joomla table to CSV (Comma-separated values) file
  • Grupo de usuários Joomla do Rio Grande do Sul - Participe!

Pagina 13 de 22

  • 8
  • ...
  • 10
  • 11
  • 12
  • 13
  • 14
  • ...
  • 16
  • 17

Navegação Complementar

Profissional

  • Cursos e Treinamentos
  • Consutoria em Joomla
  • Perícia Forense Digital

Veja Também

  • Palestras
  • Podcasts
  • Github
  • Bash

Joomla, JPlatform e Afins

  • O que é "Joomleiro"?
  • Dicas para Iniciantes
  • Dicas para Designers
  • Dicas para Programadores
  • Suporte Gratuito
  • Suporte Pago

Recomendo

  • Daniel Correa
  • FabMak
  • Juliana Fernandes
  • Ronildo
Emerson Rocha Luiz © 2013
Site de Web Developer focado em boas práticas. Programação, cursos, treinamentos in company, consutoria e suporte avançado.
Joomla! | HTML5

fititnt.org is not affiliated with or endorsed by the Joomla Project or Open Source Matters. The Joomla logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries
HTML5 Valid