Joomla! 1.5 Kodlarına Giriş (Bölüm 2)

Joomla! 1.5 serisine ait dosyaları incelemeye devam edelim.

Joomla! 1.5 serisine ait dosyaları incelemeye devam edelim.

Bir önceki yazımızda Joomla! 1.5 kodlarına girmiş ve index.php'nin kodlarını incelemiştik. Şimdi ise index.php içerisinde bahsettiğimiz iki dosyayı; defines.php ve framework.php dosyalarını inceleyeceğiz. Bu iki dosya includes klasörü içerisindedir. Bazı tanımlamalar ve kontroller yapar. Şimdi hızlıca defines.php dosyasına bakalım.

defines.php:


defined( '_JEXEC' ) or die( 'Restricted access' );



Bir önceki yazımızda da belirttiğimiz gibi artık bakacağımız veya hazırlayacağımız tüm php dosyalarının ilk satırına bu kodu koymak zorundayız. Böylece bu php dosyaları sadece index.php içerisinden çağırıldığında çalışacaktır. Bu oldukça etkili ve basit bir güvenlik önlemidir.


$parts = explode( DS, JPATH_BASE );



Gene hatırlayacağınız gibi index.php içerisinde iki tanımlama yapmıştık. Şimdi bunları kullanmaya başlıyoruz.


define( 'JPATH_ROOT',           implode( DS, $parts ) );



define( 'JPATH_SITE',           JPATH_ROOT );

define( 'JPATH_CONFIGURATION',  JPATH_ROOT );

define( 'JPATH_ADMINISTRATOR',  JPATH_ROOT.DS.'administrator' );

define( 'JPATH_XMLRPC',         JPATH_ROOT.DS.'xmlrpc' );

define( 'JPATH_LIBRARIES',      JPATH_ROOT.DS.'libraries' );

define( 'JPATH_PLUGINS',        JPATH_ROOT.DS.'plugins'   );

define( 'JPATH_INSTALLATION',   JPATH_ROOT.DS.'installation' );

define( 'JPATH_THEMES'     ,    JPATH_BASE.DS.'templates' );

define( 'JPATH_CACHE',          JPATH_BASE.DS.'cache');



defines.php dosyasında isminden de anlaşılacağı üzere bazı dizinlerimizi tanımlıyoruz. Bunlar ilerleyen yazılarda bu dizinleri sıkça ve kolayca kullanmamızı sağlayan tanımlamalardır.

Şimdi de framework.php dosyamızı yazı editörümüz ile açalım ve içerisindeki kodlara bir bakalım.

framework.php:


defined( '_JEXEC' ) or die( 'Restricted access' );



Direkt olarak erişimi engelledik.


@set_magic_quotes_runtime( 0 );

@ini_set('zend.ze1_compatibility_mode', '0');



Magic quotes desteği açıksa bunu kapatıyoruz.


if (!file_exists( JPATH_CONFIGURATION . DS . 'configuration.php' ) || (filesize( JPATH_CONFIGURATION . DS . 'configuration.php' ) < 10) || file_exists( JPATH_INSTALLATION . DS . 'index.php' )) {

    if( file_exists( JPATH_INSTALLATION . DS . 'index.php' ) ) {

        header( 'Location: installation/index.php' );

        exit();

    } else {

        echo 'No configuration file found and no installation code available. Exiting...';

        exit();

    }

}



configuration.php dosyasının ve kurulum klasörünün olup olmadığına bakıyoruz. Eğer configuration.php yoksa, 10 byte boyutundan az ise ve kurulum klasörü (installation) bulunuyorsa kurulum sayfasına gidiyoruz. Eğer durum daha farklıysa çıkış yapıyoruz.


require_once( JPATH_LIBRARIES       .DS.'joomla'.DS.'import.php');



Bu kod ile ilerleyen yazılarda detaylı olarak anlatacağım bir sınıfı (jimport) içeren import.php dosyasını alıyoruz. Bu dosya ile kütüphanemizdeki (libraries klasörü içerisindeki) birçok sınıfı kolaylıkla dosyalarımıza dahil edeceğiz.


require_once( JPATH_CONFIGURATION   .DS.'configuration.php' );


configuration.php dosyamızı alıyoruz.

$CONFIG = new JConfig();



configuration.php içerisindeki JConfig sınıfımızı $CONFIG değeri üzerine yazdırıyoruz.


if (@$CONFIG->error_reporting === 0) {

    error_reporting( 0 );

} else if (@$CONFIG->error_reporting > 0) {

    error_reporting( $CONFIG->error_reporting );

    ini_set( 'display_errors', 1 );

}



define( 'JDEBUG', $CONFIG->debug );



unset( $CONFIG );



Bu kodlar configuration.php içerisinde tanımlanmış olan $CONFIG->error_reporting değeri ile hata gösterimini kapatıp açmamızı sağlar. En son satırda da $CONFIG değerimizi unset komutuyla yokediyoruz.


require_once(JPATH_SITE.DS.'libraries'.DS.'joomla'.DS.'utilities'.DS.'compat'.DS.'compat.php');



Bu kod ile Joomla! nın PHP 5.0.x mi yoksa PHP 5.1.x ile mi çalışacağını belirleyen compat.php dosyamızı alıyoruz.


if (JDEBUG) {

    jimport( 'joomla.error.profiler' );

    $_PROFILER =& JProfiler::getInstance( 'Application' );

}



Bu kod ile JProfiler sınıfının getInstance fonksiyonu ile sistemimiz için bir uygulama profili oluşturuyoruz. Bu profil index.php içerisinde tetikleyici tanımlamalarında kullanılacak.


// Joomla! library imports;

jimport( 'joomla.application.menu' );

jimport( 'joomla.user.user');

jimport( 'joomla.environment.uri' );

jimport( 'joomla.html.html' );

jimport( 'joomla.utilities.utility' );

jimport( 'joomla.event.event');

jimport( 'joomla.event.dispatcher');

jimport( 'joomla.language.language');

jimport( 'joomla.utilities.string' );



Bu kod satırları ile import.php ile dahil ettiğimiz jimport fonksiyonunu kullanarak kütüphanemizden birçok özelliği dahil ediyoruz.
  • Etiketler;
Soner Ekici
1981 yılında Denizli' de doğdu. 1999 yılında başladığı PHP ve MySQL çalışmalarına 2004 yılında Joomla! ile devam etti. Joomla! için çeşitli eklentiler kodladı. <p>Halen Joomla! için aktif olarak eklentiler kodlayan Soner Ekici Afyonkarahisar ili Şuhut ilçesinde pratisyen hekim olarak görev yapmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git