990c4bbf91d29460170e51e6c486cfcc7913a9e5
[acontent.git] / docs / user / index.php
1 <?php\r
2 /************************************************************************/\r
3 /* AContent                                                             */\r
4 /************************************************************************/\r
5 /* Copyright (c) 2010                                                   */\r
6 /* Inclusive Design Institute                                           */\r
7 /*                                                                      */\r
8 /* This program is free software. You can redistribute it and/or        */\r
9 /* modify it under the terms of the GNU General Public License          */\r
10 /* as published by the Free Software Foundation.                        */\r
11 /************************************************************************/\r
12 \r
13 define('TR_INCLUDE_PATH', '../include/');\r
14 include(TR_INCLUDE_PATH.'vitals.inc.php');\r
15 include(TR_INCLUDE_PATH.'classes/DAO/UserGroupsDAO.class.php');\r
16 \r
17 // initialize constants\r
18 $results_per_page = 50;\r
19 $dao = new DAO();\r
20 \r
21 // handle submit\r
22 if ( (isset($_GET['edit']) || isset($_GET['password'])) && (isset($_GET['id']) && count($_GET['id']) > 1) ) {\r
23         $msg->addError('SELECT_ONE_ITEM');\r
24 } else if (isset($_GET['edit'], $_GET['id'])) {\r
25         header('Location: user_create_edit.php?id='.$_GET['id'][0]);\r
26         exit;\r
27 } else if (isset($_GET['password'], $_GET['id'])) {\r
28         header('Location: user_password.php?id='.$_GET['id'][0]);\r
29         exit;\r
30 } else if ( isset($_GET['delete'], $_GET['id'])) {\r
31         $ids = implode(',', $_GET['id']);\r
32         header('Location: user_delete.php?id='.$ids);\r
33         exit;\r
34 } else if (isset($_GET['edit']) || isset($_GET['delete']) || isset($_GET['password'])) {\r
35         $msg->addError('NO_ITEM_SELECTED');\r
36 }\r
37 \r
38 // page initialize\r
39 if ($_GET['reset_filter']) {\r
40         unset($_GET);\r
41 }\r
42 \r
43 $page_string = '';\r
44 $orders = array('asc' => 'desc', 'desc' => 'asc');\r
45 $cols   = array('login' => 1, 'public_field' => 1, 'first_name' => 1, 'last_name' => 1, 'user_group' => 1, 'email' => 1, 'status' => 1);\r
46 \r
47 if (isset($_GET['asc'])) {\r
48         $order = 'asc';\r
49         $col   = isset($cols[$_GET['asc']]) ? $_GET['asc'] : 'login';\r
50 } else if (isset($_GET['desc'])) {\r
51         $order = 'desc';\r
52         $col   = isset($cols[$_GET['desc']]) ? $_GET['desc'] : 'login';\r
53 } else {\r
54         // no order set\r
55         $order = 'asc';\r
56         $col   = 'login';\r
57 }\r
58 if (isset($_GET['status']) && ($_GET['status'] != '')) {\r
59         $_GET['status'] = intval($_GET['status']);\r
60         $status = '=' . intval($_GET['status']);\r
61         $page_string .= htmlspecialchars(SEP).'status'.$status;\r
62 } else {\r
63         $status = '<>-1';\r
64         $_GET['status'] = '';\r
65 }\r
66 \r
67 if (isset($_GET['include']) && $_GET['include'] == 'one') {\r
68         $checked_include_one = ' checked="checked"';\r
69         $page_string .= htmlspecialchars(SEP).'include=one';\r
70 } else {\r
71         $_GET['include'] = 'all';\r
72         $checked_include_all = ' checked="checked"';\r
73         $page_string .= htmlspecialchars(SEP).'include=all';\r
74 }\r
75 \r
76 if ($_GET['search']) {\r
77         $page_string .= htmlspecialchars(SEP).'search='.urlencode($stripslashes($_GET['search']));\r
78         $search = $addslashes($_GET['search']);\r
79         $search = explode(' ', $search);\r
80 \r
81         if ($_GET['include'] == 'all') {\r
82                 $predicate = 'AND ';\r
83         } else {\r
84                 $predicate = 'OR ';\r
85         }\r
86 \r
87         $sql = '';\r
88         foreach ($search as $term) {\r
89                 $term = trim($term);\r
90                 $term = str_replace(array('%','_'), array('\%', '\_'), $term);\r
91                 if ($term) {\r
92                         $term = '%'.$term.'%';\r
93                         $sql .= "((U.first_name LIKE '$term') OR (U.last_name LIKE '$term') OR (U.email LIKE '$term') OR (U.login LIKE '$term')) $predicate";\r
94                 }\r
95         }\r
96         $sql = '('.substr($sql, 0, -strlen($predicate)).')';\r
97         $search = $sql;\r
98 } else {\r
99         $search = '1';\r
100 }\r
101 \r
102 if ($_GET['user_group_id'] && $_GET['user_group_id'] <> -1) {\r
103         $user_group_sql = "U.user_group_id = ".$_GET['user_group_id'];\r
104         $page_string .= htmlspecialchars(SEP).'user_group_id='.urlencode($_GET['user_group_id']);\r
105 }\r
106 else\r
107 {\r
108         $user_group_sql = '1';\r
109 }\r
110 \r
111 $sql    = "SELECT COUNT(user_id) AS cnt FROM ".TABLE_PREFIX."users U WHERE status $status AND $search AND $user_group_sql";\r
112 \r
113 $rows = $dao->execute($sql);\r
114 $num_results = $rows[0]['cnt'];\r
115 \r
116 $num_pages = max(ceil($num_results / $results_per_page), 1);\r
117 $page = intval($_GET['p']);\r
118 if (!$page) {\r
119         $page = 1;\r
120 }       \r
121 $count  = (($page-1) * $results_per_page) + 1;\r
122 $offset = ($page-1)*$results_per_page;\r
123 \r
124 if ( isset($_GET['apply_all']) && $_GET['change_status'] >= -1) {\r
125         $offset = 0;\r
126         $results_per_page = 999999;\r
127 }\r
128 \r
129 $sql = "SELECT U.user_id, U.login, U.first_name, U.last_name, UG.title user_group, U.email, U.status, U.last_login AS last_login \r
130           FROM ".TABLE_PREFIX."users U, ".TABLE_PREFIX."user_groups UG\r
131           WHERE U.user_group_id = UG.user_group_id\r
132           AND U.status $status AND $search AND $user_group_sql ORDER BY $col $order LIMIT $offset, $results_per_page";\r
133 \r
134 $user_rows = $dao->execute($sql);\r
135 \r
136 if ( isset($_GET['apply_all']) && $_GET['change_status'] >= -1) {\r
137         $ids = '';\r
138         while ($row = mysql_fetch_assoc($result)) {\r
139                 $ids .= $row['user_id'].','; \r
140         }\r
141         $ids = substr($ids,0,-1);\r
142         $status = intval($_GET['change_status']);\r
143 \r
144         if ($status==-1) {\r
145                 header('Location: user_delete.php?id='.$ids);\r
146                 exit;\r
147         } else {\r
148                 header('Location: user_status.php?ids='.$ids.'&status='.$status);\r
149                 exit;\r
150         }\r
151 }\r
152 \r
153 $userGroupsDAO = new UserGroupsDAO();\r
154 \r
155 $savant->assign('user_rows', $user_rows);\r
156 $savant->assign('all_user_groups', $userGroupsDAO->getAll());\r
157 $savant->assign('results_per_page', $results_per_page);\r
158 $savant->assign('num_results', $num_results);\r
159 $savant->assign('checked_include_all', $checked_include_all);\r
160 $savant->assign('col_counts', $col_counts);\r
161 $savant->assign('page',$page);\r
162 $savant->assign('page_string', $page_string);\r
163 $savant->assign('orders', $orders);\r
164 $savant->assign('order', $order);\r
165 $savant->assign('col', $col);\r
166 \r
167 $savant->display('user/index.tmpl.php');\r
168 \r
169 ?>\r