File: kchat/lib/global.php

Recommend this page to a friend!
  Classes of Ganesh Kandu  >  kchat  >  kchat/lib/global.php  >  Download  
File: kchat/lib/global.php
Role: Example script
Content type: text/plain
Description: Example script
Class: kchat
Database driven PHP live chat system
Author: By
Last change:
Date: 2 years ago
Size: 9,271 bytes
 

Contents

Class file image Download
<?php

/**
* KChat -
* Author Ganesh Kandu
* Contact kanduganesh@gmail.com
*/

if(file_exists("config/db.php")){
   
$data['db'] = include "config/db.php";
   
$opt = array(
       
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
       
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
       
PDO::ATTR_EMULATE_PREPARES => false,
       
PDO::MYSQL_ATTR_FOUND_ROWS => TRUE
   
);
   
$data['pdo'] = new PDO("mysql:host=".$data['db']['db_host'].";dbname=".$data['db']['db_db'].";port=".$data['db']['db_port'].";charset=utf8", $data['db']['db_user'], $data['db']['db_pass'],$opt);
}

function
_rand($len){
   
$result = "";
   
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   
$charArray = str_split($chars);
    for(
$i = 0; $i < $len; $i++){
       
$randItem = array_rand($charArray);
       
$result .= "".$charArray[$randItem];
    }
    return
$result;
}

function
fcreate($file,$data){
   
$fnf = explode("/",$file);
   
$file = end($fnf);
    unset(
$fnf[count($fnf)-1]);
   
$folders = "";
    foreach(
$fnf as $fols){
       
$folders .= $fols;
        if(!
is_dir($folders)){
           
mkdir($folders);
        }
       
$folders .= "/";
    }
    return
file_put_contents($folders.$file,$data);
}

function
isAjax(){
   
$header = isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? $_SERVER['HTTP_X_REQUESTED_WITH'] : null;
    return (
$header === 'XMLHttpRequest');
}

function
makefile($data,$src,$trg,$x){
   
$xn = array();
    foreach(
$x as $key => $value){
       
$xn['{{'.$key.'}}'] = $value;
    }
   
$file = file_get_contents($data['config']['path']."/kchat/make/".$src);
   
$file = strtr($file,$xn);
   
fcreate($data['config']['path'].'/'.$trg,$file);
}

function
js($data,$src,$trg){
    if(!
file_exists($data['config']['path'].'/'.$trg)){
       
$src .= '.js';
       
$x = array(
           
'url' => $data['config']['url'],
        );
       
makefile($data,$src,$trg,$x);
    }
    return
$data['config']['url']."/".$trg;
}

function
css($data,$src,$trg){
    if(!
file_exists($data['config']['path'].'/'.$trg)){
       
$src .= '.css';
       
$x = array(
           
'url' => $data['config']['url'],
        );
       
makefile($data,$src,$trg,$x);
    }
    return
$data['config']['url']."/".$trg;
}

function
CheckValid($pass,$hash){
   
    if(
$pass == $hash){
        return
true;
    }
    return
false;
}

function
cactive($active,$name){
    if(
$active == $name){
        return
" class=\"active\" ";
    }
}

function
db($no){
   
$bin = array();
    while(
floor($no) > 0){
       
$bin[] = $no%2;
       
$no = $no/2;
    }
    return
$bin;
}

function
status($no,$tm){
   
$bin = db($no);
    if(!isset(
$bin[$tm])){
       
$bin[0] = 0;
    }
   
$dec = 0;
   
$i = 0;
   
$res = array();
    foreach(
$bin as $b){
       
$res[] = $b;
       
$dec += $b*pow(2,$i);
       
$i++;
    }
    if(!isset(
$bin[$tm])){
       
$bin[$tm] = 0;
    }
    if(
$bin[$tm] == 0){
       
$dec += pow(2,$tm);
    }else{
       
$dec -= pow(2,$tm);
    }
    return
$dec;
}

function
get_status($no,$tm){
   
$bin = db($no);
    if(isset(
$bin[$tm])){
        return
$bin[$tm];
    }else{
        return
0;
    }
}

