Turbo DB Eklentisi Php Tabanlı NoSQL Database Ayrıca Sphinx Full Text Arama Motoru
public function import($tablo,$sorgu){
#dataların yedeklendiği kısım
$query=$this->db->query($sorgu);
$query=$query->result_array();
if(count($query)>0){
$data=serialize($query);
$filepath=DBPATH.$tablo.'.php';
$dosya=fopen($filepath, 'r');
if ( write_file($filepath, $data)){
return true;
}else{
return false;
}
}else{
return false;
}
}
public function save($tablo,$array=array()){
$data=serialize($array);
$filepath=DBPATH.$tablo.'.php';
$dosya=fopen($filepath, 'r');
if ( write_file($filepath, $data)){
return true;
}else{
return false;
}
}
public function get($tablo){
#yedeklenen dosyanın okunduğu kısım
$filepath=DBPATH.$tablo.'.php';
if(file_exists($filepath)){
$data = read_file($filepath);
$data = unserialize($data);
return $data;
}else{
return false;
}
}
public function get_where($tablo,$where=array()){
$array=$this->get($tablo);
$sayac=0;
foreach($array as $data) {
#datalar parse edildi
$true=0;
foreach($where as $name=>$value){
#arama yapılacak sütular çekildi
if ($data[$name]==$value){
$sonuclar[]=$array[$sayac];
$true=$true+1;
}
}
if(count($where)==$true){
$this->netice=true;
$this->result[]=$array[$sayac];
}else{
$this->netice=false;
}
$sayac=$sayac+1;
}
return $sonuclar;
}
public function search($array=array(),$sutunlar=array(),$search){
#iç içe 2 arrayde çalışacak
$sayac=0;
$silinsin=array(''); #silinecek array() tipleri
foreach($array as $value) {
#datalar parse edildi
foreach($sutunlar as $kolon){
#arama yapılacak sütular çekildi
if (stristr($value[$kolon],$search)){
$sonuclar[]=str_replace($search,''.$search.'',$array[$sayac]);
unset($array[$sayac]);#bulunan data array() den çıkarıldı
}
}
$sayac=$sayac+1;
}
//pa(array_diff($sonuclar));
return array_diff($sonuclar,$silinsin);
}
public function insert($tablo,$array=array()){
$security=$this->controller($tablo,$array);#ini file ile tablo bilgisi sorgulandı
if($security){
$array=$this->prepare($tablo,$array);
$data=$this->get($tablo);
$data[]=$array;
$save=$this->save($tablo,$data);
// var_dump($save);
if($save){
return true;
}else{
return false;
}
}else{
return $security;
}
}
public function prepare($tablo,$data){
#insert esnasında sütun data kontrolü yapıldı
#$data burada insert metoduna eklenmek için gönderilen datadır
$alanlar=$this->desc($tablo);
$array=$this->get($tablo);
foreach ($alanlar as $sutun) {
# code...
foreach ($data as $veri) {
# code...
if(!$veri[$sutun]){
if(strstr($sutun,'id')){
$veri[$sutun]=$this->set_id($array);
}else{
$veri[$sutun]='';
}
}
}
}
return $data;
}
public function get_ini($tablo,$tip='Z'){
#ini file içinde saklanan tablonun hangi özelliği istenirse array() olarak döner
$read_file=$this->get(_INIFILE);
//$data=$read_file[$tablo][$tip];
$data=$read_file[$tablo];
return $data;
}
public function validation($data,$control){
#data insert edilecek array()
#control ise get_ini den gelen array() validation
$sayac=0;
$error=array();
foreach ($data as $name => $value) {
# code...
foreach ($control as $alan) {
# code...
if($alan==$name){
$sayac=$sayac+1;
}else{
$error[]=$alan;
}
}
}
if($sayac==count($control)){
return true;
}else{
return $error;
}
}
public function controller($tablo,$data,$tip="Z"){
#tablo ilgili tablo
#data insert veya update edilecek data
#tip saklanan datanın özellik keyi
$c
$validati
if($validation){
return true;
}else{
return $validation;
}
}
public function limit($array,$startnum,$endnum){
#belli aralıktaki dataları listeler
//$data = implode(' ', array_slice($array, $startnum, $endnum-$startnum));
$data = array_slice($array, $startnum, $endnum-$startnum);
return $data;
}
public function where($array){
$this->where=$array;
}
public function update($tablo,$sutunlar=array(),$where=array()){
if(count($where)==0){
$where = $this->where;
}
/*
$tablo= saklanan dosya adı ,
$sutunlar= güncelleme yapılacak alan arrayi ,
$where= where koşulunda sorgulanacak array sütunlar ,
$text= where koşulundaki sütunlarda aranacak değer
*/
$array= $this->get($tablo);
$bul=$this->get_where($tablo,$where);
$bulunan=$this->result;
$sayisi=count($bulunan);
#güncelleme yapılacak alanlar ayrıldı
foreach ($sutunlar as $name => $value) {
$sayac=0;
for ($i=0; $i <$sayisi ; $i++) {
# code...
$bulunan[$i][$name]=$value; # bulunan datanın güncellemesi yapıldı
$id=$this->get_id($array,$where); # Güncellenen kaydın saklandığı array data id si alındı
$array[$id[$i]]=$bulunan[$i]; # saklanan arrayde güncelleme işlendi
}
}
$save=$this->save($tablo,$array); # son hali save edildi
if($save){
return true;
}else{
return false;
}
}
public function delete($tablo,$where=array()){
if(count($where)==0){
$where = $this->where;
}
$array= $this->get($tablo);
$id=$this->get_id($array,$where); # silinecek kaydın id si alındı
unset($array[$id]); # silinmesi istenen array silindi
$save=$this->save($tablo,$array); # son hali save edildi
if($save){
return true;
}else{
return false;
}
}
public function join($ilk=array(),$son,$where=array()){
/*
$ilk=ilk array,
$where = karşılaştırılacak alanlar array('ilkalan'=>'sonalan')
*/
$true=0;
foreach ($where as $ilki=>$sonu) {
# code...
if($ilk[$ilki]==$son[$sonu]){
$id=array_search($ilk[$ilki], $ilk);
$sonuc[]=$ilki[$id];
$true=$true+1;
}
}
if(count($where)==$true){
$this->netice=true;
}else{
$this->netice=false;
}
return array_unique($sonuc);
}
public function set_id($data=array()){
$say=count($data);
$sayi=$say+1;
return $sayi;
}
public function insert_id($data=array()){
$sayi=count($data);
return $sayi;
}
public function get_id($array=array(),$where=array()){
/*
$array = saklanan datanın array hali,
$where = arama yapılacak alanlar,
$text = aranan değer.
*/
$sayac=0;
foreach($array as $data) {
#datalar parse edildi
foreach($where as $name=>$value){
#arama yapılacak sütular çekildi
if ($data[$name]==$value){
$sonuc[]=$sayac;
}
}
$sayac=$sayac+1;
}
return $sonuc;
}
public function desc($tablo){
#tablo sütun bilgilerini gönderir
$array= $this->get($tablo);
foreach ($array as $value) {
foreach ($value as $name => $key) {
$sonuc[]=$name;
}
}
return array_unique($sonuc);
}
public function alter($tablo,$alan=array()){
#tabloya sütun ekler
$array= $this->get($tablo);
$sayac=0;
foreach ($array as $value) {
foreach ($value as $name => $key) {
foreach ($alan as $kolon) {
if($name!=$kolon){
$array[$sayac][$kolon]='';
}
}
}
$sayac=$sayac+1;
}
$save= $this->save($tablo, $array);
return true;
}
public function drop_alter($tablo,$alan=array()){
#tablodan sütun kaldırır
$array= $this->get($tablo);
$sayac=0;
foreach ($array as $value) {
foreach ($value as $name => $key) {
foreach ($alan as $kolon) {
if($name==$kolon){
unset($array[$sayac][$kolon]);
}
}
}
$sayac=$sayac+1;
}
$save= $this->save($tablo, $array);
return true;
}
public function drop($table){
$file_path=DBPATH.$table.'.php';
if(file_exists($file_path)){
if(unlink($file_path)){
return true;
}else{
return false;
}
}else{
return false;
}
}
Kullanım Notları:
* Codeigniter Framewoküne uyumlu olarak çalışır ,
* Application Dizininde Appdata isimli klasör açılmalı ,
* Define ile index.php de path edildiği dizin DBPATH olarak isimlendirilmeli define("DBPATH",FCPATH."application/Appdata/"); ,
* Yazma ve okuma izinleri ayarlanmalı
* Helper class ından dosya işlemleri için "file" çağrılmalı ve write_file metodundan fopen kısmı ya kapatılmalı yada return değerinin kapatılması gerekmektedir.
* Güvenlik için Appdata klasörünüze .htaccess dosyası açıp içine " Denny from all " ile http isteklerini engellemeniz daha güvenli olacaktır.
* Bağış Yapmak Çalışmalarımıza Katkıda Bulunmak İsterseniz buraya tıklayınız
* Direkt İndirme Linki https://yadi.sk/d/-CnevqIfbjfzw
Turbo DB CEO = Birol Kahraman - Yazılım Geliştirici (Software Developer)
İletişim : info@birolkahraman.com
Destek : support@birolkahraman.com