%PDF- %PDF-
| Direktori : /www/varak.net/paste.varak.net.old/libs/ |
| Current File : /www/varak.net/paste.varak.net.old/libs/default.class.php |
<?php
/////////////////////////////////////////////////////////////////////////
//
// Ce programme est un logiciel libre : vous pouvez le redistribuer ou
// le modifier selon les termes de la GNU General Public Licence tels
// que publiés par la Free Software Foundation : à votre choix, soit la
// version 3 de la licence, soit une version ultérieure quelle qu'elle
// soit.
//
// Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS
// AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ
// MARCHANDE ou D'ADÉQUATION À UNE UTILISATION PARTICULIÈRE. Pour
// plus de détails, reportez-vous à la GNU General Public License.
//
// Vous devez avoir reçu une copie de la GNU General Public License
// avec ce programme. Si ce n'est pas le cas, consultez
// <http://www.gnu.org/licenses/>
//
/////////////////////////////////////////////////////////////////////////
//
// Website : http://php-pastebin.com/
// Contact : contact@php-pastebin.com
//
/////////////////////////////////////////////////////////////////////////
//
// Dev : Atmoner
// Website : http://atmoner.com
// Contact : contact@atmoner.com
// Twitter : @atmon3r
//
/////////////////////////////////////////////////////////////////////////
class StartUp {
protected $prefix_db = ''; // Prefix db (for security)
private $charset = 'utf-8'; // Chraset
private $get = '';
public $version = '3'; // Version of php-pastebin
public $rev = '0'; // Revision of php-pastebin
public $langAutorises = array('fr','en','ru'); // Languages list
###
function __construct() {
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
if (session_status() == PHP_SESSION_NONE) session_start();
}
header("Content-type:text/html; charset=".$this->charset."");
$this->checkInstallFile();
$this->cleandata();
}
###
function checkInstallFile() {
global $smarty,$path;
if (file_exists($path."/install.php")) {
if (filesize($path."/libs/db.php") != 0) {
$smarty->assign('errorInstallFile',true);
}
} else
$smarty->assign('errorInstallFile',false);
}
###
function cGet($get) {
// var_dump($get);
$this->get = $get;
if(is_numeric($this->get)) {
$get=(int)$this->get;
} else {
$get=htmlspecialchars($this->get);
}
// return $get;
}
###
function getConfigs(){
global $db;
$sql = "SELECT `key`,`value` FROM ".$this->prefix_db."settings";
$array = $db->get_results($sql,ARRAY_A);
// $db->debug();
foreach ($array as $key => $value) {
$array[$value['key']] = $this->Fuckxss($value['value']);
}
return $array;
}
###
function cleandata() {
$now = time();
foreach ($this->getTimestamp() as $key => $value) {
if ($value['last_time'] + $value['time'] < $now) {
$this->updateTimestamp($now,$key,$value['last_time']);
$this->do_sanity($key);
}
}
}
###
function getTimestamp() {
global $db;
$sql = "SELECT id, time, last_time FROM ".$this->prefix_db."tasks";
$items = $db->get_results($sql);
foreach ($items as $item) {
$array[$item->id]['id'] = $item->id;
$array[$item->id]['time'] = $item->time;
$array[$item->id]['last_time'] = $item->last_time;
}
return $array;
}
###
function updateTimestamp($now,$id,$lt) {
global $db;
$db->query("UPDATE ".$this->prefix_db."tasks SET last_time=$now WHERE id='$id' AND last_time = '$lt'");
return true;
}
###
function do_sanity($key){
global $db;
$db->query("DELETE FROM pastes WHERE expire = '$key'");
}
###
function redirect($location='index.php'){
header("location:".$location);
}
###
function getLangs() {
global $db;
$items = $db->get_results("SELECT id, code, description FROM ".$this->prefix_db."lang");
foreach ( $items as $obj ){
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['code'] = $obj->code;
$array[$obj->id]['description'] = $obj->description;
}
return $array;
}
###
function addPaste($userid,$title,$lang,$paste,$expire,$exposure) {
global $db,$conf;
$date = time();
$query = "INSERT INTO ".$this->prefix_db."pastes (id,userid,uniqueid,title,lang,paste,date,expire,exposure)
VALUES (
'NULL',
'".$db->escape($userid)."',
'".$this->makeId()."',
'".$db->escape($title)."',
'".$db->escape($lang)."',
'".htmlspecialchars(mysql_escape_string($paste))."',
'$date',
'".$db->escape($expire)."',
'".$db->escape($exposure)."'
)";
$db->query($query);
$id = $db->insert_id;
$paste = $db->get_row("SELECT uniqueid FROM ".$this->prefix_db."pastes WHERE id='$id'");
$this->redirect($conf['baseurl'].'/'.$paste->uniqueid);
}
###
function editPaste($uniqueid,$title,$date,$lang,$paste){
global $db;
$date = $this->makeTimestamp($date);
$query = "UPDATE ".$this->prefix_db."pastes SET
title='".mysql_real_escape_string($title)."',
lang='$lang',
date='$date',
paste='".htmlspecialchars(mysql_escape_string($paste))."'
WHERE uniqueid = '$uniqueid'";
$db->query($query);
return true;
}
function delPaste($key){
global $db,$conf;
$db->query("DELETE FROM pastes WHERE uniqueid = '".$db->escape($key)."'");
$this->redirect($conf['baseurl'].'/admincp/pastes/?tokenAdmin='.$_COOKIE['tokenAdmin']);
}
###
function getStatuts(){
global $db;
$sql = "SELECT id,level,maxlines FROM ".$this->prefix_db."statuts ";
$items = $db->get_results($sql);
foreach ($items as $obj) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['level'] = $obj->level;
$array[$obj->id]['maxlines'] = $obj->maxlines;
}
return $array;
}
###
function editmaxPaste($value,$statut){
global $db;
$db->query("UPDATE ".$this->prefix_db."statuts SET maxlines='".$db->escape($value)."' WHERE id = '".$db->escape($statut)."' ");
return true;
}
###
function delUser($key){
global $db,$conf;
$db->query("DELETE FROM ".$this->prefix_db."users WHERE id = '".$db->escape($key)."'");
$db->query("DELETE FROM ".$this->prefix_db."pastes WHERE userid = '".$db->escape($key)."'");
$this->redirect($conf['baseurl'].'/admincp/users/?tokenAdmin='.$_COOKIE['tokenAdmin']);
}
###
function getPastes($limit=10){
global $db,$smarty;
$sql = "SELECT p.id,p.uniqueid,p.title,p.lang,p.paste,p.date,p.expire,p.exposure,p.hits,users.name FROM ".$this->prefix_db."pastes AS p ";
$sql .= "INNER JOIN ".$this->prefix_db."users ON p.userid=users.id ";
$sql .= "WHERE exposure = 'public' ";
$sql .= "ORDER BY p.date DESC LIMIT 0,$limit ";
$items = $db->get_results($sql);
if ($items) {
foreach ($items as $obj) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['uniqueid'] = $obj->uniqueid;
$array[$obj->id]['title'] = $this->Fuckxss($obj->title);
$array[$obj->id]['lang'] = $obj->lang;
$array[$obj->id]['paste'] = $obj->paste;
$array[$obj->id]['date'] = $this->ago($obj->date);
$array[$obj->id]['expire'] = $obj->expire;
$array[$obj->id]['exposure'] = $obj->exposure;
$array[$obj->id]['hits'] = $obj->hits;
$array[$obj->id]['name'] = $obj->name;
}
$smarty->assign('getPastes',$array);
return $array;
} else
return false;
}
function getMyPastes() {
global $db;
$sql = "SELECT p.id,p.userid,p.uniqueid,p.title,p.lang,p.paste,p.date,p.expire,p.exposure,p.hits FROM ".$this->prefix_db."pastes AS p ";
$sql .= "WHERE p.userid = '".$this->uid."' ";
$sql .= "ORDER BY p.date DESC";
$items = $db->get_results($sql);
if ($items) {
foreach ($items as $obj) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['uniqueid'] = $obj->uniqueid;
$array[$obj->id]['title'] = $this->Fuckxss($obj->title);
$array[$obj->id]['lang'] = $obj->lang;
$array[$obj->id]['paste'] = $obj->paste;
$array[$obj->id]['date'] = $obj->date;
$array[$obj->id]['expire'] = $obj->expire;
$array[$obj->id]['exposure'] = $obj->exposure;
$array[$obj->id]['hits'] = $obj->hits;
}
return $array;
} else
return false;
}
function getPasteByUser($name) {
global $db;
$user = $db->get_row("SELECT id FROM users WHERE name = '$name'");
$sql = "SELECT p.id,p.userid,p.uniqueid,p.title,p.lang,p.paste,p.date,p.expire,p.exposure,p.hits FROM ".$this->prefix_db."pastes AS p ";
$sql .= "WHERE p.userid = '".$user->id."' AND p.userid != '0' ";
$sql .= "ORDER BY p.date DESC";
$items = $db->get_results($sql);
//$db->debug();
foreach ($items as $obj) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['uniqueid'] = $obj->uniqueid;
$array[$obj->id]['title'] = $this->Fuckxss($obj->title);
$array[$obj->id]['lang'] = $obj->lang;
$array[$obj->id]['paste'] = $obj->paste;
$array[$obj->id]['date'] = $obj->date;
$array[$obj->id]['expire'] = $obj->expire;
$array[$obj->id]['exposure'] = $obj->exposure;
$array[$obj->id]['hits'] = $obj->hits;
}
return $array;
}
function deleteMypaste($id) {
global $db;
$db->query("DELETE FROM ".$this->prefix_db."pastes WHERE id='".$db->escape($id)."'");
return true;
}
###
function getlastPastes(){
global $db;
$sql = "SELECT p.id,p.uniqueid,p.title,p.lang,p.paste,p.date,p.expire,p.exposure,p.hits,users.name FROM ".$this->prefix_db."pastes AS p ";
$sql .= "INNER JOIN ".$this->prefix_db."users ON p.userid=users.id ";
$sql .= "WHERE exposure = 'public' ";
$sql .= "ORDER BY p.date DESC LIMIT 0,200 ";
$items = $db->get_results($sql);
foreach ($items as $obj) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['uniqueid'] = $obj->uniqueid;
$array[$obj->id]['title'] = $this->Fuckxss($obj->title);
$array[$obj->id]['lang'] = $obj->lang;
$array[$obj->id]['paste'] = $obj->paste;
$array[$obj->id]['date'] = $obj->date;
$array[$obj->id]['expire'] = $obj->expire;
$array[$obj->id]['exposure'] = $obj->exposure;
$array[$obj->id]['hits'] = $obj->hits;
$array[$obj->id]['name'] = $obj->name;
}
return $array;
}
###
function getTotalpaste($where=FALSE){
global $db;
$sql = "SELECT COUNT(id) AS id FROM ".$this->prefix_db."pastes ";
if($where!==FALSE){
$sql .= "WHERE date > $where";
}
$count = $db->get_row($sql);
return $count->id;
}
###
function getTotalusers(){
global $db;
$sql = "SELECT COUNT(id) AS id FROM ".$this->prefix_db."users ";
$count = $db->get_row($sql);
return $count->id;
}
###
function getPaste($id){
global $db;
$sql = "SELECT p.id,p.title,p.lang,p.paste,p.date,p.expire,p.exposure,p.hits FROM ".$this->prefix_db."pastes AS p ";
$sql .= "WHERE p.uniqueid = '".$db->escape($id)."' ";
$items = $db->get_results($sql);
foreach ($items as $obj) {
$array['id'] = $obj->id;
$array['title'] = $this->Fuckxss($obj->title);
$array['lang'] = $obj->lang;
$array['paste'] = stripslashes($this->Fuckxss($obj->paste));
$array['date'] = $obj->date;
$array['expire'] = $obj->expire;
$array['exposure'] = $obj->exposure;
$array['hits'] = $obj->hits;
}
return $array;
}
###
function updateHits($id) {
global $db;
$sql = "UPDATE ".$this->prefix_db."pastes SET hits=(hits + 1) WHERE uniqueid='".$db->escape($id)."'";
$db->query($sql);
return true;
}
###
function makeId($car=8) {
$string = "";
$chaine = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnpqrstuvwxy1234567890";
srand((double)microtime()*1000000);
for($i=0; $i<$car; $i++) {
$string .= $chaine[rand()%strlen($chaine)];
}
return $string;
}
###
function I18n(){
global $conf;
if(isset($_GET['strLangue'])) {
$chaine = $_SERVER['REQUEST_URI'];
$nbr = 13;
$url = substr($chaine, 0, -$nbr);
if (in_array($_GET['strLangue'],$this->langAutorises))
$_SESSION['strLangue']=$_GET['strLangue'];
$this->redirect($url);
} else {
if (empty($_SESSION['strLangue'])) {
$_SESSION['strLangue'] = $conf['lang'];
}
}
}
###
function addUser($name,$mail,$pass,$redirect='NULL',$sendMail='NULL',$isadmin="NULL") {
global $db,$conf;
$db->query("SELECT id FROM users WHERE id != '".$db->escape(0)."' AND mail='".$db->escape($mail)."' OR name='".$db->escape($name)."' ");
$user_details = $db->get_row();
if (!$user_details) {
$hash = $this->makeId(15);
if ($isadmin!="NULL")
$level = "4";
else
$level = "2";
$query = "INSERT INTO ".$this->prefix_db."users (id,name,pass,mail,level,token)
VALUES (
'NULL',
'".$db->escape($name)."',
'".$this->obscure($pass)."',
'".$db->escape($mail)."',
'$level',
'".$this->generateToken()."'
)";
$db->query($query);
if ($sendMail!='NULL')
$this->sendMail($name,$mail,$pass,$hash);
if ($redirect!='NULL')
$this->redirect($conf['baseurl'].'/zone-login.html');
return true;
} else
return false;
}
###
function EditUserInfo($pass='',$mail,$seemail,$location,$website,$sign) {
global $db, $conf;
if (empty($pass)) {
$pass = '';
} else {
$pass = "pass='".$this->obscure($pass)."',";
}
$query = "UPDATE ".$this->prefix_db."users SET $pass
mail='".$db->escape($mail)."',
seemail='".$db->escape($seemail)."',
location='".$db->escape($location)."',
website='".$db->escape($website)."',
signature ='".$db->escape($sign)."'
WHERE id = '".$this->uid."'";
$db->query($query);
$this->redirect($conf['baseurl'].'/account.html');
return true;
}
###
function checkMail($mail){
# code...
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^'.$atom.'+'.'(\.'.$atom.'+)*'.'@'.'('.$domain.'{1,63}\.)+'.$domain.'{2,63}$/i';
// test de l'adresse e-mail
if (preg_match($regex, $mail)) {
return true;
} else {
return false;
}
}
###
function sendMail($user,$mail,$pass,$hash) {
require_once('mailling/classes/class.formatmail.php');
$GLOBALS['NAME'] = $user;
$GLOBALS['USERNAME'] = $user;
$GLOBALS['PASSWORD'] = $pass;
//Importatnt: fill up all GLOBALS field before call this constructor
$FM = new FormatMail(dirname(__FILE__).'/mailling/templates/registration-'.$_SESSION['strLangue'].'.htm');
$FM->Mailer->FromName = $user;
// $FM->Mailer->From = $this->admin_mail;
$FM->Mailer->Subject = 'Registration';
$FM->Mailer->AddAddress($mail,$user);
//And now, send the mail...
if ($FM->Send()) {
return true;
}
return false;
}
###
function getThemes($dir,$mode='folders'){
$items = array();
if( !preg_match( "/^.*\/$/", $dir ) ) $dir .= '/';
$handle = opendir( $dir );
if( $handle != false ){
while($item=readdir($handle))
{
if($item != '.' && $item != '..')
{
// selon le mode choisi
switch($mode)
{
case 'folders' :
if(is_dir($dir.$item))
$items[] = $item;
break;
case 'files' :
if(!is_dir($dir.$item))
$items[] = $item;
break;
case 'all' :
$items[] = $item;
}
}
}
closedir($handle);
return $items;
}
else return false;
}
###
function makeTimestamp($date){
$date = str_replace(array(' ', ':'), '-', $date);
$c = explode('-', $date);
$c = array_pad($c, 6, 0);
array_walk($c, 'intval');
return mktime($c[3], $c[4], $c[5], $c[1], $c[2], $c[0]);
}
###
function addFooter(){
# code...
$c = "Php-Pastebin V.".$this->version." Rev: ".$this->rev." By: <a href=\"http://atmoner.com\" target=\"_blank\">Atmoner</a>";
return $c;
}
###
function Fuckxss($var) {
return htmlspecialchars(strip_tags($var), ENT_NOQUOTES);
}
###
function ago($time) {
$periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
$lengths = array("60","60","24","7","4.35","12","10");
$now = time();
$difference = $now - $time;
$tense = "ago";
for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
$difference /= $lengths[$j];
}
$difference = round($difference);
if($difference != 1) {
$periods[$j].= "s";
}
return "$difference $periods[$j] ago";
}
}
class pasteUsers extends startUp {
var $session_name = 'sessionUser';
var $hash = '0900124461779baebd4e030b813535ac';
var $session_username = "";
var $session_password = "";
var $uid = "";
###
function isLogged(){
if($this->checkUser()){
return $this->uid;
} else {
return false;
}
}
###
function isLoggedAcount(){
if($this->checkUser()){
return $this->uid;
} else {
$this->redirect();
$this->killAll();
}
}
###
function checkUser(){
global $db;
if($this->checkCookie()){
$uid = $this->uid;
$username = $this->session_username;
$password = $this->session_password;
$query = "SELECT id FROM ".$this->prefix_db."users WHERE name = '$username' AND pass = '$password' AND id = '$uid' AND level > '0' LIMIT 1;";
$user = $db->get_row($query);
// $db->debug();
if ($user->id)
return true;
else
return false;
} else
return false;
}
###
function checkAdmin($token){
global $db;
if($this->checkCookie()){
$uid = $this->uid;
$query = "SELECT id FROM ".$this->prefix_db."users WHERE id = '".$db->escape($uid)."' AND token = '".$db->escape($token)."' AND level = '4' LIMIT 1;";
$user = $db->get_row($query);
if ($user->id)
return true;
else
return false;
} else
return false;
}
###
function checkCredentials($username, $password){
global $db;
$password = $this->obscure($password);
$query = "SELECT id FROM ".$this->prefix_db."users WHERE name = '".$db->escape($username)."' AND pass = '".$db->escape($password)."' AND level > '0' LIMIT 1;";
$user = $db->get_row($query);
if ($user->id) {
return true;
} else {
return false;
}
}
###
function getUserdata($uid){
global $db;
$query = "SELECT u.id, u.name, u.mail, u.level, u.signature, u.seemail, u.location, u.website, statuts.id, statuts.level, statuts.maxlines FROM ".$this->prefix_db."users AS u";
$query .= " INNER JOIN statuts ON u.level=statuts.id";
$query .= " WHERE u.name = '".$db->escape($uid)."' LIMIT 1";
$user = $db->get_row($query,OBJECT); // get result in objet (OBJECT)
if ($user) {
$user->id = $this->Fuckxss($user->id);
$user->name = $this->Fuckxss($user->name);
$user->mail = $this->Fuckxss($user->mail);
$user->level = $this->Fuckxss($user->level);
$user->signature = $this->Fuckxss($user->signature);
$user->location = $this->Fuckxss($user->location);
$user->website = $this->Fuckxss($user->website);
return $user;
} else
return false;
}
###
function getMydata($uid){
global $db;
$query = "SELECT u.id, u.name, u.mail, u.level, u.signature, u.seemail, u.location, u.website, statuts.id, statuts.level, statuts.maxlines FROM ".$this->prefix_db."users AS u";
$query .= " INNER JOIN statuts ON u.level=statuts.id";
$query .= " WHERE u.id = '".$db->escape($this->uid)."' LIMIT 1";
$user = $db->get_row($query,OBJECT); // get result in objet (OBJECT)
if ($user) {
$user->id = $this->Fuckxss($user->id);
$user->name = $this->Fuckxss($user->name);
$user->mail = $this->Fuckxss($user->mail);
$user->level = $this->Fuckxss($user->level);
$user->signature = $this->Fuckxss($user->signature);
$user->location = $this->Fuckxss($user->location);
$user->website = $this->Fuckxss($user->website);
return $user;
} else
return false;
}
###
function getUserpastes($where=FALSE){
global $db;
$sql = "SELECT COUNT(id) AS id FROM ".$this->prefix_db."pastes ";
if($where){
$sql .= "WHERE userid = $where";
}
$count = $db->get_row($sql);
return $count->id;
}
###
function getUsers(){
global $db;
$query = "SELECT u.id, u.name, u.mail, u.level, statuts.level FROM ".$this->prefix_db."users AS u";
$query .= " INNER JOIN statuts ON u.level=statuts.id";
$items = $db->get_results($query);
foreach ( $items as $obj ) {
$array[$obj->id]['id'] = $obj->id;
$array[$obj->id]['name'] = $this->Fuckxss($obj->name);
$array[$obj->id]['mail'] = $this->Fuckxss($obj->mail);
$array[$obj->id]['level'] = $this->Fuckxss($obj->level);
}
return $array;
}
###
function adminEditUser($id,$pass,$name,$mail,$level,$location,$website,$signature) {
global $db;
if (empty($pass)) {
$pass = '';
} else {
$pass = "pass='".$this->obscure($pass)."',";
}
$query = "UPDATE ".$this->prefix_db."users SET $pass name='".$db->escape($name)."',mail='".$db->escape($mail)."',level='".$db->escape($level)."',location='".$db->escape($location)."',website='".$db->escape($website)."',signature='".$db->escape($signature)."' WHERE id = '$id'";
$db->query($query);
return true;
}
###
function checkCookie(){
global $db;
if (isset($_COOKIE["$this->session_name"]) || isset($_SESSION["$this->session_name"])) {
$cookie = explode(",",$_COOKIE["$this->session_name"]);
$this->session_username = $db->escape($cookie['0']);
$this->session_password = $db->escape($cookie['1']);
$this->uid = $db->escape($cookie['2']);
return true;
} else {
return false;
}
}
###
function userExists($username,$password) {
if (($this->username==$username)&&($this->password==$password)) {
return true;
} else {
return false;
}
}
###
function setSession($username,$password,$cookie){
global $db;
$query = "SELECT id, level, token FROM ".$this->prefix_db."users WHERE
name = '".$db->escape($username)."' AND pass = '".$this->obscure($password)."' AND level > '0' LIMIT 1;";
$row = $db->get_row($query,ARRAY_A); // get result in array (ARRAY_A)
$values = array($username,$this->obscure($password),$row['id']);
$session = implode(",",$values);
if($cookie=='on'){
setcookie("$this->session_name", $session, time()+60*60*24*100,'/');
} else {
$_SESSION["$this->session_name"] = $session;
}
// Gestion du token
if ($row['level'] === '4'){
setcookie("tokenAdmin", $row['token'], time()+60*60*24*100,'/');
}
setcookie("token", $row['token'], time()+60*60*24*100,'/');
}
function generateToken(){
return uniqid(rand(), true);
}
###
function sqlesc($x) {
return '\''.mysql_real_escape_string($x).'\'';
}
###
function logout($redirect=true){
global $conf;
setcookie("$this->session_name", "", time()-60*60*24*100, "/");
setcookie("tokenAdmin", "", time()-60*60*24*100, "/");
setcookie("token", "", time()-60*60*24*100, "/");
unset($_SESSION["$this->session_name"]);
session_unset();
if($redirect===true){
$this->redirect($conf['baseurl'].'/index.html');
}
}
###
function redirect($location='index.php'){
header("location:".$location);
exit; // Merci fr0g!
}
//Obscure
function obscure($password, $algorythm = "sha1"){
$password = strtolower($password);
$salt = hash($algorythm, $this->hash);
$hash_length = strlen($salt);
$password_length = strlen($password);
$password_max_length = $hash_length / 2;
if ($password_length >= $password_max_length){
$salt = substr($salt, 0, $password_max_length);
} else {
$salt = substr($salt, 0, $password_length);
}
$salt_length = strlen($salt);
$salted_password = hash($algorythm, $salt . $password);
$used_chars = ($hash_length - $salt_length) * -1;
$final_result = $salt . substr($salted_password, $used_chars);
return $final_result;
}
###
function get_gravatar( $email, $s = 120, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
$url = 'http://www.gravatar.com/avatar/';
$url .= md5( strtolower( trim( $email ) ) );
$url .= "?s=$s&d=$d&r=$r";
if ( $img ) {
$url = '<img src="' . $url . '"';
foreach ( $atts as $key => $val )
$url .= ' ' . $key . '="' . $val . '"';
$url .= ' />';
}
return $url;
}
##
function getPassword($email){
global $db;
$db->query('SELECT pass FROM '.$this->prefix_db.'users WHERE mail="'.$db->escape($email).'"');
$result = $db->get_row();
return $result->pass;
}
##
function logPasswordChange($email) {
global $db, $agent;
if ($agent->isBrowser()) {
$info = array(
'ip' => $agent->user_IP,
'host' => gethostbyaddr($agent->user_IP),
'browser' => $agent->browser.' v'.$agent->version,
'os' => $agent->platform
);
}
$query = 'INSERT INTO '.$this->prefix_db.'pass_change_log (email,old_pass,date,ip,ip_host,browser,os,token) VALUES (
"'.$db->escape($email).'",
"'.$this->getPassword($email).'",
"'.time().'",
"'.$db->escape($info['ip']).'",
"'.$db->escape($info['host']).'",
"'.$db->escape($info['browser']).'",
"'.$db->escape($info['os']).'",
"'.$this->obscure(uniqid()).'"
)';
$db->query($query);
}
##
function getCaptchaStatus() {
global $db;
$db->query('SELECT value FROM '.$this->prefix_db.'settings WHERE `key` = "use_captcha"');
$result = $db->get_row();
return ($result->value == 'no') ? 'no' : 'yes';
}
function getPrefixDb() {
return $this->prefix_db;
}
}
?>