/var/www/onesolution.com.hk/onesupport/user/modify.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
global $dbh;

//-----------------------------------------------------------------------------
// Check permission
//-----------------------------------------------------------------------------
if (!Util::isAdmin()) {
    
redirectAndExit('index.php?message=No permission!');
}

//-----------------------------------------------------------------------------
// Find job by id
//-----------------------------------------------------------------------------
$sql "SELECT * FROM sys_login WHERE id = ?";
$parameters = array($id);
if (!(
$sth $dbh->prepare($sql))) {
    throw new 
Exception("sql prepare statement failure: $sql");
}
$sth->setFetchMode(PDO::FETCH_ASSOC);
if (!
$sth->execute($parameters)) {
    throw new 
Exception("sql execute statement failure: $sql");
}
$staff $sth->fetch(PDO::FETCH_ASSOC);
if (empty(
$staff)) {
    throw new 
Exception('Staff not found!');
}

//-----------------------------------------------------------------------------
// Save if POST method
//-----------------------------------------------------------------------------
if (isPost()) {
    
$sql "SELECT column_name FROM information_schema.columns WHERE table_schema = (SELECT DATABASE()) AND table_name = ?";
    
$parameters = array('sys_login');
    if (!(
$sth $dbh->prepare($sql))) {
        throw new 
Exception("sql prepare statement failure: $sql");
    }
    
$sth->setFetchMode(PDO::FETCH_ASSOC);
    if (!
$sth->execute($parameters)) {
        throw new 
Exception("sql execute statement failure: $sql");
    }
    
$columns $sth->fetchAll();

    foreach (
$columns as $column) {
        
$column $column['column_name'];
        if (isset(
$_POST[$column])) {
            
$staff[$column] = $_POST[$column];
        }
    }

    
// Append record time
    
$now date("Y-m-d H:i:s");
    
$staff array_merge($staff, array(
        
'lastupdate' => $now,
        
'lastupby' => $_SESSION['webadmin']['id'],
    ));
    
    
// Update staff
    
$values = array();
    
$parameters = array();
    foreach (
$staff as $column => $value) {
        if (
$column != 'id') {
            switch (
$column) {
                case 
'loginpw': {
                    if (!empty(
$value)) {
                        
$parameters[] = md5($value);
                        
$values[] = "`$column` = ?";
                    }
                    break;
                }
                default: {
                    
$parameters[] = !strlen($value) ? null $value;
                    
$values[] = "`$column` = ?";
                    break;
                }
            }
        }
    }
    
$sql "UPDATE sys_login SET " implode(', '$values) . " WHERE id = ?";
    
$parameters[] = $staff['id'];
    if (!(
$sth $dbh->prepare($sql))) {
        throw new 
Exception("sql prepare statement failure: $sql");
    }
    
$sth->setFetchMode(PDO::FETCH_ASSOC);
    if (!
$sth->execute($parameters)) {
        throw new 
Exception("sql execute statement failure: $sql");
    }
    
    
redirectAndExit('index.php?message=Saved.');
}

//-----------------------------------------------------------------------------
// Return array parameters
//-----------------------------------------------------------------------------
return array(
    
'staff' => $staff,
    
'roleOptions' => Staff::roleOptions(),
    
'message' => $_GET['message'],
);