Source

BlogCI / application / controllers / admin / posts.php

<?php

class Posts extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * index 
     *
     * Lista os posts para edição e exibe um botão para novos posts
     * 
     * @access public
     * @return void
     */
    public function index()
    {
        $this->load->model('posts_model');
        $this->load->helper('datas');

        $data = array();

        $data['view'] = 'admin/posts/index';
        $data['posts'] = $this->posts_model->pegar_todos();

        $this->load->view('admin/base', $data);
    }

    /**
     * novo 
     *
     * Cadastrar um novo post
     * 
     * @access public
     * @return void
     */
    public function novo()
    {
        $this->load->model('posts_model');
        $this->load->helper('form');

        $data = array();

        // Verificando se tem post
        if ($this->input->post()) {
            $this->_validar_gravar_post();
        }

        $data['view'] = 'admin/posts/novo';

        $this->load->view('admin/base', $data);       
    }

    /**
     * _validar_gravar_post 
     *
     * Valida o form para adição de posts e grava o post no banco
     * 
     * @access public
     * @return void
     */
    public function _validar_gravar_post()
    {
        $this->load->library('form_validation');

        $this->form_validation->set_error_delimiters('<p class="erro_form">', '</p>');

        if ($this->form_validation->run('admin/post')) {
            // Deu certo! Vamos gravar no banco
            $post = array(
                'titulo'    => $this->input->post('form_post_titulo'),
                'url'       => url_title($this->input->post('form_post_titulo'), '-', TRUE),
                'texto'     => $this->input->post('form_post_texto'),
                'autor'     => $this->input->post('form_post_autor'),
                'tags'      => $this->input->post('form_post_tags'),
                'publicacao'=> date('Y-m-d H:i:s')
            );

            $this->posts_model->gravar($post);

            $this->session->set_flashdata('mensagem', 'Post inserido com sucesso!');

            redirect('admin/posts');
        }
    }
}