Skip to main content

Bagaimana Mengupdate Status Twittermu dari Code Igniter.... part 2

October 11, 2009 by muhginanjar

muhginanjar's picture

4. Controller
Sekarang kita menuju folder system/application/controllers dan buatlah satu file yang bernama twitter.php. Lalu tambahkan beberapa baris kode berikut :

class Twitter extends Controller {  
 
function Twitter()  
{  
     parent::Controller();  
 
    $this->load->model('twitter_model');  
}  

Ini adalah CI constructor yang akan memuat twitter_model. Lalu kita akan lanjutkan kepada index() method.

function index()
{
	$data['heading'] = 'Hi, send a tweet!';
	$data['last_message'] = $this->twitter_model->getLastMessage();
	$data['active_user'] = $this->twitter_model->getActiveAccount()->username;
 
	$this->load->view('header', $data);
	$this->load->view('index');
	$this->load->view('footer');
}

Kita akan memasukkan informasi seperti, pesan terakhir, username yang aktif ke dalam $data. Kita mengambilnya dari model, karena model yang telah kita buat, sudah termasuk didalamnya fungsi untuk mengambil pesan terakhir dan username.
Setelah selesai membuat controller, kita akan membuat beberapa viewnya. Yuk kita berlanjut kepada method update.

// updating our status on twitter ( new message )
function update()
{		
	if ($this->input->post('submit'))
	{
		$this->load->library('form_validation');
		$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
		$this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[5]|max_length[140]');
 
		if ($this->form_validation->run() == FALSE)
		{
			$this->index();
		}
 
		else
		{
			$message = $this->input->post('message');
 
			// get useraccount data
			$account = $this->twitter_model->getActiveAccount();
			$username = $account->username;
			$password = $account->password;
 
			// send a tweet
			if ($this->twitter_model->update_status($username, $password, $message))
			{
				redirect('twitter');	
			}
 
			else
			{
				$data['error'] = 'There was an error while updating your status';
 
				$this->load->view('header', $data);
				$this->load->view('error');
				$this->load->view('footer');
			}
		}
	}

OK... jika pusing kita akan membahas kode ini, bagian perbagian.

if ($this->input->post('submit'))
	{
		$this->load->library('form_validation');
		$this->form_validation->set_error_delimiters('
', '
');
		$this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[5]|max_length[140]');
 
		if ($this->form_validation->run() == FALSE)
		{
			$this->index();
		}

dengan $this->input->post('submit'), kita bermaksud akan mengecek apakah form yang kita akan buat pada view nanti telah disubmit. setelah itu, kita masukkan library form_validation karena kita ingin meyakinkan bahwa inputan yang telah disubmit tadi telah memenuhi persyaratan, sebagai contoh, untuk minimum dan maximum banyaknya karakter dari mulai 5-40 karakter, dan juga kita mengecek apakah inputan tadi kosong atau kah tidak.

Kita lalu panggil $this->form_validation->run(), yang akan mengembalikan nilai TRUE atau FALSE. Jika satu saja persyaratan diatas tidak sesuai, maka akan memanggil index().

else
   {
       $message = $this->input->post('message');
 
       // get useraccount data
       $account = $this->twitter_model->getActiveAccount();
       $username = $account->username;
       $password = $account->password;
 
       // send a tweet
       if ($this->twitter_model->update_status($username, $password, $message))
       {
           redirect('twitter');	
       }
 
       else
       {
           $data['error'] = 'There was an error while updating your status';
 
           $this->load->view('header', $data);
           $this->load->view('error');
           $this->load->view('footer');
       }
   }

Dengan menggunakan $this->twitter_model->update_status() kita memanggil method yang akan 'berbicara' dengan Twitter. Jika statusnya telah berhasil terupdate, maka akan langsung redirect ke twitter.php. Jika terdapat kesalahan, kita set satu pesan error dan meload beberapa view, yang akan kita buat selanjutnya.
Jadi Controller akan terlihat seperti sekarang :

	class Twitter extends Controller {
 
	function Twitter()
	{
		parent::Controller();
 
		$this->load->model('twitter_model');
	}
 
	function index()
	{
		$data['heading'] = 'Hi, send a tweet!';
		$data['last_message'] = $this->twitter_model->getLastMessage();
		$data['active_user'] = $this->twitter_model->getActiveAccount()->username;
 
		$this->load->view('header', $data);
		$this->load->view('index');
		$this->load->view('footer');
	}
 
	// updating our status on twitter ( new message )
	function update()
	{		
		if ($this->input->post('submit'))
		{
			$this->load->library('form_validation');
			$this->form_validation->set_error_delimiters('
', '
');
			$this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[5]|max_length[140]');
 
			if ($this->form_validation->run() == FALSE)
			{
				$this->index();
			}
 
			else
			{
				$message = $this->input->post('message');
 
				// get useraccount data
				$account = $this->twitter_model->getActiveAccount();
				$username = $account->username;
				$password = $account->password;
 
				// send a tweet
				if ($this->twitter_model->update_status($username, $password, $message))
				{
					redirect('twitter');	
				}
 
				else
				{
					$data['error'] = 'There was an error while updating your status';
 
					$this->load->view('header', $data);
					$this->load->view('error');
					$this->load->view('footer');
				}
			}
		}
 
		else
		{
			redirect('twitter');
		}
	}
}

5. Sekarang kita akan membuat view nya....

Sekarang kita akan membuat file view. Langsung saja menuju system/application/views lalu buatlah file-file berikut ini :

* header.php
* footer.php
* index.php
* error.php

header.php nantinya akan mengandung informasi meta html dasar, link CSS, dan tag bukaan dari divs, #wrapper dan #main.

 echo '
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link media="screen" rel="Stylesheet" type="text/css" href="'.base_url().'css/style.css" />
    <title>Using the Twitter API with CodeIgniter</title>
    </head>
 
    <body>
 
    <div id="wrapper">
 
    <div id="main">';

Kita gunakan base_url() untuk mereferensikan CSS yang akan kita buat nanti...

footer.php adalah tag tutupannya...

 echo '
	</div><!--end main-->
 
    </div><!--end wrapper-->
 
    </body>
    </html>
';

didalam index.php lah semuanya akan berlangsung.....

echo '
	<h3>
	'.$heading.'
    <span>
    	( account: '.anchor('http://twitter.com/' . $active_user, $active_user).' )
    </span>
    </h3>
 
 
   '. form_error('message').'
 
    '. form_open('twitter/update', array('id' => 'update_form')).'
    '.form_input(array('name' => 'message', 'maxlength' => '140')).'
    '.form_submit('submit', 'update').'
    '.form_close().'
 
    <div id="last_message">
        <fieldset>
            <legend>Last <span>sent by <b>'.$active_user.'</b></span></legend>
            <p>'.$last_message.'</p>
        </fieldset>
    </div>
'; 

Semua variabel yang akan kita pasang disini, telah dideklarasikan dahulu di index() method tadi yang terdapat di controller.

Dibawah form, kita tampilkan pesan terakhir yang telah dikirim akun user yang aktif.

Lalu terakhir, error.php digunakan untuk membuat file error punya kita sendiri, jika update status gagal.

 echo '
	<h3>'.$error.'</h3>
 
     '.echo anchor('twitter', 'Go back and try again')
';

6. Tambahkan CSS

/* Reset CSS */

html, body, div, span, object, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, address, code, img, small, strong, dl, dt, dd, ol, ul, li,
fieldset, form, label {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baselinebaseline;
background: transparent;
}

body {
line-height: 1.5;
font-family:Arial, sans-serif;
margin:0;
}
ol, ul, li {
list-style: none;
list-style-type:none;
}

.clear { clear:both; }

/* DEFAULTS */

h3 {
color:#35CCFF;
font-size:20px;
}

/* CUSTOM */

#wrapper {
width:900px;
margin:0 auto;
}

/* main */

#main {
margin-top:50px;
}

#main h3 span {
font-size:14px;
color:#cccccc;
}

#main h3 a {
color:#cccccc;
}

/* form */

#update_form input {
width:888px;
padding:5px;
border:1px solid #d3d3d3;
display:block;
}

#update_form input[type="submit"] {
width:auto;
margin-top:10px;
background-color:#000000;;
border:none;
color:white;
font-size:12px;
font-weight:bold;
cursor:pointer;
padding:3px;
}

