/**
* Class and Function List:
* Function list:
* - __construct()
* - _form_prep()
* - index()
* - raw()
* - download()
* - lists()
* - view()
* - _view_options_prep()
* - view_options()
* - cron()
* - about()
* - _valid_lang()
* Classes list:
* - Main extends CI_Controller
*/
class Main extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('languages');
if (!$this->db->table_exists('ci_sessions'))
{
$this->load->dbforge();
$fields = array(
'session_id' => array(
'type' => 'VARCHAR',
'constraint' => 40,
'default' => 0,
) ,
'ip_address' => array(
'type' => 'VARCHAR',
'constraint' => 16,
'default' => 0,
) ,
'user_agent' => array(
'type' => 'VARCHAR',
'constraint' => 50,
) ,
'last_activity' => array(
'type' => 'INT',
'constraint' => 10,
'unsigned' => TRUE,
'default' => 0,
) ,
'session_data' => array(
'type' => 'TEXT',
) ,
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('session_id', true);
$this->dbforge->create_table('ci_sessions', true);
}
if (!$this->db->table_exists('pastes'))
{
$this->load->dbforge();
$fields = array(
'id' => array(
'type' => 'INT',
'constraint' => 10,
'auto_increment' => TRUE,
) ,
'pid' => array(
'type' => 'VARCHAR',
'constraint' => 8,
) ,
'title' => array(
'type' => 'VARCHAR',
'constraint' => 32,
) ,
'name' => array(
'type' => 'VARCHAR',
'constraint' => 32,
) ,
'lang' => array(
'type' => 'VARCHAR',
'constraint' => 32,
) ,
'private' => array(
'type' => 'TINYINT',
'constraint' => 1,
) ,
'paste' => array(
'type' => 'LONGTEXT',
) ,
'raw' => array(
'type' => 'LONGTEXT',
) ,
'created' => array(
'type' => 'INT',
'constraint' => 10,
) ,
'expire' => array(
'type' => 'INT',
'constraint' => 10,
'default' => 0,
) ,
'toexpire' => array(
'type' => 'TINYINT',
'constraint' => 1,
'unsigned' => TRUE,
) ,
'snipurl' => array(
'type' => 'VARCHAR',
'constraint' => 64,
'default' => 0,
) ,
'replyto' => array(
'type' => 'VARCHAR',
'constraint' => 8,
) ,
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id', true);
$this->dbforge->create_table('pastes', true);
}
}
function _form_prep($lang = 'php', $title = '', $paste = '', $reply = false)
{
$this->load->model('languages');
$this->load->helper('form');
$data['languages'] = $this->languages->get_languages();
if (!$this->input->post('submit'))
{
if ($this->db_session->flashdata('settings_changed'))
{
$data['status_message'] = 'Settings successfully changed';
}
$data['name_set'] = $this->db_session->userdata('name');
$data['expire_set'] = $this->db_session->userdata('expire');
$data['acopy_set'] = $this->db_session->userdata('acopy');
$data['private_set'] = $this->db_session->userdata('private');
$data['snipurl_set'] = $this->db_session->userdata('snipurl');
$data['remember_set'] = $this->db_session->userdata('remember');
$data['paste_set'] = $paste;
$data['title_set'] = $title;
$data['reply'] = $reply;
if ($lang != 'php' or ($lang == 'php' and $this->db_session->userdata('lang') == false))
{
$data['lang_set'] = $lang;
}
elseif ($this->db_session->userdata('lang'))
{
$data['lang_set'] = $this->db_session->userdata('lang');
}
}
else
{
$data['name_set'] = $this->input->post('name');
$data['expire_set'] = $this->input->post('expire');
$data['acopy_set'] = $this->input->post('acopy');
$data['private_set'] = $this->input->post('private');
$data['snipurl_set'] = $this->input->post('snipurl');
$data['remember_set'] = $this->input->post('remember');
$data['paste_set'] = $this->input->post('paste');
$data['title_set'] = $this->input->post('title');
$data['reply'] = $this->input->post('reply');
$data['lang_set'] = $this->input->post('lang');
}
return $data;
}
function index()
{
if (!$this->input->post('submit'))
{
$data = $this->_form_prep();
$this->load->view('home', $data);
}
else
{
$this->load->model('pastes');
$this->load->library('form_validation');
//rules
$rules = array(
array(
'field' => 'code',
'label' => 'Main Paste',
'rules' => 'required',
) ,
array(
'field' => 'lang',
'label' => 'Language',
'rules' => 'min_length[1]|required|callback__valid_lang',
) ,
);
//form validation
$this->form_validation->set_rules($rules);
$this->form_validation->set_message('min_length', 'The %s field can not be empty');
$this->form_validation->set_error_delimiters('<div class="message error"><div class="container">', '</div></div>');
if ($this->form_validation->run() == FALSE)
{
$data = $this->_form_prep();
$this->load->view('home', $data);
}
else
{
if ($this->input->post('acopy'))
{
$this->db_session->set_flashdata('acopy', 'true');
}
if ($this->input->post('remember') and $this->input->post('reply') == false)
{
$user_data = array(
'name' => $this->input->post('name') ,
'lang' => $this->input->post('lang') ,
'expire' => $this->input->post('expire') ,
'acopy' => $this->input->post('acopy') ,
'snipurl' => $this->input->post('snipurl') ,
'private' => $this->input->post('private') ,
'remember' => $this->input->post('remember')
);
$this->db_session->set_userdata($user_data);
}
if ($this->input->post('remember') == false and $this->db_session->userdata("remember") == 1)
{
$user_data = array(
'name' => '',
'lang' => 'php',
'expire' => '0',
'acopy' => '0',
'snipurl' => '0',
'private' => '0',
'remember' => '0'
);
$this->db_session->unset_userdata($user_data);
}
redirect($this->pastes->createPaste());
}
}
}
function raw()
{
$this->load->model('pastes');
$check = $this->pastes->checkPaste(3);
if ($check)
{
$data = $this->pastes->getPaste(3);
$this->load->view('view/raw', $data);
}
else
{
show_404();
}
}
function download()
{
$this->load->model('pastes');
$check = $this->pastes->checkPaste(3);
if ($check)
{
$data = $this->pastes->getPaste(3);
$this->load->view('view/download', $data);
}
else
{
show_404();
}
}
function lists()
{
$this->load->model('pastes');
$data = $this->pastes->getLists();
$this->load->view('list', $data);
}
function view()
{
$this->load->model('pastes');
$check = $this->pastes->checkPaste(2);
if ($check)
{
if ($this->db_session->userdata('view_raw'))
{
$this->db_session->keep_flashdata('acopy');
redirect('view/raw/' . $this->uri->segment(2));
}
$data = $this->pastes->getPaste(2, true);
$data['reply_form'] = $this->_form_prep($data['lang_code'], "RE: " . $data['title'], $data['raw'], $data['pid']);
if ($this->db_session->userdata('full_width'))
{
$data['full_width'] = true;
}
else
{
$data['full_width'] = false;
}
$this->load->view('view/view', $data);
}
else
{
show_404();
}
}
function _view_options_prep()
{
$this->load->helper('form');
if ($this->db_session->userdata('remember_view') > 0)
{
$data['full_width_set'] = $this->db_session->userdata('full_width');
$data['view_raw_set'] = $this->db_session->userdata('view_raw');
}
else
{
$data['full_width_set'] = false;
$data['view_raw_set'] = false;
}
return $data;
}
function view_options()
{
if (!$this->input->post('submit'))
{
$data = $this->_view_options_prep();
$this->load->view('view/view_options', $data);
}
else
{
$this->load->library('form_validation');
$rules = array(
array(
'field' => 'full_width',
'label' => 'full_width',
'rules' => 'max_length[1]',
) ,
array(
'field' => 'view_raw',
'label' => 'view_raw',
'rules' => 'max_length[1]',
) ,
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == false)
{
exit('Ugh, stupid skiddie.');
}
else
{
$user_data = array(
'full_width' => $this->input->post('full_width') ,
'view_raw' => $this->input->post('view_raw') ,
'remember_view' => true
);
$this->db_session->set_userdata($user_data);
$this->db_session->set_flashdata('settings_changed', 'true');
redirect();
}
}
}
function cron()
{
$this->load->model('pastes');
$key = $this->uri->segment(2);
if ($key != $this->config->item('cron_key'))
{
show_404();
}
else
{
$this->pastes->cron();
return 0;
}
}
function about()
{
$this->load->view('about');
}
function _valid_lang($lang)
{
$this->load->model('languages');
$this->form_validation->set_message('_valid_lang', 'Please select your language');
return $this->languages->valid_language($lang);
}
}
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