RSS
 

Archive for fevereiro, 2010

Como criar um plugin para WordPress

19 fev

Developers,

navegando no blog no meu parceiro @leandroviera, me deparei com os slides de sua palestra no CMS Brasil de 2009, e como são muito boas as suas explicações, segue abaixo para vocês consultarem e aprenderem mais um pouco sobre como criar um plugin para wordpress.

Abraços

 
2 Comments

Posted in WordPress

 

O que há de novo no Zend Framework 1.10.1

11 fev

Saiu ontem a versão Zend Framework 1.10.1, a primeira da série 1.10 lançada no último mês. Foram corrigidos mais de 50 bugs desde a versão 1.10.0, trazendo mais estabilidade e maturidade ao Zend Framework.
No nosso manual online também obtivemos novidades, como a integração dos usuários através de comentários, bastando inserir nome, senha e CAPTCHA, todos comentários serão moderados com verificação de spam e moderação pela equipe da Zend. Este mesmos comentários, só poderão ser feitos na atual versão do framework, assim evitando diferentes informações de uma versão para a outra.

É isso developers, espero que o Zend Framework continue crescendo assim e melhorando cada vez a nossa vida como desenvolvedor!

Abraços

 

Como criar um sistema de login com Zend Framework

06 fev

Developers,

primeiramente entendam que Zend_Auth lida apenas com autenticação e não autorização (mais para frente iremos ver como através da Zend_Acl). A autenticação é feita com base em credenciais, verificando a identidade do usuário, portanto vamos criar uma tabela de usuários chamada users em nosso banco de dados Sample Project.

Criando a tabela no banco de dados

