Merhaba, yetkilendirme işlemlerini yapan basit bir üyelik sistemini paylaşmak istedim. Bu Model dosyası, Controller dosyasından gönderilen verilerle db’de temel işlemleri halleder. Bir sonraki yazımda ise Controller kütüphanesi ile kullanımını paylaşacağım…
Kodunuz bol olsun…
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Yonetici_model extends CI_Model
{
// tüm satırları al: 0'dan başla, her defasında 5 adet çek...
public function hepsini_al($baslangic = 0, $adet = 5)
{
// $baslangic'tan başlayarak, kullanıcılardan $adet tane satır çek
$q = $this->db->limit($baslangic, $adet)->get('kullanicilar');
if( $q->num_rows() > 0 ) // satır mevcutsa
return $q->result(); // nesne olarak satırları al
else
return false; // başarısız
}
// belirtilen şarta göre kullanıcılardan satır çeker:
public function sartli_al( $data )
{
$q = $this->db->where($data)->get('kullanicilar');
if( $q->num_rows() > 0 ) // mevcut satır varsa:
return $q->row_array(); // satırları veya satırı dizi olarak donder
else
return false; // başarısız
}
// kullanıcı verilerini ekle
public function ekle( $data ) {
$this->load->helper('string');
// $data'da olmayan zorunlu değerler
$data['hakkimda'] = isset($data['hakkimda']) ? $data['hakkimda'] : 'Şu anlık bilgi yok...';
$data['onay_kodu'] = random_string('alnum', 13);
$data['onay_durumu'] = isset($data['onay_durumu']) ? $data['onay_durumu'] : 'pasif';
$data['yetki_durumu'] = isset($data['yetki_durumu']) ? $data['yetki_durumu'] : 'kullanici';
// veriyi ekle
$this->db->insert('kullanicilar', $data);
if( $this->db->affected_rows() > 0 ) // işlenmiş satır mevcutsa
return $this->db->insert_id(); // işlenen satır id dönder: başarılı
else
return false; // başarısız
}
// kullanici id ile eşleşen kayıt mevcutsa,
// data dizisindeki değerler ile günceller
public function guncelle($user_id, $data)
{
// kullanicilar tablosundaki user_id değerini data ile güncelle
$this->db->update('kullanicilar', $data, array('id', $user_id));
// işlenmiş satır sayısı 0'dan büyük ise:
if( $this->db->affected_rows() > 0 )
return true; // başarılı
else
return false; // başarısız
}
// id ile kullanıcıyı sil
public function sil($user_id)
{
// kullanıcılardan id ile sil
$this->db->delete('kullanicilar', array('id', $user_id));
// eğer işlenmiş satır mevcutsa
if( $this->db->affected_rows() > 0 )
return true; // başarılı
else
return false; // başarısız
}
// onaylama işlemini yapan fonksiyon
public function onayla($user, $onay_kodu)
{
// onay kodu ile eşleşen kullanıcı var mı?
$sart = array(
'rumuz' => $user,
'onay_kodu'=> $onay_kodu
);
$uye = $this->sartli_al($sart); // tek satırlık dizi ya da false olarak alıyoruz
$r = false; // varsayılan dönüş değeri: false
// onay kodu ile eşleşen kullanıcı bulundu ise:
if( $uye == true )
{
$id = $uye['id'];
unset($uye, $sart); // sartı ve kopyalanan id'yi kaldır
// sonraki istek için yeni kod oluştur
$this->load->helper('string');
$degis['onay_kodu'] = random_string('alnum', 13);
$degis['onay_durumu'] = 'aktif';
// güncellemeyi yap: true | false döner
$r = $this->guncelle($id, $degis);
}
return $r;
}
// yetkilendirme işlemini yapan fonksiyon
public function yetkilendir($id)
{
if( $this->yetki_ile_al($id, 'moderator') )
return true;
else
return false;
}
// yetkilendirmeyi geri al
public function yetkisizlendir($id)
{
if( $this->yetki_ile_al($id, 'kullanici') )
return true;
else
return false;
}
// yetkiye göre kullanıcıyı seçen fonksiyon
protected function yetki_ile_al($id, $yetki)
{
$u = array(
'id' => $id,
'yetki_durumu' => $yetki // moderator | kullanici
);
// id ve yetki_durumu uyuşan kullanıcıyı al
$k = $this->sartli_al($u);
if( $k ) // kontrol sonucunu dönder
return $k;
else
return false;
}
}