[ BLACK_SWORD @ 28.02.2012. 11:04 ] @
Pozdrav!

Može li mi neko objasniti zašto sluzi "model" u mvc?

Koristim CodeIgniter framework znam da se u modelu radi sa bazom podataka al opet ne znam šta stavljat u model a šta u contorller.

Evo naprimjer skripta za potvrdu registracije (aktivacijski email)


Code:


<?php

class User extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('User_model');
    }



    public function activate()
    {
        if (($this->uri->segment(3) === FALSE) OR ($this->uri->segment(4) === FALSE))
        {
            redirect();
        }
        else
        {
            $id_user = $this->uri->segment(3);
            $validation_code = $this->uri->segment(4);

            if ($this->session->userdata('logged_in'))
            {
                $this->logout(uri_string());
            }

            $data = $this->User_model->activate($id_user, $validation_code);

            if ( ! $data)
            {
                $this->session->set_flashdata('message', 'Link je neispravan.');
                redirect('user/register');
            }
            elseif ($data == 'is_activated')
            {
                $this->session->set_flashdata('message', 'Račun je već aktiviran.');
                redirect('user/register');
            }
            else
            {
                $this->session->set_flashdata('message', 'Uspiješno ste aktivirali račun, sad se možete ' . anchor('user/login', 'prijavit', array('title' => 'Prijava')) . '.');
                redirect('user/register');
            }
        }
    }

}




models
Code:


class User_model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function activate($id_user, $validation_code)
    {
        $id_user = (int)$id_user;
        $query = $this->db->query("SELECT `activated`, `validation_code` FROM `users` WHERE `id_user` = $id_user LIMIT 1");

        if ($query->num_rows() != 0)
        {
            $row = $query->row();

            if ($row->activated == 1)
            {
                return 'is_activated';
            }
            elseif ($row->validation_code == $validation_code)
            {
                $this->db->query("UPDATE `users` SET `activated` = 1, `ip_address` = '" . $this->input->ip_address() . "' WHERE `id_user` = $id_user LIMIT 1");
                return TRUE;
            }
            return FALSE;
        }
        return FAlSE;
    }
}




I dali je ovo vako isravno uradjeno?

Hvala