Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.01 KB | None | 0 0
  1. <?php
  2. $true = true;
  3.  
  4. class users
  5. {
  6. public static function signup_get ()
  7. {
  8. api::nav ( '' , l::t ( 'Регистрация' ) , '1' );
  9. tpl::load ( 'users-signup-get' );
  10. tpl::compile ( 'content' );
  11. }
  12.  
  13. public static function recovery_get ()
  14. {
  15. api::nav ( '' , l::t ( 'Восстановление пароля' ) , '1' );
  16. tpl::load ( 'users-recovery-get' );
  17. tpl::compile ( 'content' );
  18. }
  19.  
  20. public static function invite ( $id )
  21. {
  22. db::q ( 'SELECT id FROM users where id="' . $id . '"' );
  23. if ( db::n () != 0 ) {
  24. api::set_cookie ( "invite" , $id , 7 );
  25. }
  26. header ( 'location:/' );
  27. exit;
  28. }
  29.  
  30. public static function profile ( $id )
  31. {
  32. global $title , $conf;
  33. if ( $id != api::info ( 'id' ) ) {
  34. if ( ! api::admin ( 'profile' ) ) {
  35. api::result ( l::t ( 'Недостаточно привилегий для доступа к данной странице' ) );
  36.  
  37. return false;
  38. }
  39. }
  40. db::q ( 'SELECT * FROM users where id="' . $id . '"' );
  41. if ( db::n () == 0 ) {
  42. api::result ( l::t ( 'Пользователь не найден' ) );
  43.  
  44. return false;
  45. }
  46. $user = db::r ();
  47. db::q ( 'SELECT id FROM logs_balance where user="' . $id . '" order by id desc' );
  48. $all = db::n ();
  49. $_GET[ 'page' ] = (int) r::g ( 4 );
  50. if ( (int) $_GET[ 'page' ] ) {
  51. if ( ( $all / 20 ) > (int) $_GET[ 'page' ] ) {
  52. $page = 20 * (int) $_GET[ 'page' ];
  53. } else {
  54. $page = 0;
  55. }
  56. } else {
  57. $page = 0;
  58. }
  59. $sql = db::q ( 'SELECT * FROM logs_balance where user="' . $id . '" order by id desc LIMIT ' . $page . ' ,20' );
  60. $data = "";
  61. while ( $row = db::r ( $sql ) ) {
  62. tpl::load2 ( 'admin-money-listen-get' );
  63. tpl::set ( '{id}' , $row[ 'id' ] );
  64. tpl::set ( '{com}' , $row[ 'mes' ] );
  65. tpl::set ( '{sum}' , $row[ 'sum' ] );
  66. tpl::set ( '{time}' , api::langdate ( "d.m.Y - H:i" , $row[ 'time' ] ) );
  67. if ( $row[ 'tip' ] == 0 ) {
  68. tpl::set_block ( "'\\[act-0\\](.*?)\\[/act-0\\]'si" , "\\1" );
  69. tpl::set_block ( "'\\[act-1\\](.*?)\\[/act-1\\]'si" , "" );
  70. } else {
  71. tpl::set_block ( "'\\[act-1\\](.*?)\\[/act-1\\]'si" , "\\1" );
  72. tpl::set_block ( "'\\[act-0\\](.*?)\\[/act-0\\]'si" , "" );
  73. }
  74. tpl::compile ( 'logs' );
  75. }
  76. $sql = db::q ( 'SELECT * FROM login_key where user="' . $id . '" order by id desc' );
  77. while ( $row = db::r ( $sql ) ) {
  78. tpl::load ( 'users-profile-login' );
  79. tpl::set ( '{id}' , $row[ 'id' ] );
  80. tpl::set ( '{ip}' , base64_decode ( $row[ 'ip' ] ) );
  81. tpl::set ( '{agent}' , base64_decode ( $row[ 'agent' ] ) );
  82. tpl::set ( '{time}' , api::langdate ( "d.m.Y <br> H:i" , $row[ 'time' ] ) );
  83. tpl::compile ( 'logs2' );
  84. }
  85. tpl::load ( 'users-profile' );
  86. if ( $id != api::info ( 'id' ) ) {
  87. if ( ! api::admin ( 'profile' ) ) {
  88. tpl::set_block ( "'\\[link\\](.*?)\\[/link\\]'si" , "" );
  89. tpl::set_block ( "'\\[link2\\](.*?)\\[/link2\\]'si" , "" );
  90. } else {
  91. tpl::set_block ( "'\\[link\\](.*?)\\[/link\\]'si" , "" );
  92. tpl::set_block ( "'\\[link2\\](.*?)\\[/link2\\]'si" , "\\1" );
  93. }
  94. tpl::set_block ( "'\\[link3\\](.*?)\\[/link3\\]'si" , "\\1" );
  95. } else {
  96. tpl::set_block ( "'\\[link\\](.*?)\\[/link\\]'si" , "\\1" );
  97. tpl::set_block ( "'\\[link2\\](.*?)\\[/link2\\]'si" , "\\1" );
  98. tpl::set_block ( "'\\[link3\\](.*?)\\[/link3\\]'si" , "" );
  99. }
  100. tpl::set ( '{logs_balance}' , tpl::result ( 'logs' ) );
  101. tpl::set ( '{logs_auth}' , tpl::result ( 'logs2' ) );
  102. tpl::set ( '{mail}' , $user[ 'mail' ] );
  103. tpl::set ( '{vk_id}' , $conf[ 'vk_id' ] );
  104. tpl::set ( '{vk}' , $user[ 'vk_id' ] );
  105.  
  106. tpl::set ( '{phone}' , $user[ 'phone' ] );
  107. tpl::set ( '{name}' , $user[ 'name' ] . ' ' . $user[ 'lastname' ] );
  108. tpl::set ( '{invite}' , "http://" . $conf[ 'domain' ] . '/users/invite/' . $id );
  109. db::q ( 'SELECT id FROM users where invite="' . $id . '" and signup="0" order by id desc' );
  110. $priced = db::n ();
  111. tpl::set ( '{invited}' , $priced );
  112. tpl::set ( '{invite_money}' , $user[ 'invite_money' ] );
  113. $pr = $conf[ 'invite' ];
  114. krsort ( $pr );
  115. foreach ( $pr as $key => $val ) {
  116. if ( $priced >= $key ) {
  117. $price = $val;
  118. break;
  119. }
  120. }
  121. tpl::set ( '{invited_price}' , $price );
  122. tpl::set ( '{balance}' , $user[ 'balance' ] );
  123. tpl::set ( '{id}' , $id );
  124. db::q ( '(SELECT id FROM gh_servers WHERE user="' . $id . '") UNION (SELECT t1.id FROM gh_servers as t1, gh_servers_friends as t2 WHERE t1.id = t2.server and t2.user="' . $id . '") order by id desc' );
  125. tpl::set ( '{servers}' , db::n () );
  126. db::q ( 'SELECT id FROM mysql where user="' . $id . '"' );
  127. tpl::set ( '{mysql}' , db::n () );
  128. db::q ( 'SELECT id FROM isp where user="' . $id . '"' );
  129. tpl::set ( '{web}' , db::n () );
  130. tpl::set ( '{nav}' , api::pagination ( $all , 20 , (int) $_GET[ 'page' ] , '/users/profile/' . $id ) );
  131. if ( $user[ 'photo' ] ) {
  132. tpl::set ( '{photo}' , '/files/photo/' . $user[ 'id' ] . '.png' );
  133. } else {
  134. tpl::set ( '{photo}' , '/img/noavatar.png' );
  135. }
  136. if ( $user[ 'ugroup' ] == 1 ) {
  137. tpl::set ( '{group}' , l::t ( 'Администратор' ) );
  138. } else {
  139. $sql = db::q ( 'SELECT * FROM admins where user="' . $user[ 'id' ] . '"' );
  140. if ( db::n ( $sql ) == 1 ) {
  141. tpl::set ( '{group}' , l::t ( 'Команда проекта' ));
  142. } else {
  143. tpl::set ( '{group}' , l::t ( 'Клиент' ));
  144. }
  145. }
  146. tpl::compile ( 'content' );
  147. api::nav ( '' , l::t ( 'Профиль' ) , '1' );
  148. $title = l::t ( "Профиль" );
  149. }
  150.  
  151. public static function settings ( $data )
  152. {
  153. global $title;
  154. if ( $data ) {
  155. if(api::$demo){
  156. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  157. return false;
  158. }
  159. $passold = $data[ 'oldpass' ];
  160. $passnew = $data[ 'newpass' ];
  161. $passnew2 = $data[ 'newpass2' ];
  162. if ( md5 ( $passold ) != api::info ( 'pass' ) ) {
  163. api::result ( l::t ( 'Старый пароль указан неверно' ) );
  164. } else {
  165. if ( $passnew != $passnew2 ) {
  166. api::result ( l::t ( 'Пароли не совпадают' ) );
  167. } else {
  168. if ( ! preg_match ( "/^[0-9a-zA-Z]{6,20}$/i" , $passnew ) ) {
  169. api::result ( l::t ( "Новый пароль указан неверно" ) );
  170. } else {
  171. db::q ( "UPDATE users set pass='" . md5 ( $passnew ) . "' where id='" . api::info ( 'id' ) . "'" );
  172. api::result ( l::t ( 'Пароль изменен' ) , true );
  173. }
  174. }
  175. }
  176. }
  177. tpl::load ( 'users-settings' );
  178. if ( api::modal () ) {
  179. tpl::compile ( 'content' );
  180. die( tpl::result ( 'content' ) );
  181. } else {
  182. tpl::compile ( 'content2' );
  183. api::result ( l::t ( 'Данную страницу можно открывать только в модальном окне' ) );
  184. }
  185. }
  186.  
  187. public static function avatar ()
  188. {
  189. global $title;
  190. $imageinfo = getimagesize ( $_FILES[ 'img' ][ 'tmp_name' ] );
  191. if ( $_POST[ 'data' ] ) {
  192. if(api::$demo){
  193. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  194. return false;
  195. }
  196. if ( $imageinfo ) {
  197. if ( $imageinfo[ "mime" ] != "image/jpeg" && $imageinfo[ "mime" ] != "image/png" ) {
  198. api::result ( l::t("Формат должен быть jpeg, png.") );
  199.  
  200. return false;
  201. }
  202. if ( self::big_res ( $_FILES[ 'img' ][ 'tmp_name' ] , ROOT . '/files/photo/' . api::info ( 'id' ) . '.png' ) ) {
  203. if ( filesize ( ROOT . '/files/photo/' . api::info ( 'id' ) . '.png' ) > 5000 ) {
  204. db::q ( "UPDATE users set photo='1' where id='" . api::info ( 'id' ) . "'" );
  205. api::result ( l::t('Изображение загружено') , true );
  206. } else {
  207. api::result ( l::t('Слишком маленькое изображение') );
  208. }
  209. } else {
  210. return false;
  211. }
  212. } else {
  213. api::result ( l::t('Выберите изображение') );
  214. }
  215. }
  216. tpl::load ( 'users-profile-avatar' );
  217. tpl::set ( '{id}' , api::info ( 'id' ) );
  218. if ( api::modal () ) {
  219. tpl::compile ( 'content' );
  220. die( tpl::result ( 'content' ) );
  221. } else {
  222. tpl::compile ( 'content2' );
  223. api::result ( l::t('Данную страницу можно открывать только в модальном окне') );
  224. }
  225. }
  226.  
  227. public static function vk_auth ()
  228. {
  229. if(api::$demo){
  230. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  231. return false;
  232. }
  233. if ( $return = api::authOpenAPIMember () ) {
  234. if ( api::$go ) {
  235. db::q ( 'SELECT * FROM users where id!="' . api::info ( 'id' ) . '" and vk_id="' . $return[ 'id' ] . '"' );
  236. if ( db::n () == 1 ) {
  237. api::result ( l::t('Страница уже привязана') );
  238. } else {
  239. db::q ( "UPDATE users set vk_id='" . $return[ 'id' ] . "' where id='" . api::info ( 'id' ) . "'" );
  240. api::result ( l::t('Страница прикреплена') , 1 );
  241. }
  242. die;
  243. } else {
  244. db::q ( 'SELECT * FROM users where vk_id="' . $return[ 'id' ] . '"' );
  245. if ( db::n () == 1 ) {
  246. $row = db::r ();
  247. $rtime = time ();
  248. $time = round ( $rtime , - 3 );
  249. $ip = base64_encode ( $_SERVER[ 'REMOTE_ADDR' ] );
  250. $agent = base64_encode ( $_SERVER[ 'HTTP_USER_AGENT' ] );
  251. $key = md5 ( $row[ 'mail' ] . $row[ 'pass' ] . $time . $ip ) . md5 ( $agent . $time );
  252. $key2 = md5 ( $key . $time ) . md5 ( $ip . $time );
  253. db::q ( 'DELETE from login_key where key1="' . $key . '"' );
  254. $sql12 = db::q ( 'SELECT id FROM login_key where user="' . $row[ 'id' ] . '" order by id desc LIMIT 4,1' );
  255. if ( db::n ( $sql12 ) != 0 ) {
  256. $row12 = db::r ( $sql12 );
  257. db::q ( 'DELETE from login_key where user="' . $row[ 'id' ] . '" and id<="' . $row12[ 'id' ] . '"' );
  258. }
  259. db::q (
  260. "INSERT INTO login_key set
  261. user='" . $row[ 'id' ] . "',
  262. time='" . $rtime . "',
  263. ip='" . $ip . "',
  264. key1='" . $key . "',
  265. agent='" . $agent . "'"
  266. );
  267. api::set_cookie ( "key" , $key , 7 );
  268. api::set_cookie ( "key2" , $key2 , 7 );
  269. api::result (l::t('Успешно авторизованы') , 1 );
  270. } else {
  271. api::result ( l::t('Учетная запись не найдена') );
  272. }
  273. }
  274. } else {
  275. if ( api::$go ) {
  276. db::q ( "UPDATE users set vk_id='0' where id='" . api::info ( 'id' ) . "'" );
  277. api::result ( l::t('Страница откреплена') , 1 );
  278. } else {
  279. api::result (l::t( 'Учетная запись не найдена') );
  280. }
  281. }
  282.  
  283. }
  284.  
  285. public static function big_res ( $vvname , $newname )
  286. {
  287. $max_size = 250; //максимальный размер большей стороны
  288. if ( file_exists ( $vvname ) ) {
  289. $infoimg = getimagesize ( $vvname );
  290. switch ( $infoimg[ 2 ] ) {
  291. case 1:
  292. $source = imagecreatefromgif ( $vvname );
  293. $formatimg = ".gif";
  294. break;
  295. case 2:
  296. $source = imagecreatefromjpeg ( $vvname );
  297. $formatimg = ".jpg";
  298. break;
  299. case 3:
  300. $source = imagecreatefrompng ( $vvname );
  301. $formatimg = ".png";
  302. break;
  303. default:
  304. exit;
  305. }
  306. if ( ( $infoimg[ 0 ] <= $max_size ) && ( $infoimg[ 1 ] <= $max_size ) ) {
  307. // если не меняем разрешение то сохраняем
  308. $resource = imagecreatetruecolor ( $infoimg[ 0 ] , $infoimg[ 1 ] );
  309. imagecopyresampled (
  310. $resource , $source , 0 , 0 , 0 , 0 , $infoimg[ 0 ] , $infoimg[ 1 ] ,
  311. $infoimg[ 0 ] , $infoimg[ 1 ]
  312. );
  313. imagepng ( $resource , $newname );
  314. imagedestroy ( $resource );
  315. imagedestroy ( $source );
  316. } else {
  317. // если нужно ресайзитьs
  318. $x_vr = $infoimg[ 0 ];
  319. $y_vr = $infoimg[ 1 ];
  320. if ( $x_vr > $y_vr ) {
  321. $resource = imagecreatetruecolor ( $max_size , floor ( ( $max_size / $x_vr ) * $y_vr ) );
  322. imagecopyresampled (
  323. $resource , $source , 0 , 0 , 0 , 0 , $x_vr * ( $max_size / $x_vr ) ,
  324. $y_vr * ( $max_size / $x_vr ) , $infoimg[ 0 ] , $infoimg[ 1 ]
  325. );
  326. }
  327. if ( $y_vr > $x_vr ) {
  328. $resource = imagecreatetruecolor ( floor ( ( $max_size / $y_vr ) * $x_vr ) , $max_size );
  329. imagecopyresampled (
  330. $resource , $source , 0 , 0 , 0 , 0 , $x_vr * ( $max_size / $y_vr ) ,
  331. $y_vr * ( $max_size / $y_vr ) , $infoimg[ 0 ] , $infoimg[ 1 ]
  332. );
  333. }
  334. if ( $y_vr == $x_vr ) {
  335. $resource = imagecreatetruecolor ( floor ( ( $max_size / $y_vr ) * $x_vr ) , $max_size );
  336. imagecopyresampled (
  337. $resource , $source , 0 , 0 , 0 , 0 , $x_vr * ( $max_size / $y_vr ) ,
  338. $y_vr * ( $max_size / $y_vr ) , $infoimg[ 0 ] , $infoimg[ 1 ]
  339. );
  340. }
  341. imagepng ( $resource , $newname );
  342. imagedestroy ( $resource );
  343. imagedestroy ( $source );
  344. }
  345. }
  346.  
  347. return true;
  348. }
  349.  
  350. public static function logout ()
  351. {
  352. global $conf;
  353. api::set_cookie ( "key" , "" , 0 );
  354. api::set_cookie ( "key2" , "" , 0 );
  355. api::set_cookie ( "vk_app_" . $conf[ 'vk_id' ] , "" , 0 );
  356. header ( 'location:/' );
  357. exit;
  358. }
  359.  
  360. public static function login ( $data )
  361. {
  362. global $title , $conf;
  363. if ( api::$go ) {
  364. api::result ( l::t("Выйдите из аккаунта") );
  365. } else {
  366. $login = api::cl ( $data[ 'email' ] );
  367. $pass = md5 ( $data[ 'password' ] );
  368. if ( $data ) {
  369. if(api::$demo){
  370. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  371. return false;
  372. }
  373. if ( ! preg_match ( "/^[0-9^\.a-z_\-]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i" , $login ) ) {
  374. api::result ( l::t("E-mail указан неверно") );
  375. } else {
  376. if ( ! preg_match ( "/^[0-9a-zA-Z]{6,40}$/i" , $pass ) ) {
  377. api::result ( l::t("Пароль указан неверно") );
  378. } else {
  379. db::q ( 'SELECT * FROM users where mail="' . $login . '" and pass="' . $pass . '"' );
  380. if ( db::n () != 1 ) {
  381. api::result ( l::t("E-mail или пароль указан неверно") );
  382. } else {
  383. $row = db::r ();
  384. if ( $row[ 'signup' ] != '0' ) {
  385. api::result ( l::t('Подтвердите свой почтовый ящик') );
  386. } else {
  387. api::set_cookie ( "key" , null , null );
  388. api::set_cookie ( "key2" , null , null );
  389. $rtime = time ();
  390. $time = round ( $rtime , - 3 );
  391. $ip = base64_encode ( $_SERVER[ 'REMOTE_ADDR' ] );
  392. $agent = base64_encode ( $_SERVER[ 'HTTP_USER_AGENT' ] );
  393. $key = md5 ( $login . $pass . $time . $ip ) . md5 ( $agent . $time );
  394. $key2 = md5 ( $key . $time ) . md5 ( $ip . $time );
  395. db::q ( 'DELETE from login_key where key1="' . $key . '"' );
  396. $sql12 = db::q ( 'SELECT id FROM login_key where user="' . $row[ 'id' ] . '" order by id desc LIMIT 4,1' );
  397. if ( db::n ( $sql12 ) != 0 ) {
  398. $row12 = db::r ( $sql12 );
  399. db::q ( 'DELETE from login_key where user="' . $row[ 'id' ] . '" and id<="' . $row12[ 'id' ] . '"' );
  400. }
  401. db::q (
  402. "INSERT INTO login_key set
  403. user='" . $row[ 'id' ] . "',
  404. time='" . $rtime . "',
  405. ip='" . $ip . "',
  406. key1='" . $key . "',
  407. agent='" . $agent . "'"
  408. );
  409. api::set_cookie ( "key" , $key , 7 );
  410. api::set_cookie ( "key2" , $key2 , 7 );
  411. api::result ( l::t('Успешно авторизованы') , true );
  412. header ( "location:/" );
  413. }
  414. }
  415. }
  416. }
  417. }
  418. $title = l::t("Авторизация");
  419. tpl::load ( 'users-login' );
  420. tpl::set ( '{vk_id}' , $conf[ 'vk_id' ] );
  421. tpl::compile ( 'content' );
  422. if ( api::modal () ) {
  423. die( tpl::result ( 'content' ) );
  424. } else {
  425. api::nav ( '' , l::t('Авторизация') , '1' );
  426. }
  427. }
  428. }
  429.  
  430. public static function login_check ( $data )
  431. {
  432. $login = api::cl ( $data[ 'email' ] );
  433. $pass = md5 ( $data[ 'password' ] );
  434. if ( ! preg_match ( "/^[0-9^\.a-z_\-]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i" , $login ) ) {
  435. return l::t("E-mail указан неверно");
  436. } else {
  437. if ( ! preg_match ( "/^[0-9a-zA-Z]{6,40}$/i" , $pass ) ) {
  438. return l::t("Пароль указан неверно");
  439. } else {
  440. db::q ( 'SELECT * FROM users where mail="' . $login . '" and pass="' . $pass . '"' );
  441. if ( db::n () != 1 ) {
  442. return l::t("E-mail или пароль указан неверно");
  443. } else {
  444. $row = db::r ();
  445. if ( $row[ 'signup' ] != '0' ) {
  446. return l::t('Подтвердите свой почтовый ящик');
  447. } else {
  448. return false;
  449. }
  450. }
  451. }
  452. }
  453. }
  454.  
  455. public static function login2 ( $data )
  456. {
  457. global $title;
  458. if ( api::$go ) {
  459. api::result (l::t("Выйдите из аккаунта"));
  460. } else {
  461. $login = api::cl ( $data[ 'email' ] );
  462. $pass = md5 ( $data[ 'password' ] );
  463. if ( $data ) {
  464. if(api::$demo){
  465. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  466. return false;
  467. }
  468. if ( $error = self::login_check ( $data ) ) {
  469. api::result ( $error );
  470. } else {
  471. db::q ( 'SELECT * FROM users where mail="' . $login . '" and pass="' . $pass . '"' );
  472. $row = db::r ();
  473. $rtime = time ();
  474. api::set_cookie ( "key" , null , null );
  475. api::set_cookie ( "key2" , null , null );
  476. $ip = base64_encode ( $_SERVER[ 'REMOTE_ADDR' ] );
  477. $agent = base64_encode ( $_SERVER[ 'HTTP_USER_AGENT' ] );
  478. $key = md5 ( $login . $pass . $ip ) . md5 ( $agent );
  479. $key2 = md5 ( $key ) . md5 ( $ip );
  480. db::q ( 'DELETE from login_key where key1="' . $key . '"' );
  481. $sql12 = db::q ( 'SELECT id FROM login_key where user="' . $row[ 'id' ] . '" order by id desc LIMIT 4,1' );
  482. if ( db::n ( $sql12 ) != 0 ) {
  483. $row12 = db::r ( $sql12 );
  484. db::q ( 'DELETE from login_key where user="' . $row[ 'id' ] . '" and id<="' . $row12[ 'id' ] . '"' );
  485. }
  486. db::q (
  487. "INSERT INTO login_key set
  488. user='" . $row[ 'id' ] . "',
  489. time='" . $rtime . "',
  490. ip='" . $ip . "',
  491. key1='" . $key . "',
  492. agent='" . $agent . "'"
  493. );
  494. api::set_cookie ( "key" , $key , 7 );
  495. api::set_cookie ( "key2" , $key2 , 7 );
  496. api::result ( l::t('Успешно авторизованы') , true );
  497. header ( "location:/" );
  498. }
  499. }
  500. $title = l::t("Авторизация");
  501. tpl::load ( 'users-login' );
  502. tpl::compile ( 'content' );
  503. if ( api::modal () ) {
  504. die( tpl::result ( 'content' ) );
  505. } else {
  506. api::nav ( '' , l::t('Авторизация') , '1' );
  507. }
  508. }
  509. }
  510.  
  511. public static function recovery_end ( $key )
  512. {
  513. global $conf;
  514. if(api::$demo){
  515. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  516. return false;
  517. }
  518. if ( ! preg_match ( "/^[0-9]{4}$/i" , $key ) ) {
  519. api::result ( l::t("Ключ не найден") );
  520. } else {
  521. $sql = db::q ( 'SELECT * FROM users where recovery="' . api::cl ( $key ) . '"' );
  522. if ( db::n ( $sql ) == "1" ) {
  523. $row = db::r ( $sql );
  524. $pass = api::generate_password ( '12' );
  525. db::q ( "UPDATE users set pass='" . md5 ( $pass ) . "',recovery='0' where recovery='" . api::cl ( $key ) . "'" );
  526. api::inc ( 'mail' );
  527. tpl::load ( 'mail-body' );
  528. tpl::set ( '{title}' , $conf[ 'title' ] );
  529. $msg = "<h4>".l::t('Здравствуйте')." " . $row[ 'name' ] . " " . $row[ 'lastname' ] . ",</h4>";
  530. $msg .= "<p>".l::t("Ваш новый пароль:")."</p>";
  531. $msg .= '<div style="padding: 10px;background: #ECF8FF;border: 0;">';
  532. $msg .= $pass;
  533. $msg .= '</div>';
  534. $msg .= "<p>".l::t("Если вы не делали запроса для получения пароля, то просто удалите данное письмо.")."</p>";
  535. tpl::set ( '{content}' , $msg );
  536. tpl::compile ( 'mail' );
  537. mail::send ( $row[ 'mail' ] , l::t('Новый пароль') , tpl::result ( 'mail' ) );
  538. tpl::load ( 'users-recovery-end' );
  539. tpl::compile ( 'content' );
  540. api::nav ( '' , l::t('Восстановление пароля') , '1' );
  541. } else {
  542. api::result ( l::t('Ключ не найден') );
  543. }
  544. }
  545. }
  546.  
  547. public static function recovery ( $data )
  548. {
  549. global $conf;
  550. if ( $data ) {
  551. if(api::$demo){
  552. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  553. return false;
  554. }
  555. if ( $data[ 'cphone' ] ) {
  556. $code = (int) $data[ 'code' ];
  557. if ( $code ) {
  558. db::q ( 'SELECT * FROM users where recovery="' . $code . '"' );
  559. if ( db::n () == "1" ) {
  560. $row = db::r ();
  561. if ( $row[ 'phone' ] ) {
  562. $pass = api::generate_password ( '6' );
  563. db::q ( "UPDATE users set pass='" . md5 ( $pass ) . "' where recovery='" . $code . "'" );
  564. api::inc ( 'mail' );
  565. tpl::load ( 'mail-body' );
  566. tpl::set ( '{title}' , $conf[ 'title' ] );
  567. $msg = "<h4>".l::t("Здравствуйте")." " . $row[ 'name' ] . " " . $row[ 'lastname' ] . ",</h4>";
  568. $msg .= "<p>".l::t("Ваш новый пароль:")."</p>";
  569. $msg .= '<div style="padding: 10px;background: #ECF8FF;border: 0;">';
  570. $msg .= $pass;
  571. $msg .= '</div>';
  572. $msg .= "<p>".l::t("Если вы не делали запроса для получения пароля, то просто удалите данное письмо.")."</p>";
  573. tpl::set ( '{content}' , $msg );
  574. tpl::compile ( 'mail' );
  575. mail::send ( $row[ 'mail' ] , l::t('Новый пароль') , tpl::result ( 'mail' ) );
  576. api::inc ( 'sms' );
  577. if ( sms::send ( $row[ 'phone' ] , l::t('пароль:').' ' . $pass ) ) {
  578. api::result ( l::t('Новый пароль выслан Вам на телефон') , true );
  579. }
  580. } else {
  581. api::result ( l::t('В Вашем аккаунте на указан номер телефона') );
  582. }
  583. } else {
  584. api::result ( l::t('Код введен неверно') );
  585. }
  586. } else {
  587. api::result ( l::t('Введите код подтверждения!') );
  588. }
  589. }
  590. $mail = api::cl ( $data[ 'mail' ] );
  591. if ( ! preg_match ( "/^[0-9^\.a-z_\-]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i" , $mail ) ) {
  592. api::result ( l::t("E-mail указан неверно") );
  593. } else {
  594. db::q ( 'SELECT * FROM users where mail="' . $mail . '"' );
  595. if ( db::n () != "1" ) {
  596. api::result ( l::t("E-mail указан неверно") );
  597. } else {
  598. $row = db::r ();
  599. if ( $row[ 'signup' ] != '0' ) {
  600. api::result ( l::t("Подтвердите свой аккаунт!") );
  601. } else {
  602. $key = mt_rand ( 1000 , 9999 );
  603. db::q ( "UPDATE users set recovery='" . $key . "' where id='" . $row[ 'id' ] . "'" );
  604. if ( $row[ 'phone' ] ) {
  605. if ( $conf[ 'sms_recovery' ] == 1 ) {
  606. $pass = $key;
  607. api::inc ( 'mail' );
  608. tpl::load ( 'mail-body' );
  609. tpl::set ( '{title}' , $conf[ 'title' ] );
  610. $msg = "<h4>".l::t("Здравствуйте")." " . $row[ 'name' ] . " " . $row[ 'lastname' ] . ",</h4>";
  611. $msg .= "<p>".l::t("Вы сделали запрос на получение забытого пароля.")."<br/>";
  612. $msg .= l::t("Однако в целях безопасности все пароли хранятся в зашифрованном виде, поэтому мы не можем сообщить вам ваш старый пароль, поэтому если вы хотите сгенерировать новый пароль, зайдите по следующей ссылке: ")."</p>";
  613. $msg .= '<div style="padding: 10px;background: #ECF8FF;border: 0;">';
  614. $msg .= '<a style="color: #2ba6cb;" href="http://' . $conf[ 'domain' ] . '/users/recovery/' . $pass . '">http://' . $conf[ 'domain' ] . '/users/recovery/' . $pass . '</a>';
  615. $msg .= '</div>';
  616. $msg .= "<p>".l::t("Если вы не делали запроса для получения пароля, то просто удалите данное письмо.")."</p>";
  617. tpl::set ( '{content}' , $msg );
  618. tpl::compile ( 'mail' );
  619. mail::send ( $mail , l::t('Восстановление пароля') , tpl::result ( 'mail' ) );
  620. api::inc ( 'sms' );
  621. if ( $d = sms::send ( $row[ 'phone' ] , 'код: ' . $key ) ) {
  622. api::result ( '1' , true );
  623.  
  624. return false;
  625. }
  626. }
  627. }
  628. $pass = $key;
  629. api::inc ( 'mail' );
  630. tpl::load ( 'mail-body' );
  631. tpl::set ( '{title}' , l::t('Восстановление пароля') );
  632. $msg = "<h4>".l::t("Здравствуйте")." " . $row[ 'name' ] . " " . $row[ 'lastname' ] . ",</h4>";
  633. $msg .= "<p>";
  634. $msg .= l::t("Вы сделали запрос на получение забытого пароля.");
  635. $msg .= "<br/>";
  636. $msg .= l::t("Однако в целях безопасности все пароли хранятся в зашифрованном виде, поэтому мы не можем сообщить вам ваш старый пароль, поэтому если вы хотите сгенерировать новый пароль, зайдите по следующей ссылке:");
  637. $msg .= "</p>";
  638. $msg .= '<div style="padding: 10px;background: #ECF8FF;border: 0;">';
  639. $msg .= '<a style="color: #2ba6cb;" href="http://' . $conf[ 'domain' ] . '/users/recovery/' . $pass . '">http://' . $conf[ 'domain' ] . '/users/recovery/' . $pass . '</a>';
  640. $msg .= '</div>';
  641. $msg .= "<p>";
  642. $msg .= l::t("Если вы не делали запроса для получения пароля, то просто удалите данное письмо.");
  643. $msg .= "</p>";
  644. tpl::set ( '{content}' , $msg );
  645. tpl::compile ( 'mail' );
  646. mail::send ( $mail , l::t('Восстановление пароля') , tpl::result ( 'mail' ) );
  647. api::result ( l::t("Инструкции выславы на указанный e-mail") , true );
  648. }
  649. }
  650. }
  651. } else {
  652. tpl::load ( 'users-recovery' );
  653. tpl::set ( '{mail}' , api::cl ( $data[ 'mail' ] ) );
  654. tpl::compile ( 'content' );
  655. if ( api::modal () ) {
  656. die( tpl::result ( 'content' ) );
  657. } else {
  658. api::nav ( '' , l::t('Восстановление пароля') , '1' );
  659. }
  660. }
  661. }
  662.  
  663. public static function signup_end ( $key )
  664. {
  665. global $conf;
  666. if(api::$demo){
  667. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  668. return false;
  669. }
  670. if ( ! preg_match ( "/^[0-9]{4}$/i" , $key ) ) {
  671. api::result ( l::t("Ключ не найден") );
  672. } else {
  673. db::q ( 'SELECT * FROM users where signup="' . api::cl ( $key ) . '"' );
  674. if ( db::n () == "1" ) {
  675. db::q ( "UPDATE users set signup='0' where signup='" . api::cl ( $key ) . "'" );
  676. api::result ( l::t('Аккаунт подтвержден') , true );
  677. } else {
  678. api::result ( l::t('Ключ не найден') );
  679. }
  680. }
  681. }
  682.  
  683.  
  684. public static function signup ( $data )
  685. {
  686. global $title , $conf;
  687. if ( api::$go ) {
  688. api::result ( l::t("Выйдите из аккаунта") );
  689. } else {
  690. if(api::$demo){
  691. api::result ( l::t ( 'Данная функция отключена в демо режиме.' ) );
  692. return false;
  693. }
  694. if ( $data[ 'cphone' ] ) {
  695. $code = (int) $data[ 'code' ];
  696. if ( $code ) {
  697. db::q ( 'SELECT * FROM users where signup="' . $code . '"' );
  698. if ( db::n () == "1" ) {
  699. db::q ( "UPDATE users set signup='0' where signup='" . $code . "'" );
  700.  
  701. api::result ( l::t('Аккаунт подтвержден') , true );
  702. } else {
  703. api::result ( l::t('Код введен неверно') );
  704. }
  705. } else {
  706. api::result ( l::t('Введите код подтверждения!') );
  707. }
  708. }
  709. $mail = api::cl ( $data[ 'mail' ] );
  710. $pass = api::cl ( $data[ 'password' ] );
  711. $pass2 = api::cl ( $data[ 'password2' ] );
  712. $name = api::cl ( $data[ 'name' ] );
  713. $phone = api::cl ( $data[ 'phone' ] );
  714. $lastname = api::cl ( $data[ 'lastname' ] );
  715. if ( $data ) {
  716. if ( $conf[ 'tpl' ] == 1 ) {
  717. if ( ! api::captcha_chek () ) {
  718. return false;
  719. }
  720. }
  721. if ( ! preg_match ( "/^[0-9^\.a-z_\-]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i" , $mail ) ) {
  722. api::result ( l::t("E-mail указан неверно") );
  723. } else {
  724.  
  725. db::q ( 'SELECT id FROM users where mail="' . $mail . '"' );
  726. if ( db::n () == "1" ) {
  727. api::result ( l::t("E-mail занят") );
  728. } else {
  729. if ( $pass != $pass2 ) {
  730. api::result ( l::t("Пароли не совпадают") );
  731. } else {
  732. if ( ! preg_match ( "/^[0-9a-zA-Z]{6,20}$/i" , $pass ) ) {
  733. api::result ( l::t("Пароль указан неверно") );
  734. } else {
  735. if ( ! preg_match ( "/^[0-9a-zA-Zа-яА-ЯЁё]{4,20}$/iu" , $name ) ) {
  736. api::result ( l::t("Укажите Ваше Имя") );
  737. } else {
  738. if ( $conf[ 'sphone' ] ) {
  739. if ( ! preg_match ( "/^[0-9]{11,13}$/i" , $phone ) ) {
  740. api::result ( l::t("Телефон указан неверно") );
  741.  
  742. return false;
  743. }
  744. }
  745. if ( ! preg_match ( "/^[0-9a-zA-Zа-яА-ЯЁё]{4,20}$/iu" , $lastname ) ) {
  746. api::result ( l::t("Укажите Вашу Фамилию") );
  747. } else {
  748. if ( $conf[ 'signup' ] == 1 ) {
  749. $key = mt_rand ( 1000 , 9999 );
  750. } else {
  751. $key = 0;
  752. }
  753. $invite = (int) ( @$_COOKIE[ 'invite' ] );
  754. if ( $invite != 0 ) {
  755. db::q ( 'SELECT id FROM users where id="' . $invite . '"' );
  756. if ( db::n () == 0 ) {
  757. $invite = 0;
  758. }
  759. }
  760. db::q (
  761. "INSERT INTO users set
  762. mail='" . $mail . "',
  763. pass='" . md5 ( $pass ) . "',
  764. ugroup='3',
  765. balance='0',
  766. name='" . $name . "',
  767. lastname='" . $lastname . "',
  768. signup='" . $key . "',
  769. invite='" . $invite . "',
  770. phone='" . $phone . "',
  771. time='" . time () . "'"
  772. );
  773. if ( $conf[ 'signup' ] == 1 ) {
  774. if ( $conf[ 'sms_signup' ] == 1 ) {
  775. api::inc ( 'sms' );
  776. if ( $d = sms::send ( $phone , 'код: ' . $key ) ) {
  777. api::result ( '1' , true );
  778.  
  779. return false;
  780. }
  781. }
  782. api::inc ( 'mail' );
  783. tpl::load ( 'mail-body' );
  784. tpl::set ( '{title}' , $conf[ 'title' ] );
  785. $msg = "<h4>".l::t("Здравствуйте")." " . $name . " " . $lastname . ",</h4>";
  786. $msg .= "<p>";
  787. $msg .= l::t("Вы в одном шаге от завершения регистрации на");
  788. $msg .= " <b>" . $conf[ 'domain' ] . "</b></p>";
  789. $msg .= "<p>";
  790. $msg .= l::t("Если Вы действительно желаете зарегистрироваться, пожалуйста, подтвердите свое намерение.");
  791. $msg .= "</p>";
  792. $msg .= "<p>";
  793. $msg .= l::t("Подтверждение требуется для исключения несанкционированного использования Вашего e-mail адреса. Для потверждения достаточно перейти по ссылке, дополнительных писем отправлять не требуется.");
  794. $msg .= "</p>";
  795. $msg .= '<div style="padding: 10px;background: #ECF8FF;border: 0;">';
  796. $msg .= '<a style="color: #2ba6cb;" href="http://' . $conf[ 'domain' ] . '/users/signup/' . $key . '">http://' . $conf[ 'domain' ] . '/users/signup/' . $key . '</a>';
  797. $msg .= '</div>';
  798. $msg .= "<p>";
  799. $msg .= l::t("Если указанная выше ссылка не открывается, скопируйте ее в буфер обмена, вставьте в адресную строку браузера и нажмите ввод.");
  800. $msg .= "</p>";
  801. $msg .= "<p>";
  802. $msg .= l::t("Если Вы считаете, что данное сообщение послано Вам ошибочно, просто проигнорируйте его и все данные будут автоматически удалены.");
  803. $msg .= "</p>";
  804. tpl::set ( '{content}' , $msg );
  805. tpl::compile ( 'mail' );
  806. mail::send ( $mail , l::t('Подтверждение e-mail адреса') , tpl::result ( 'mail' ) );
  807. }
  808. api::result ( l::t('Вы успешно зарегистрированы') , true );
  809. }
  810. }
  811. }
  812. }
  813. }
  814. }
  815. }
  816. $title = l::t("Регистрация");
  817. tpl::load ( 'users-signup' );
  818. tpl::compile ( 'content' );
  819. if ( api::modal () ) {
  820. die( tpl::result ( 'content' ) );
  821. } else {
  822. api::nav ( '' , l::t('Регистрация') , '1' );
  823. }
  824. }
  825. }
  826. }
  827.  
  828. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement