Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. <?php
  2.  
  3. defined('BASEPATH') or exit('No direct script access allowed');
  4.  
  5. class User extends MY_Controller {
  6.     public function __construct() {
  7.         parent::__construct();
  8.  
  9.         $role = $this->session->userdata('role');
  10.  
  11.         if ($role != 'admin') {
  12.             redirect(base_url('/'));
  13.             return;
  14.         }
  15.     }
  16.  
  17.     public function index($page = null) {
  18.         $data['title']      = 'Admin: Pengguna';
  19.         $data['content']    = $this->user->paginate($page)->get();
  20.         $data['total_rows'] = $this->user->count();
  21.         $data['pagination'] = $this->user->makePagination(base_url('user'), 2, $data['total_rows']);
  22.         $data['page']       = 'pages/user/index';
  23.  
  24.         $this->view($data);
  25.     }
  26.  
  27.     public function search($page = null) {
  28.         if (isset($_POST['keyword'])) {
  29.             $this->session->set_userdata('keyword', $this->input->post('keyword'));
  30.         } else {
  31.             redirect(base_url('user'));
  32.         }
  33.  
  34.         $keyword = $this->session->userdata('keyword');
  35.  
  36.         $data['title']      = 'Admin: Pengguna';
  37.         $data['content']    = $this->user
  38.             ->like('name', $keyword)
  39.             ->orLike('email', $keyword)
  40.             ->paginate($page)
  41.             ->get();
  42.         $data['total_rows'] = $this->user->like('name', $keyword)->orLike('email', $keyword)->count();
  43.         $data['pagination'] = $this->user->makePagination(base_url('user/search'), 3, $data['total_rows']);
  44.         $data['page']       = 'pages/user/index';
  45.  
  46.         $this->view($data);
  47.     }
  48.  
  49.     public function reset() {
  50.         $this->session->unset_userdata('keyword');  // Clear dulu keyword dari session  
  51.         redirect(base_url('user'));
  52.     }
  53.  
  54.     public function create() {
  55.         if (!$_POST) {
  56.             $input = (object) $this->user->getDefaultValues();
  57.         } else {
  58.             $input = (object) $this->input->post(null, true);
  59.  
  60.             // Pertama kali user ditambah lakukan validasi password
  61.             $this->load->library('form_validation');
  62.             $this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
  63.  
  64.             $input->password = hashEncrypt($input->password);   // Encrypt password
  65.         }
  66.  
  67.         if (!empty($_FILES) && $_FILES['image']['name'] !== '') {                     // Jika upload'an tidak kosong
  68.             $imageName  = url_title($input->name, '-', true) . '-' . date('YmdHis');  // Membuat slug
  69.             $upload     = $this->user->uploadImage('image', $imageName);              // Mulai upload
  70.             if ($upload) {
  71.                 // Jika upload berhasil, pasang nama file yang diupload ke dalam database
  72.                 $input->image   = $upload['file_name'];
  73.             } else {
  74.                 redirect(base_url('user/create'));
  75.             }
  76.         }
  77.  
  78.         if (!$this->user->validate()) {
  79.             $data['title']          = 'Tambah Pengguna';
  80.             $data['input']          = $input;
  81.             $data['form_action']    = base_url('user/create');
  82.             $data['page']           = 'pages/user/form';
  83.  
  84.             $this->view($data);
  85.             return;
  86.         }
  87.  
  88.         if ($this->user->create($input)) {   // Input data
  89.             $this->session->set_flashdata('success', 'Data berhasil disimpan');
  90.         } else {
  91.             $this->session->set_flashdata('error', 'Oops! Terjadi suatu kesalahan');
  92.         }
  93.  
  94.         redirect(base_url('user'));
  95.     }
  96.  
  97.     public function edit($id) {
  98.         $data['content'] = $this->user->where('id', $id)->first();
  99.  
  100.         if (!$data['content']) {
  101.             $this->session->set_flashdata('warning', 'Maaf data tidak ditemukan');
  102.             redirect(base_url('user'));
  103.         }
  104.  
  105.         if (!$_POST) {
  106.             $data['input'] = $data['content'];
  107.         } else {
  108.             $data['input'] = (object) $this->input->post(null, true);
  109.  
  110.             if ($data['input']->password !== '') {
  111.  
  112.                 $data['input']->password = hashEncrypt($data['input']->password);
  113.             } else {
  114.  
  115.                 $data['input']->password = $data['content']->password;
  116.             }
  117.         }
  118.  
  119.         if (!empty($_FILES) && $_FILES['image']['name'] !== '') {   // Jika upload'an tidak kosong
  120.             $imageName  = url_title($data['input']->name, '-', true) . '-' . date('YmdHis');  // Membuat slug
  121.             $upload     = $this->user->uploadImage('image', $imageName);    // Mulai upload
  122.             if ($upload) {
  123.                 if ($data['content']->image !== '') {
  124.                     // Jika data di database ini memiliki gambar, maka hapus dulu file gambarnya
  125.                     $this->user->deleteImage($data['content']->image);
  126.                 }
  127.                 // Jika upload berhasil, pasang nama file yang diupload ke dalam database
  128.                 $data['input']->image   = $upload['file_name'];
  129.             } else {
  130.                 redirect(base_url("user/edit/$id"));
  131.             }
  132.         }
  133.  
  134.         if (!$this->user->validate()) {
  135.             $data['title']          = 'Ubah Pengguna';
  136.             $data['form_action']    = base_url("user/edit/$id");
  137.             $data['page']           = 'pages/user/form';
  138.  
  139.             $this->view($data);
  140.             return;
  141.         }
  142.  
  143.         if ($this->user->where('id', $id)->update($data['input'])) {   // Update data
  144.             $this->session->set_flashdata('success', 'Data berhasil diubah');
  145.         } else {
  146.             $this->session->set_flashdata('error', 'Oops! Terjadi suatu kesalahan');
  147.         }
  148.  
  149.         redirect(base_url('user'));
  150.     }
  151.  
  152.     public function delete($id) {
  153.         if (!$_POST) {
  154.             redirect(base_url('user'));
  155.         }
  156.  
  157.         $user = $this->user->where('id', $id)->first();
  158.  
  159.         if (!$user) {
  160.             $this->session->set_flashdata('warning', 'Maaf data tidak ditemukan');
  161.             redirect(base_url('user'));
  162.         }
  163.  
  164.         if ($this->user->where('id', $id)->delete()) {   // Lakukan penghapusan di db
  165.             $this->user->deleteImage($user->image);      // Lakukan penghapusan gambar
  166.             $this->session->set_flashdata('success', 'Data berhasil dihapus');
  167.         } else {
  168.             $this->session->set_flashdata('error', 'Oops! Terjadi kesalahan');
  169.         }
  170.  
  171.         redirect(base_url('user'));
  172.     }
  173.  
  174.     public function unique_email() {
  175.         $email  = $this->input->post('email');
  176.         $id     = $this->input->post('id');
  177.         $user   = $this->user->where('email', $email)->first(); // Akan terisi jika terdapat email yang sama
  178.  
  179.         if ($user) {
  180.             if ($id == $user->id) {  // Keperluan edit tidak perlu ganti email, jadi tidak masalah
  181.                 return true;
  182.             }
  183.  
  184.             // Jika terdapat suatu nilai pada $user, berikan pesan error pertanda email sudah ada di db
  185.             $this->load->library('form_validation');
  186.             $this->form_validation->set_message('unique_email', '%s sudah digunakan');
  187.             return false;
  188.         }
  189.  
  190.         return true;
  191.     }
  192. }
  193.