Перейти к контенту

Интеграция с сайтом на 3.0.4 теперь не работает. Что не так?


Рекомендуемые сообщения

Стоит CMS danneo, интеграция с 2.3 нормально, а вот с форумом 3.0.4 теперь не пашет. Подскажите, что изменилось то? Я особо в PHP не понимаю, тем более в авторизации.

Если кому не лень, гляньте файл, как и чего изменить согласно новой версии форума? :D

<?php

if(!defined("DNREAD")) exit();
// Класс : Начало
class userapi{
/* ==================================================== ##
## Настройки интеграции, правьте только их !!!		  ##
## ==================================================== */
var $data = array('prefix'=>'ibf_',											// Таблица пользователей
			   'table'=>'ibf_members',									  // Таблица пользователей
			 //  'tablesess'=>'ibf_sessions',								 // Таблица сессий
			 //  'tableextra'=>'ibf_member_extra',							// Таблица доп.данных пользователя
			   'userid'=>'id',											  // Название ID пользователя в базе
			   'sessexp'=>9600,											 // Срок действия сессии
			   'cookie'=>'',												// Название cookie
			   'cookieexp'=>9600,										   // Срок действия cookie
			   'avatarpath'=>'forum/style_avatars/',
			   'avatarupload'=>'forum/uploads/',
			   'linkreg'=>'forum/index.php?act=Reg&CODE=00',				// Ссылка на регистрацию
			   'linklost'=>'forum/index.php?act=Reg&CODE=10',			   // Ссылка на восстановление пароля
			   'linkprivmess'=>'',										  // Ссылка на личные сообщения
			   'linkprofile'=>'forum/index.php?showuser=');				 // ССылка на профиль
/* ==================================================== ##
## Настройки интеграции, правьте только их !!!		  ##
## ==================================================== */
var $db;																	   // Соединение
var $ua = array();															 // Массив
var $usermain = array('logged'=>0,											 // Массив
				   'userid'=>0,
				   'uname'=>'',
				   'umail'=>'',
				   'regdate'=>'',
				   'lastvisit'=>'',
				   'icq'=>'',
				   'msn'=>'',
				   'www'=>'',
				   'newmsg'=>0,
				   'newmsgnr'=>0,
				   'avatar'=>'');
//
function userapi(&$db,$logged = false){
 $this->db = &$db;
 if($logged){
  return $this->userarray();
 }
}

//
function clears($val){
$val = str_replace(array(" ",chr(0xCA),"<!--","-->",">","<","\"","!"),
				array(" ","","<!--","-->",">","<",""","!"),
				$val);
$val = preg_replace(array("/\n/","/\\\$/","/\r/"),
				 array("<br />","$",""),
				 $val);
 return $val;
}
//
function avatar($scr,$type,$link = false){
 $avatar = '';
 if($scr){

  if($type == 'local'){
 $avatar = ($link) ? '<img alt="" src="'.$this->data['avatarpath'].$scr.'">' : $this->data['avatarpath'].$scr;
  }
  if($type == 'url'){
$avatar = ($link) ? '<img alt="" src="'.$scr.'">' : $scr;
  }
  if($type == 'upload'){
$avatar = ($link) ? '<img alt="" src="'.$this->data['avatarupload'].$scr.'">' : $this->data['avatarupload'].$scr;
  }

 }
 return $avatar;
}
// userarray
function userarray(){
 global $setting;
  //
  $setting['editmail'] = 'no';
  //
  $ipb = array();
  $ipb['usagent'] = substr($_SERVER['HTTP_USER_AGENT'],0,255);
  $ipb['sessid'] = (isset($_COOKIE[$this->data['cookie'].'session_id'])) ? $_COOKIE[$this->data['cookie'].'session_id'] : '';
  $ipb['sessid'] = eregi("[^a-z0-9]",$ipb['sessid']) ? '' : substr($ipb['sessid'],0,32);
  $ipb['pashas'] = isset($_COOKIE[$this->data['cookie'].'pass_hash']) ? $_COOKIE[$this->data['cookie'].'pass_hash'] : '';
  $ipb['pashas'] = eregi("[^a-z0-9]",$ipb['pashas']) ? '' : $this->clears(substr($ipb['pashas'],0,32));
  //
  if(isset($ipb['sessid']) && isset($ipb['pashas'])){

  //
  if(empty($ipb['sessid'])){
   $ipbsess['member_id'] = 0;
  } else {
   $ipbsess = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."sessions WHERE id='".$this->db->escape(addslashes($ipb['sessid']))."'
													AND running_time > ".(NEWTIME - $this->data['sessexp'])." AND browser='".$this->db->escape(addslashes($ipb['usagent']))."'"));
  }
  //
  if($ipb['pashas'] && $ipbsess['member_id'] > 0){

	$newuser = $this->db->fetchrow($this->db->query("SELECT id,name,email,joined,new_msg,msg_total,last_visit,member_login_key FROM ".$this->data['prefix']."members WHERE id ='".intval($ipbsess['member_id'])."'"));

	if($newuser['id'] && $newuser['name'] && $newuser['member_login_key']==$ipb['pashas']){

	   $ipbextra = $this->db->fetchrow($this->db->query("SELECT icq_number,website,msnname,avatar_location,avatar_type FROM ".$this->data['prefix']."member_extra WHERE id='".intval($newuser['id'])."'"));

	   $this->usermain = array('logged'=>1,
								'userid'=>intval($newuser['id']),
								'uname'=>$newuser['name'],
								'umail'=>$newuser['email'],
								'regdate'=>$newuser['joined'],
								'lastvisit'=>$newuser['last_visit'],
								'icq'=>$ipbextra['icq_number'],
								'msn'=>$ipbextra['msnname'],
								'www'=>$ipbextra['website'],
								// BLOCK INFO
								'newmsg'=>$newuser['new_msg'],
								'newmsgnr'=>$newuser['msg_total'],
								'avatar'=>$this->avatar($ipbextra['avatar_location'],$ipbextra['avatar_type'],1)
							   );

	}

  }
  //
  }

}
// userarray
// logout
function logout(){
 if($this->usermain['logged'] == 1 && intval($this->usermain['userid']) > 0){
$this->db->query("DELETE FROM ".$this->data['prefix']."sessions WHERE member_id = '".$this->usermain['userid']."'");
@setcookie($this->data['cookie'].'session_id',"",NEWTIME - $this->data['cookieexp'],"/","",0);
@setcookie($this->data['cookie'].'member_id',"",NEWTIME - $this->data['cookieexp'],"/","",0);
@setcookie($this->data['cookie'].'pass_hash',"",NEWTIME - $this->data['cookieexp'],"/","",0);
 }
}
// logout
// checkpwd
function checkpwd($passw){
 return (strlen($passw) > 32) ? 0 : 1;
}
// checkpwd
// checklogin
function checklogin($login){
 return (strlen($login) > 32 || strlen($login) < 3) ? 0 : 1;
}
// checklogin
// issetmail
function issetmail($mail){
 return $this->db->numrows($this->db->query("SELECT id FROM ".$this->data['prefix']."members WHERE email = '".$this->db->escape($mail)."' AND id <> ".$this->usermain['userid'].""));
}
// issetmail
// addmail
function addmail($mail){
 $this->db->query("UPDATE ".$this->data['prefix']."members SET email = '".$this->db->escape($mail)."' WHERE id = ".$this->usermain['userid']."");
}
// addmail
// addurl
function addurl($url){
 if($url){
  $url = (!preg_match('#^http[s]?:\/\/#i',$url)) ? "http://".$url : $url;
  $url = (!preg_match('#^http[s]?\\:\\/\\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+#i',$url)) ? '' : $url;
 } else {
  $url = '';
 }
 return $url;
}
// addurl
// adddata
function adduse($icq,$www,$msn){
 $this->db->query("UPDATE ".$this->data['prefix']."member_extra SET icq_number='".$this->db->escape($icq)."',website='".$this->db->escape($www)."',msnname='".$this->db->escape($msn)."' WHERE id = '".$this->usermain['userid']."'");
}
// adddata
// associat
function associat($in = false){
$associat = array();
 if($in){
  $inq = $this->db->query("SELECT u.id,u.name,u.joined,e.avatar_location,e.avatar_type
						FROM ".$this->data['prefix']."members u LEFT JOIN ".$this->data['prefix']."member_extra
						AS e ON (u.id = e.id) WHERE u.id IN (".$this->db->escape($in).")");
  while($item = $this->db->fetchrow($inq)){
$associat[$item['id']]['userid'] = $item['id'];
$associat[$item['id']]['uname'] = $item['name'];
$associat[$item['id']]['regdate'] = $item['joined'];
$associat[$item['id']]['avatar'] = $this->avatar($item['avatar_location'],$item['avatar_type']);
  }
 }
 return $associat;
}
// associat
// login
function login($login,$pass){
 if($this->usermain['logged'] == 0 && intval($this->usermain['userid']) == 0){

  $login = $this->clears($login);

  if($newuser = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE name = '".$this->db->escape($login)."'"))){

 if($conve = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members_converge WHERE converge_id='".$newuser['id']."' AND converge_email='".$newuser['email']."'"))){

  $pass = md5($this->clears($pass));
  $checkpass = md5(md5($conve['converge_pass_salt']).$pass);

  if($conve['converge_pass_hash'] == $checkpass){

   //
   // $this->db->query("DELETE FROM ".$this->data['prefix']."sessions WHERE member_id = '".$newuser['id']."'");
   //
   $newsess['id'] = md5(uniqid(microtime()));
   $newsess['ip'] = substr($_SERVER['REMOTE_ADDR'],0,50);
   $newsess['ua'] = substr(addslashes($_SERVER['HTTP_USER_AGENT']),0,255);
   //
   $this->db->query("INSERT INTO ".$this->data['prefix']."sessions
					(id,member_name,
					 member_id,
					 ip_address,
					 browser,
					 running_time,
					 login_type,
					 member_group)
					 VALUES
					('".$newsess['id']."',
					 '".$newuser['name']."',
					 '".$newuser['id']."',
					 '".$newsess['ip']."',
					 '".$newsess['ua']."',
					 '".NEWTIME."',
					 0,
					 '".$newuser['mgroup']."')");

	 @setcookie($this->data['cookie'].'session_id',$newsess['id'],NEWTIME + $this->data['cookieexp'],"/","",0);
	 @setcookie($this->data['cookie'].'member_id',$newuser['id'],NEWTIME + $this->data['cookieexp'],"/","",0);
	 @setcookie($this->data['cookie'].'pass_hash',$newuser['member_login_key'],NEWTIME + $this->data['cookieexp'],"/","",0);

  }

 }

  }

 }

}
// login

// ADMIN FUNCTION
// LIST
function userlist($sf,$nu,$p,$sess){
global $lang;
 $inq = $this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE id > 0 ORDER BY id DESC LIMIT $sf,$nu");
  while($item = $this->db->fetchrow($inq)){
  $style = (intval($item['temp_ban']) > 0) ? 'noactive' : 'work_lite';
print "<tr>\n";
print "<td align=\"center\" class=\"$style\">\n";
print "<font class=site>".$item['name']."</font>";
print "</td>\n";
print "<td align=\"center\" class=\"$style\">\n";
print format_time($item['joined'],0);
print "</td>\n";
print "<td align=\"center\" class=\"$style\">\n";
print format_time($item['last_visit'],1);
print "</td>\n";
print "<td align=\"center\" class=\"$style\">\n";
print "<a href=mailto:".$item['email'].">".$item['email']."</a>\n";
print "</td>\n";
print "<td align=\"center\" class=\"$style\">\n";
if(intval($item['temp_ban']) == 0){
print "<a href=\"user.php?dn=edit&uid=".$item['id']."&p=$p&nu=$nu&ops=$sess[hash]\">
	   <img alt=\"".$lang['all_edit']."\" src=\"temp/".$sess['skin']."/images/edit.gif\" border=\"0\"></a>\n";
print "<a href=\"user.php?dn=del&uid=".$item['id']."&p=$p&nu=$nu&ops=$sess[hash]\">
	   <img alt=\"".$lang['all_delet']."\" src=\"temp/".$sess['skin']."/images/del.gif\" border=\"0\"></a>\n";
}
print "</td>\n";
print "</tr>\n";
  }
}
// LIST
// DEL
function userdel($uid){
 if($uid > 1){
  $this->db->query("DELETE FROM ".$this->data['prefix']."members WHERE id='$uid'");
 }
}
// DEL
// BANDEL
function bandel($uid){
}
// BANDEL
// BANADD
function banadd($uid){
}
// BANADD
// USEREDIT
function useredit($uid){
global $lang;
 if($uid > 0){
$item = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE id = '".$uid."'"));
print "<table border=\"0\"  border=\"0\" cellpadding=\"1\" cellspacing=\"1\" class=\"work\" align=\"center\">";
print "<tr><td class=\"work_title\" colspan=\"2\" align=\"center\">".$lang['edit_user']." ".$item['name']."</td></tr>\n";
print "<tr><td class=\"work_lite\" width=\"20%\" align=\"center\">";
print "<b>".$lang['login']." :</b></td>\n";
print "<td class=\"work_clip\" width=\"80%\" align=\"left\">";
print "".$item['name']."";
print "</td></tr>\n";
print "<tr><td class=\"work_lite\" width=\"20%\" align=\"center\"><b>E-Mail :</b>";
print "</td>\n";
print "<td class=\"work_clip\" width=\"80%\" align=\"left\">";
print "".$item['email']."";
print "</td></tr>\n";
 }
}
// USEREDIT
// USERSAVE
function usersave($uid,$edit){
}
// USERSAVE
// ADMIN
function messagelast($limit = 10, $target = '_blank'){
global $api,$lang;
 $inq = $this->db->query("SELECT id,password FROM ".$this->data['prefix']."forums");
 $qe = ''; $re = ''; $ignore = array();
 while($item = $this->db->fetchrow($inq)){ if($item['password']!=""){ $ignore[] = $item['id']; } }
 if(count($ignore) > 0){ $qe = " forum_id NOT IN (".implode(',',$ignore).") AND "; }

 $inq = $this->db->query("SELECT tid,title,posts,last_poster_id,last_post,last_poster_name,posts
					   FROM ".$this->data['prefix']."topics
					   WHERE (".$qe."state='open')
					   ORDER BY last_post DESC LIMIT 0,$limit");

 if($this->db->numrows($inq) > 0){
  $re = "<table class=\"forum\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">
	  <tbody class=\"forumbody\">
	  <tr>
		<td class=\"forumtitle\" width=\"50%\">Тема</td>
		<td class=\"forumtitle\" style=\"text-align: left;\" width=\"30%\">".$lang['author']."</td>
		<td class=\"forumtitle\" style=\"text-align: left;\" width=\"10%\">".$lang['all_data']."</td>
		<td class=\"forumtitle\" style=\"text-align: center;\" width=\"10%\">Ответов</td>
	  </tr>
	  </tbody>";
 while($item = $this->db->fetchrow($inq)){
  $title = (strlen($item['title']) > 55) ? substr($item['title'],0,55)."..." : $item['title'];
  $topid = $item['tid'];
  //$forid = $item['forum_id'];
  $lasid = $item['last_poster_id'];
  $poster = $item['last_poster_name'];
  $re.= "<tr>
	   <td class=\"forumtopic\">
		<a target=\"".$target."\" href=\"forum/index.php?showtopic=".$topid."&view=getnewpost\" title=\"".$title."\">".$title."</a>
	   </td>
	   <td class=\"forumtopic\" align=\"left\">
		<a target=\"".$target."\" href=\"forum/index.php?showuser=".$lasid."\">".$poster."</a>
	   </td>
	   <td class=\"forumtopic\" align=\"left\">
		<span class=\"time\">".$api->sitetime($item['last_post'])."</span>
	   </td>
	   <td class=\"forumtopic\" align=\"center\">
		<span class=\"time\">".$item['posts']."</span>
	   </td>
	 </tr>";
 }
 $re.="</table>";
}
return $re;
}
#
}
?>

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.