Welcome to Abdul Malik Ikhsan's Blog

Zend Framework : Zend_Feed_Writer – Generating Feeds

Posted in Tutorial PHP, Zend Framework by samsonasik on March 27, 2011

Zend_Feed_Writer adalah salah satu dari komponen Zend Framework yang bisa mengenerate RSS Feeds tanpa harus berpusing ria dengan XML. Arsitektur dari Zend_Feed_Writer sangatlah simple, ia terdiri dari 2 core class yaitu data container, dan renderer. Dalam container terdapat class Zend_Feed_Writer_Feed dan Zend_Feed_Writer_Entry. Kelas Entry dapat dilampirkan pada setiap kelas Feed. Tujuan utama container ini adalah untuk mengumpulkan data tentang feed untuk menghasilkan antarmuka yang sederhana menggunakan metode setter.
Ok, Anggaplah kita mempunyai data artikel di web kita yang akan kita tampilkan dalam RSS Feeds. Sebagai contoh seperti berikut :

$feed = new Zend_Feed_Writer_Feed;
$feed->setTitle('Testing Channel RSS');
$feed->setLink('http://www.urldomainkita.com');
$feed->setFeedLink('http://www.urldomainkita.com/rss', 'atom'); //url tempat kita buat rss ini ...
$feed->addAuthor(array(
'name'  => 'domainkita',
'email' => 'contact@domainkita.com',
'uri'   => 'http://www.domainkita.com',
 ));
//waktu modify
$feed->setDateModified(time());

//get data article ...( anggaplah kita sudah mempunyai method
//getDataArticle untuk mengambil 30 artikel terakhir
$artikel = new App_Model_Article();
$articledata = $artikel->getDataArticle(30);

//looping data artikel...
foreach($articledata as $key=>$row)
{
$entry = $feed->createEntry();
$entry->setTitle($row['title']);
$entry->setLink($row['link']);
$entry->addAuthor(array(
'name'  =>$row['author'],
'email' => $row['email'],
'uri'   =>  $row['authorsite'],
));

$datemodified = new Zend_Date($row['updated_at']);
$datecreated  = new Zend_Date($row['article_date']);

$entry->setDateModified( $datemodified->getTimestamp() );
$entry->setDateCreated( $datecreated->getTimestamp() );

$entry->setDescription("<img src=\"".$row['image']."\" align=left hspace=7 />".$row['content']);
$entry->setEnclosure(array('type'=>'image/jpg','length'=>$row['imagesize'],
'uri'=>$row['image']));
$entry->getEnclosure();

//menambahkan entry ke feed...
$feed->addEntry($entry);
}

$out = $feed->export('atom');

//showing...
echo $out;

Semoga bermanfaat.

Image :
http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/128px-Feed-icon.svg.png

Referensi :
http://framework.zend.com/manual/en/zend.feed.writer.html

Zend Framework : Zend_Feed_Rss – Consuming an RSS Feed

Posted in Teknologi, Tutorial PHP, Zend Framework by samsonasik on March 27, 2011

RSS (Really Simple Syndication) adalah sebuah file berformat XML untuk sindikasi yang telah digunakan ( diantaranya dan kebanyakan ) situs web berita dan weblog. Teknologi yang dibangun dengan RSS mengijinkan kita untuk berlangganan kepada situs web yang menyediakan umpan web (feed) RSS, biasanya situs web yang isinya selalu diganti secara reguler.

Zend Framework mempunyai komponen yang memungkinkan kita untuk mengconsume RSS Feed dari sebuah website. Caranya, dengan menginstansiasi Zend_Feed_Rss Object seperti berikut :

$channel = new Zend_Feed_Rss('http://rss.example.com/channelName');

Contoh lengkap sebagai berikut :

<?php
include "Zend/Feed/Rss.php";
 $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
 ?>