div.error {
display:block;
background-color:#FB8A8A;
border:1px solid #FF3B3B;
padding:5px;
color:#ffffff;
width:50%;
margin-bottom:30px;
font-weight:bold;
margin:0 auto 10px auto;
text-align:center;
}

/* last message */

#last_message fieldset {
border:1px dashed #d3d3d3;
padding:5px;
margin-top:30px;
}

#last_message fieldset p {
padding:5px;
font-size:18px;
font-weight:normal;
}

#last_message legend span {
font-size:12px;
}

OK.......

Comments

great coding

January 21, 2010 by alex33303, 1 year 12 weeks ago
Comment: 5861

alex33303's picture

hey!! its great :) "Kebetulan kmaren saya juga, baru coba2 nich. moga bisa membantu
sebenernya di user testking 1Y0-A08 guide codeigniter sudah di paparkan..
untuk bahasa pesan itu ada pada file testking 642-691 'validation_lang.php'
yang berada pada =>>> language/english/validation_lang.php

nah silahkan saja di testking 642-611 buka file tersebut dan ganti bahasa untuk pesan sesuai keinginan kita."

Muncul Error

November 17, 2009 by herupermana, 1 year 21 weeks ago
Comment: 5711

herupermana's picture

mas aku dah coba buat step by step sperti di Part 1 dan 2 kok muncul error ya ??? mungkin ada config yang salah mohon pencerahan nya. pas alku akses link nya di direct ke http://twitter.com/oauth/authorize?oauth_token= ???? kenapa mas... please help

Hihihi....

October 11, 2009 by muhginanjar, 1 year 26 weeks ago
Comment: 5661

muhginanjar's picture

Saya pada tag html memakai  echo '', karena jika tidak memakai itu, maka pada file tutorial ini, akan dibaca sebagai tag html dan sebagainya.... h1, h3 semuanya jika tidak dimasukkan kedalam   akan dibaca... terima kasih....

Premium Drupal Themes by Adaptivethemes