function
status_in($len,$no){
   
$last = 0;
   
$size = $len - 1;
    while(
$size >= 0){
       
$last += pow(2,$size);
       
$size--;
    }
   
$numbers = 0;
   
$nos = array();
    while(
$last >= $numbers){
       
$arr = db($numbers);
        if(
get_status($numbers,$no) == 0){
           
$nos[] = $numbers;
        }
       
$numbers++;
    }
    return
$nos;
}

function
ago($datetime, $full = false){
   
   
$now = new DateTime();
   
$ago = new DateTime($datetime);
   
$diff = $now->diff($ago);

   
$diff->w = floor($diff->d / 7);
   
$diff->d -= $diff->w * 7;

   
$string = array(
       
'y' => 'year',
       
'm' => 'month',
       
'w' => 'week',
       
'd' => 'day',
       
'h' => 'hour',
       
'i' => 'minute',
       
's' => 'second',
    );
    foreach (
$string as $k => &$v) {
        if (
$diff->$k) {
           
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
        } else {
            unset(
$string[$k]);
        }
    }
    if (!
$full) $string = array_slice($string, 0, 1);
    return
$string ? implode(', ', $string) . ' ago' : 'just now';
}

function
getip(){
   
$ipaddress = '';
    if (
getenv('HTTP_CLIENT_IP'))
       
$ipaddress = getenv('HTTP_CLIENT_IP');
    else if(
getenv('HTTP_X_FORWARDED_FOR'))
       
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(
getenv('HTTP_X_FORWARDED'))
       
$ipaddress = getenv('HTTP_X_FORWARDED');
    else if(
getenv('HTTP_FORWARDED_FOR'))
       
$ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(
getenv('HTTP_FORWARDED'))
       
$ipaddress = getenv('HTTP_FORWARDED');
    else if(
getenv('REMOTE_ADDR'))
       
$ipaddress = getenv('REMOTE_ADDR');
    else
       
$ipaddress = 'UNKNOWN';
 
    return
$ipaddress;
}

function
reverse($a){
   
$b = array();
    for(
$i = count($a) - 1;$i >= 0 ; $i--){
       
$b[] = $a[$i];
    }
    return
$b;
}

function
msgencode($data,$txt){
    return
trim(json_encode($txt),'"');
}

function
msgdecode($data,$txt){
    return
json_decode('"'.$txt.'"', 1);
}

function
menu($data,$key,$value){
   
$id = "";
    if(isset(
$value['id'])){
       
$id = "id=\"".$value['id']."\"";
    }
    if(!isset(
$value['active'])){
       
$value['active'] = "****";
    }
    echo
"<li ".cactive($value['active'],$data['active'])." >";
        echo
"<a href=\"".$value['url']."\" ".$id." >";
            echo
"<span class=\"".$value['glyphicon']."\"></span>";
            echo
$key;
        echo
"</a>";
    echo
"</li>";
}

function
submenu($data,$key,$value){
   
$id = "submenuid".rand(10000,99999);
    echo
"<li class=\"panel panel-default\" id=\"dropdown\">";
        echo
"<a data-toggle=\"collapse\" href=\"#".$id."\">";
            echo
"<span class=\"".$value['glyphicon']."\"></span>";
            echo
"".$key."";
            echo
"<span class=\"caret\"></span>";
        echo
"</a>";
        echo
"<div id=\"".$id."\" class=\"panel-collapse collapse\">";
            echo
"<div class=\"panel-body\">";
                echo
"<ul class=\"nav navbar-nav\">";
                   
sitebar($data,$value['submenu']);
                echo
"</ul>";
            echo
"</div>";
        echo
"</div>";
    echo
"</li>";
}

function
sitebar($data,$sitebar){
    foreach(
$sitebar as $key => $value){
        if(isset(
$value['menu'])){
           
menu($data,$key,$value);
        }else{
           
submenu($data,$key,$value);
        }
    }
}

function
strchunk($txt,$len = 20){
   
$i = 0;
   
$chunk = array();
    while(
substr($txt,$i*$len,$len)){
       
$chunk[] = substr($txt,$i*$len,$len);
       
$i++;
    }
    return
$chunk;
}

function
getGroup($data){
    if(isset(
$data['param'][0])){
        return
base64_decode(urldecode($data['param'][0]));
    }else{
        return
'NO_GROUP';
    }
}