<div>
 <p>
 <label> <?php /*nama channel */ echo $channel->title(); ?> </label>
 </p>

 <?php foreach ($channel as $key=>$item) {  ?>
 <label>
<a href="<?php  /*menampilkan link feed item */ echo $item->link(); ?>">
<?php  //menampilkan title
echo $item->title();
?>
</a>
</label>
 <br />
 <label>
 <?php
//menampilkan publish date
echo $item->pubDate(); ?>
 </label>
 <p>
 <?php
//menampilkan description
echo $item->description(); ?>
 </p>
 <?php } ?>
</div>

Image :
http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/128px-Feed-icon.svg.png

Referensi :
http://framework.zend.com/manual/en/zend.feed.consuming-rss.html
http://id.wikipedia.org/wiki/RSS
http://id.wikipedia.org/wiki/XML
http://id.wikipedia.org/wiki/Weblog
http://en.wikipedia.org/wiki/Web_feed

YQL AND JSON – Cross Domain Request Handling

Posted in Javascript, Teknologi by samsonasik on March 17, 2011
YQL Logo

YQL

YQL ( Yahoo! Query Language ) adalah Bahasa Query yang dibuat oleh Yahoo! ( sebagai bagian dari Yahoo! Developer Network ).  YQL memungkinkan kita untuk mengquery, filter, dan mengkombinasikan data dari sumber-sumber yang berbeda di internet. Statement YQL berupa sintaks yang mirip SQL yang memudahkan developer untuk mempelajarinya.

Untuk mengakses YQL Web Service, aplikasi web kita dapat memanggil HTTP GET, passing YQL statement di URL Parameter seperti contoh berikut :

http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM flickr.photos.search WHERE text="Cat"

Baik, saya akan mencoba memberi sebuah contoh simple penggunaan YQL dengan Ajax request ( menggunakan jQuery javascript library ). Anggaplah kita mempunyai server side application berupa sebuah file php dengan content sebagai berikut  ( dengan domain http://subdomain.yourdomain.com dan file yang diakses adalah file.php ) :

<?php
$data = array('nama' =>
 array('aku','kamu','dia','anda','mereka','saya','SAMSONASIK'));

echo json_encode($data);

Nah, kita akan coba akses dari client secara Ajax, dengan kode sebagai berikut :

<html>
 <head>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript">

 $(document).ready(function(){
 $("#crosscaller").click(function(){
 //get current time content ...
 var site = 'http://subdomain.yourdomain.com/file.php?'+(new Date()).getTime();
 //yql ...
 var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&diagnostics=false&_maxage=1';

 // Request that YSQL string, and run a callback function.
 $.ajax({url: yql,
 dataType: 'json',
 jsonp: 'callback',
 jsonpCallback: 'callhandler'
 });
 });
 });

 function callhandler(data) {
 // If we have something to work with...
 if ( data.results[0] ) {
 // Strip out all script tags, for security reasons.
 // BE VERY CAREFUL. This helps, but we should do more.
 data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');

 $("#result").html('').html(data);

 var jsondataHTML  = $("#result p").html() ;

 var ItemsJson = JSON.parse(jsondataHTML);

 //get items of json object ...
 alert(ItemsJson.nama[1]);

 }
 // Else, Maybe we requested a site that doesn't exist, and nothing returned.
 else {throw new Error('Failed ...');}
 }

 </script>
 </head>
<body>
 <input type="button"  id="crosscaller" value="get your domain content" />

 <!-- get data -->
 <div id="result"></div>

</body>
</html>

Sehingga jika kita run, akan tampil sebagai berikut :

Image :
http://l.yimg.com/a/i/us/pps/yql128.gif
Referensi :
http://developer.yahoo.com/yql/guide/running-chapt.html
http://icant.co.uk/articles/crossdomain-ajax-with-jquery/
https://gist.github.com/raw/726079/a67c59253fa9700e1d29a5af100b9b2a937f0ad0/yql-cross-domain.html