CREATE TABLE `sampleproject`.`users` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_name` VARCHAR( 150 ) NOT NULL ,
`user_email` VARCHAR( 64 ) NOT NULL ,
`user_password` CHAR( 40 ) NOT NULL
) ENGINE = MYISAM COMMENT = 'Tabela de usuários';

Criando conexão com o banco de dados

Recentemente publiquei um artigo sobre como criar conexão com banco de dados MySQL usando Zend Framework. Nele a aplicação está bem completa.

Criando o formulário de login

class Sample_Form_Login extends Zend_Form
{
    public function init()
    {
        $this->setAction('');
        $this->setMethod('POST');

        $user_email = new Zend_Form_Element_Text('user_email');
        $user_email ->setLabel('Email');

        $user_password = new Zend_Form_Element_Password('user_password');
        $user_password->setLabel('Senha');

        $act = new Zend_Form_Element_Submit('act');
        $act->setLabel('Entrar');

        $this->addElements(
            array(
                $user_email,
                $user_password,
                $act
            )
        );
    }
}

Criando o AuthController

Nesse controlller é onde criaremos nossas regras de negócios de login e logout.

class AuthController extends Zend_Controller_Action
{

    public function init()
    {

    }

    public function indexAction()
    {
        // Redireciona para o login
        $this->_redirect('auth/login');
    }

    public function loginAction()
    {
        // Instancia o formulário de login
        $objFormLogin = new Sample_Form_Login();
        $this->view->objFormLogin = $objFormLogin;

        // Verifica se foi submetido via POST
        if( !$this->_request->isPost() )
            return false;

        // Obtém os dados passados via POST
        $data = $this->_request->getPost();

        // Se os dados forem validos
        if( !$objFormLogin->isValid($data))
            return false;

        // Cria uma instancia de Zend_Auth
        $objAuth = Zend_Auth::getInstance();

        /**
         * Instancia o Auth Db Table Adapter
         *
         * Quando se instancia este objeto, precisamos informar as configurações
         * do BD, nome da tabela onde os dados de login estão, o campo do nome
         * do usuário, e o campo da senha na tabela.
         */
        $authAdapter = new Zend_Auth_Adapter_DbTable(
                Zend_Registry::get( 'db' ),
                'users',
                'user_email',
                'user_password',
                'sha1(?)'
        );

        // Configura as credencias user_email e user_password informadas pelo usuário
        $authAdapter->setIdentity( $data['user_email'] )->setCredential( $data['user_password']);

        // Tenta autenticar o usuário
        $result = $objAuth->authenticate($authAdapter);

        /**
         * Se o usuário for autenticado redireciona para a index e grava seu email,
         * caso contrário exibe uma mensagem de alerta na página
         */
        if ( $result->isValid() ) :

            /**
             * Pega os dados do usuário, omitindo a senha
             * http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html
             */
            $authData = $authAdapter->getResultRowObject( null, 'user_password' );

            // Armazena os dados do usuário
            $objAuth->getStorage()->write( $authData );

            echo 'Login efetuado com sucesso!';
        else :
            echo 'Os dados informados (e-mail e/ou senha) não são válidos.';
        endif;
    }

    public function logoutAction()
    {
        $objAuth = Zend_Auth::getInstance();

        // Limpa a autenticação
        $objAuth->clearIdentity();
    }
}

Registrando o namespace “Sample”

Para que o zend entenda ao chamar a classe Sample_Form_Login(), é necessário que dentro do seu bootstrap você registre o namespace “Sample”, que é onde você vai guardar seus formulários, dentre eles o formulário de login.
Nesta função é criada um auto-carregamento dos conteúdos que ali estão, veja como ficará seu bootstrap.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoLoader()
    {
        // Cria uma instancia de autoloader
        $autoloader = Zend_Loader_Autoloader::getInstance();

        // Registra o namespace Sample
        $autoloader->registerNamespace('Sample');
    }
}

Concluindo

Bom pessoal, aprendemos como criar uma conexão com banco da dados MySQL, criamos um formulário de login usando Zend_Form e criamos nossa classe de autenticação AuthController com as actions de login e logout. Nossa muito conteúdo para apenas um post! :D Então pessoal, agora é vocês adaptarem esse sistema na aplicação de vocês!

Abraços e comentem suas dúvidas, críticas e/ou elogios!

 

Como usar a Zend_Tool para criar um projeto em Zend Framework

05 fev

Developers,

hoje é um vídeo bacana sobre como criar um projeto em Zend Framework usando a Zend_Tool. Após baixar o Zend Framework, siga os passos do vídeo abaixo.

E não deixem de postar suas dúvidas.

Abraços.

 

Como criar conexão com banco de dados MySQL usando Zend Framework

02 fev

Developers,

para criarmos uma conexão com um banco de dados é muito simples. No arquivo de configuração application.ini, definiremos nossos resources (recursos) para conexão.

resources.db.adapter = "pdo_mysql"
resources.db.params.host = "mysql.servidor.com"
resources.db.params.username = "seunomedeusuario"
resources.db.params.password = "suasenhadobancodedados"
resources.db.params.dbname = "nomedobancodedados"
resources.db.params.charset = "utf8"
resources.db.isDefaultTableAdapter = true

Com esses parâmetros definidos, precisaremos agora criar uma função protegida dentro do Bootstrap.php para criar a conexão. Vamos dar o nome de _initConnection.

    /**
     * Função faz a conexão com o banco de dados e registra a variável $db para
     * que ela esteja disponível em toda a aplicação.
     */
    protected function _initConnection()
    {
        /**
         * Obtém os resources(recursos).
         */
        $options    = $this->getOption('resources');
        $db_adapter = $options['db']['adapter'];
        $params     = $options['db']['params'];

        try{

            /**
             * Este método carrega dinamicamente a classe adptadora
             * usando Zend_Loader::loadClass().
             */
            $db = Zend_Db::factory($db_adapter, $params);

            /**
             * Este método retorna um objeto para a conexão representada por uma
             * respectiva extensão de banco de dados.
             */
            $db->getConnection();

            // Registra a $db para que se torne acessível em toda app
            $registry = Zend_Registry::getInstance();
            $registry->set('db', $db);

        }catch( Zend_Exception $e){

            echo "Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por favor.";

            exit;
        }

    }

Se conseguirmos assimilar bem os comandos do Zend Framework, vemos que ele não é tão assim um bicho de sete cabeças! :D

É isso developers! Abraços!