CodeIgniter plugin írása

Üdv ismét itt, ebben a cikkben 1 egyszerű plugint hozunk létre, hogy mire is jó a plugin? A plugin-ok a CodeIgniter-ben, 1 darab függvényt tartalmaznak (szemben a helper-ekkel amik függvény gyüjtemények, erről majd a következő cikkben), amit az alkalmazásunk bármelyik részében meghívhatunk.

Hozzuk is létre a pluginunkat ami annyit tesz, hogy megszámolja hány darab online felhasználónk van éppen az oldalon(az elmult 5 percben aktív felhasználókat számolja össze). Mielőtt nekifekszünk megoldani a feladatot, be kell állítanunk, hogy a felhasználók munkamenetei adatbázisban legyenek tárolva, ehhez a következő SQL parancsot kell lefuttatnunk(MySQL):

CREATE TABLE IF NOT EXISTS `ci_sessions` (

session_id varchar(40) DEFAULT ’0′ NOT NULL,

ip_address varchar(16) DEFAULT ’0′ NOT NULL,

user_agent varchar(50) NOT NULL,

last_activity int(10) unsigned DEFAULT 0 NOT NULL,

user_data text NOT NULL,

PRIMARY KEY (session_id)

);

Ezzel létrehoztuk a ‘ci_sessions’ nevű táblánkat, ebben fognak tárolódni az adott munkamenetekhez tartozó változóink. Nézzük sorban a mezőket:

-session_id: munkamenetünk egyedi azonosítója

-ip_address: az adott felhasználó IP címe

-user_agent: kliens adatok(nyelv, böngésző, op. rendszer)

-last_activity: utolsó ‘aktivitás’ unix timestamp-ben tárolva

-user_data: ez 1 szerializált tömb, ebben tárolódik minden információ amit a munkamenetben tárolunk(pl.: $this->session->userdata(‘felhasznalonev’)).

Ezek után annyi teendőnk maradt, hogy a config.php-ban(system/application/config/config.php) beállítjuk, hogy a munkamenetek ebben a táblában tárolódjanak.
$config['sess_use_database']    = TRUE;
 $config['sess_table_name']        = ‘ci_sessions’;


Ezzel meg is lennénk, gyors tesztnek, állítsuk be az autoload.php-ban, hogy a session kezelés automatikusan induljon, majd nyissuk meg a weboldalunkat és nézzük meg a ci_sessions nevű tábla tartalmát.

Mostmár tényleg nekiállhatunk létrehozni a pluginunkat. Hozzuk létre a következő file-t:
application/plugins/online_user_pi.php
<?php
 /*
 * online felhasználók számát megjelenítő plugin
 */
 function countOnline() {
 $CI =& get_instance();
 $where = array(‘last_activity >=’=>time()-300);
 $CI->db->where($where);
 $query = $CI->db->get(‘ci_sessions’);

return $query->num_rows();
 }


Pluginunkat így tölthetjük be:
$this->load->plugin(‘online_user’);
 echo countOnline();


Látható, hogy miután betöltjük a pluginunkat, a benne lévő függvényt úgy tudjuk elérni, mint bármelyik PHP függvényt, ha szeretnénk, hogy automatikusan betöltödjön a pluginunk, nem kell mást tenni, mint a system/application/config/autoload.php -ban felvenni a betöltödő pluginok közé.