Advertisement
Guest User

Mysql.php

a guest
Sep 30th, 2012
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 84.00 KB | None | 0 0
  1. <?php
  2.  
  3. class Mysql
  4. {
  5.     private $conn;
  6.     private $query;
  7.     private $log_init;
  8.     private $log;
  9.     private $groupList = array();
  10.     private $serverList = array();
  11.    
  12.     function __construct()
  13.     {
  14.         global $logger;
  15.         $this->log =& $logger;
  16.         if (!empty($_SESSION['status']) && $_SESSION['status'] == "authorized") {
  17.             $this->log_init = 'User [' . $_SESSION['username'] . '] (' . $_SESSION['remote_address'] . ') | ';
  18.         }
  19.         $this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database.');
  20.         date_default_timezone_set('Africa/Khartoum');
  21.     }
  22.    
  23.     function verify_Username_and_Pass($un, $pwd)
  24.     {
  25.         $query = "SELECT *FROM members
  26.                    WHERE username = ? AND password = ?
  27.                    LIMIT 1";
  28.        
  29.         if ($stmt = $this->conn->prepare($query)) {
  30.             $stmt->bind_param('ss', $un, $pwd);
  31.             $stmt->execute();
  32.             unset($query);
  33.            
  34.            
  35.             if ($stmt->fetch()) {
  36.                 $stmt->close();
  37.                 return true;
  38.             }
  39.         }
  40.     }
  41.    
  42.     function get_reseller_id($un)
  43.     {
  44.         unset($query);
  45.         $query = "SELECT reseller
  46.                    FROM members
  47.                    WHERE username = '$un'
  48.                    LIMIT 1";
  49.        
  50.         if ($stmt = $this->conn->query($query)) {
  51.             $result = $stmt->fetch_object();
  52.             return $result->reseller;
  53.             $stmt->close();
  54.         }
  55.     }
  56.    
  57.     function get_member_serverallow($un)
  58.     {
  59.         unset($query);
  60.         $query = "SELECT serverallow
  61.                    FROM members
  62.                    WHERE username = '$un'
  63.                    LIMIT 1";
  64.        
  65.         if ($stmt = $this->conn->query($query)) {
  66.             $result  = $stmt->fetch_object();
  67.             $result1 = $result->serverallow;
  68.             $stmt->close();
  69.             return $result1;
  70.         } else {
  71.             return 1;
  72.         }
  73.     }
  74.    
  75.     function get_member_profileallow($un)
  76.     {
  77.         unset($query);
  78.         $query = "SELECT profileallow
  79.                    FROM members
  80.                    WHERE username = '$un'
  81.                    LIMIT 1";
  82.        
  83.         if ($stmt = $this->conn->query($query)) {
  84.             $result = $stmt->fetch_object();
  85.             return $result->profileallow;
  86.             $stmt->close();
  87.         } else {
  88.             return $this->get_sum_profile_ident_by_server($this->get_member_serverallow($un));
  89.             ;
  90.         }
  91.     }
  92.    
  93.    
  94.     function get_member_total_user($un)
  95.     {
  96.         unset($query);
  97.         $query = "SELECT total_users
  98.                    FROM members
  99.                    WHERE username = '$un'
  100.                    LIMIT 1";
  101.        
  102.         if ($stmt = $this->conn->query($query)) {
  103.             $result = $stmt->fetch_object();
  104.             return $result->total_users;
  105.             $stmt->close();
  106.         } else {
  107.             return 0;
  108.         }
  109.     }
  110.    
  111.     function get_member_active_user($un)
  112.     {
  113.         unset($query);
  114.         $query = "SELECT active_users
  115.                    FROM members
  116.                    WHERE username = '$un'
  117.                    LIMIT 1";
  118.        
  119.         if ($stmt = $this->conn->query($query)) {
  120.             $result = $stmt->fetch_object();
  121.             return $result->active_users;
  122.             $stmt->close();
  123.         } else {
  124.             return 0;
  125.         }
  126.     }
  127.    
  128.     public function getMemberList()
  129.     {
  130.         $query = "SELECT * FROM members
  131.                    ORDER BY id";
  132.         if ($result = $this->conn->query($query)) {
  133.             $num_of_rows = $result->num_rows;
  134.             if ($num_of_rows >= 1) {
  135.                 $results_array = array();
  136.                 while ($row = $result->fetch_object()) {
  137.                     $results_array[] = $row;
  138.                 }
  139.             }
  140.         }
  141.         return $results_array;
  142.     }
  143.    
  144.    
  145.    
  146.     function get_reseller_profile_allow($reseller_username, $server = 1)
  147.     {
  148.         unset($query);
  149.         $query = "SELECT profileallow
  150.                  FROM members
  151.                  WHERE username = '$reseller_username'
  152.                  LIMIT 1";
  153.        
  154.         if ($stmt = $this->conn->query($query)) {
  155.             $result = $stmt->fetch_object();
  156.             return $result->profileallow;
  157.             $stmt->close();
  158.         } else {
  159.             return $this->get_sum_profile_ident_by_server($server);
  160.         }
  161.     }
  162.    
  163.     function get_reseller_server_allow($reseller_username)
  164.     {
  165.         unset($query);
  166.         $query = "SELECT serverallow
  167.                  FROM members
  168.                  WHERE username = '$reseller_username'
  169.                  LIMIT 1";
  170.        
  171.         if ($stmt = $this->conn->query($query)) {
  172.             $result = $stmt->fetch_object();
  173.             return $result->serverallow;
  174.             $stmt->close();
  175.         } else {
  176.             return 1;
  177.         }
  178.     }
  179.    
  180.     //select sum(ident) from profiles where server=1 and profileport <> 0
  181.     //Get Sum of Profile ident by Server
  182.     function get_sum_profile_ident_by_server($server)
  183.     {
  184.         $query = "SELECT SUM(ident) FROM profiles
  185.                    WHERE server = $server
  186.                    and profileport <> 0";
  187.         if ($stmt = $this->conn->query($query)) {
  188.             $num_of_rows = $stmt->num_rows;
  189.            
  190.             if ($num_of_rows >= 1) {
  191.                 $result1 = $stmt->fetch_array(MYSQLI_NUM);
  192.                 $result  = intval($result1[0]);
  193.             }
  194.            
  195.             return $result;
  196.         }
  197.     }
  198.    
  199.     function get_permission_id($un)
  200.     {
  201.         unset($query);
  202.         $query = "SELECT permissions
  203.                FROM members
  204.                WHERE username = '$un'
  205.                LIMIT 1";
  206.        
  207.         if ($stmt = $this->conn->query($query)) {
  208.             $result = $stmt->fetch_object();
  209.             return $result->permissions;
  210.             $stmt->close();
  211.         }
  212.     }
  213.    
  214.     //================================================== Server Section ============================================================
  215.    
  216.    
  217.     // Add New Server Data
  218.     function add_server($server_name, $host_name)
  219.     {
  220.         $others      = new Others;
  221.         $last_number = $others->get_greater_number("csservers", "list");
  222.         $last_number = $last_number + 1;
  223.        
  224.        
  225.         $query = "INSERT INTO csservers
  226.                (hostname, servername, list)
  227.                VALUES ('$host_name', '$server_name', $last_number)";
  228.        
  229.         if ($stmt = $this->conn->query($query)) {
  230.             $responce = "Server successfully created.\n";
  231.             return $responce;
  232.         }
  233.        
  234.        
  235.     }
  236.    
  237.     // Get All Data Server By ID
  238.    
  239.     function get_server_data($id)
  240.     {
  241.         $query = "SELECT * FROM csservers
  242.                WHERE id = '$id'";
  243.        
  244.         if ($stmt = $this->conn->query($query)) {
  245.             $result = $stmt->fetch_array();
  246.             return $result;
  247.         }
  248.        
  249.        
  250.     }
  251.    
  252.     // Get All Data Server By List
  253.    
  254.     function get_server_data_bylist($list)
  255.     {
  256.         $query = "SELECT * FROM csservers
  257.                    WHERE list = '$list'";
  258.        
  259.         if ($stmt = $this->conn->query($query)) {
  260.             $result = $stmt->fetch_array();
  261.             return $result;
  262.         }
  263.        
  264.        
  265.     }
  266.    
  267.     // Update Data server($id,$list,$hostname,$servername) By ID
  268.     function edit_server_data($id, $list, $hostname, $servername)
  269.     {
  270.         $query = "UPDATE csservers
  271.                  SET hostname = '$hostname', servername = '$servername'
  272.                  WHERE id =$id
  273.                  LIMIT 1";
  274.        
  275.         if ($stmt = $this->conn->query($query)) {
  276.             $responce = "Server successfully Updated.\n";
  277.             return $responce;
  278.         }
  279.        
  280.        
  281.     }
  282.    
  283.     // Delete Data server By ID
  284.     function del_server($id)
  285.     {
  286.         $query = "DELETE FROM csservers
  287.                    WHERE id = $id
  288.                    LIMIT 1";
  289.        
  290.        
  291.         if ($stmt = $this->conn->query($query)) {
  292.             $responce = "Server successfully Deleted.\n";
  293.             return $responce;
  294.         } else {
  295.             return "Error: Server can not be deleted... ";
  296.         }
  297.        
  298.        
  299.     }
  300.    
  301.     //Get Server Host, Server Name By Server List "Use to build server options"
  302.     function get_server_name($server)
  303.     {
  304.         $query = "SELECT * FROM csservers
  305.                    WHERE list= $server
  306.                    LIMIT 1";
  307.        
  308.        
  309.         if ($stmt = $this->conn->query($query)) {
  310.             $result1 = $stmt->fetch_row();
  311.             $result  = array(
  312.                 $result1[3],
  313.                 $result1[2]
  314.             );
  315.             //$result1[2] = Server Host '10.10.10.2'
  316.             //$result1[3] = Server Name 'Test Server'
  317.            
  318.             return $result;
  319.         }
  320.        
  321.        
  322.     }
  323.    
  324.     // Get total servers nu,ber
  325.     function get_num_servers()
  326.     {
  327.         $query = "SELECT * FROM csservers";
  328.        
  329.         if ($stmt = $this->conn->query($query)) {
  330.             $result = $stmt->num_rows;
  331.             return $result;
  332.         }
  333.        
  334.        
  335.     }
  336.    
  337.     function serverList()
  338.     {
  339.         if (isset($_SESSION['serverList']))
  340.             return $_SESSION['serverList'];
  341.        
  342.         unset($query);
  343.         unset($result);
  344.        
  345.         $query = "SELECT *
  346.          FROM csservers ";
  347.         if (isset($_SESSION['serverallow']) && $_SESSION['serverallow'] <> 0) {
  348.             $query .= "WHERE list = " . $_SESSION['serverallow'] . " ";
  349.         }
  350.        
  351.         $query .= "ORDER BY list ";
  352.        
  353.         if ($result = $this->conn->query($query)) {
  354.             $num_of_rows = $result->num_rows;
  355.             if ($num_of_rows >= 1) {
  356.                 while ($row = $result->fetch_object()) {
  357.                     if ($row->list == 0)
  358.                         continue;
  359.                     $server             = array(
  360.                         'list' => $row->list,
  361.                         'servername' => $row->servername,
  362.                         'hostname' => $row->hostname
  363.                     );
  364.                     $this->serverList[] = $server;
  365.                 }
  366.             } else {
  367.                 $response = "there is no Group data in table!!";
  368.             }
  369.         }
  370.         return $this->serverList;
  371.     }
  372.    
  373.     public function getServerList()
  374.     {
  375.         $query = "SELECT * FROM csservers
  376.                    ORDER BY id";
  377.         if ($result = $this->conn->query($query)) {
  378.             $num_of_rows = $result->num_rows;
  379.             if ($num_of_rows >= 1) {
  380.                 $results_array = array();
  381.                 while ($row = $result->fetch_object()) {
  382.                     if ($row->list == 0)
  383.                         continue;
  384.                     $results_array[] = $row;
  385.                 }
  386.             }
  387.         }
  388.         return $results_array;
  389.     }
  390.    
  391.    
  392.     //************************************************* End Server Section ********************************************************
  393.    
  394.     //================================================== Profiles Section ============================================================
  395.    
  396.    
  397.    
  398.    
  399.    
  400.     //Add New Profile Data
  401.     //  id     server     list     ident     profilename     profileport     profiledesc     profiledetails
  402.     //add_profile($_POST['server_list'],$_POST['profile_name'],$_POST['profile_desc'],$_POST['profile_port'],$_POST['profile_key']);
  403.    
  404.     function add_profile($server, $profilename, $profiledetails, $profileport, $profiledesc)
  405.     {
  406.         $others = new Others;
  407.        
  408.         $list_number = $others->get_greater_number("profiles", "list", "server", "$server");
  409.        
  410.         if ($list_number >= 0) {
  411.             $list_number++;
  412.         } else {
  413.             $responce = "Error.\n";
  414.             return $responce;
  415.         }
  416.        
  417.         $ident_number = $others->get_greater_number("profiles", "ident", "server", "$server");
  418.         $ident_number = $ident_number == 0 ? $ident_number = 1 : $ident_number << 1;
  419.        
  420.         $query = "INSERT INTO profiles
  421.                (server, list, ident, profilename, profileport, profiledesc, profiledetails)
  422.                VALUES ($server, $list_number, $ident_number, '$profilename', $profileport, '$profiledesc', '$profiledetails')";
  423.        
  424.         if ($stmt = $this->conn->query($query)) {
  425.             $responce = "Profile successfully created.\n";
  426.             return $responce;
  427.         }
  428.        
  429.        
  430.     }
  431.    
  432.    
  433.    
  434.     //Get Profile Data
  435.     function get_profile_data($id)
  436.     {
  437.         $query = "SELECT * FROM profiles
  438.                    WHERE id = '$id'";
  439.        
  440.         if ($stmt = $this->conn->query($query)) {
  441.             $result = $stmt->fetch_array();
  442.             return $result;
  443.         }
  444.        
  445.        
  446.     }
  447.    
  448.     //Edit Profile Data
  449.    
  450.     function edit_profile_data($id, $server, $profilename, $profiledetails, $profileport, $profiledesc)
  451.     {
  452.         $others = new Others;
  453.        
  454.         $if_same_server = $this->get_profile_data($id);
  455.        
  456.         if ($server != $if_same_server['server']) {
  457.             $list_number  = $others->get_greater_number("profiles", "list", "server", "$server") + 1;
  458.             $ident_number = $others->get_greater_number("profiles", "ident", "server", "$server") << 1;
  459.            
  460.             $query = "UPDATE profiles
  461.                        SET server = '$server', ident = $ident_number, list = $list_number,  profilename = '$profilename'
  462.                        , profiledetails = '$profiledetails', profileport = '$profileport', profiledesc = '$profiledesc'
  463.                        WHERE id =$id
  464.                        LIMIT 1";
  465.            
  466.         } else {
  467.             $query = "UPDATE profiles
  468.                        SET profilename = '$profilename', profiledetails = '$profiledetails',
  469.                        profileport = '$profileport', profiledesc = '$profiledesc'
  470.                        WHERE id =$id
  471.                        LIMIT 1";
  472.         }
  473.        
  474.         if ($stmt = $this->conn->query($query)) {
  475.             $responce = "Profile successfully Updated.\n";
  476.             unset($list_number);
  477.             return $responce;
  478.         } else {
  479.             $responce = "Error: Can not edit this record, there is missing data.";
  480.             return $responce;
  481.            
  482.         }
  483.        
  484.        
  485.     }
  486.    
  487.    
  488.     //Delete Profile Data
  489.     function del_profile($id)
  490.     {
  491.         $query = "DELETE FROM profiles
  492.                    WHERE id = $id
  493.                    LIMIT 1";
  494.        
  495.        
  496.         if ($stmt = $this->conn->query($query)) {
  497.             $responce = "Server successfully Deleted.\n";
  498.             return $responce;
  499.         }
  500.        
  501.        
  502.     }
  503.    
  504.     public function getProfileList()
  505.     {
  506.         $error  = "";
  507.         $query1 = "SELECT server FROM profiles
  508.                    GROUP BY server
  509.                    ORDER BY server";
  510.         if ($result1 = $this->conn->query($query1)) {
  511.             $num_of_rows = $result1->num_rows;
  512.             if ($num_of_rows >= 1) {
  513.                 $results_array1 = array();
  514.                 $results_array3 = array();
  515.                
  516.                 while ($row1 = $result1->fetch_object()) {
  517.                     $query2 = "SELECT * FROM profiles WHERE server= '";
  518.                     $query2 .= $row1->server;
  519.                     $query2 .= "' ORDER BY id";
  520.                    
  521.                     $serverNumber   = $row1->server;
  522.                     $serverNameHost = $this->get_server_name($serverNumber);
  523.                     $serverNameHost = array(
  524.                         $serverNameHost['0'] => $serverNameHost['1']
  525.                     );
  526.                    
  527.                     if ($result2 = $this->conn->query($query2)) {
  528.                         $num_of_rows = $result2->num_rows;
  529.                         if ($num_of_rows >= 1) {
  530.                             $results_array2 = array();
  531.                             while ($row2 = $result2->fetch_object()) {
  532.                                 $results_array2[] = $row2;
  533.                             }
  534.                             $results_array3[] = array(
  535.                                 $serverNameHost,
  536.                                 $results_array2
  537.                             );
  538.                            
  539.                         }
  540.                     } else {
  541.                         echo "There is no profiles available for this server";
  542.                     }
  543.                    
  544.                     $results_array[] = $results_array3;
  545.                 }
  546.             }
  547.            
  548.         } else {
  549.             $error = "There is no profiles available";
  550.         }
  551.        
  552.         return $results_array3;
  553.     }
  554.    
  555.    
  556.     //************************************************* End Profiles Section ********************************************************
  557.    
  558.     //================================================== Members Section ============================================================
  559.    
  560.    
  561.     // id     username     password     reseller     total_users     active_users     permissions
  562.    
  563.     //Add  Member Data
  564.    
  565.     function add_member($username, $password, $reseller_group, $reseller = 1, $total_users, $active_users, $permissions = 2, $serverAllow, $profileAllow)
  566.     {
  567.         // if it old version cspum
  568.         $oldver = $reseller_group == null ? true : false;
  569.        
  570.         $query = "INSERT INTO members
  571.                    (username, password, reseller, total_users, active_users, permissions, serverallow, profileallow";
  572.         $query .= $oldver ? ")" : " ,reseller_group)";
  573.         $query .= "VALUES ('$username', '$password', $reseller, $total_users, $active_users, $permissions, $serverAllow, $profileAllow";
  574.         $query .= $oldver ? ")" : " ,'$reseller_group')";
  575.        
  576.         if ($stmt = $this->conn->query($query)) {
  577.             $response = "Member successfully created.\n";
  578.             return $response;
  579.         } else {
  580.             $response = "Error: " . $this->conn->error;
  581.             return $response;
  582.         }
  583.        
  584.        
  585.     }
  586.    
  587.    
  588.    
  589.     //Get Member Data
  590.     function get_member_data($id)
  591.     {
  592.         $query = "SELECT * FROM members
  593.                    WHERE id = '$id'";
  594.        
  595.         if ($stmt = $this->conn->query($query)) {
  596.             $result = $stmt->fetch_object();
  597.             return $result;
  598.         }
  599.        
  600.        
  601.     }
  602.    
  603.     //Edit Member Data
  604.    
  605.     //$mysql->edit_member_data($member_data['id'],$member_data['username'],md5($_POST['password']),$_POST['reseller']
  606.     //        ,$_POST['total_users'],$_POST['active_users'],$_POST['permissions']);
  607.    
  608.     // id     username     password     reseller     total_users     active_users     permissions
  609.    
  610.     function edit_member_data($id, $username, $password, $reseller_group, $reseller, $total_users, $active_users, $permissions, $serverAllow, $profileAllow)
  611.     {
  612.         $query = "UPDATE members SET username = '$username', ";
  613.         $query .= (!is_null($password)) ? "password = '$password', " : "";
  614.         $query .= (!empty($reseller_group)) ? "reseller_group = '$reseller_group',  " : "";
  615.         $query .= "  reseller = $reseller,
  616.                    total_users = $total_users,
  617.                    active_users = $active_users,
  618.                    permissions = $permissions,
  619.                    serverallow = $serverAllow,
  620.                    profileallow = $profileAllow
  621.                    WHERE id =$id
  622.                    LIMIT 1";
  623.        
  624.        
  625.         if ($stmt = $this->conn->query($query)) {
  626.             $responce = "Member successfully Updated.\n";
  627.             unset($list_number);
  628.             return $responce;
  629.         } else {
  630.             $response = "Error: " . $this->conn->error . "<br/> or older db version.. remove Reseller Group Name and try again";
  631.             return $response;
  632.         }
  633.        
  634.        
  635.     }
  636.    
  637.    
  638.     //Delete Member Data
  639.     function del_member($id)
  640.     {
  641.         $query = "DELETE FROM members
  642.                    WHERE id = $id
  643.                    LIMIT 1";
  644.        
  645.        
  646.         if ($stmt = $this->conn->query($query)) {
  647.             $responce = "Member successfully Deleted.\n";
  648.             return $responce;
  649.         }
  650.        
  651.        
  652.     }
  653.    
  654.    
  655.     function groupsList()
  656.     {
  657.         global $membership;
  658.         if (isset($_SESSION['groupList']) && !empty($_SESSION['groupList']))
  659.             return $_SESSION['groupList'];
  660.         $reseller = (!isset($_SESSION['reseller'])) ? $this->get_reseller_id($membership->getUsername()) : $_SESSION['reseller'];
  661.        
  662.         unset($query);
  663.         unset($result);
  664.        
  665.        
  666.         $query = "SELECT reseller_group
  667.          FROM members ";
  668.         if (isset($reseller) && $reseller <> 0) {
  669.             $query .= "WHERE reseller = " . $reseller . " AND WHERE reseller <> 0 ";
  670.         } else {
  671.             $query .= "WHERE reseller <> 0 ";
  672.         }
  673.         $query .= "GROUP BY reseller_group
  674.                   ORDER BY id";
  675.        
  676.         if ($result = $this->conn->query($query)) {
  677.             $num_of_rows = $result->num_rows;
  678.             if ($num_of_rows >= 1) {
  679.                 while ($row = $result->fetch_object()) {
  680.                     $this->groupList[] = $row->reseller_group;
  681.                 }
  682.             }
  683.         } else {
  684.             $query = "SELECT server
  685.                      FROM users ";
  686.             if (isset($reseller) && $reseller <> 0) {
  687.                 $query .= "WHERE reseller = " . $reseller . " ";
  688.             }
  689.            
  690.             $query .= "GROUP BY server
  691.                       ORDER BY id ";
  692.            
  693.             if ($result = $this->conn->query($query)) {
  694.                 $num_of_rows = $result->num_rows;
  695.                 if ($num_of_rows >= 1) {
  696.                     while ($row = $result->fetch_object()) {
  697.                         $this->groupList[] = $row->server;
  698.                     }
  699.                 } else {
  700.                     $response = "there is no Group data in table!!";
  701.                 }
  702.             }
  703.         }
  704.        
  705.         return $this->groupList;
  706.     }
  707.    
  708.    
  709.    
  710.     function groupsListReseller()
  711.     {
  712.         global $membership;
  713.         $reseller = (!isset($_SESSION['reseller'])) ? $this->get_reseller_id($membership->getUsername()) : $_SESSION['reseller'];
  714.        
  715.         unset($query);
  716.         unset($result);
  717.        
  718.         $query = "SELECT reseller, reseller_group
  719.          FROM members ";
  720.         if (isset($reseller) && $reseller <> 0) {
  721.             $query .= "WHERE reseller = " . $reseller . " AND WHERE reseller <> 0 ";
  722.         } else {
  723.             $query .= "WHERE reseller <> 0 ";
  724.         }
  725.         $query .= "GROUP BY reseller_group
  726.                        ORDER BY id";
  727.        
  728.         if ($result = $this->conn->query($query)) {
  729.             $num_of_rows = $result->num_rows;
  730.             if ($num_of_rows >= 1) {
  731.                 while ($row = $result->fetch_object()) {
  732.                     $this->groupList[] = array(
  733.                         $row->reseller_group,
  734.                         $row->reseller
  735.                     );
  736.                 }
  737.             }
  738.         } else {
  739.             $query = "SELECT server, reseller
  740.          FROM users ";
  741.             if (isset($reseller) && $reseller <> 0) {
  742.                 $query .= "WHERE reseller = " . $reseller . " ";
  743.             }
  744.            
  745.             $query .= "GROUP BY server
  746.           ORDER BY id ";
  747.            
  748.             if ($result = $this->conn->query($query)) {
  749.                 $num_of_rows = $result->num_rows;
  750.                 if ($num_of_rows >= 1) {
  751.                     while ($row = $result->fetch_object()) {
  752.                         $this->groupList[] = array(
  753.                             $row->server,
  754.                             $row->reseller
  755.                         );
  756.                     }
  757.                 } else {
  758.                     $response = "there is no Group data in table!!";
  759.                 }
  760.                
  761.             }
  762.         }
  763.         return $this->groupList;
  764.     }
  765.    
  766.    
  767.    
  768.    
  769.    
  770.     //************************************************* End Members Section ********************************************************
  771.    
  772.    
  773.    
  774.     //===================================================== User Section ============================================================
  775.    
  776.    
  777.    
  778.     //Add User Data
  779.     function add_user($login, $password, $account_status, $group_name, $server_name, $expire_date, $max_con, $display_name, $ecm_rate, $full_name, $user_mobile, $user_email, $user_country, $profiles)
  780.     {
  781.         $sessionResellerSet = (isset($_SESSION['reseller']) && $_SESSION['reseller'] <> 0) ? true : false;
  782.        
  783.         $curr_timestamp = date("y/m/d : H:i:s", time());
  784.        
  785.         //check if user dublicated
  786.         $query = "SELECT login
  787.                  FROM users
  788.                  WHERE login='$login'
  789.                  LIMIT 1";
  790.        
  791.        
  792.        
  793.         if ($stmt = $this->conn->query($query)) {
  794.             if ($stmt->num_rows == 0) {
  795.                 //if not dublicated and login name avilable
  796.                
  797.                 if (empty($expire_date)) {
  798.                     $expire_date = EXPIREDATE;
  799.                 }
  800.                 if (empty($max_con)) {
  801.                     $max_con = MAXCON;
  802.                 }
  803.                 if (empty($ecm_rate)) {
  804.                     $ecm_rate = -1;
  805.                 }
  806.                 if (empty($display_name)) {
  807.                     $display_name = "";
  808.                 }
  809.                 if (empty($server_name)) {
  810.                     $server_name = "";
  811.                 }
  812.                 if (empty($group_name)) {
  813.                     $group_name = "fastsat";
  814.                 }
  815.                 if (empty($full_name)) {
  816.                     $full_name = "N/A";
  817.                 }
  818.                 if (empty($user_mobile)) {
  819.                     $user_mobile = "N/A";
  820.                 }
  821.                 if (empty($user_email)) {
  822.                     $user_email = "none@none.com";
  823.                 }
  824.                 if (empty($user_country)) {
  825.                     $user_country = 1;
  826.                 }
  827.                 if (empty($profiles)) {
  828.                     $profiles = 0;
  829.                 }
  830.                
  831.                
  832.                
  833.                 $query = "INSERT INTO users (login, password, enabled, server, serverinfo,  expire, maxcon, displayname, ecmrate,
  834.                         name, mobile, email, country, modified, profiles";
  835.                
  836.                 $query .= ($sessionResellerSet) ? ", reseller)" : ")";
  837.                
  838.                
  839.                
  840.                 $query .= "VALUES ('$login', '$password', '$account_status', '$group_name', $server_name, '$expire_date',
  841.                           $max_con, '$display_name', $ecm_rate, '$full_name', '$user_mobile', '$user_email', $user_country,
  842.                           '$curr_timestamp', $profiles";
  843.                
  844.                 $query .= ($sessionResellerSet) ? ", " . $_SESSION['reseller'] . ")" : ")";
  845.                
  846.                
  847.                
  848.                 if ($stmt1 = $this->conn->query($query)) {
  849.                     $stmt->close();
  850.                     $this->log->LogInfo($this->log_init . 'New Username: ' . $login . '  Add with the following info: G:' . $group_name . ' | S:' . $server_name . ' | E:' . $expire_date . ' | P:' . $profiles . '.');
  851.                     $responce                          = "User successfully created.\n";
  852.                     $_SESSION['updateActiveTotalUser'] = 1;
  853.                     return $responce;
  854.                 }
  855.                
  856.             } else {
  857.                 //if found duplicated username
  858.                
  859.                 $responce = "User already use.\n";
  860.                 return $responce;
  861.             }
  862.         } else {
  863.             $responce = "Error in Database.\n";
  864.             return $responce;
  865.            
  866.         }
  867.        
  868.     }
  869.    
  870.     //Delete User
  871.     function del_user($id)
  872.     {
  873.         $username = $this->get_user_name($id);
  874.         $query    = "DELETE FROM users
  875.                    WHERE id = $id
  876.                    LIMIT 1";
  877.        
  878.         if ($stmt = $this->conn->query($query)) {
  879.             $this->log->LogInfo($this->log_init . 'user id:' . $id . ' Username: ' . $username . ' account deleted .');
  880.             $responce                          = "User successfully Deleted.\n";
  881.             $_SESSION['updateActiveTotalUser'] = 1;
  882.             return $responce;
  883.         }
  884.        
  885.     }
  886.    
  887.    
  888.    
  889.     //Get User Data
  890.     function get_user_data($id)
  891.     {
  892.         $query = "SELECT * FROM users
  893.                    WHERE id = '$id'";
  894.        
  895.         if ($stmt = $this->conn->query($query)) {
  896.             $result = $stmt->fetch_object();
  897.             return $result;
  898.         }
  899.     }
  900.    
  901.    
  902.     //Get User name by id
  903.     function get_user_name($id)
  904.     {
  905.         $query = "SELECT login FROM users
  906.                        WHERE id = '$id'";
  907.        
  908.         if ($stmt = $this->conn->query($query)) {
  909.             $result  = $stmt->fetch_object();
  910.             $result1 = $result->login;
  911.             return $result1;
  912.         }
  913.     }
  914.    
  915.    
  916.    
  917.     //Get User Data That belong to Reseller
  918.     //Total users and total Active users
  919.     function get_info($reseller)
  920.     {
  921.         if (!isset($_SESSION['currActiveTotalUser']) || $_SESSION['updateActiveTotalUser'] <> 0) {
  922.             $reseller = $_SESSION['reseller'];
  923.            
  924.             $query = "SELECT COUNT(id) ";
  925.             $query .= "FROM users ";
  926.             if ($reseller <> 0) {
  927.                 $query .= "WHERE reseller = '$reseller' ";
  928.             }
  929.            
  930.             if ($stmt = $this->conn->query($query)) {
  931.                 $result = $stmt->fetch_row();
  932.                 define("TOTALUSER", $result[0]);
  933.             }
  934.            
  935.             $query = "SELECT COUNT(id) ";
  936.             $query .= "FROM users ";
  937.             $query .= 'WHERE enabled = "true" AND STR_TO_DATE(expire,"%d/%m/%Y")>CURDATE() ';
  938.             if ($reseller <> 0) {
  939.                 $query .= "AND reseller = '$reseller' ";
  940.             }
  941.            
  942.            
  943.            
  944.             if ($stmt = $this->conn->query($query)) {
  945.                 $result = $stmt->fetch_row();
  946.                 define("ACTIVEUSER", $result[0]);
  947.             }
  948.            
  949.             $result                            = "[" . TOTALUSER . "/" . ACTIVEUSER . "]";
  950.             $_SESSION['currActiveTotalUser']   = $result;
  951.             $_SESSION['updateActiveTotalUser'] = 0;
  952.             return $result;
  953.         } else
  954.             return $_SESSION['currActiveTotalUser'];
  955.     }
  956.    
  957.    
  958.    
  959.     //Edit User Data
  960.     //$response = $mysql->edit_user_data
  961.     //($user_data-id,$_POST['login'],$_POST['password'],$_POST['account_status'],
  962.     //$_POST['main_server_name'],$_POST['group_name'],$_POST['expire_date'],$_POST['max_con'],
  963.     //$_POST['display_name'],$_POST['ecm_rate']);
  964.    
  965.     //table structure
  966.     //id , login , password , enabled , admin , server , expire , displayname , maxcon , profiles , mapexclude , debug , ecmrate ,
  967.     //name , country , email , mobile , serverinfo , creationdate , modified , demo , reseller
  968.    
  969.     function edit_user_data($id, $login, $password, $enabled, $serverinfo, $server, $expire, $maxcon, $displayname, $ecmrate, $full_name, $user_mobile, $user_email, $user_country, $profiles)
  970.     {
  971.         if (empty($user_country)) {
  972.             $user_country = 1;
  973.         }
  974.         $curr_timestamp = date("y/m/d : H:i:s", time());
  975.        
  976.         $query = "UPDATE users
  977.                    SET login = '$login', password = '$password', enabled = '$enabled',  serverinfo = $serverinfo
  978.                    , server = '$server', expire = '$expire', maxcon = $maxcon, displayname = '$displayname', ecmrate = $ecmrate,
  979.                    name = '$full_name', mobile = '$user_mobile', email = '$user_email', country = $user_country, modified = '$curr_timestamp', profiles = $profiles
  980.                    WHERE id =$id
  981.                    LIMIT 1";
  982.        
  983.        
  984.         $curr_user_data = $this->get_user_data($id);
  985.        
  986.         if ($curr_user_data->password == $password) {
  987.             $pass_change_status = "no change";
  988.            
  989.         } else {
  990.             $pass_change_status = "changed";
  991.         }
  992.        
  993.         if ($stmt = $this->conn->query($query)) {
  994.             $this->log->LogInfo($this->log_init . 'Edited Username: ' . $login . '  with the following info: ' . 'P:' . $pass_change_status . ' | S:' . $curr_user_data->enabled . '->' . $enabled . ' | G:' . $curr_user_data->server . '->' . $server . ' | S:' . $curr_user_data->serverinfo . '->' . $serverinfo . ' | E:' . $curr_user_data->expire . '->' . $expire . ' | P:' . $curr_user_data->profiles . '->' . $profiles . '.');
  995.             $responce = "User successfully Updated.\n";
  996.             unset($list_number);
  997.             $_SESSION['updateActiveTotalUser'] = 1;
  998.             return $responce;
  999.         }
  1000.        
  1001.     }
  1002.    
  1003.     // Enable/Disable User
  1004.     function enable_disable_user($id, $status)
  1005.     {
  1006.         $username       = $this->get_user_name($id);
  1007.         $log            = New KLogger('log/cspum.log', KLogger::DEBUG);
  1008.         $log_init       = 'User [' . $_SESSION['username'] . '] (' . $_SESSION['remote_address'] . ') | ';
  1009.         $curr_timestamp = date("y/m/d : H:i:s", time());
  1010.         if ($this->check_user_reseller($id)) {
  1011.             $query = "UPDATE users
  1012.                        SET enabled = '$status', modified = '$curr_timestamp'
  1013.                        WHERE id =$id
  1014.                        LIMIT 1";
  1015.            
  1016.             if ($stmt = $this->conn->query($query)) {
  1017.                 $log->LogInfo($log_init . 'user id:' . $id . ' login: ' . $username . ' change account status to ' . strtoupper($status) . ' .');
  1018.                 $responce = "User successfully Updated.\n";
  1019.                 unset($list_number);
  1020.                 $_SESSION['updateActiveTotalUser'] = 1;
  1021.                 return $responce;
  1022.             }
  1023.         } else
  1024.             return "This User ID do not belong to this reseller.";
  1025.        
  1026.     }
  1027.    
  1028.    
  1029.     // check if user belong to reseller
  1030.    
  1031.     function check_user_reseller($id)
  1032.     {
  1033.         if ($_SESSION['reseller'] <> 0) {
  1034.             $query = "SELECT reseller
  1035.                        FROM users
  1036.                        WHERE id =$id
  1037.                        LIMIT 1";
  1038.            
  1039.             if ($stmt = $this->conn->query($query)) {
  1040.                 $result = $stmt->fetch_object();
  1041.                
  1042.                 if ($result->reseller == $_SESSION['reseller']) {
  1043.                     return true;
  1044.                 } else
  1045.                     return false;
  1046.                
  1047.                
  1048.             }
  1049.         } else
  1050.             return true;
  1051.     }
  1052.    
  1053.     //
  1054.     function createQuery($posts)
  1055.     {
  1056.         //$xslt_file = "userlist.xsl";
  1057.         //         Array
  1058.         //(
  1059.         //    [userStatus] => all
  1060.         //    [expired] => all
  1061.         //    [usersGroup] => fastsat
  1062.         //    [serverName] => 1
  1063.         //    [recentlyAdd] => thistweek
  1064.         //    [recentlyUpdate] => all
  1065.         //    [browse] => browse
  1066.         //    [profiles_checkbox] => 0
  1067.         //    [main_server_name] => 0
  1068.         //)
  1069.        
  1070.         isset($posts['userStatus']) ? $userStatus = $posts['userStatus'] : null;
  1071.         isset($posts['expired']) ? $expired = $posts['expired'] : null;
  1072.         isset($posts['usersGroup']) ? $usersGroup = $posts['usersGroup'] : null;
  1073.         isset($posts['serverName']) ? $serverName = $posts['serverName'] : null;
  1074.         isset($posts['recentlyAdd']) ? $recentlyAdd = $posts['recentlyAdd'] : null;
  1075.         isset($posts['recentlyUpdate']) ? $recentlyUpdate = $posts['recentlyUpdate'] : null;
  1076.         isset($posts['userNameInput']) ? $userNameInput = $posts['userNameInput'] : null;
  1077.         isset($posts['fullNameInput']) ? $fullNameInput = $posts['fullNameInput'] : null;
  1078.         isset($posts['mobile']) ? $mobile = $posts['mobile'] : null;
  1079.        
  1080.         $reseller = $_SESSION['reseller'];
  1081.        
  1082.         if (isset($userStatus) && $userStatus == "all")
  1083.             unset($userStatus);
  1084.         if (isset($expired) && $expired == "all")
  1085.             unset($expired);
  1086.         if (isset($usersGroup) && $usersGroup == "all")
  1087.             unset($usersGroup);
  1088.         if (isset($serverName) && $serverName == "all")
  1089.             unset($serverName);
  1090.         if (isset($recentlyAdd) && $recentlyAdd == "all")
  1091.             unset($recentlyAdd);
  1092.         if (isset($recentlyUpdate) && $recentlyUpdate == "all")
  1093.             unset($recentlyUpdate);
  1094.         if (isset($userNameInput) && $userNameInput == "")
  1095.             unset($userNameInput);
  1096.         if (isset($fullNameInput) && $fullNameInput == "")
  1097.             unset($fullNameInput);
  1098.         if (isset($mobile) && $mobile == "")
  1099.             unset($mobile);
  1100.        
  1101.         if (isset($expired) && $expired != "all" && $expired != "expired")
  1102.             $expired = $this->getdate($expired);
  1103.         if (isset($recentlyAdd))
  1104.             $recentlyAdd = $this->getdate($recentlyAdd);
  1105.         if (isset($recentlyUpdate))
  1106.             $recentlyUpdate = $this->getdate($recentlyUpdate);
  1107.        
  1108.        
  1109.         $i        = 0;
  1110.         $skipnext = 0;
  1111.        
  1112.         $query = "SELECT id,login,enabled,server,expire,displayname,creationdate,modified,name
  1113.                             FROM users ";
  1114.        
  1115.         if (isset($userStatus) && $userStatus == "enable" && empty($expired)) {
  1116.             $query .= 'WHERE enabled="true" AND STR_TO_DATE(expire,"%d/%m/%Y")>CURDATE() ';
  1117.             $i = 1;
  1118.         } elseif (isset($userStatus) && $userStatus == "disable" && empty($expired)) {
  1119.             $query .= 'WHERE enabled="false" AND STR_TO_DATE(expire,"%d/%m/%Y")>CURDATE() ';
  1120.             $i = 1;
  1121.         }
  1122.        
  1123.         if (isset($userStatus) && $userStatus == "enable" && isset($expired) && $expired <> "all") {
  1124.             $query .= 'WHERE enabled="true" ';
  1125.             $i = 1;
  1126.         } elseif (isset($userStatus) && $userStatus == "disable" && isset($expired) && $expired <> "all") {
  1127.             $query .= 'WHERE enabled="false" ';
  1128.             $i = 1;
  1129.         }
  1130.        
  1131.         $skipnext = 0;
  1132.         if (isset($usersGroup) && $i == 0) {
  1133.             $skipnext = 0;
  1134.             $query .= 'WHERE server="' . $usersGroup . '" ';
  1135.             $i        = 1;
  1136.             $skipnext = 1;
  1137.         } elseif (isset($usersGroup) && $i == 1 && $skipnext == 0) {
  1138.             $query .= 'AND server="' . $usersGroup . '" ';
  1139.             $i = 1;
  1140.         }
  1141.        
  1142.         $skipnext = 0;
  1143.         if (isset($serverName) && $serverName <> 0 && $i == 0) {
  1144.             $skipnext = 0;
  1145.             $query .= "WHERE serverinfo=$serverName ";
  1146.             $i        = 1;
  1147.             $skipnext = 1;
  1148.         }
  1149.         if (isset($serverName) && $serverName <> 0 && $i == 1 && $skipnext == 0) {
  1150.             $query .= "AND serverinfo=$serverName ";
  1151.             $i = 1;
  1152.         }
  1153.        
  1154.         $skipnext = 0;
  1155.         if (isset($expired) && $expired == "expired" && $i == 0) {
  1156.             $skipnext = 0;
  1157.             $query .= "WHERE STR_TO_DATE(expire,'%d/%m/%Y')<CURDATE() ";
  1158.             $i        = 1;
  1159.             $skipnext = 1;
  1160.         }
  1161.        
  1162.         if (isset($expired) && $expired == "expired" && $i == 1 && $skipnext == 0) {
  1163.             $query .= "AND STR_TO_DATE(expire,'%d/%m/%Y')<CURDATE() ";
  1164.             $i = 1;
  1165.         }
  1166.        
  1167.         $skipnext = 0;
  1168.         if (isset($expired) && $expired != "expired" && $i == 0) {
  1169.             $skipnext = 0;
  1170.             $query .= "WHERE CAST(STR_TO_DATE(expire,'%d/%m/%Y') AS DATE) BETWEEN CAST('$expired' AS DATE) AND CURDATE() ";
  1171.             $i        = 1;
  1172.             $skipnext = 1;
  1173.         }
  1174.        
  1175.         if (isset($expired) && $expired != "expired" && $i == 1 && $skipnext == 0) {
  1176.             $query .= "AND CAST(STR_TO_DATE(expire,'%d/%m/%Y') AS DATE) BETWEEN CAST('$expired' AS DATE) AND CURDATE() ";
  1177.             $i = 1;
  1178.         }
  1179.        
  1180.         $skipnext = 0;
  1181.         if (isset($recentlyAdd) && $i == 0) {
  1182.             $skipnext = 0;
  1183.             $query .= "WHERE CAST(creationdate AS DATE) BETWEEN CAST('$recentlyAdd' AS DATE) AND CAST(CURDATE()+ INTERVAL 1 DAY AS DATE) ";
  1184.             $i        = 1;
  1185.             $skipnext = 1;
  1186.         }
  1187.        
  1188.         if (isset($recentlyAdd) && $i == 1 && $skipnext == 0) {
  1189.             $query .= "AND CAST(creationdate AS DATE) BETWEEN CAST('$recentlyAdd' AS DATE) AND CAST(CURDATE()+ INTERVAL 1 DAY AS DATE) ";
  1190.             $i = 1;
  1191.         }
  1192.        
  1193.         $skipnext = 0;
  1194.         if (isset($recentlyUpdate) && $i == 0) {
  1195.             $skipnext = 0;
  1196.             $query .= "WHERE CAST(modified AS DATE) BETWEEN CAST('$recentlyUpdate' AS DATE) AND CAST(CURDATE()+ INTERVAL 1 DAY AS DATE) ";
  1197.             $i        = 1;
  1198.             $skipnext = 1;
  1199.         }
  1200.        
  1201.         if (isset($recentlyUpdate) && $i == 1 && $skipnext == 0) {
  1202.             $query .= "AND CAST(modified AS DATE) BETWEEN CAST('$recentlyUpdate' AS DATE) AND CAST(CURDATE()+ INTERVAL 1 DAY AS DATE) ";
  1203.             $i = 1;
  1204.         }
  1205.        
  1206.         $skipnext = 0;
  1207.         if (isset($userNameInput) && $i == 0) {
  1208.             $skipnext = 0;
  1209.             $query .= 'WHERE login LIKE "%' . $userNameInput . '%" ';
  1210.             $i        = 1;
  1211.             $skipnext = 1;
  1212.         }
  1213.        
  1214.         if (isset($userNameInput) && $i == 1 && $skipnext == 0) {
  1215.             $query .= 'AND login LIKE "%' . $userNameInput . '%" ';
  1216.             $i = 1;
  1217.         }
  1218.        
  1219.         $skipnext = 0;
  1220.         if (isset($fullNameInput) && $i == 0) {
  1221.             $skipnext = 0;
  1222.             $query .= 'WHERE name LIKE "%' . $fullNameInput . '%" ';
  1223.             $i        = 1;
  1224.             $skipnext = 1;
  1225.         }
  1226.        
  1227.         if (isset($fullNameInput) && $i == 1 && $skipnext == 0) {
  1228.             $query .= 'AND name LIKE "%' . $fullNameInput . '%" ';
  1229.             $i = 1;
  1230.         }
  1231.        
  1232.         $skipnext = 0;
  1233.         if (isset($mobile) && $i == 0) {
  1234.             $skipnext = 0;
  1235.             $query .= 'WHERE mobile LIKE "%' . $mobile . '%" ';
  1236.             $i        = 1;
  1237.             $skipnext = 1;
  1238.         }
  1239.        
  1240.         if (isset($mobile) && $i == 1 && $skipnext == 0) {
  1241.             $query .= 'AND mobile LIKE "%' . $mobile . '%" ';
  1242.             $i = 1;
  1243.         }
  1244.        
  1245.         // in case reseller is set
  1246.         if (isset($reseller) && $reseller <> 0 && $i == 0) {
  1247.             $query .= "WHERE reseller=" . $_SESSION['reseller'] . " ";
  1248.             $i        = 1;
  1249.             $skipnext = 1;
  1250.         } elseif (isset($reseller) && $reseller <> 0 && $i == 1 && $skipnext == 0) {
  1251.             $query .= "AND reseller=" . $_SESSION['reseller'] . " ";
  1252.             $i = 1;
  1253.         }
  1254.        
  1255.        
  1256.         $query .= "ORDER BY id";
  1257.        
  1258.        
  1259.         return $query;
  1260.        
  1261.        
  1262.        
  1263.     }
  1264.    
  1265.    
  1266.     function createUserTable($post)
  1267.     {
  1268.         //array(8) (
  1269.         //[id] => (string) 27
  1270.         //[login] => (string) papu
  1271.         //[enabled] => (string) true
  1272.         //[server] => (string) fastsat
  1273.         //[expire] => (string) 01/02/2011
  1274.         //[displayname] => (string) Hitesh Gandhi
  1275.         //[creationdate] => (string) 0000-00-00 00:00:00
  1276.         //[modified] => (string) 2011-01-06 19:10:50
  1277.         //)
  1278.         $data  = "";
  1279.         $query = $this->createQuery($post);
  1280.        
  1281.         if ($result = $this->conn->query($query)) {
  1282.             $num_of_rows = $result->num_rows;
  1283.             if ($num_of_rows >= 1) {
  1284.                 while ($row = $result->fetch_array(MYSQL_ASSOC)) {
  1285.                     if ($row['modified'] == "0000-00-00 00:00:00") {
  1286.                         $modifid_data = "2009-01-01";
  1287.                     } else {
  1288.                         $modifid_data = $row['modified'];
  1289.                     }
  1290.                    
  1291.                     $row['modified'] = date("m/d/Y", strtotime($modifid_data));
  1292.                     $last_update     = $row['modified'];
  1293.                    
  1294.                     if ($row['enabled'] == "true") {
  1295.                         $value          = Others::Statictimeleft($row['expire']);
  1296.                         $row['enabled'] = $value['daysleft'] != 0 ? "Enabled" : "Expired";
  1297.                     } else
  1298.                         $row['enabled'] = "Disabled";
  1299.                    
  1300.                     $row['expire'] = date("m/d/Y", strtotime(str_replace('/', '-', $row['expire'])));
  1301.                    
  1302.                     $data[] = $row;
  1303.                 }
  1304.             }
  1305.             return $data;
  1306.         } else {
  1307.             $response = "there is no data in table!!";
  1308.         }
  1309.     }
  1310.    
  1311.    
  1312.     function createXML($query)
  1313.     {
  1314.         if ($result = $this->conn->query($query)) {
  1315.             $num_of_rows = $result->num_rows;
  1316.             if ($num_of_rows >= 1) {
  1317.                 // we produce XML
  1318.                 header("Content-type: text/xml");
  1319.                 $XML = "<?xml version=\"1.0\"?>\n";
  1320.                 if ($xslt_file)
  1321.                     $XML .= "<?xml-stylesheet href=\"$xslt_file\" type=\"text/xsl\" ?>";
  1322.                
  1323.                 // root node
  1324.                 $XML .= '<result>';
  1325.                 // rows
  1326.                
  1327.                 $XML .= '<info><table>';
  1328.                
  1329.                 $XML .= $serverName;
  1330.                
  1331.                
  1332.                 $XML .= '</table></info>';
  1333.                
  1334.                 while ($row = $result->fetch_array(MYSQL_ASSOC)) {
  1335.                     $XML .= "\t<row>\n";
  1336.                    
  1337.                     if ($row['modified'] == "0000-00-00 00:00:00") {
  1338.                         $modifid_data = "2009-01-01";
  1339.                     } else {
  1340.                         $modifid_data = $row['modified'];
  1341.                     }
  1342.                    
  1343.                     $row['modified'] = date("m/d/Y", strtotime($modifid_data));
  1344.                     $last_update     = $row['modified'];
  1345.                    
  1346.                     if ($row['enabled'] == "true") {
  1347.                         $value          = Others::Statictimeleft($row['expire']);
  1348.                         $row['enabled'] = $value['daysleft'] != 0 ? "Enabled" : "Expired";
  1349.                     } else
  1350.                         $row['enabled'] = "Disabled";
  1351.                    
  1352.                     $row['expire'] = date("m/d/Y", strtotime(str_replace('/', '-', $row['expire'])));
  1353.                    
  1354.                    
  1355.                     $i = 0;
  1356.                    
  1357.                     // cells
  1358.                     foreach ($row as $key => $cell) {
  1359.                         // Escaping illegal characters - not tested actually ;)
  1360.                         $cell = str_replace("&", "&amp;", $cell);
  1361.                         $cell = str_replace("<", "&lt;", $cell);
  1362.                         $cell = str_replace(">", "&gt;", $cell);
  1363.                         $cell = str_replace("\"", "&quot;", $cell);
  1364.                         // creates the "<tag>contents</tag>" representing the column
  1365.                         $XML .= "\t\t<" . $key . ">" . $cell . "</" . $key . ">\n";
  1366.                         $i++;
  1367.                     }
  1368.                     $XML .= "\t</row>\n";
  1369.                 }
  1370.                 $XML .= "</result>\n";
  1371.                
  1372.                 // output the whole XML string
  1373.                 return $XML;
  1374.             } else {
  1375.                 $response = "there is no data in table!!";
  1376.             }
  1377.         }
  1378.     }
  1379.    
  1380.     function displayusers2($posts)
  1381.     {
  1382.         // Load the XML source
  1383.         $xml         = new DOMDocument;
  1384.         $createquery = $this->displayUsers($posts);
  1385.         $xml_doc     = $this->createXML($createquery);
  1386.         $xml->loadXML($xml_doc);
  1387.         //$xml->load('xml.xml');
  1388.        
  1389.         $xsl = new DOMDocument;
  1390.         $xsl->load('userlist.xsl');
  1391.        
  1392.         // Configure the transformer
  1393.         $proc = new XSLTProcessor;
  1394.         $proc->importStyleSheet($xsl); // attach the xsl rules
  1395.        
  1396.         return $proc->transformToXML($xml);
  1397.     }
  1398.    
  1399.     // Get reseller users
  1400.    
  1401.     //    function get_reseller_users($resseller) {
  1402.     //
  1403.     //        $query = "SELECT login
  1404.     //                    FROM users
  1405.     //                    WHERE reseller = $resseller
  1406.     //                    ORDER BY login";
  1407.     //
  1408.     //        if($stmt = $this->conn->query($query)) {
  1409.     //
  1410.     //
  1411.     //            while($row = $stmt->fetch_array(MYSQLI_ASSOC))
  1412.     //            {
  1413.     //                $result[] = $row['login'];
  1414.     //            }
  1415.     //
  1416.     //            return $result;
  1417.     //
  1418.     //
  1419.     //        }
  1420.     //
  1421.     //    }
  1422.    
  1423.    
  1424.    
  1425.     //************************************************* End User Section ********************************************************
  1426.    
  1427.    
  1428.    
  1429.    
  1430.    
  1431.    
  1432.     //===================================================== Profile Permision Section ============================================================
  1433.    
  1434.     //Get Profile Data by Server
  1435.     function get_profile_data_by_server($server)
  1436.     {
  1437.         $query = "SELECT * FROM profiles
  1438.                    WHERE server = $server
  1439.                    ORDER BY list";
  1440.        
  1441.         if ($stmt = $this->conn->query($query)) {
  1442.             $num_of_rows = $stmt->num_rows;
  1443.            
  1444.             if ($num_of_rows >= 1) {
  1445.                 while ($result1 = $stmt->fetch_array(MYSQLI_ASSOC)) {
  1446.                     $result[] = $result1;
  1447.                 }
  1448.                
  1449.                 return $result;
  1450.             }
  1451.         }
  1452.        
  1453.     }
  1454.    
  1455.    
  1456.    
  1457.     //Get User Profile mask bit
  1458.     function get_user_profile_bit($id)
  1459.     {
  1460.         $query = "SELECT profiles FROM users
  1461.                    WHERE id = $id
  1462.                    LIMIT 1";
  1463.        
  1464.         if ($stmt = $this->conn->query($query)) {
  1465.             $result = $stmt->fetch_array(MYSQLI_ASSOC);
  1466.             list(, $value) = each($result);
  1467.             return $value;
  1468.         }
  1469.        
  1470.        
  1471.     }
  1472.    
  1473.    
  1474.    
  1475.     //check_user_profile_permission
  1476.     function check_user_profile_permission($user_allow_profile, $profile)
  1477.     {
  1478.         if ($user_allow_profile & $profile)
  1479.             return true;
  1480.         else
  1481.             return false;
  1482.     }
  1483.    
  1484.     // change_user_profile_permission
  1485.     function change_user_profile_permission($user_allow_profile, $profile)
  1486.     {
  1487.         $result = ($user_allow_profile ^ $profile);
  1488.         return $result;
  1489.        
  1490.     }
  1491.    
  1492.     // list_profiles_by_server
  1493.     function list_profiles_by_server($server)
  1494.     {
  1495.         if (empty($server))
  1496.             $server = 1;
  1497.         $profiles             = $this->get_profile_data_by_server($server);
  1498.         $resellerProfileAllow = $this->get_reseller_profile_allow($_SESSION['username'], $server);
  1499.         reset($profiles);
  1500.         $result = "";
  1501.         $i      = 0;
  1502.         $result .= '<table border="0" cellpadding="2" id="profile_table" ><tr>';
  1503.        
  1504.         foreach ($profiles as $value) {
  1505.             $ident                 = $value['ident'];
  1506.             $profilename           = $value['profilename'];
  1507.             $profileport           = $value['profileport'];
  1508.             $checkRessellerBitwise = intval($ident) & intval($resellerProfileAllow);
  1509.             if (isset($resellerProfileAllow) && $resellerProfileAllow <> 0 && !$checkRessellerBitwise) {
  1510.                 continue;
  1511.             }
  1512.             if ($profileport == 0) {
  1513.                 continue;
  1514.             }
  1515.             $i++;
  1516.             $result .= '<td id="td_profile_table">';
  1517.             $result .= '<input type="checkbox" name="profiles_checkbox[]" value="' . $ident . '" />' . $profilename . '</td>';
  1518.             if ($i == 4) {
  1519.                 $result .= '</tr><tr>';
  1520.                 $i = 0;
  1521.             }
  1522.         }
  1523.        
  1524.         $result .= '</tr><tr><td id="td_profile_table"><input type="checkbox" name="profiles_checkbox[]" value="0" checked="checked"/><strong>All Profiles</strong></td></tr></table>';
  1525.         echo $result;
  1526.     }
  1527.    
  1528.    
  1529.    
  1530.    
  1531.     //list_profiles_by_user_bitmask_by_server
  1532.     function list_profiles_by_user_bitmask_by_server($user_allow_profile, $server)
  1533.     {
  1534.         $profiles             = $this->get_profile_data_by_server($server);
  1535.         $resellerProfileAllow = $this->get_reseller_profile_allow($_SESSION['username'], $server);
  1536.         $reset                = reset($profiles);
  1537.         $user_mask            = intval($this->get_user_profile_bit($user_allow_profile));
  1538.         $result               = "";
  1539.         $i                    = 0;
  1540.         $result .= '<table border="0" cellpadding="2" id="profile_table" ><tr>';
  1541.        
  1542.         foreach ($profiles as $value) {
  1543.             $ident                 = $value['ident'];
  1544.             $profilename           = $value['profilename'];
  1545.             $profileport           = $value['profileport'];
  1546.             $checkRessellerBitwise = intval($ident) & intval($resellerProfileAllow);
  1547.             if (isset($resellerProfileAllow) && $resellerProfileAllow <> 0 && !$checkRessellerBitwise) {
  1548.                 continue;
  1549.             }
  1550.             if ($profileport == 0) {
  1551.                 continue;
  1552.             }
  1553.             $i++;
  1554.             $result .= '<td id="td_profile_table">';
  1555.             $result .= "<input  type=\"checkbox\" name=\"profiles_checkbox[]\" value=\"$ident\"";
  1556.             if ($this->check_user_profile_permission($user_mask, $ident)) {
  1557.                 $result .= " checked=\"checked\"";
  1558.             }
  1559.             $result .= "/>$profilename</td>\n";
  1560.             if ($i == 4) {
  1561.                 $result .= '</tr><tr>';
  1562.                 $i = 0;
  1563.             }
  1564.            
  1565.         }
  1566.        
  1567.         $result .= "</tr><tr><td id=\"td_profile_table\"><input type=\"checkbox\" name=\"profiles_checkbox[]\" value=\"0\"";
  1568.         if ($user_mask == 0) {
  1569.             $result .= " checked=\"checked\"";
  1570.         }
  1571.         $result .= "/><strong>All Profiles</strong></td></tr></table>";
  1572.        
  1573.         echo $result;
  1574.        
  1575.     }
  1576.    
  1577.     //list_profiles_by_member
  1578.     function list_profiles_by_member($memberId)
  1579.     {
  1580.         $query = "SELECT serverallow, profileallow
  1581.                        FROM members
  1582.                        WHERE id = '$memberId'
  1583.                        LIMIT 1";
  1584.        
  1585.         if ($result = $this->conn->query($query)) {
  1586.             $num_of_rows = $result->num_rows;
  1587.             if ($num_of_rows >= 1) {
  1588.                 while ($row = $result->fetch_object()) {
  1589.                     $results1     = $row->profileallow;
  1590.                     $results2     = $row->serverallow == 0 ? 1 : $row->serverallow;
  1591.                     $profileallow = $results1;
  1592.                 }
  1593.             } else {
  1594.                 $response = "there is no Group data in table!!";
  1595.             }
  1596.            
  1597.            
  1598.         }
  1599.        
  1600.         $profiles             = $this->get_profile_data_by_server($results2);
  1601.         //        $resellerProfileAllow = $this->get_reseller_profile_allow($_SESSION['username'], $server);
  1602.         $resellerProfileAllow = $results1;
  1603.         $reset                = reset($profiles);
  1604.         //$user_mask = intval($this->get_user_profile_bit($user_allow_profile));
  1605.         $result               = "";
  1606.         $i                    = 0;
  1607.         $result .= '<table border="0" cellpadding="2" id="profile_table" ><tr>';
  1608.        
  1609.         foreach ($profiles as $value) {
  1610.             $ident                 = $value['ident'];
  1611.             $profilename           = $value['profilename'];
  1612.             $profileport           = $value['profileport'];
  1613.             $checkRessellerBitwise = intval($ident) & intval($resellerProfileAllow);
  1614.             //            if ( isset($resellerProfileAllow) && $resellerProfileAllow <>0 &&  ! $checkRessellerBitwise ){
  1615.             //            if ( isset($resellerProfileAllow) && $resellerProfileAllow == 0 ){
  1616.             //                continue;
  1617.             //            }
  1618.             if ($profileport == 0) {
  1619.                 continue;
  1620.             }
  1621.             $i++;
  1622.             $result .= '<td id="td_profile_table">';
  1623.             $result .= "<input  type=\"checkbox\" name=\"profiles_checkbox[]\" value=\"$ident\"";
  1624.             //            if ( $profileallow & $ident  ) {
  1625.             $result .= (int) $profileallow & (int) $ident ? " checked=\"checked\"" : "";
  1626.             //            }
  1627.             $result .= "/>$profilename</td>\n";
  1628.             if ($i == 4) {
  1629.                 $result .= '</tr><tr>';
  1630.                 $i = 0;
  1631.             }
  1632.            
  1633.         }
  1634.        
  1635.         $result .= "</tr><tr><td id=\"td_profile_table\"><input type=\"checkbox\" name=\"profiles_checkbox[]\" value=\"0\"";
  1636.         if ($resellerProfileAllow == 0) {
  1637.             $result .= " checked=\"checked\"";
  1638.         }
  1639.         $result .= "/><strong>All Profiles</strong></td></tr></table>";
  1640.        
  1641.         echo $result;
  1642.        
  1643.     }
  1644.    
  1645.    
  1646.    
  1647.     //Get profiles Array by user profiles by_server
  1648.     //Used in email.php
  1649.     function array_profiles_by_user_bitmask_by_server($user_mask, $server)
  1650.     {
  1651.         $profiles = $this->get_profile_data_by_server($server);
  1652.        
  1653.         if (count($profiles) > 1) {
  1654.             reset($profiles);
  1655.         }
  1656.        
  1657.        
  1658.         foreach ($profiles as $value) {
  1659.             $ident       = $value['ident'];
  1660.             $port        = $value['profileport'];
  1661.             $desc        = $value['profiledesc'];
  1662.             $details     = $value['profiledetails'];
  1663.             $profilename = $value['profilename'];
  1664.            
  1665.             if ($this->check_user_profile_permission($user_mask, $ident) && $port <> 0) {
  1666.                 $result[] = array(
  1667.                     'port' => $port,
  1668.                     'profilename' => $profilename,
  1669.                     'desc' => $desc,
  1670.                     'details' => $details
  1671.                 );
  1672.             }
  1673.            
  1674.         }
  1675.        
  1676.        
  1677.        
  1678.         return $result;
  1679.        
  1680.     }
  1681.    
  1682.    
  1683.     //Get bitnumber for all profiles avilable by
  1684.     function get_sumbit_all_profiles($server)
  1685.     {
  1686.         $profiles = $this->get_profile_data_by_server($server);
  1687.        
  1688.         reset($profiles);
  1689.        
  1690.         $ident = 0;
  1691.        
  1692.         foreach ($profiles as $value) {
  1693.             $ident += $value['ident'];
  1694.            
  1695.         }
  1696.        
  1697.        
  1698.        
  1699.         return $ident;
  1700.        
  1701.     }
  1702.    
  1703.    
  1704.    
  1705.    
  1706.     //***************************************************** Profile Permision Section ************************************************************
  1707.    
  1708.    
  1709.    
  1710.     //===================================================== Others Section ============================================================
  1711.    
  1712.     // Get Country list
  1713.     function get_country_list($country_id = 0)
  1714.     {
  1715.         $query = "SELECT *
  1716.              FROM parameters
  1717.              WHERE item = 'country'
  1718.              ORDER BY list";
  1719.        
  1720.        
  1721.        
  1722.         if ($stmt = $this->conn->query($query)) {
  1723.             $num_of_rows = $stmt->num_rows;
  1724.            
  1725.             if ($num_of_rows >= 1) {
  1726.                 while ($result1 = $stmt->fetch_object()) {
  1727.                     $result .= "<option ";
  1728.                     if ($country_id == $result1->list) {
  1729.                         $result .= 'selected="selected" ';
  1730.                     }
  1731.                     $result .= 'value="' . $result1->list . '">' . $result1->desc . '</option>' . "\n";
  1732.                 }
  1733.                
  1734.                 return $result;
  1735.             }
  1736.         }
  1737.        
  1738.        
  1739.     }
  1740.    
  1741.     //===================================================== cspwindow Section ============================================================
  1742.    
  1743.     // Get reseller Users
  1744.    
  1745.     function get_reseller_users($reseller)
  1746.     {
  1747.         $query = "SELECT login ";
  1748.         $query .= "FROM users ";
  1749.         if ($reseller <> 0)
  1750.             $query .= "WHERE reseller =$reseller ";
  1751.         $query .= "ORDER BY login";
  1752.        
  1753.         if ($stmt = $this->conn->query($query)) {
  1754.             while ($row = $stmt->fetch_array(MYSQLI_ASSOC)) {
  1755.                 $rows[] = $row['login'];
  1756.             }
  1757.             return $rows;
  1758.         }
  1759.     }
  1760.    
  1761.    
  1762.     function get_xml_from_csp()
  1763.     {
  1764.         $error   = false;
  1765.         $counter = 0;
  1766.        
  1767.         if (!isset($_SESSION["sessionid"]) || is_null($_SESSION["sessionid"])) {
  1768.             $sessionId = false;
  1769.             while (!$sessionId) {
  1770.                 if ($sessionId = $this->get_csp_session_id()) {
  1771.                     $_SESSION["sessionid"] = $sessionId;
  1772.                 }
  1773.                 $counter++;
  1774.                 if ($counter == 3)
  1775.                     break;
  1776.                 sleep(5);
  1777.             }
  1778.            
  1779.             if (!$sessionId) {
  1780.                 echo "Server is busy now..... please try again after few minutes...... ";
  1781.                 die;
  1782.             }
  1783.         }
  1784.        
  1785.         $data = "";
  1786.         header("content-type: application/xml; charset=ISO-8859-15");
  1787.        
  1788.         $data = '<?xml version="1.0" encoding="UTF-8"?>';
  1789.         $data .= '<cws-status-req ver="1.0">';
  1790.         $data .= '<session session-id="' . $_SESSION["sessionid"] . '"/>';
  1791.         $data .= '<proxy-status include="true"/>';
  1792.         $data .= '<ca-profiles include="true"/>';
  1793.         $data .= '<proxy-users';
  1794.         if (isset($_SESSION["hide_inactive"]) && $_SESSION["hide_inactive"] === "true") {
  1795.             $data .= ' hide-inactive="true"';
  1796.         }
  1797.         $data .= ' include="true"/>';
  1798.         if (isset($_SESSION["profile_select"]) && $_SESSION["profile_select"] <> "All") {
  1799.             $data .= '<profile>' . $_SESSION["profile_select"] . '</profile>';
  1800.         }
  1801.         //$data .='<proxy-users profile="jsc" include="true"/>';
  1802.         $data .= '</cws-status-req>';
  1803.        
  1804.         defined('XML_PAYLOAD') ? null : define('XML_PAYLOAD', $data);
  1805.         defined('XML_POST_URL') ? null : define('XML_POST_URL', CSPURL . '://' . CSPSERVER . ':' . CSPPORT . '/xmlHandler');
  1806.        
  1807.         /**
  1808.          * Initialize handle and set options
  1809.          */
  1810.         $ch = curl_init();
  1811.         curl_setopt($ch, CURLOPT_URL, XML_POST_URL);
  1812.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  1813.         curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
  1814.         curl_setopt($ch, CURLOPT_POSTFIELDS, XML_PAYLOAD);
  1815.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1816.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  1817.         //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
  1818.         curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  1819.             'Content-Type: text/xml'
  1820.         ));
  1821.        
  1822.         /**
  1823.          * Execute the request and also time the transaction
  1824.          */
  1825.         $start     = array_sum(explode(' ', microtime()));
  1826.         $result    = curl_exec($ch);
  1827.         $stop      = array_sum(explode(' ', microtime()));
  1828.         $totalTime = $stop - $start;
  1829.        
  1830.         /**
  1831.          * Check for errors
  1832.          */
  1833.         if (curl_errno($ch)) {
  1834.             $error  = true;
  1835.             $result = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
  1836.         } else {
  1837.             $returnCode = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
  1838.             switch ($returnCode) {
  1839.                 case 404:
  1840.                     $result = 'ERROR -> 404 Not Found';
  1841.                     $error  = true;
  1842.                     break;
  1843.                 default:
  1844.                     break;
  1845.             }
  1846.         }
  1847.        
  1848.        
  1849.         curl_close($ch);
  1850.        
  1851.         if (!$error) {
  1852.             return $result;
  1853.         } else {
  1854.             return false;
  1855.         }
  1856.     }
  1857.    
  1858.     function get_csp_session_id()
  1859.     {
  1860.         $error = false;
  1861.        
  1862.         //header( "content-type: application/xml; charset=ISO-8859-15" );
  1863.         $sessionid = "";
  1864.         $sessionid .= '<?xml version="1.0" encoding="UTF-8"?>';
  1865.         $sessionid .= '<cws-status-req ver="1.0">';
  1866.         $sessionid .= '<cws-login>';
  1867.         $sessionid .= '<user name="' . CSPUSERNAM . '" password="' . CSPPASSWD . '"/>';
  1868.         $sessionid .= '</cws-login>';
  1869.         $sessionid .= '</cws-status-req>';
  1870.        
  1871.         defined('XML_PAYLOAD1') ? null : define('XML_PAYLOAD1', $sessionid);
  1872.         defined('XML_POST_URL1') ? null : define('XML_POST_URL1', CSPURL . '://' . CSPSERVER . ':' . CSPPORT . '/xmlHandler');
  1873.        
  1874.         $headers = array(
  1875.             "Content-type: text/xml"
  1876.         );
  1877.        
  1878.         /**
  1879.          * Initialize handle and set options
  1880.          */
  1881.         $ch1 = curl_init();
  1882.         curl_setopt($ch1, CURLOPT_URL, XML_POST_URL1);
  1883.         curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
  1884.         curl_setopt($ch1, CURLOPT_TIMEOUT, TIMEOUT);
  1885.         curl_setopt($ch1, CURLOPT_POSTFIELDS, XML_PAYLOAD1);
  1886.         curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false);
  1887.         curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false);
  1888.         //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
  1889.         curl_setopt($ch1, CURLOPT_HTTPHEADER, $headers);
  1890.        
  1891.         /**
  1892.          * Execute the request and also time the transaction
  1893.          */
  1894.         $start     = array_sum(explode(' ', microtime()));
  1895.         $result    = curl_exec($ch1);
  1896.         $stop      = array_sum(explode(' ', microtime()));
  1897.         $totalTime = $stop - $start;
  1898.        
  1899.        
  1900.         if (curl_errno($ch1)) {
  1901.             $error  = true;
  1902.             $result = 'ERROR -> ' . curl_errno($ch1) . ': ' . curl_error($ch1);
  1903.         } else {
  1904.             $returnCode = (int) curl_getinfo($ch1, CURLINFO_HTTP_CODE);
  1905.             switch ($returnCode) {
  1906.                 case 404:
  1907.                     $result = 'ERROR -> 404 Not Found';
  1908.                     break;
  1909.                 default:
  1910.                     break;
  1911.             }
  1912.         }
  1913.        
  1914.         /**
  1915.          * Close the handle
  1916.          */
  1917.         curl_close($ch1);
  1918.        
  1919.         /**
  1920.          * Output the results and time
  1921.          */
  1922.         if (!$error) {
  1923.             $xml                     = new DOMDocument('1.0', 'utf-8');
  1924.             $xml->formatOutput       = true;
  1925.             $xml->preserveWhiteSpace = false;
  1926.             $xml->loadXML("$result");
  1927.             $cwsstatusresp = $xml->getElementsByTagName("cws-status-resp")->item(0);
  1928.             $status        = $cwsstatusresp->getElementsByTagName("status")->item(0);
  1929.             $sessionid     = $status->getAttribute('session-id');
  1930.            
  1931.             return $sessionid;
  1932.            
  1933.         } else {
  1934.             return false;
  1935.         }
  1936.        
  1937.     }
  1938.    
  1939.    
  1940.    
  1941.     //********* [End] *********************************** cspwindow Section ************************************************************
  1942.    
  1943.    
  1944.     //***************************************************** Others Section ************************************************************
  1945.     // Bitwise Checking
  1946.     function bitwise_check($var1, $var2)
  1947.     {
  1948.         if ($var1 & $var2) {
  1949.             return true;
  1950.         } else {
  1951.             return false;
  1952.         }
  1953.        
  1954.     }
  1955.    
  1956.     public static function bitwise_checking($var1, $var2)
  1957.     {
  1958.         if ($var1 & $var2) {
  1959.             return true;
  1960.         } else {
  1961.             return false;
  1962.         }
  1963.        
  1964.     }
  1965.    
  1966.    
  1967.    
  1968.     // Send Email to Client
  1969.     function send_email($id)
  1970.     {
  1971.         //        $firephp = FirePHP::getInstance(true);  //must be delete when all prog is finished
  1972.         $others = new Others;
  1973.        
  1974.         error_reporting(E_STRICT);
  1975.         date_default_timezone_set('Africa/Khartoum');
  1976.         require_once('classes/class.phpmailer.php');
  1977.         //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
  1978.         $mail = new PHPMailer();
  1979.        
  1980.        
  1981.         //Get User Data
  1982.         $user_data = $this->get_user_data(intval($id));
  1983.         $username  = $user_data->login;
  1984.         $password  = $user_data->password;
  1985.         $profiles  = intval($user_data->profiles);
  1986.         $expire    = $user_data->expire;
  1987.         $server    = intval($user_data->serverinfo);
  1988.         $real_name = $user_data->name;
  1989.        
  1990.         //Get Server Data
  1991.         $server_data = $this->get_server_data_bylist($server);
  1992.         $hostname    = $server_data[hostname];
  1993.         $server_list = $server_data[1];
  1994.        
  1995.        
  1996.         // if profile=0 (mean user have access to all profiles)
  1997.         if ($profiles == 0) {
  1998.             $profiles = $this->get_sumbit_all_profiles($server);
  1999.            
  2000.         }
  2001.        
  2002.        
  2003.         //Get Profile Data
  2004.         $profile_data = $this->array_profiles_by_user_bitmask_by_server($profiles, $server_list);
  2005.        
  2006.        
  2007.        
  2008.        
  2009.         //Get number of profiles
  2010.         $num_of_profile = count($profile_data, 0);
  2011.        
  2012.         //start build email body
  2013.        
  2014.         $n_line = "";
  2015.         $c_line = "";
  2016.         if ($num_of_profile >= 1) {
  2017.             $n_line .= "#### Mgcamd Lines\n\n<br/><br/>";
  2018.             $c_line .= "#### CCcam Line\n\n<br/><br/>";
  2019.            
  2020.             for ($i = 0; $i < $num_of_profile; $i++) {
  2021.                 $n_line .= '<span style="color: #8F8F8F">#' . $profile_data[$i][details] . '</span><br/>' . "\n";
  2022.                 $c_line .= '<span style="color: #8F8F8F">#' . $profile_data[$i][details] . '</span><br/>' . "\n";
  2023.                
  2024.                 $n_line .= 'CWS = ' . $hostname . ' ' . $profile_data[$i][port] . ' ' . $username . ' ' . $password . ' ' . $profile_data[$i][desc] . "\n<br/>";
  2025.                 $c_line .= 'N: ' . $hostname . ' ' . $profile_data[$i][port] . ' ' . $username . ' ' . $password . ' ' . $profile_data[$i][desc] . "\n<br/>";
  2026.                
  2027.             }
  2028.            
  2029.         }
  2030.        
  2031.         if ($user_data->email <> "" && $user_data->email <> "none@none.com") {
  2032.             $mail_header .= "<html><head><body>";
  2033.             $mail_header .= "<br/>Hello ";
  2034.            
  2035.             if ($real_name <> "") {
  2036.                 $mail_header .= $real_name . "\n<br/>";
  2037.             } else {
  2038.                 $mail_header .= " Sir\n<br/>";
  2039.             }
  2040.            
  2041.            
  2042.             $filename    = "includes/email_header.txt";
  2043.             $handle      = fopen($filename, "r");
  2044.             $mail_header = fread($handle, filesize($filename));
  2045.             fclose($handle);
  2046.            
  2047.             $filename    = "includes/email_footer.txt";
  2048.             $handle      = fopen($filename, "r");
  2049.             $mail_footer = stream_get_contents($handle);
  2050.             fclose($handle);
  2051.            
  2052.             $extended_port = "Here is Extended Newcamd port configuration line:\n<br/>";
  2053.             $extended_port .= 'CWS = ' . $hostname . ' ' . CSPEXTPORT . ' ' . $username . ' ' . $password . ' ' . CSPEXTDESKEY . "\n<br/>";
  2054.            
  2055.             $mail_expire = "\n<br/>I'd like to bring to your attention this account will be expire in <strong>" . $expire . "</strong>, so plz contact us to avoid any interuption on the service.\n\n<br/><br/>";
  2056.            
  2057.            
  2058.             // email parameters
  2059.             $mail_body = $mail_header . "\n<br/>" . $extended_port . "\n\n<br/><br/>" . $n_line . "\n\n<br/><br/>" . $c_line . $mail_expire . $mail_footer;
  2060.            
  2061.             $body            = $mail_body;
  2062.             $text_body       = $mail_body;
  2063.             $mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
  2064.             // 1 = errors and messages
  2065.             // 2 = messages only
  2066.             $mail->IsSMTP();
  2067.             $mail->SMTPAuth   = true; // enable SMTP authentication
  2068.             $mail->SMTPSecure = "tls"; // sets the prefix to the server
  2069.             $mail->Host       = "smtp.gmail.com"; // sets GMAIL as the SMTP server
  2070.             $mail->Port       = 587; // set the SMTP port for the GMAIL server
  2071.             $mail->Username   = 'serverscccam'; // SMTP account username
  2072.             $mail->Password   = 'ka_@r_a@m_z~a_k$i'; // SMTP account password
  2073.            
  2074.             $mail->SetFrom(EMAILFROM, EMAILFROMNAME);
  2075.            
  2076.             $mail->AddReplyTo(EMAILFROM, EMAILFROMNAME);
  2077.            
  2078.             $mail->Subject = 'csp server';
  2079.            
  2080.             $mail->Body    = $body;
  2081.             $mail->AltBody = $text_body;
  2082.            
  2083.            
  2084.             $mail->MsgHTML($body);
  2085.            
  2086.             $address = "$user_data->email";
  2087.             $mail->AddAddress($address, $real_name);
  2088.            
  2089.             $user_name_own = "root";
  2090.            
  2091.             /**
  2092.              *
  2093.              * Create Newcamd zip file
  2094.              */
  2095.             $filename   = "includes/cfg_files/mgcamd/keys/newcamd.list.header";
  2096.             $handle     = fopen($filename, "r");
  2097.             $config_cam = fread($handle, filesize($filename));
  2098.             fclose($handle);
  2099.            
  2100.             $config_cam .= strip_tags($n_line, '\n');
  2101.            
  2102.             $tempdir  = 'tmp/' . time() . rand();
  2103.             $tempdir1 = $tempdir;
  2104.            
  2105.             if (mkdir($tempdir, 0777)) {
  2106.                 $tempdir = $tempdir . '/keys';
  2107.                 mkdir($tempdir, 0777);
  2108.                 $filename = $tempdir . "/newcamd.list";
  2109.                 $handle   = fopen($filename, "w");
  2110.                 fwrite($handle, $config_cam);
  2111.                 fclose($handle);
  2112.                
  2113.             }
  2114.            
  2115.             $files_to_zip = array(
  2116.                 'includes/cfg_files/mgcamd/keys/ignore.list',
  2117.                 'includes/cfg_files/mgcamd/keys/mg_cfg',
  2118.                 'includes/cfg_files/mgcamd/keys/priority.list',
  2119.                 'includes/cfg_files/mgcamd/keys/replace.list',
  2120.                 $filename
  2121.             );
  2122.             //if true, good; if false, zip creation failed
  2123.             if ($others->create_zip($files_to_zip, $tempdir1 . '/mgcamd_settings.zip')) {
  2124.                 unlink($filename);
  2125.                 unlink($tempdir);
  2126.                 rmdir($tempdir);
  2127.                 $tempdir = $tempdir1;
  2128.                
  2129.             }
  2130.            
  2131.            
  2132.            
  2133.             /**
  2134.              * Create CCcam zip file
  2135.              */
  2136.             $filename   = "includes/cfg_files/cccam/etc/CCcam.cfg_header";
  2137.             $handle     = fopen($filename, "r");
  2138.             $config_cam = fread($handle, filesize($filename));
  2139.             fclose($handle);
  2140.            
  2141.             $config_cam .= strip_tags($c_line, '\n');
  2142.            
  2143.             $filename = "includes/cfg_files/cccam/CCcam.cfg_footer";
  2144.             $handle   = fopen($filename, "r");
  2145.             $config_cam .= fread($handle, filesize($filename));
  2146.             fclose($handle);
  2147.            
  2148.            
  2149.             $tempdir = $tempdir . '/etc';
  2150.             if (mkdir($tempdir, 0777)) {
  2151.                 $filename = $tempdir . "/CCcam.cfg";
  2152.                 $handle   = fopen($filename, "w");
  2153.                 fwrite($handle, $config_cam);
  2154.                 fclose($handle);
  2155.                
  2156.             }
  2157.            
  2158.             $files_to_zip = array(
  2159.                 $filename
  2160.             );
  2161.             //if true, good; if false, zip creation failed
  2162.             if ($others->create_zip($files_to_zip, $tempdir1 . '/CCcam_settings.zip')) {
  2163.                 unlink($filename);
  2164.                 unlink($tempdir);
  2165.                 rmdir($tempdir);
  2166.                
  2167.             }
  2168.            
  2169.             shell_exec('chown -R root:root tmp/');
  2170.             shell_exec('chmod -R 777 tmp/');
  2171.            
  2172.             $mail->AddAttachment($tempdir1 . "/mgcamd_settings.zip"); // attachment
  2173.             $mail->AddAttachment($tempdir1 . "/CCcam_settings.zip"); // attachment
  2174.             //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
  2175.            
  2176.            
  2177.             if ($mail->Send()) {
  2178.                 $response .= "Message successfully sent to " . "<strong>" . $real_name . "</strong>";
  2179.                 unlink($tempdir1 . "/mgcamd_settings.zip");
  2180.                 unlink($tempdir1 . "/CCcam_settings.zip");
  2181.                 unlink($tempdir1);
  2182.                 rmdir($tempdir1);
  2183.                
  2184.             } else {
  2185.                 $response .= "Message delivery failed " . "<strong>" . $real_name . "</strong> ...";
  2186.                 unlink($tempdir1 . "/mgcamd_settings.zip");
  2187.                 unlink($tempdir1 . "/CCcam_settings.zip");
  2188.                 unlink($tempdir1);
  2189.                 rmdir($tempdir1);
  2190.                
  2191.             }
  2192.            
  2193.            
  2194.         } else {
  2195.             $response .= "Wrong Email for  client id#" . $id . "... Message delivery failed ...";
  2196.         }
  2197.         return $response;
  2198.        
  2199.         // Clear all addresses and attachments for next loop
  2200.         $mail->ClearAddresses();
  2201.         $mail->ClearAttachments();
  2202.         unlink($tempdir1 . "/mgcamd_settings.zip");
  2203.         unlink($tempdir1 . "/CCcam_settings.zip");
  2204.         unlink($tempdir1);
  2205.         rmdir($tempdir1);
  2206.        
  2207.     }
  2208.    
  2209.    
  2210.     function getdate($date)
  2211.     {
  2212.         switch ($date) {
  2213.             case 'today':
  2214.                 // $result = date("d/m/Y");
  2215.                 $result = date("Y-m-d");
  2216.                 break;
  2217.             case 'yesterday':
  2218.                 $result = $this->dateafter(-1);
  2219.                 break;
  2220.             case '2dayago':
  2221.                 $result = $this->dateafter(-2);
  2222.                 break;
  2223.             case 'thisweek':
  2224.                 $result = $this->dateafter(-7);
  2225.                 break;
  2226.             case 'thismonth':
  2227.                 $result = $this->dateafter(-30);
  2228.                 break;
  2229.             case 'tomorrow':
  2230.                 $result = $this->dateafter(1);
  2231.                 break;
  2232.         }
  2233.        
  2234.         return $result;
  2235.        
  2236.        
  2237.     }
  2238.    
  2239.    
  2240.     function dateafter($a)
  2241.     {
  2242.         $hours  = $a * 24;
  2243.         $added  = ($hours * 3600) + time();
  2244.         $days   = date("l", $added);
  2245.         $month  = date("m", $added);
  2246.         $day    = date("d", $added);
  2247.         $year   = date("Y", $added);
  2248.         //$result = "$day/$month/$year";
  2249.         $result = "$year-$month-$day";
  2250.         return ($result);
  2251.     }
  2252.    
  2253.    
  2254.    
  2255.     function get_user_settings_by_emu($id, $emu)
  2256.     {
  2257.         $others = new Others;
  2258.        
  2259.         //Get User Data
  2260.         $user_data = $this->get_user_data(intval($id));
  2261.         $username  = $user_data->login;
  2262.         $password  = $user_data->password;
  2263.         $profiles  = intval($user_data->profiles);
  2264.         $expire    = $user_data->expire;
  2265.         $server    = intval($user_data->serverinfo);
  2266.         $real_name = $user_data->name;
  2267.        
  2268.         //Get Server Data
  2269.         $server_data = $this->get_server_data_bylist($server);
  2270.         $hostname    = $server_data['hostname'];
  2271.         $server_list = $server_data[1];
  2272.        
  2273.        
  2274.         // if profile=0 (mean user have access to all profiles)
  2275.         if ($profiles == 0) {
  2276.             $profiles = $this->get_sumbit_all_profiles($server);
  2277.            
  2278.         }
  2279.        
  2280.        
  2281.         //Get Profile Data
  2282.         $profile_data = $this->array_profiles_by_user_bitmask_by_server($profiles, $server_list);
  2283.        
  2284.        
  2285.        
  2286.        
  2287.         //Get number of profiles
  2288.         $num_of_profile = count($profile_data, 0);
  2289.        
  2290.         //start build email body
  2291.        
  2292.         $n_line        = "";
  2293.         $c_line        = "";
  2294.         $smart_line    = "";
  2295.         $cleverhd_line = "";
  2296.         $Ggurd_line    = "";
  2297.         if ($num_of_profile >= 1) {
  2298.             $n_line .= "#### Mgcamd Lines\n\n<br/><br/>";
  2299.             $c_line .= "#### CCcam Line\n\n<br/><br/>";
  2300.             $smart_line .= "#### SmartLink Line\n\n<br/><br/>##my_newcam_his_cfg_your_sync###<br/><br/>
  2301.                            ###########Lan settings###########<br/>
  2302.                            ##    Local ip       gate way       net mask          DNS     MAC address         DHCP<br/>
  2303.                            La: { 0.0.0.0 }  {  192.168.1.254 }  { 0.0.0.0 }  {  0.0.0.0 }  { 00 ab 03 68 01 02 }   { 00 }<br/><br/><br/>  
  2304.                            #############newcamd settings########################<br/>
  2305.                            #Sr:host infor  max 16 servers<br/>
  2306.                            ### enable  port      server domain      Usename      password                  deskey<br/>";
  2307.             $cleverhd_line .= "#### CleverHD Line\n\n<br/><br/>";
  2308.             $Ggurd_line .= "#### Ggurd Line\n\n<br/><br/>[CS Information]<br/><br/>
  2309.                           #-------------------------------------------------------<br/>
  2310.                            sssp=<br/>
  2311.                            {<br/>
  2312.                            name: <br/>
  2313.                            baudrate: 115200<br/>
  2314.                            filtermode: auto<br/>
  2315.                            filterindex: 255<br/>
  2316.                            }<br/><br/>
  2317.                            #-------------------------------------------------------<br/>";
  2318.            
  2319.             for ($i = 0; $i < $num_of_profile; $i++) {
  2320.                 $n_line .= '<span style="color: #8F8F8F">#' . $profile_data[$i]['details'] . '</span><br/>' . "\n";
  2321.                 $c_line .= '<span style="color: #8F8F8F">#' . $profile_data[$i]['details'] . '</span><br/>' . "\n";
  2322.                 $smart_line .= '<span style="color: #8F8F8F">#' . $profile_data[$i]['details'] . '</span><br/>' . "\n";
  2323.                
  2324.                 $n_line .= 'CWS = ' . $hostname . ' ' . $profile_data[$i]['port'] . ' ' . $username . ' ' . $password . ' ' . $profile_data[$i]['desc'] . "\n<br/>";
  2325.                 $c_line .= 'N: ' . $hostname . ' ' . $profile_data[$i]['port'] . ' ' . $username . ' ' . $password . ' ' . $profile_data[$i]['desc'] . "\n<br/>";
  2326.                 $smart_line .= 'Sr: { 1 }' . ' { ' . $profile_data[$i]['port'] . ' }' . ' { ' . $hostname . ' } ' . ' { ' . $username . ' } ' . ' { ' . $password . ' } ' . ' { ' . $profile_data[$i]['desc'] . ' } ' . "\n<br/>";
  2327.                 //                {n,30000,newhd.no-ip.ca,user,passwd,01 02 03 04 05 06 07 08 09 10 11 12 13 14}
  2328.                 $cleverhd_line .= "{n," . $profile_data[$i]['port'] . ',' . $hostname . ',' . $username . ',' . $password . ',' . $profile_data[$i]['desc'] . '}' . "\n<br/>";
  2329.                
  2330.                 $Ggurd_line .= "{ " . "\n<br/>" . "slot" . $i . " =" . "\n<br/>" . "name: " . $profile_data[$i]['details'] . "\n<br/>" . "ip: " . $hostname . "\n<br/>" . "user: " . $username . "\n<br/>" . "password: " . $password . "\n<br/>" . "protocol: newcamd525 " . "\n<br/>" . "deskey: " . $profile_data[$i]['desc'] . "\n<br/>" . "filtermode: auto " . "\n<br/>" . "filterindex: 0 " . "\n<br/>" . "port: " . $profile_data[$i]['port'] . "\n<br/>" . "timeout: 0 " . "\n<br/>" . "} " . "\n<br/><br/>";
  2331.                
  2332.             }
  2333.            
  2334.         }
  2335.        
  2336.        
  2337.         $extended_port_r = "#Note: Here is Extended Newcamd port configuration line:\n<br/>";
  2338.         $extended_port_r .= '# CWS = ' . $hostname . ' ' . CSPEXTPORT . ' ' . $username . ' ' . $password . ' ' . CSPEXTDESKEY . "\n<br/>";
  2339.         $extended_port = "#Note: Here is Extended Newcamd port configuration line:\n<br/>";
  2340.         $extended_port .= 'CWS = ' . $hostname . ' ' . CSPEXTPORT . ' ' . $username . ' ' . $password . ' ' . CSPEXTDESKEY . "\n<br/>";
  2341.        
  2342.         $smart_line .= "<br/>#Upgard s/w server<br/>Up: { 10110  } { 127.0.0.1 }<br/>";
  2343.        
  2344.         $expiredate = "\n<br/>##Note: I'd like to bring to your attention this account will be expire in <strong>" . $expire . "</strong>, so plz contact us before that date to avoid any interuption on the service.\n\n<br/><br/>";
  2345.        
  2346.         switch ($emu) {
  2347.             case "mg":
  2348.                 return $extended_port . $expiredate;
  2349.                 break;
  2350.             case "cc":
  2351.                 return $c_line . $expiredate;
  2352.                 break;
  2353.             case "sm":
  2354.                 return $smart_line . $expiredate;
  2355.                 break;
  2356.             case "cl":
  2357.                 return $extended_port . $expiredate;
  2358.                 break;
  2359.             case "gg":
  2360.                 return $Ggurd_line . $expiredate;
  2361.                 break;
  2362.         }
  2363.        
  2364.     }
  2365.    
  2366. }
  2367.  
  2368. $mysql = New Mysql();
  2369. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement