Advertisement
Guest User

Untitled

a guest
May 28th, 2018
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 30.56 KB | None | 0 0
  1. <?php
  2.  
  3. include_once('../internal/Smarty.class.php');
  4. $main_smarty = new Smarty;
  5.  
  6. include('../config.php');
  7. include(mnminclude.'html1.php');
  8. include(mnminclude.'link.php');
  9. include(mnminclude.'votes.php');
  10. include(mnminclude.'tags.php');
  11. include(mnminclude.'user.php');
  12. include(mnminclude.'smartyvariables.php');
  13. include(mnminclude.'csrf.php');
  14. include(mnminclude.'document_class.php');
  15.  
  16. check_referrer();
  17.  
  18. // require user to log in
  19. force_authentication();
  20.  
  21. // restrict access to admins and moderators
  22. $amIadmin = 0;
  23. $amIadmin = $amIadmin + checklevel('admin');
  24. $main_smarty->assign('amIadmin', $amIadmin);
  25.  
  26. $canIhaveAccess = 0;
  27. $canIhaveAccess = $canIhaveAccess + checklevel('admin');
  28. $canIhaveAccess = $canIhaveAccess + checklevel('moderator');
  29.  
  30. $is_moderator = checklevel('moderator'); // Moderators have a value of '1' for the variable $is_moderator
  31. /* Redwine: Roles and permissions and Groups fixes */
  32. $main_smarty->assign('is_moderator', $is_moderator);
  33. $PlikliDoc->add_js(my_base_url.my_plikli_base."/templates/admin/js/jquery/jquery.tablesorter.js");
  34.  
  35. $PlikliDoc->add_js("$(function() {
  36.                
  37.            $('#tablesorter-userTable').tablesorter({sortList: [[1,1]], headers: { 5:{sorter: false}, 6:{sorter: false}, 0:{sorter: false}}});
  38.            
  39.         }); ", true);
  40.  
  41. $PlikliDoc->get_js();
  42.  
  43.  
  44. if($canIhaveAccess == 0){  
  45. //  $main_smarty->assign('tpl_center', '/admin/access_denied');
  46. //  $main_smarty->display('/admin/admin.tpl');     
  47.     header("Location: " . getmyurl('admin_login', $_SERVER['REQUEST_URI']));
  48.     die();
  49. }
  50.  
  51. // read the mysql database to get the plikli version
  52. /* Redwine: plikli version query removed and added to /libs/smartyvriables.php */
  53.  
  54. // sidebar
  55. //$main_smarty = do_sidebar($main_smarty);
  56.  
  57. if($canIhaveAccess == 1)
  58. {
  59.  
  60.     // sessions used to prevent CSRF
  61.     $CSRF = new csrf();
  62.    
  63.     if(isset($_POST['frmsubmit'])) {
  64.    
  65.         if ($_POST["enabled"]) {
  66.            
  67.             $CSRF->check_expired('admin_users_list');
  68.            
  69.             if ($CSRF->check_valid(sanitize($_POST['token'], 3), 'admin_users_list')){
  70.            
  71.                 $value = $db->escape($_POST['admin_acction']);
  72.            
  73.                 foreach($_POST["enabled"] as $id => $valuea)
  74.                 {
  75.                     $_GET['id'] = $id = $db->escape($id);
  76.                     $user= $db->get_row('SELECT * FROM ' . table_users ." where user_id=$id");
  77.                    
  78.                     if($value==3)
  79.                     {
  80.                    
  81.                         if($user->user_level!="Spammer")   
  82.                             killspam($id);
  83.                        
  84.                     } elseif($value==2) {
  85.                        
  86.                         if ($user->user_enabled != 0)
  87.                         {
  88.                             canIChangeUser($user->user_level);
  89.                             $db->query("UPDATE ".table_users." SET user_enabled='0', user_level=IF(user_level='Spammer','normal',user_level) WHERE user_id='".$db->escape($id)."'");
  90.                         }
  91.                        
  92.                     } elseif($value==1) {
  93.                        
  94.                         if ($user->user_enabled != 1)
  95.                         {
  96.                             canIChangeUser($user->user_level);
  97.                             $db->query("UPDATE ".table_users." SET user_enabled='1', user_level=IF(user_level='Spammer','normal',user_level) WHERE user_id='".$db->escape($id)."'");
  98.                         }  
  99.                     }
  100.                 }
  101.             } else {
  102.                 $CSRF->show_invalid_error(1);
  103.                 exit;
  104.             }
  105.         }
  106.  
  107.         if ($_POST['delete'])
  108.         {
  109.             foreach ($_POST['delete'] as $id)
  110.             {
  111.                 $_GET['id'] = $id = $db->escape($id);
  112.                 killspam($id);
  113.             }
  114.         }
  115.        
  116.         //header("Location:  ".my_plikli_base."/admin/admin_users.php");
  117.         header("Location:".$_SERVER['HTTP_REFERER']);
  118.         exit;
  119.     }
  120.  
  121.     if (isset($_REQUEST["mode"]) && sanitize($_REQUEST["mode"], 3) == "newuser"){
  122.         // Redwine: if TOKEN is empty, no need to continue, just display the invalid token error.
  123.         if (empty($_POST['token'])) {
  124.             $CSRF->show_invalid_error(1);
  125.             exit;
  126.         }
  127.        // Redwine: if TOKEN has expired, no need to continue, just display the invalid token error.
  128.         if ($CSRF->check_expired('admin_users_create') == true) {
  129.             $CSRF->show_invalid_error(1);
  130.             exit;
  131.         }
  132.         // Redwine: if valid TOKEN, proceed
  133.         if ($CSRF->check_valid(sanitize($_POST['token'], 3), 'admin_users_create')){
  134.        
  135.             $username=trim($db->escape($_POST['username']));
  136.             $password=trim($db->escape($_POST['password']));
  137.             $email=trim($db->escape($_POST['email']));
  138.             $saltedpass=generateHash($password);
  139.            
  140.             // Only Admin accounts can create moderators and other admins
  141.             if ($amIadmin){
  142.                 $level=trim($db->escape($_POST['level']));
  143.             } else {
  144.                 $level='normal';
  145.             }
  146.            
  147.             if (!isset($username) || strlen($username) < 3) {
  148.                 $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserTooShort'));          
  149.             }
  150.             elseif (!preg_match('/^[a-zA-Z0-9\-]+$/', $username)) {
  151.                 $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserInvalid'));
  152.             }
  153.             elseif (user_exists(trim($username)) ) {
  154.                 $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserExists'));
  155.             }
  156.             elseif (!check_email(trim($email))) {
  157.                 $main_smarty->assign(email_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_BadEmail'));
  158.             }
  159.             elseif (email_exists(trim($email))) {
  160.                 $main_smarty->assign(email_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_EmailExists'));          
  161.             }
  162.             elseif (strlen($password) < 5 ) {
  163.                 $main_smarty->assign(password_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_FiveCharPass'));          
  164.             }
  165.             else {
  166.                 $db->query("INSERT IGNORE INTO " . table_users . " (user_login, user_level, user_email, user_pass, user_date, user_modification, user_lastlogin) VALUES ('$username', '$level', '$email', '$saltedpass', NOW(), NOW(), NOW())");
  167.                 header("Location:  ".my_plikli_base."/admin/admin_users.php");
  168.                 die();
  169.             }
  170.         // Redwine: if invalid TOKEN, display TOKEN invalid error. 
  171.         } else {
  172.             $CSRF->show_invalid_error(1);
  173.             exit;
  174.         }
  175.     }
  176.  
  177.     if(isset($_REQUEST["mode"])) {
  178.         // Create User Page
  179.         if ($_GET["mode"] == "create"){ // create user
  180.                
  181.             $CSRF->create('admin_users_create', true, true);
  182.             // breadcrumbs and page titles
  183.             $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  184.             $navwhere['link1'] = getmyurl('admin', '');
  185.             $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  186.             $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  187.             $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Killspam');
  188.             $main_smarty->assign('navbar_where', $navwhere);
  189.             $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  190.            
  191.             // misc smarty
  192.             $main_smarty->assign('pagename', pagename);
  193.            
  194.             // pagename
  195.             define('pagename', 'admin_users');
  196.             $main_smarty->assign('pagename', pagename);
  197.  
  198.             // show the template
  199.             $main_smarty->assign('tpl_center', '/admin/user_create');
  200.             $main_smarty->display('/admin/help.tpl');
  201.             exit;
  202.  
  203.         }
  204.         if (sanitize($_GET["mode"], 3) == "view"){ // view single user
  205.  
  206.             // code to prevent CSRF
  207.             $CSRF->create('admin_users_resetpass', true, true);
  208.    
  209.             $usersql = $db->get_results('SELECT * FROM ' . table_users . ' where user_id="'.sanitize($_GET["user"], 3).'" or user_login="'.sanitize($_GET["user"], 3).'"',ARRAY_A);
  210.             $userdata = array();               
  211.             foreach($usersql as $rows) array_push ($userdata, $rows);
  212.          
  213.             foreach($userdata as $key => $val){
  214.                 $userdata[$key]['Avatar'] = get_avatar('large', "", $val['user_login'], $val['user_email']);
  215.                 $created = $db->get_results('SELECT * FROM ' . table_groups . ' where group_status="Enable" AND group_creator='.$userdata[$key]['user_id'],ARRAY_A);
  216.                 /* Redwine: added a check for the $created result, to eliminate the PHP Warning:  Invalid argument supplied for foreach() */
  217.                 if (!empty($created)) {
  218.                 $arr = array();
  219.                 foreach ($created as $group)
  220.                     $arr[] = $group['group_name'];
  221.                 $userdata[$key]['created']= join(',',$arr);
  222.                 $belongs = $db->get_results('SELECT * FROM ' . table_group_member . ' LEFT JOIN  ' . table_groups . ' ON member_group_id=group_id where group_status="Enable" AND member_status="active" AND member_user_id='.$userdata[$key]['user_id'],ARRAY_A);
  223.                 $arr = array();
  224.                 foreach ($belongs as $group)
  225.                     $arr[] = $group['group_name'];
  226.                 $userdata[$key]['belongs']= join(',',$arr);
  227.                 }
  228.             }
  229.          
  230.             $main_smarty->assign('userdata', $userdata);
  231.             $linkcount=$db->get_var('SELECT count(*) FROM ' . table_links . ' where link_author="'.$userdata[0]['user_id'].'"');
  232.             $main_smarty->assign('linkcount', $linkcount);
  233.             $commentcount=$db->get_var('SELECT count(*) FROM ' . table_comments . ' where comment_user_id="'.$userdata[0]['user_id'].'"');
  234.             $main_smarty->assign('commentcount', $commentcount);
  235.            
  236.             // breadcrumbs and page title
  237.             $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  238.             $navwhere['link1'] = getmyurl('admin', '');
  239.             $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  240.             $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  241.             $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_View_User');
  242.             $main_smarty->assign('navbar_where', $navwhere);
  243.             $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  244.            
  245.             // pagename
  246.             define('pagename', 'admin_users');
  247.             $main_smarty->assign('pagename', pagename);
  248.            
  249.             $user=new User();
  250.            
  251.             $user->username = sanitize($userdata[0]['user_login'], 3);
  252.             if(!$user->read()) {
  253.                 $main_smarty->assign('tpl_center', '/admin/user_does_not_exist');
  254.                 if ($is_moderator == '1'){
  255.                     $main_smarty->display('/admin/moderator.tpl');
  256.                 } else {
  257.                     $main_smarty->display('/admin/admin.tpl');
  258.                 }
  259.             }
  260.            
  261.             // module system hook
  262.             $vars = '';
  263.             check_actions('admin_users_view', $vars);
  264.            
  265.             // show the template
  266.             $main_smarty->assign('tpl_center', '/admin/user_view');
  267.             if ($is_moderator == '1'){
  268.                 $main_smarty->display('/admin/moderator.tpl');
  269.             } else {
  270.                 $main_smarty->display('/admin/admin.tpl');
  271.             }
  272.         }
  273.        
  274.         if (sanitize($_GET["mode"], 3) == "edit"){ // edit user
  275.  
  276.             $usersql = $db->get_results('SELECT * FROM ' . table_users . ' where user_id="'.sanitize($_GET["user_id"], 3).'"',ARRAY_A);
  277.             $userdata = array();
  278.             foreach($usersql as $rows) array_push ($userdata, $rows);
  279.            
  280.             canIChangeUser($userdata[0]['user_level']);
  281.            
  282.             $user=new User();
  283.             $user->username = sanitize($userdata[0]['user_login'], 3);
  284.            
  285.             if(!$user->read()) {
  286.                 $user = sanitize($userdata[0]['user_login'], 3);
  287.                 $main_smarty->assign('user', $user);
  288.                 $main_smarty->assign('tpl_center', '/admin/user_does_not_exist');
  289.                 if ($is_moderator == '1'){
  290.                     $main_smarty->display('/admin/moderator.tpl');
  291.                 } else {
  292.                     $main_smarty->display('/admin/admin.tpl');
  293.                 }
  294.                 die;
  295.             }
  296.            
  297.             //update user date
  298.             if(isset($_POST['token'])){
  299.            
  300.                 $CSRF->check_expired('admin_users_edit');
  301.                 if ($CSRF->check_valid(sanitize($_POST['token'], 3), 'admin_users_edit')){
  302.                    
  303.                     $user_old = $db->get_row('SELECT * FROM ' . table_users . ' where user_id="'.sanitize($_GET["user_id"], 3).'"');
  304.                    
  305.                     $username=trim(sanitize($_POST["login"], 3));
  306.                     $email=trim(sanitize($_POST["email"], 3));
  307.                     $password=$_POST['password'];
  308.                        
  309.                     $error=0;
  310.                    
  311.                     if($user_old->user_login!=$username){  
  312.                         if (!isset($username) || strlen($username) < 3) {
  313.                             $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserTooShort'));
  314.                             $error=1;          
  315.                         }
  316.                         elseif (!preg_match('/^[a-zA-Z0-9\-]+$/', $username)) {
  317.                             $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserInvalid'));
  318.                             $error=1;
  319.                         }
  320.                         elseif (user_exists(trim($username)) ) {
  321.                             $main_smarty->assign(username_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_UserExists'));
  322.                             $error=1;
  323.                         }
  324.                     }
  325.                    
  326.                     if($user_old->user_email!=$email){
  327.                         if (!check_email(trim($email))) {
  328.                             $main_smarty->assign(email_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_BadEmail'));
  329.                             $error=1;
  330.                         }
  331.                         elseif (email_exists(trim($email))) {
  332.                             $main_smarty->assign(email_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_EmailExists'));
  333.                             $error=1;          
  334.                         }
  335.                     }
  336.                    
  337.                     // module system hook
  338.                     $vars = '';
  339.                    
  340.                     check_actions('admin_users_save', $vars);
  341.                    
  342.                     $user->username=$username;
  343.                     $user->level=trim(sanitize($_POST["level"], 3));
  344.                     $user->email=$email;
  345.                    
  346.                     if ($_POST["password"] && $_POST["password"]==$_POST["password2"]){
  347.                         if (strlen($password) < 5 ) {
  348.                             $main_smarty->assign(password_error, $main_smarty->get_config_vars('PLIKLI_Visual_Register_Error_FiveCharPass'));
  349.                             $error=1;          
  350.                         } else {
  351.                             $user->pass = $_POST["password"];
  352.                         }
  353.                     }
  354.                    
  355.                     if($error==0){
  356.                         $user->id=$_GET["user_id"];
  357.                         echo "save";
  358.                         $user->store();
  359.                         header("Location: ".my_plikli_base."/admin/admin_users.php?mode=view&user=".$_GET["user_id"]."");
  360.                     }
  361.                    
  362.                     if($error==1){
  363.                         $userdata[0]['user_login']=$username;
  364.                         $userdata[0]['user_email']=$email;
  365.                         $userdata[0]['cng_lavel']=$userdata->level;
  366.                     }
  367.                    
  368.                 } else {
  369.                     showmyerror('userdoesntexist');
  370.                 }
  371.                 //user save end
  372.                
  373.             }              
  374.             //update user data end 
  375.            
  376.             $CSRF->create('admin_users_edit', true, true);
  377.            
  378.             $main_smarty->assign('userdata', $userdata);
  379.             $main_smarty->assign('levels', array('normal','admin','moderator','Spammer'));
  380.  
  381.             // breadcrumbs and page title
  382.             $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  383.             $navwhere['link1'] = getmyurl('admin', '');
  384.             $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  385.             $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  386.             $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_Edit_User');
  387.             $main_smarty->assign('navbar_where', $navwhere);
  388.             $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  389.            
  390.             // pagename
  391.             define('pagename', 'admin_users');
  392.             $main_smarty->assign('pagename', pagename);
  393.  
  394.            
  395.             // module system hook
  396.             $vars = '';
  397.             check_actions('admin_users_edit', $vars);
  398.    
  399.             // show the template
  400.             $main_smarty->assign('tpl_center', '/admin/user_edit');
  401.             if ($is_moderator == '1'){
  402.                 $main_smarty->display('/admin/moderator.tpl');
  403.             } else {
  404.                 $main_smarty->display('/admin/admin.tpl');
  405.             }
  406.         }  
  407.        
  408.         if (sanitize($_GET["mode"], 3) == "resetpass"){ // reset user password
  409.  
  410.             // code to prevent CSRF
  411. //          $CSRF->check_expired('admin_users_resetpass');
  412.             $CSRF->check_expired('admin_users_edit');
  413.             // code to prevent CSRF
  414.        
  415. //          if ($CSRF->check_valid(sanitize($_GET['token'], 3), 'admin_users_resetpass'))
  416.             if ($CSRF->check_valid(sanitize($_GET['token'], 3), 'admin_users_edit'))
  417.             {
  418.                 $user= $db->get_row('SELECT * FROM ' . table_users . ' where user_login="'.sanitize($_GET["user"], 3).'"');
  419.                
  420.                 canIChangeUser($user->user_level);
  421.                
  422.                 if ($user) {
  423. //                  $db->query('UPDATE `' . table_users . '` SET `user_pass` = "033700e5a7759d0663e33b18d6ca0dc2b572c20031b575750" WHERE `user_login` = "'.sanitize($_GET["user"], 3).'"');
  424.                     $to = $user->user_email;
  425.                     $subject = $main_smarty->get_config_vars("PLIKLI_Visual_Name").' '.$main_smarty->get_config_vars("PLIKLI_PassEmail_Subject");
  426.  
  427.                     $password = substr(md5(uniqid(rand(), true)),0,8);
  428.                     $saltedPass = generateHash($password);
  429.                     $db->query('UPDATE `' . table_users . "` SET `user_pass` = '$saltedPass' WHERE `user_login` = '".sanitize($_GET["user"], 3)."'");
  430.                     $body = sprintf($main_smarty->get_config_vars("PLIKLI_PassEmail_PassBody"),
  431.                         $main_smarty->get_config_vars("PLIKLI_Visual_Name"),
  432.                         $my_base_url . $my_plikli_base . '/login.php',
  433.                         $_GET["user"],
  434.                         $password);
  435.  
  436.                     $headers = 'From: ' . $main_smarty->get_config_vars("PLIKLI_PassEmail_From") . "\r\n";
  437.                     $headers .= "Content-type: text/html; charset=utf-8\r\n";
  438.  
  439.                     mail($to, $subject, $body, $headers);
  440.    
  441.                     // breadcrumbs and page title
  442.                     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  443.                     $navwhere['link1'] = getmyurl('admin', '');
  444.                     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  445.                     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  446.                     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Reset_Pass');
  447.                     $main_smarty->assign('navbar_where', $navwhere);
  448.                     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  449.                    
  450.                     // pagename
  451.                     define('pagename', 'admin_users');
  452.                     $main_smarty->assign('pagename', pagename);
  453.    
  454.                     // show the template
  455.                     $main_smarty->assign('tpl_center', '/admin/user_password_reset');
  456.                     $main_smarty->display('/admin/admin.tpl');
  457.                 } else {
  458.                     showmyerror('userdoesntexist');
  459.                 }
  460.             } else {
  461.                 $CSRF->show_invalid_error(1);
  462.                 // invalid token / timeout error
  463.             }
  464.         }
  465.  
  466.         if (sanitize($_GET["mode"], 3) == "disable"){ // disable user
  467.  
  468.             // code to prevent CSRF
  469.                 // doesn't matter if a token exists. if we're viewing this page, just
  470.                 // create a new one or replace the existing.
  471.                 $CSRF->create('admin_users_disable', true, true);
  472.             // code to prevent CSRF    
  473.        
  474.             if(sanitize($_GET["user"], 3) == "admin"){
  475.                 echo "You can't disable this user";
  476.             } else {
  477.                 $user= $db->get_row('SELECT * FROM ' . table_users . ' where user_login="'.sanitize($_GET["user"], 3).'"');
  478.  
  479.                 canIChangeUser($user->user_level);
  480.            
  481.                 if ($user) {
  482.                    
  483.                     // breadcrumbs and page title
  484.                     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  485.                     $navwhere['link1'] = getmyurl('admin', '');
  486.                     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  487.                     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  488.                     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Disable');
  489.                     $main_smarty->assign('navbar_where', $navwhere);
  490.                     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  491.                    
  492.                     $main_smarty->assign('user', sanitize($_GET["user"], 3));  
  493.                                
  494.                     // pagename
  495.                     define('pagename', 'admin_users');
  496.                     $main_smarty->assign('pagename', pagename);                
  497.                
  498.                     // show the template
  499.                     $main_smarty->assign('tpl_center', '/admin/user_disable');
  500.                     if ($is_moderator == '1'){
  501.                         $main_smarty->display('/admin/moderator.tpl');
  502.                     } else {
  503.                         $main_smarty->display('/admin/admin.tpl');
  504.                     }
  505.                 } else {
  506.                     showmyerror('userdoesntexist');
  507.                 }
  508.             }
  509.         }
  510.  
  511.         if (sanitize($_GET["mode"], 3) == "yesdisable"){ // diable user step 2
  512.             // code to prevent CSRF
  513.                 $CSRF->check_expired('admin_users_disable');
  514.             // code to prevent CSRF
  515.  
  516.             if ($CSRF->check_valid(sanitize($_GET['token'], 3), 'admin_users_disable'))
  517.             {
  518.                 $user= $db->get_row('SELECT * FROM ' . table_users . ' where user_login="'.sanitize($_GET["user"], 3).'"');
  519.                
  520.                 canIChangeUser($user->user_level);
  521.                
  522. /*              $randomstring = "abcdefghijklmnopqrstuvwxyz0123456789";
  523.                 for($i=0;$i<49;$i++){
  524.                     $pos = rand(0,36);
  525.                     $str .= $randomstring{$pos};
  526.                 }
  527. */             
  528.                 if ($user) {
  529. //                  $db->query('UPDATE `' . table_users . '` SET `user_pass` = "'.$str.'" WHERE `user_login` = "'.sanitize($_GET["user"], 3).'"');
  530. //                  $db->query('UPDATE `' . table_users . '` SET `user_email` = "'.$user->user_email.'-disable" WHERE `user_login` = "'.sanitize($_GET["user"], 3).'"');
  531.                     $db->query('UPDATE `' . table_users . '` SET `user_enabled` = 0 WHERE `user_login` = "'.sanitize($_GET["user"], 3).'"');
  532.                    
  533.                     // breadcrumbs and page titles
  534.                     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  535.                     $navwhere['link1'] = getmyurl('admin', '');
  536.                     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  537.                     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  538.                     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Disable_2');
  539.                     $main_smarty->assign('navbar_where', $navwhere);
  540.                     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  541.                    
  542.                     // pagename
  543.                     define('pagename', 'admin_users');
  544.                     $main_smarty->assign('pagename', pagename);
  545.    
  546.                     header("Location: ".my_plikli_base."/admin/admin_users.php");
  547.                     die();
  548.                 } else {
  549.                     showmyerror('userdoesntexist');
  550.                 }
  551.             } else {
  552.                 // invalid token / timeout error
  553.                 $CSRF->show_invalid_error(2);
  554.             }
  555.         }
  556.  
  557.         if (sanitize($_GET["mode"], 3) == "enable")
  558.         {
  559.                 $user= $db->get_row('SELECT * FROM ' . table_users . ' where user_login="'.sanitize($_GET["user"], 3).'"');
  560.                
  561.                 canIChangeUser($user->user_level);
  562.                
  563.                 if ($user) {
  564.                     $db->query('UPDATE `' . table_users . '` SET `user_enabled` = 1 WHERE `user_login` = "'.sanitize($_GET["user"], 3).'"');
  565.                    
  566.                     // breadcrumbs and page titles
  567.                     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  568.                     $navwhere['link1'] = getmyurl('admin', '');
  569.                     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  570.                     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  571.                     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Disable_2');
  572.                     $main_smarty->assign('navbar_where', $navwhere);
  573.                     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  574.                    
  575.                     // pagename
  576.                     define('pagename', 'admin_users');
  577.                     $main_smarty->assign('pagename', pagename);
  578.    
  579.                     header("Location: ".my_plikli_base."/admin/admin_users.php");
  580.                     die();
  581.                 } else {
  582.                     showmyerror('userdoesntexist');
  583.                 }
  584.         }
  585.  
  586.         if (sanitize($_GET["mode"], 3) == "killspam"){ // killspam user
  587.             // code to prevent CSRF
  588.                 // doesn't matter if a token exists. if we're viewing this page, just
  589.                 // create a new one or replace the existing.
  590.                 $CSRF->create('admin_users_killspam', true, true);
  591.             // code to prevent CSRF    
  592.  
  593.             if(sanitize($_GET["user"], 3) == "admin"){
  594.                 echo "You can't killspam this user";
  595.             } else {
  596.                 $user= $db->get_row('SELECT * FROM ' . table_users . ' where user_login="'.sanitize($_GET["user"], 3).'"');
  597.            
  598.                 canIChangeUser($user->user_level);
  599.                
  600.                 if ($user) {
  601.    
  602.                     // breadcrumbs and page titles
  603.                     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  604.                     $navwhere['link1'] = getmyurl('admin', '');
  605.                     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  606.                     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  607.                     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Killspam');
  608.                     $main_smarty->assign('navbar_where', $navwhere);
  609.                     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  610.                    
  611.                     // misc smarty
  612.                     $main_smarty->assign('pagename', pagename);
  613.                     $main_smarty->assign('user', sanitize($_GET["user"], 3));
  614.                     $main_smarty->assign('id', sanitize($_GET["id"], 3));
  615.                    
  616.                     // pagename
  617.                     define('pagename', 'admin_users');
  618.                     $main_smarty->assign('pagename', pagename);
  619.        
  620.                     // show the template
  621.                     $main_smarty->assign('tpl_center', '/admin/user_killspam');
  622.                     if ($is_moderator == '1'){
  623.                         $main_smarty->display('/admin/moderator.tpl');
  624.                     } else {
  625.                         $main_smarty->display('/admin/admin.tpl');
  626.                     }
  627.                 } else {
  628.                     showmyerror('userdoesntexist');
  629.                 }
  630.             }
  631.         }
  632.        
  633.         if (sanitize($_GET["mode"], 3) == "yeskillspam"){ // killspam step 2
  634.             // code to prevent CSRF
  635.                 $CSRF->check_expired('admin_users_killspam');
  636.             // code to prevent CSRF
  637.                        
  638.             if ($CSRF->check_valid(sanitize($_GET['token'], 3), 'admin_users_killspam'))
  639.             {
  640.                 $user= $db->get_row('SELECT * FROM ' . table_users .' where user_login="'.sanitize($_GET["user"], 3).'"');
  641.                 killspam($user->user_id);
  642.                 header("Location: ".my_plikli_base."/admin/admin_users.php");
  643.                 die();
  644.  
  645.             } else {
  646.                 $CSRF->show_invalid_error(1);
  647.             }
  648.         }
  649.  
  650.         if (sanitize($_GET["mode"], 3) == "search"){    // search users
  651.             $CSRF->create('admin_users_list', true, true);
  652.             global $offset, $page_size;
  653.             // Items per page drop-down
  654.             if(isset($_GET["pagesize"]) && is_numeric($_GET["pagesize"])) {
  655.                 misc_data_update('pagesize',$_GET["pagesize"]);
  656.             }
  657.             $pagesize = get_misc_data('pagesize');
  658.             if ($pagesize <= 0) $pagesize = 30;
  659.             $main_smarty->assign('pagesize', $pagesize);
  660.        
  661.             if(isset($_GET["filter"]) && !empty($_GET["filter"])) {
  662.                $filter_sql = " user_level='".sanitize($_GET["filter"], 3)."' ";
  663.             } else {
  664.                $filter_sql = " user_level!='Spammer' ";
  665.             }
  666.             $search_sql = '';
  667.             if($_GET["keyword"] && $_GET["keyword"]!= $main_smarty->get_config_vars('PLIKLI_Visual_Search_SearchDefaultText')){
  668.                 $search_sql = "AND (user_login LIKE '%".sanitize($_GET["keyword"], 3)."%' OR user_email LIKE '%".sanitize($_GET["keyword"], 3)."%')";
  669.             }
  670.  
  671.             // figure out what "page" of the results we're on
  672.             $offset=(get_current_page()-1)*$pagesize;
  673.             $searchsql = $db->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM " . table_users . " where $filter_sql $search_sql ORDER BY `user_date` LIMIT $offset,$pagesize",ARRAY_A);
  674.             $rows = $db->get_var("SELECT FOUND_ROWS()");
  675.             $userlist = array();
  676.             if (!empty($searchsql)) {
  677.             foreach($searchsql as $row) array_push ($userlist, $row);
  678.                 foreach($userlist as $key => $val){
  679.                     $userlist[$key]['Avatar'] = get_avatar('large', "", $val['user_login'], $val['user_email']);
  680.                 }                  
  681.                 $main_smarty->assign('userlist', $userlist);                   
  682.             }
  683.             // breadcrumbs and page title
  684.             $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  685.             $navwhere['link1'] = getmyurl('admin', '');
  686.             $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  687.             $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  688.             $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_Search'). sanitize($_GET["keyword"], 3);
  689.             $main_smarty->assign('navbar_where', $navwhere);
  690.             $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  691.            
  692.             // pagename
  693.             define('pagename', 'admin_users');
  694.             $main_smarty->assign('pagename', pagename);
  695.  
  696.             // show the template
  697.             $main_smarty->assign('tpl_center', '/admin/users');
  698.             if ($is_moderator == '1'){
  699.                 $main_smarty->display('/admin/moderator.tpl');
  700.             } else {
  701.                 $main_smarty->display('/admin/admin.tpl');
  702.             }
  703.  
  704.         }
  705.    
  706.     } else { // No options are selected, so show the list of users.        
  707.         $CSRF->create('admin_users_list', true, true);
  708.         $CSRF->create('admin_users_create', true, true);
  709.         global $offset, $top_users_size;
  710.        
  711.         // Items per page drop-down
  712.         if(isset($_GET["pagesize"]) && is_numeric($_GET["pagesize"])) {
  713.             misc_data_update('pagesize',$_GET["pagesize"]);
  714.         }
  715.        
  716.         $pagesize = get_misc_data('pagesize');
  717.        
  718.         if ($pagesize <= 0) $pagesize = 30;
  719.             $main_smarty->assign('pagesize', $pagesize);
  720.    
  721.     if(isset($_GET["filter"])) {
  722.         switch (sanitize($_GET["filter"], 3)) {
  723.             case 'admin':
  724.                 $filter_sql = " WHERE user_level='admin' ";
  725.                 break;
  726.             case 'moderator':
  727.                 $filter_sql = " WHERE user_level='moderator' ";
  728.                 break;
  729.             case 'normal':
  730.                 $filter_sql = " WHERE user_level='normal' ";
  731.                 break;
  732.             case 'spammer':
  733.                 $filter_sql = " WHERE user_level='Spammer' ";
  734.                 break;
  735.             case 'disabled':
  736.                 $filter_sql = " WHERE user_level!='Spammer' AND user_enabled='0' ";
  737.                 break;
  738.             default:
  739.                 $filter_sql = " WHERE user_level!='Spammer' ";
  740.                 break;
  741.         }
  742.     } else {
  743.        $filter_sql = "WHERE user_level!='Spammer'";
  744.     }
  745.  
  746.         // figure out what "page" of the results we're on
  747.         $offset=(get_current_page()-1)*$pagesize;
  748.         $users = $db->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM " . table_users . " $filter_sql ORDER BY `user_date` DESC LIMIT $offset,$pagesize",ARRAY_A);
  749.         $rows = $db->get_var("SELECT FOUND_ROWS()");
  750.         $userlist = array();
  751.        
  752.         foreach($users as $row) array_push ($userlist, $row);
  753.         foreach($userlist as $key => $val){
  754.             $userlist[$key]['Avatar'] = get_avatar('large', "", $val['user_login'], $val['user_email']);
  755.         }
  756.        
  757.         $main_smarty->assign('userlist', $userlist);
  758.        
  759.         // breadcrumbs anf page title
  760.         $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  761.         $navwhere['link1'] = getmyurl('admin', '');
  762.         $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  763.         $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  764.         $main_smarty->assign('navbar_where', $navwhere);
  765.         $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  766.        
  767.         // pagename
  768.         define('pagename', 'admin_users');
  769.         $main_smarty->assign('pagename', pagename);
  770.  
  771.         // show the template
  772.         $main_smarty->assign('tpl_center', '/admin/users');
  773.         if ($is_moderator == '1'){
  774.             $main_smarty->display('/admin/moderator.tpl');
  775.         } else {
  776.             $main_smarty->display('/admin/admin.tpl');
  777.         }
  778.     }
  779. } else {
  780.     echo 'You don\'t have permission to view this page.';
  781. }      
  782.        
  783. function showmyerror()
  784. {
  785.     global $main_smarty, $the_template;
  786.     $main_smarty->assign('user', sanitize($_GET["user"], 3));
  787.  
  788.     // breadcrumbs and page title
  789.     $navwhere['text1'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel');
  790.     $navwhere['link1'] = getmyurl('admin', '');
  791.     $navwhere['text2'] = $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel_1');
  792.     $navwhere['link2'] = my_plikli_base . "/admin/admin_users.php";
  793.     $navwhere['text3'] = $main_smarty->get_config_vars('PLIKLI_Visual_Breadcrumb_User_Does_Not_Exist');
  794.     $main_smarty->assign('navbar_where', $navwhere);
  795.     $main_smarty->assign('posttitle', " / " . $main_smarty->get_config_vars('PLIKLI_Visual_Header_AdminPanel'));
  796.    
  797.     // pagename define('pagename', 'admin_users');
  798.  
  799.     $main_smarty->assign('pagename', pagename);
  800.  
  801.     // show the template
  802.     $main_smarty->assign('tpl_center', '/admin/user_does_not_exist');
  803.     if ($is_moderator == '1'){
  804.         $main_smarty->display('/admin/moderator.tpl');
  805.     } else {
  806.         $main_smarty->display('/admin/admin.tpl');
  807.     }
  808. }
  809. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement