<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mustafa Murat Aydın &#187; cakephp</title>
	<atom:link href="http://www.mmaydin.com/tag/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mmaydin.com</link>
	<description>Bu adam neler yapıyor</description>
	<lastBuildDate>Sun, 31 Jul 2011 12:55:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>CakePhp ile Facebook Application Yapımı</title>
		<link>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/</link>
		<comments>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 00:46:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook application]]></category>

		<guid isPermaLink="false">http://www.mmaydin.com/?p=76</guid>
		<description><![CDATA[Önceki yazımda cakephp kurulumunu anlatmıştım. Bu yüzden cakephp kurulum aşamasını geçiyorum isteyenler burdan bakabilir. İlk önce applicationımızın kullanacağı facebook kütüphanelerini indirmemiz gerekli. Facebook php kütüphanesini bu adresten indirebiirsiniz. indirdikten sonra cakephp içinde tutucağımız bölümü oluşturalım. cd /var/www/cakephp/app/vendors siz kendi uygulamanızı bulunduğunu dizine göre değiştiriniz. mkdir facebook indirdiğimiz sıkıştırılmış dosyayı açıyoruz. tar -zxvf facebook-platform.tar.gz oluşturduğumuz facebook [...]]]></description>
			<content:encoded><![CDATA[<p>Önceki yazımda cakephp kurulumunu anlatmıştım. Bu yüzden cakephp kurulum aşamasını geçiyorum isteyenler <a href="http://www.mmaydin.com/2009/12/cakephp-kurulumu/" target="_blank">burdan</a> bakabilir.</p>
<p>İlk önce applicationımızın kullanacağı facebook kütüphanelerini indirmemiz gerekli.</p>
<p>Facebook php kütüphanesini <a href="http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz" target="_blank">bu adresten</a> indirebiirsiniz.</p>
<p>indirdikten sonra cakephp içinde tutucağımız bölümü oluşturalım.</p>
<blockquote><p>cd /var/www/cakephp/app/vendors</p></blockquote>
<p>siz kendi uygulamanızı bulunduğunu dizine göre değiştiriniz.</p>
<blockquote><p>mkdir facebook</p></blockquote>
<p>indirdiğimiz sıkıştırılmış dosyayı açıyoruz.</p>
<blockquote><p>tar -zxvf facebook-platform.tar.gz</p></blockquote>
<p>oluşturduğumuz <strong><em>facebook</em></strong> klasörünün içine oluşan facebook-platform dizininde php klasorununun içini tamamen kopyalayıp <strong><em>cakephp/app/vendors/facebook</em></strong> klasorunun içine aktarıyoruz</p>
<blockquote><p>cp -r /home/mumi/indirilenler/facebook-platform/php/* /var/www/cakephp/app/vendors/facebook/.</p></blockquote>
<p>Cakephpde controllerlar controller sınfından türetilir. app_controller sınıfıda controller sınıfında türetilir. app_controller sınıfı boş tanımlanmıştır. Cakephp de oluşturduğumuz controllerları app_controller dan türetiyoruz.</p>
<p>Eğer kendi app_controllerımızı kullanmak istiyorsak bunu <strong><em>cakephp/app/controller</em></strong> içinde tanımlamamız gerekli. Bunu neden yapmak isteyebiliriz diye sorarsanız. Bazı controller larımız aynı fonksiyona gereksinim duyabilir ve hepsi için ayrı ayrı yazmak istemeyiz. Nasılsa bütün controllerlarımız app_controller sınıfından türetildiğine göre bu fonksiyonu sadece app_controller sınıfnda tanımlarsak, otomatikmen tüm sınflarda bu fonksiyon tanımlanmış olur.</p>
<p>Biz kendi app_controller ımızı oluşturalım. Facebook kütüphanesini bu sınıfın içinde çağıralım ki tüm sınıflara aktarılsın.<br />
cakephp/app/conroller içine app_controller.php oluşturalım ve içine aşağıdakileri yazalım.</p>
<pre class="brush: php">&lt;?php
/* Facebook kutuphanelerini import ediyoruz. */
App::import('Vendor', 'facebook'.DS.'facebook');
class AppController extends Controller {
    var $facebook;

    var $__fbApiKey = ' uygulamanizin facebook api anahtari ';
    var $__fbSecret = ' uygulamanızın gizlilik anahtari ';

    function __construct() {
        parent::__construct();

        /* 'Undefined index: facebook_config' uyarısını almamak icin bos atama yapiyoruz. */
        $GLOBALS['facebook_config']['debug'] = NULL;

        /* Facebook client API nesnesi olusturuyoruz. */
        $this-&gt;facebook = new Facebook($this-&gt;__fbApiKey, $this-&gt;__fbSecret);
    }
}
?&gt;
</pre>
<p>Facebook uygulama anahtarı ve gizlilik kodu almak için facebook developers uygulamasını profilimize eklemiş olmanız gerekli. Bunun için <a href="http://www.facebook.com/developers/" target="_blank">http://www.facebook.com/developers/</a> sayfasını açıp uygulamaya izin ver diyoruz. Bundan sonra yeni uygulama oluşturmak için sağ üst köşede bulunan <strong><em>Yeni Uygulama Oluştur</em></strong> düğmesine tıklıyoruz.</p>
<p>Sonraki adımda uygulamamızın adını girip facebookun şartlarını okuyup kabul ettikten sonra ( kabul etmediyseniz anlatımın gerisini okumanıza pek gerek kalmayacak <img src='http://www.mmaydin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) <strong><em>create application</em></strong> düğmesine basıyoruz.</p>
<p>Açılan sayfada facebook API anahtarı ve gizli yazan bölümleri <strong><em>app_controller</em></strong> içinde tanımladığımız değişkenlere yazıyoruz.</p>
<p>Artık olusturacağımız uygulamayı yazmaya geldi. Uygulamamız sadece giren facebook kullanıcısının arkadaşlarının resimlerini ekrana basacak.</p>
<p>ilk önce arkadaslarının gosterilecigi sinfinin modelini olusturalım.</p>
<p><strong><em>cakephp/app/models/</em></strong> dizinin altına <strong><em>arkadaslar.php</em></strong> diye bir dosya olusturalim.</p>
<pre class="brush: php">&lt;?php
class Arkadaslar extends AppModel {
    var $name = 'Arkadaslar';
    var $useTable = false; /* Arkadaslar tablomuz olmadigi icin kullanmayacagimizi belirtiyoruz. */
}
?&gt;
</pre>
<p><strong><em>cakephp/app/controllers/</em></strong> dizinin altına <strong><em>arkadaslars_controller.php</em></strong> diye bir dosya olusturalim.</p>
<pre class="brush: php">&lt;?php
class ArkadaslarsController extends AppController {
    /* facebook kullanicisini tutacagimiz degisken */
    var $kullanici;

    /* beforeFilter fonksiyonu ozel bir fonksiyondur.Bu siniftan cagirilan her fonksiyondan once bu fonksiyon calistirilir. */
    function beforeFilter() {
        /* Facebook a login olup olmadigini sorgular. Giren kisinin arkadaslarini gosterebilmemiz icin facebook ta login olmasi gerekir. Eger bole bir gereksinimimiz olmasaydi disardan erisimlere acik bir uygulama yapabilirdik */
        $this-&gt;kullanici = $this-&gt;facebook-&gt;require_login();
    }

    /* view kisminda kullacagimiz sayfanin ismi de bu fonksiyonla ayni olmak zorunda*/
    function index() {
        /* Facebook tan kullanicinin arkadaslari bilgisi aliniyor. */
        $arkadaslar = $this-&gt;facebook-&gt;api_client-&gt;friends_get();
        /* Facebooktan aldigimiz arkadas bilgisinin arkadaslar degiskenine set ettik. Bu degiskeni arkadas view imizda kullanabilecegiz. */
        $this-&gt;set('arkadaslar', $arkadaslar);
    }
}
?&gt;
</pre>
<p>Şimdi view bölümünü oluşturmamız gerekli. Bunun içinde <strong><em>cakephp/app/views/</em></strong> dizinin altında <strong><em>arkadaslars</em></strong> dizini oluşturmamız gerekli.</p>
<blockquote><p>mkdir /var/www/cakephp/app/views/arkadaslars</p></blockquote>
<p>Bu dizinin içine <strong><em>index.ctp</em></strong> adinda bir dosya oluşturalım. İçine aşağıdakileri yazalım.</p>
<pre class="brush: php">&lt;p&gt;Arkadaslarim:&lt;/p&gt;
&lt;style type="text/css"&gt;
     li.mini-kafa { display:block; }
     ol.mini-kafalar {margin: 0; padding: 0;}
     ol.mini-kafalar li {float:left; margin: 0 5px 5px 0; list-style-type:none; width: 50px; height: 50px;}
&lt;/style&gt;
<ol class="mini-kafalar">
    &lt;?php foreach ($arkadaslar as $arkadas)  { ?&gt;
         &lt;li class="mini-kafa"&gt;
                 <!-- fb:profile-pic etiketi uye idsini verdigimiz kisinin fotografinin bize dondurur. -->
                 <fb:profile-pic uid="&lt;?php echo $arkadas; ?&gt;" size="square" linked="true">
                 </fb:profile-pic>
        &lt;/li&gt;
    &lt;?php } ?&gt;
</ol>
</pre>
<p>Uygulamamızı ilk açtığımızda ana sayfamızın giren kullanıcının arkadaşlarını gösteren sayfanın olmasını istiyorsak <strong><em>/cakephp/app/config/routes.php</em></strong> dosyasını değiştirmemiz gerekli.</p>
<blockquote><p>Router::connect(&#8216;/&#8217;, array(&#8216;controller&#8217; =&gt; &#8216;pages&#8217;, &#8216;action&#8217; =&gt; &#8216;display&#8217;, &#8216;home&#8217;));</p></blockquote>
<p>satırı bulup şu şekilde değiştirelim.</p>
<blockquote><p>Router::connect(&#8216;/&#8217;, array(&#8216;controller&#8217; =&gt; &#8216;arkadaslars&#8217;, &#8216;action&#8217; =&gt; &#8216;index&#8217;));</p></blockquote>
<p>böylece uygulamızın giriş sayfası <strong><em>arkadaslars</em></strong> sınıfının index fonksiyonu olmasını sağladık.</p>
<p>Cakephp nin ön tanımlı debug modu açık olarak gelir. Bu debugları kullanıcıların görmemesi gerekir. Bu yüzden debug modu kapatıyoruz. Bunun için de <strong><em>/cakephp/app/config/core.php</em></strong> sayfasında şu değişikliği yapmamız gerekli.<br />
Bu satırı</p>
<blockquote><p>Configure::write(&#8216;debug&#8217;, 2);</p></blockquote>
<p>Şununla değiştirelim.</p>
<blockquote><p>Configure::write(&#8216;debug&#8217;, 0);</p></blockquote>
<p>Böylece debug modu kapatmış olduk.</p>
<p>Şimdi basit bir template hazırlayalım.Bizim template imiz sadece view kısmınından gelen veriyi ekrana basacak. İsterseniz siz uygulamanızın header ve footer kısmını da buraya dahil edebilirsiniz, bu size her yerde header ve footer bölümlerini yazmanızı engelleyecektir.<br />
<strong><em>cakephp/app/views/layout/</em></strong> dizini içine <strong><em>default.ctp</em></strong> isimli bir dosya oluşturup içine şunları yazalım.</p>
<pre class="brush: php">&lt;?php
echo $content_for_layout;
?&gt;
</pre>
<p>Uygulamamızın facebook ta tam olarak gözükmesi için son bir düzenleme kaldı o da developers uygulamasına girip oluşturduğumuz uygulama ayarlarından canvas sekmesine gelip <strong><em>Geniş Sütun URL Bağlantısı</em></strong> bölüme uygulama adını yazmak , <strong><em>Canvas Callback URL</em></strong> olan bölüme de cakephp ile oluşturduğumuz sayfaları tutan yeri söylemek<br />
( örneğin <strong><em>http://code.mmaydin.com/cakephp-ornek/</em></strong> ) ve <strong><em>Görüntüleme Yöntemi</em></strong> seçenegini <strong><em>FBML</em></strong> yapmak(eğer bu seçeneği FBML yapmazsak fbml etiketlerimiz çalışmaz ve kullanıcıların resimlerini alamayız).</p>
<p>Şimdi uygulamamızı test etmeye geldi.<br />
Örnek uygulamaya <a href="http://apps.facebook.com/cakephp-ornek" target="_blank">bu adresten</a> uygulamanin kaynak koduna <a href="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-facebook-application.tar.gz" target="_blank">burdan</a> ulaşabilirsiniz.</p>
<p>Örnek uygulamanın ekran görüntüsü;<br />
<a href="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-ornek-e1261868778441.png"><img src="http://www.mmaydin.com/wp-content/uploads/2009/12/cakephp-ornek-e1261868778441.png" alt="Facebook cakephp-ornek uygulamasının ekran görüntüsü" title="facebook cakephp-ornek uygulaması" width="800" height="600" class="aligncenter size-full wp-image-63" /></a></p>
<p><strong>NOT:</strong> Kaynak kodun <strong><em>cakephp-ornek/app/controller/app_controller.php</em></strong> dosyasında uygulamanın api anahtarını ve gizli numarasını değiştirdiğiniz taktirde uygulamanız hazır duruma gelecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mmaydin.com/2009/12/cakephp-ile-facebook-application-yapimi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CakePhp Kurulumu</title>
		<link>http://www.mmaydin.com/2009/12/cakephp-kurulumu/</link>
		<comments>http://www.mmaydin.com/2009/12/cakephp-kurulumu/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 14:56:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[kurulum]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.mmaydin.com/?p=16</guid>
		<description><![CDATA[Bir php frameworkü olan Cakephp sayesinde çok kullanılan fonksiyonları tekrar tekrar yazmaktan (hızlılık), sürekli çalışan geliştiricileri sürekli güncellenen kod deposu ile biz güncellemeleri takip etmesekte onlar edecek ve tecrübeli kişilerin yazmış olduğu güvenli kodlarla ile çıkan bugları. Cakephp ana sitesi www.cakephp.org Kurulumu Cakephp yi indirin Ben şimdiki kararlı sürümü indiriyorum (cake_1.2.5.tar.gz). Bu sıkıştırılmış dosyayı açıyoruz. [...]]]></description>
			<content:encoded><![CDATA[<p>Bir php frameworkü olan Cakephp sayesinde çok kullanılan fonksiyonları tekrar tekrar yazmaktan (hızlılık), sürekli çalışan geliştiricileri sürekli güncellenen kod deposu ile biz güncellemeleri takip etmesekte onlar edecek ve tecrübeli kişilerin yazmış olduğu güvenli kodlarla ile çıkan bugları.<br />
Cakephp ana sitesi <a href="http://www.cakephp.org">www.cakephp.org</a></p>
<p><strong>Kurulumu</strong></p>
<p>Cakephp yi  <a href="http://cakeforge.org/frs/?group_id=23&#038;release_id=449"> indirin</a><br />
Ben şimdiki kararlı sürümü indiriyorum (cake_1.2.5.tar.gz).<br />
Bu sıkıştırılmış dosyayı açıyoruz.</p>
<blockquote><p>
tar -zxvf cake_1.2.5.tar.gz</p></blockquote>
<p>ya da windows kullanıyorsanız winrar la açabilirsiniz.</p>
<p>Oluşan <em>cake_1.2.5</em> dizinini ben <em>cakephp</em> olarak değiştirdim. Nerede çalışacaksak ise o dizinin altına atıyoruz. mesela ben <em>/var/www/</em> altına atıyorum.Sizde localhostunuzun bulunduğu dizine atabilirsiniz.</p>
<p><strong><em>cakephp/app/</em></strong> altında <strong><em>tmp</em></strong> dizinine yazma izni veriyoruz. Bu dizinde sessionlar, cacheler ve loglar tutuluyor.</p>
<blockquote><p>chmod 777 cakephp/app/tmp</p></blockquote>
<p><strong><em>cakephp/app/config.core.php</em></strong> dosyasında</p>
<blockquote><p>Configure::write(&#8216;Security.salt&#8217;, &#8216;DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi&#8217;);</p></blockquote>
<p>bu satırı değiştirmemiz gerekiyor.</p>
<blockquote><p>Configure::write(&#8216;Security.salt&#8217;, &#8216;karışık birşeyler yazın !!! &#8216;);</p></blockquote>
<p>Database ayarları içinse<br />
<em><strong>/cakephp/app/config/database.php.default</strong></em> dosyasını <strong><em>database.php</em></strong> olarak değiştirelim.<strong><em> database.php</em></strong> dosyasında gerekli yerleri değiştirmemiz gerekli.</p>
<pre class="brush: php">
var $default = array(
        'driver' => 'mysql',    /* Kullanmak istediginiz veritabani ornegin mysql,postgres,sqlite veya adodb den birini yazınız. */
        'persistent' => false,    /* Veritabanına sürekli bağlantı kurulup kurulmayacağı belirtir */
        'host' => 'localhost',     /* Hangi hostta oldugu */
        'login' => 'user',    /* Veri tabani kullanici adi */
        'password' => 'password',    /* Parola */
        'database' => 'database_name',    /* Veritabani ismi */
        'prefix' => '',    /* Veritabanındaki bütün tabloların ön eki mesela wordpress tablolarında "wp_" ön eki bulunur. Sizin tablolarınızda bu şekilde olacak ise bu bölümde belirtmelisiniz. */
    );
</pre>
<p>Şimdi <a href="http://localhost/cakephp/">http://localhost/cakephp</a> dediğmizde cakephp &#8216;nin ön tanımlı sayfası gelmeli.</p>
<p>Cakephp templatelerle çalışan bir sistem olduğu için ilk kurduğumuzda kendi templateni çalıştırır. Sizin kullanacağınız templateler <strong><em>cakephp/app/view/layouts/</em></strong> altında bulunur. İlk baktığmızda js , rss, xml klasorleri bulunur ve hiç template yoktur. Cakephp kendi templateni çalıştırır demiştim bu template ise <strong><em>cakephp/cake/libs/view/layouts/default.ctp</em></strong> dir. Biz kendi template imizin çalışması istiyorsak<br />
<strong><em>cakephp/app/view/layouts/</em></strong> dizini altına <strong><em>default.ctp</em></strong> dosyasını oluşturmamız gerekli.</p>
<p>Bu dosyayı açıp içine istediğimizi yazabiliriz.Örneğin;</p>
<blockquote><p>Merhaba Dünya</p></blockquote>
<p>yazıp kaydedelim.</p>
<p>Şİmdi <a href="http://localhost/cakephp/">http://localhost/cakephp</a> dediğimiz de sizin yazmış olduğuz yazı ekrana gelecektir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mmaydin.com/2009/12/cakephp-kurulumu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