function
getBrowser(){
    if(!empty(
$_SERVER['HTTP_USER_AGENT'])){
        return
$_SERVER['HTTP_USER_AGENT'];
    }else{
        return
false;
    }
}
   
function
k_random($n){
   
$char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   
$result = '';
    while(
$n > 0){
       
$result .= $char[rand(0,61)];
       
$n--;
    }
    return
$result;
}

function
base($n,$bf,$bt){
   
$char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   
$result = '';
   
$offset = 0;
    while(
$n != 0){
        if((
$n % $bt) < 0){
           
$offset = - ($n % $bt);
        }else{
           
$offset = ($n % $bt);
        }
       
$result = $char[$offset].$result;
       
$n = floor($n/$bt);
    }
    return (
$result);
}

function
kchat_rand(){
    return
base((round(microtime(true) * 10000) . rand(100,999)),10,62);
}

function
isReq($id){
    if(isset(
$_POST['req'][$id])){
        if(
$_POST['req'][$id] == 'true'){
            return
true;
        }
    }
    return
false;
}

function
reqps($data){
   
$ser = @unserialize(@file_get_contents('cache/reqps.temp'));
    if(
$data['reqps'] > $ser['s']){
        @
file_put_contents('cache/reqps.cache',$ser[1 - $data['reqps']%2]);
    }
    if(isset(
$ser[$data['reqps']%2])){
        ++
$ser[$data['reqps']%2];
    }
   
$ser[1 - $data['reqps']%2] = 0;
   
$ser['s'] = $data['reqps'];
   
$req = @serialize($ser);
    @
file_put_contents('cache/reqps.temp',$req);
}

function
psql($string,$data) {
   
$indexed=$data==array_values($data);
    foreach(
$data as $k=>$v) {
        if(
is_string($v)) $v="'$v'";
        if(
$indexed) $string=preg_replace('/\?/',$v,$string,1);
        else
$string=str_replace(":$k",$v,$string);
    }
    return
$string;
}

function
nextQuery($fp) {
   
$sql="";
    while (
$line = fgets($fp, 40960)) {
       
$line = trim($line);
        if (
strlen($line)>1) {
            if (
$line[0]=="-" && $line[1]=="-") {
                continue;
            }
        }
       
$sql.=$line.chr(13).chr(10);
        if (
strlen($line)>0){
            if (
$line[strlen($line)-1]==";"){
                break;
            }
        }
    }
    return
$sql;
}

function
presql($data,$sql){
    return
str_replace("%dbprefix%",$data['db']['db_prefix'],$sql);
}

function
cclear(){
   
$file = 'cache/.kchat';
    if(!
file_exists($file)){
       
file_put_contents($file,'');
    }
    if((
time() - @filemtime($file)) > 3){
       
touch($file);
        return
true;
    }else{
        return
false;
    }
}

function
set_notification($data,$not,$url = '#'){
    if(isset(
$data['user']['id'])){
       
$user = $data['user']['id'];
    }
    if(isset(
$data['Admin'])){
       
$user = $data['Admin'];
    }
   
$db_prefix = $data['db']['db_prefix'];
   
$stmt = $data['pdo']->prepare("INSERT INTO `{$db_prefix}notification` (`url`,`notification`,`user`) VALUES (:url,:not,:user)");
   
$stmt->execute(
        array(
           
'url' => $url,
           
'not' => $not,
           
'user' => $user
       
)
    );
}

function
__end(){
   
$txt = "YWxlcnRpZnkuYWxlcnQoJzxjZW50ZXI+RG9uYXRlPGJyLz5HYW5lc2ggS2FuZHU8YnIvPjxhIGhyZWY9XCJodHRwczovL3d3dy5wYXlwYWwubWUvR2FuZXNoS2FuZHVcIiBUQVJHRVQ9XCJfQkxBTktcIiA+RG9uYXRlPC9hPjwvY2VudGVyPicpOw==";
   
$file = 'cache/~~kchat';
    if(!
file_exists($file)){
       
file_put_contents($file,'');
    }
    if((
time() - @filemtime($file)) > 1296000){
       
touch($file);
        echo
base64_decode($txt);
    }else{
        echo
'';
    }
}

function
is_ip4($ip){
    if(
count(explode('.',$ip)) != 4){
        return
false;
    }
    return
true;
}


For more information send a message to info at phpclasses dot org.