Skip to main content

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

October 6, 2009 by muhginanjar

muhginanjar's picture

Pada tutorial ini, kita akan mengupdate status twitter kita melalui 'Twitter API' menggunakan CodeIgniter. Saya rekomendasikan anda mengikuti langkah demi langkah sampai tutorial ini selesai...
1. Konfigurasi CodeIgniter
Pertama kali yang kita perlu edit adalah config.
Buka system/application/config/autoload.php, lalu edit lah baris :

$autoload['libraries'] = array('');

menjadi
$autoload['libraries'] = array('database'); 

Ini akan memuat otomatis library database. Lalu buka database.php dan sesuaikan settingan koneksinya. nama database anda, username dan passwordnya. Untuk nama database kita gunakan ci_twitter_api.

Sekarang bukalah config.php, Lalu rubahlah base_url untuk ci anda. Jadi didalamnya saya meletakkan folder system untuk ci saya. Ok. Saya rubah menjadi :

$config['base_url']	= "http://localhost/ci/twitter_api/";

2. Mengisi Database
Silahkan buka tools untuk membuat database, bisa PHPMyAdmin, SQL Buddy atau yang lainnya. Silahkan membuat database baru ci_twitter_api. Kita akan membuat tabel dan mengisinya dengan username dan password kita di twitter. Berikut query nya...
CREATE TABLE IF NOT EXISTS `accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT,  
 `username` varchar(120) NOT NULL,  
 `password` varchar(32) NOT NULL,  
 `active` int(11) NOT NULL,  
 `last_message` varchar(140) NOT NULL,  
 PRIMARY KEY (`id`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;  
 
INSERT INTO `accounts` (`id`, `username`, `password`, `active`, `last_message`) VALUES  
(1, 'username', 'password', 1, 'No message sent');  

3. Membangun Model
Menuju system/application/model, lalu buatlah satu file twitter_model.php.
Pertama, kita akan mendeklarasikan 2 variabel :

var $accounts_table = 'accounts';  
var $update_url = 'http://twitter.com/statuses/update.xml';

Jadi, $accounts_table merujuk pada tabel yang telah kita buat tadi, sedangkan $update_url adalah alamat URL yang akan mengupdate status kita pada twitter. Jika twitter merubah URL tersebut, anda tinggal ganti saja $update_url menjadi alamat yang bisa digunakan untuk mengupdate status anda ditwitter.
Sekarang kita akan membuat metode pertama yang akan mengembalikan akun yang aktif pada database, bernilai 1 baris dan aktif. Saya telah menambah ini karena terkadang, seseorang mempunyai satu atau lebih akun twitter.
class Twitter_model extends Model {  
 
// get the active twitter account from the database, by row active = 
function getActiveAccount()  
{  
return $this->db->get_where($this->accounts_table, array('active' => '1'))->row();      
}  

Kita akan menggunakan active record untuk mengambil akun yang aktif dan mengembalikan baris yang dihasilkan.

Langkah selanjutnya, kita akan membangun metode utama, Ini akan menggunakan username dan password, tentu saja dengan pesan yang akan kita gunakan untuk menjadi status kita.

// update status twitter  
	 function update_status($username, $password, $message)  
	 {  
		 $ch = curl_init($this->update_url);  
 
		 curl_setopt($ch, CURLOPT_POST, 1);  
		 curl_setopt($ch, CURLOPT_POSTFIELDS, 'status='.urlencode($message));  
		 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
		 curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);  
 
		 curl_exec($ch);  
 
		 $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
 
		 // if we were successfull we need to update our last_message  
		 if ($httpcode == '200')  
		 {  
			 $this->db->where('active', '1');  
			 $this->db->update($this->accounts_table, array('last_message' => $message));  
 
			 return TRUE;      
		 }  
 
		 else  
		 {  
			 return FALSE;     
		 }  
	 }

Pada baris pertama kode diatas mungkin terlihat complicate tapi sebenarnya tidak sulit untuk dimengerti. Bagian paling penting yang kita gunakan adalah cURL untuk berkomunikasi dengan Twitter. Itu library yang sangat mantap yang memperbolekan kita untuk mengirim dan menerima HTTP POST data dari Twitter.
Lalu curl-init menunjukkan sesi cURL dan mengambil URL sebagai parameter - dalam kasus ini, URL update status dari Twitter API.
Lalu, curl_setopt, kita mengeset beberapa opsi yang biasa digunakan untuk transfer cURL.

  • CURLOPT_POST : Kita set menjadi '1' untuk menggunakan HTTP POST, yang sama kita gunakan dalam Form HTML.
  • CURLOPT_POSTFIELDS : Opsi ini untuk menerima POST data yang kita kirim. Dalam kasus ini 'status=' pesan kita. Kita perlu meng-encode URL pesan kita sehingga bisa menggunakan karakter khusus seperti '%&/'
  • CURLOPT_RETURNTRANSFER : Ini sangat penting untuk kita set menjadi '1' karena akan mengembalikan transfer menjadi string. Dimana string tersebut akan memberitahu kita apakan status kita telah berhasil terupdate ataukah tidak
  • CURLOPT_USERPWD : opsi ini untuk otentikasi. Ini secara sederhana menggunakan username dan password twitter kita dalam format username:password

Pada bagian bawahnya kita mengekusi transfer dengan curl_exec() dan mengambil HTTP_CODE yang dikembalikan menggunakan curl_getinfo(CURLINFO_HTTP_CODE). HTTP_CODE ini memberitahu kita jika status update kita sudah komplit atau kah belum. Kode '200' berarti berhasil dan update telah dilakukan. Anda bisa lihat list status HTTP yang lengkap disini.

Jika kita mendapatkan kode '200' dari Twitter, kita kirim query ke database kita dimana baris terakhir pesan kita telah terupdate, dan akhirnya kita kembalikan nilainya menjadi TRUE, jika 200 tidak ada, kita kembalikan nilainya menjadi FALSE.

Dalam akhir twitter_model ini, kita akan membuat metode terakhir yang mana, kita akan mendapatkan pesan terakhir yang kita kirim. Kita perlu membuat metode ini karena kita akan menampilkan pesan yang paling sering dibuat dalam satu view.

// get the last_message, by row active = 1  
	 function getLastMessage()  
	{  
		 $this->db->select('last_message');  
		$last_message =  $this->db->get_where($this->accounts_table, array('active' => '1'))->row()->last_message;  
 
		 return htmlspecialchars($last_message);  
	 }

Metode ini sangatlah simple. Metode tersebut memilih baris pesan terakhir dari akun yang aktif dan mengembalikan dan merubahnya dengan htmlspecialchar menjadi entiti HTML.
Sekarang twitter_model.php kita akan terlihat seperti dibawah ini :
 
 class Twitter_model extends Model {  
 
 var $accounts_table = 'accounts';  
 var $update_url = 'http://twitter.com/statuses/update.xml';  
 
 // get the active twitter account from the database, by row active = 1  
 function getActiveAccount()  
 {  
     return $this->db->get_where($this->accounts_table, array('active' => '1'))->row();     
 }  
 
 // update twitter status and last message on success  
 function update_status($username, $password, $message)  
 {  
     $ch = curl_init($this->update_url);  
 
     curl_setopt($ch, CURLOPT_POST, 1);  
     curl_setopt($ch, CURLOPT_POSTFIELDS, 'status='.urlencode($message));  
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
     curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);  
 
     curl_exec($ch);  
 
     $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
 
     // if we were successfull we need to update our last_message  
     if ($httpcode == '200')  
     {  
         $this->db->where('active', '1');  
         $this->db->update($this->accounts_table, array('last_message' => $message));  
 
         return TRUE;      
     }  
 
     else  
     {  
         return FALSE;     
     }  
 }  
 
 // get the last_message, by row active = 1  
 function getLastMessage()  
 {  
     $this->db->select('last_message');  
     $last_message =  $this->db->get_where($this->accounts_table, array('active' => '1'))->row()->last_message;  
 
     return htmlspecialchars($last_message);  
 }

AttachmentSize
img1.jpg120.57 KB
img2.jpg35.46 KB

Comments

Re : CodeIgniter-Twitter Library

October 13, 2009 by muhginanjar, 1 year 26 weeks ago
Comment: 5667

muhginanjar's picture

Eh.... iya itu lebih banyak APInya....
tapi kan untuk pemula seperti saya, perlu tau dalemnya... kalo yang punya mas haughin itu kan tinggal pasang aja, lalu panggil dari model atau controller kita, nah, klo yang dari nettuts ini kan detail, sampai dikasih tau, fungsi-fungsi syntax phpnya.
'Ala Kulli Hal, bagus juga klo udah agak mahir pake librarynya twitter, tapi mungkin akan sedikit membantu klo kita belajar dari dasar banget....
Satuju?

-- mantanpenyamun --

CodeIgniter-Twitter Library

October 13, 2009 by sinaryuda, 1 year 26 weeks ago
Comment: 5664

sinaryuda's picture

Postingan yang menarik,
bagaimana dengan library yang ada di wiki codeigniter bikinan http://www.haughin.com/code/twitter/
munkin akan lebih banyak method API nya.

good

February 25, 2010 by ben33303, 1 year 6 weeks ago
Comment: 5970

ben33303's picture

good work /..lo make ini aja
di controller dooney and bourke handbag nya
$this->form_validation->set louis vuitton handbags_message('rule', 'Error Message');
ini tinggal lo gantinya di 'rule' => guess handbags lo isi rulenya apa
'error message' => lo isi dengan apa
contoh:
$this->form_validation-> fendi handbags set_message('required', 'Fill tidak boleh kosong');

controller dan view..,??

October 9, 2009 by cah_ajus, 1 year 26 weeks ago
Comment: 5657

cah_ajus's picture

saia sangat tertarik dengan postingan ini..,tapi saia masih bingung dalam menerapkannya maklum masih newbie...,hehehee
saia mau tanya tentang controller dan view-nya..,???koq ngk ada dibahas..,??itu ntr bgmn???bknnya pertama kali CI akan menunjuk controller terlebih dahulu???mohon bimbingannya.terima kasih.

Re:controller dan view..,??

October 10, 2009 by muhginanjar, 1 year 26 weeks ago
Comment: 5658

muhginanjar's picture

Iya nih... di bagian keduanya saya translate dulu dari net.tutsplus.com...
sori udah nunggu lama...

Thanks for Info

October 9, 2009 by herupermana, 1 year 26 weeks ago
Comment: 5656

herupermana's picture

Thanks infonya yang dah di sharring dan di translate dari

http://net.tutsplus.com/tutorials/php/how-to-update-your-twitter-status-...

Re : Thanks for Info

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

muhginanjar's picture

Ih... bener banget mas heru, ana ambil dari tutorial di nettuts itu, lagian ah... daripada sepi dan iseng-iseng juga belajar menterjemahkan. jadi sekalian terjemahin, belajar CI juga. kan sekali dayung, satu samudra terlampaui..... :D makasih link nya...

Premium Drupal Themes by Adaptivethemes