Are you a regular stikked user? Signup so you can keep track of your pastes!
  1. class Main extends Controller
  2. {
  3.  
  4.         /**
  5.         * Class Constructor, loads languages model which is inherited in the pastes model.
  6.         *
  7.         * @return void
  8.         */
  9.  
  10.         function __construct()
  11.         {
  12.                 parent::__construct();
  13.                 $this->load->model('languages');
  14.         }
  15.        
  16.        
  17.         /**
  18.         * Sets all the fields in a paste form, depending on whether the form is being repopulated or items need to be loaded from session data.
  19.         *
  20.         * @param string $lang Paste language
  21.         * @param string $title Paste title
  22.         * @param string $paste Paste body
  23.         * @param bool|string $reply Is this paste a reply? Bool if not, otherwise it's the id of the paste.
  24.         * @return Array
  25.         * @access private
  26.         * @see index()
  27.         * @see view()
  28.         */     
  29.        
  30.         function _form_prep($lang='php', $title = '', $paste='', $reply=false)
  31.         {
  32.                 $this->load->model('languages');
  33.                 $this->load->helper("form");
  34.                
  35.                 $data['languages'] = $this->languages->get_languages();        
  36.                 $data['scripts'] = array('jquery.js', 'jquery.timers.js');
  37.                
  38.                 if(!$this->input->post('submit'))
  39.                 {
  40.                         if($this->db_session->flashdata('settings_changed'))
  41.                         {
  42.                                 $data['status_message'] = 'Settings successfully changed';
  43.                         }
  44.                        
  45.                         $data['name_set'] = $this->db_session->userdata('name');
  46.                         $data['expire_set'] = $this->db_session->userdata('expire');
  47.                         $data['acopy_set'] = $this->db_session->userdata('acopy');
  48.                         $data['private_set'] = $this->db_session->userdata('private');                 
  49.                         $data['snipurl_set'] = $this->db_session->userdata('snipurl');
  50.                         $data['remember_set'] = $this->db_session->userdata('remember');
  51.                         $data['paste_set'] = $paste;
  52.                         $data['title_set'] = $title;
  53.                         $data['reply'] = $reply;
  54.  
  55.                         if($lang != 'php' or ($lang == 'php' and $this->db_session->userdata('lang') == false))
  56.                         {
  57.                                 $data['lang_set'] = $lang;
  58.                         }
  59.                         elseif($this->db_session->userdata('lang'))
  60.                         {
  61.                                 $data['lang_set'] = $this->db_session->userdata('lang');
  62.                         }
  63.                 }
  64.                 else
  65.                 {
  66.                         $data['name_set'] = $this->input->post('name');
  67.                         $data['expire_set'] = $this->input->post('expire');
  68.                         $data['acopy_set'] = $this->input->post('acopy');
  69.                         $data['private_set'] = $this->input->post('private');                  
  70.                         $data['snipurl_set'] = $this->input->post('snipurl');
  71.                         $data['remember_set'] = $this->input->post('remember');
  72.                         $data['paste_set'] = $this->input->post('paste');
  73.                         $data['title_set'] = $this->input->post('title');
  74.                         $data['reply'] = $this->input->post('reply');
  75.                         $data['lang_set'] = $this->input->post('lang');
  76.                 }
  77.                 return $data;
  78.         }
  79.        
  80.        
  81.         /**
  82.         * Controller method to load front page.
  83.         *
  84.         * @return void
  85.         * @access public
  86.         * @see _form_prep()
  87.         * @see _valid_lang()
  88.         */
  89.        
  90.         function index()
  91.         {
  92.                 if(!isset($_POST['submit']))
  93.                 {
  94.                         $data = $this->_form_prep();
  95.                         $this->load->view('home', $data);
  96.                 }
  97.                 else
  98.                 {
  99.                         $this->load->model('pastes');
  100.                         $this->load->library('validation');
  101.                
  102.                         $rules['code'] = 'required';
  103.                         $rules['lang'] = 'min_length[1]|required|callback__valid_lang';
  104.  
  105.                         $fields['code'] = 'Main Paste';
  106.                         $fields['lang'] = 'Language';
  107.                        
  108.                         $this->validation->set_rules($rules);
  109.                         $this->validation->set_fields($fields);
  110.                         $this->validation->set_message('min_length', 'The %s field can not be empty');
  111.                         $this->validation->set_error_delimiters('<div class="message error"><div class="container">', '</div></div>');
  112.                        
  113.                         if ($this->validation->run() == FALSE)
  114.                         {
  115.                                 $data = $this->_form_prep();
  116.                                 $this->load->view('home', $data);
  117.                         }
  118.                         else
  119.                         {
  120.                                 if(isset($_POST['acopy']) and $_POST['acopy'] > 0)
  121.                                 {
  122.                                         $this->db_session->set_flashdata('acopy', 'true');
  123.                                 }
  124.                                
  125.                                 if($this->input->post('remember') and $this->input->post('reply') == false )
  126.                                 {
  127.                                         $user_data = array(
  128.                                                         'name' => $this->input->post('name'),
  129.                                                         'lang' => $this->input->post('lang'),
  130.                                                         'expire' => $this->input->post('expire'),
  131.                                                         'acopy' => $this->input->post('acopy'),
  132.                                                         'snipurl' => $this->input->post('snipurl'),
  133.                                                         'private' => $this->input->post('private'),
  134.                                                         'remember' => $this->input->post('remember')
  135.                                                 );
  136.                                         $this->db_session->set_userdata($user_data);
  137.                                 }
  138.                                
  139.                                 if($this->input->post('remember') == false and $this->db_session->userdata("remember") == 1)
  140.                                 {
  141.                                         $user_data = array(
  142.                                                         'name' => '',
  143.                                                         'lang' => 'php',
  144.                                                         'expire' => '0',
  145.                                                         'acopy' => '0',
  146.                                                         'snipurl' => '0',
  147.                                                         'private' => '0',
  148.                                                         'remember' => '0'
  149.                                                 );
  150.                                         $this->db_session->unset_userdata($user_data);
  151.                                 }
  152.                                
  153.                                 redirect($this->pastes->createPaste());
  154.                         }
  155.                 }
  156.         }
  157.        
  158.        
  159.         /**
  160.         * Controller method to load raw pastes.
  161.         *
  162.         * @return void
  163.         * @access public
  164.         *
  165.         */
  166.                
  167.         function raw()
  168.         {
  169.                 $this->load->model('pastes');
  170.                 $check = $this->pastes->checkPaste(3);
  171.                 if($check)
  172.                 {
  173.                
  174.                         $data = $this->pastes->getPaste(3);
  175.                         $this->load->view('view/raw', $data);
  176.                 }
  177.                 else
  178.                 {
  179.                         show_404();
  180.                 }
  181.         }
  182.        
  183.        
  184.         /**
  185.         * Controller method to download pastes.
  186.         *
  187.         * @return void
  188.         * @access public
  189.         *
  190.         */
  191.        
  192.         function download()
  193.         {
  194.                 $this->load->model('pastes');
  195.                 $check = $this->pastes->checkPaste(3);
  196.                 if($check)
  197.                 {
  198.                         $data = $this->pastes->getPaste(3);
  199.                         $this->load->view('view/download', $data);
  200.                 }
  201.                 else
  202.                 {
  203.                         show_404();
  204.                 }
  205.        
  206.         }
  207.        
  208.        
  209.         /**
  210.         * Controller method to show recent pastes.
  211.         *
  212.         * @return void
  213.         * @access public
  214.         *
  215.         */
  216.        
  217.         function lists()
  218.         {
  219.                 $this->load->model('pastes');
  220.                 $data = $this->pastes->getLists();
  221.                 $this->load->view('list', $data);
  222.         }
  223.        
  224.                
  225.         /**
  226.         * Controller method to show a paste.
  227.         *
  228.         * @return void
  229.         * @access public
  230.         *
  231.         */
  232.        
  233.         function view()
  234.         {
  235.                 $this->load->model('pastes');  
  236.  
  237.                 $check = $this->pastes->checkPaste(2);
  238.                                
  239.                 if($check)
  240.                 {
  241.                        
  242.                         if($this->db_session->userdata('view_raw'))
  243.                         {
  244.                                 $this->db_session->keep_flashdata('acopy');
  245.                                 redirect('view/raw/'.$this->uri->segment(2));
  246.                         }
  247.                        
  248.                         $data = $this->pastes->getPaste(2, true);
  249.                         $data['reply_form'] = $this->_form_prep($data['lang_code'], "RE: ".$data['title'], $data['raw'], $data['pid']);
  250.                        
  251.                         if($this->db_session->userdata('full_width'))
  252.                         {
  253.                                 $data['full_width'] = true;
  254.                         }
  255.                         else
  256.                         {
  257.                                 $data['full_width'] = false;
  258.                         }
  259.                        
  260.                         $this->load->view('view/view', $data);
  261.                 }
  262.                 else
  263.                 {
  264.                         show_404();
  265.                 }
  266.         }
  267.        
  268.        
  269.         /**
  270.         * Loads data for view_options from session data or not if not set.
  271.         *
  272.         * @return array
  273.         * @access private
  274.         *
  275.         */
  276.        
  277.         function _view_options_prep()
  278.         {
  279.                 $this->load->helper('form');
  280.                 if($this->db_session->userdata('remember_view') > 0)
  281.                 {
  282.                         $data['full_width_set'] = $this->db_session->userdata('full_width');
  283.                         $data['view_raw_set'] = $this->db_session->userdata('view_raw');
  284.                 }
  285.                 else
  286.                 {
  287.                         $data['full_width_set'] = false;
  288.                         $data['view_raw_set'] = false;
  289.                 }
  290.                 return $data;
  291.         }
  292.        
  293.        
  294.         /**
  295.         * Displays the page where a user can change their paste viewing settings which are saved to session data.
  296.         *
  297.         * @return void
  298.         * @access public
  299.         *
  300.         */
  301.        
  302.         function view_options()
  303.         {
  304.                 if(!isset($_POST['submit']))
  305.                 {
  306.                         $data = $this->_view_options_prep();
  307.                         $this->load->view('view/view_options', $data);
  308.                 }
  309.                 else
  310.                 {
  311.                         $this->load->library('validation');
  312.                        
  313.                         $rules['full_width'] = 'max_length[1]';
  314.                         $rules['view_raw'] = 'max_length[1]';
  315.                        
  316.                         $this->validation->set_rules($rules);
  317.                        
  318.                         if($this->validation->run() == false)
  319.                         {
  320.                                 exit('Ugh, stupid skiddie.');
  321.                         }
  322.                         else
  323.                         {
  324.                                 $user_data = array(
  325.                                         'full_width' => $this->input->post('full_width'),
  326.                                         'view_raw' => $this->input->post('view_raw'),
  327.                                         'remember_view' => true
  328.                                         );
  329.                                 $this->db_session->set_userdata($user_data);
  330.                                 $this->db_session->set_flashdata('settings_changed', 'true');
  331.                                 redirect();
  332.                         }
  333.                 }
  334.         }
  335.        
  336.        
  337.         /**
  338.         * Controller method to run the cron. Requires a valid cron key supplied as an argument in the url.
  339.         *
  340.         * @return void;
  341.         * @access public
  342.         *
  343.         */
  344.        
  345.         function cron()
  346.         {
  347.                 $this->load->model('pastes');
  348.                 $key = $this->uri->segment(2);
  349.                 if($key != $this->config->item('cron_key'))
  350.                 {
  351.                         show_404();
  352.                 }
  353.                 else
  354.                 {
  355.                         $this->pastes->cron();
  356.                         return 0;
  357.                 }
  358.         }
  359.        
  360.        
  361.         /**
  362.         * Controller method to load about view.
  363.         *
  364.         * @return void
  365.         * @access public
  366.         *
  367.         */
  368.                
  369.         function about()
  370.         {
  371.                 $this->load->view('about');
  372.         }
  373.        
  374.        
  375.         /**
  376.         * Validation callback method to validate whether the paste language is valid.
  377.         *
  378.         * @return bool
  379.         * @access private
  380.         * @see index()
  381.         *
  382.         */
  383.        
  384.         function _valid_lang($lang)
  385.         {
  386.                 $this->load->model('languages');
  387.                 $this->validation->set_message('_valid_lang', 'Please select your language');
  388.                 return $this->languages->valid_language($lang);
  389.         }
  390. }
  391. ?>

Reply to "php test"

Here you can reply to the paste above

Create a snipurl

Make Private

Feeling clever? Set some advanced options.