PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/include/class.roles.php

https://bitbucket.org/icarito/pmc
PHP | 316 lines | 202 code | 26 blank | 88 comment | 18 complexity | 5154f4d7181f3774da94a8399cee8471 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
  1. <?php
  2. /**
  3. * This class provides user roles
  4. *
  5. * @author Philipp Kiszka <info@o-dyn.de>
  6. * @name roles
  7. * @package Collabtive
  8. * @version 0.5
  9. * @link http://www.o-dyn.de
  10. * @license http://opensource.org/licenses/gpl-license.php GNU General Public License v3 or later
  11. */
  12. class roles
  13. {
  14. function __construct()
  15. {
  16. }
  17. /**
  18. * Add a role
  19. * This method takes an array with permissions, serializes it to string, and saves it to the Database
  20. *
  21. * @param string $name Name of the role (for display)
  22. * @param array $tasks Role permissions for tasks
  23. * @param array $milestones Role permissions for milestones
  24. * @param array $messages Role permissions for messages
  25. * @param array $files Role permissions for files
  26. * @param array $timetracker Role permissions for timetracker
  27. * @param array $admin
  28. * @param array $chat
  29. * @param array $files Role permissions for admin area
  30. * @return bool
  31. */
  32. function add($name, array $projects, array $tasks, array $milestones, array $messages, array $files, array $timetracker, array $chat, array $admin)
  33. {
  34. $name = mysql_real_escape_string($name);
  35. $projects = serialize($projects);
  36. $tasks = serialize($tasks);
  37. $milestones = serialize($milestones);
  38. $messages = serialize($messages);
  39. $files = serialize($files);
  40. $timetracker = serialize($timetracker);
  41. $chat = serialize($chat);
  42. $admin = serialize($admin);
  43. $ins = mysql_query("INSERT INTO roles (name,projects,tasks,milestones,messages,files,timetracker,chat,admin) VALUES ('$name','$projects','$tasks','$milestones','$messages','$files','$timetracker','$chat','$admin')");
  44. if ($ins)
  45. {
  46. $insid = mysql_insert_id();
  47. return $insid;
  48. }
  49. else
  50. {
  51. return false;
  52. }
  53. }
  54. /**
  55. * Edit a role
  56. * This method takes an array with permissions, serializes it to string, and saves it to the Database
  57. * Additionally it takes the ID of the role to edit
  58. *
  59. * @param int $id ID of the role to edit
  60. * @param string $name Name of the role (for display)
  61. * @param array $tasks Role permissions for tasks
  62. * @param array $milestones Role permissions for milestones
  63. * @param array $messages Role permissions for messages
  64. * @param array $files Role permissions for files
  65. * @param array $timetracker Role permissions for timetracker
  66. * @param array $admin
  67. * @param array $files Role permissions for admin area
  68. * @return bool
  69. */
  70. function edit($id, $name, array $projects, array $tasks, array $milestones, array $messages, array $files, array $timetracker, array $chat, array $admin)
  71. {
  72. $id = (int) $id;
  73. $name = mysql_real_escape_string($name);
  74. $projects = serialize($projects);
  75. $tasks = serialize($tasks);
  76. $milestones = serialize($milestones);
  77. $messages = serialize($messages);
  78. $files = serialize($files);
  79. $timetracker = serialize($timetracker);
  80. $chat = serialize($chat);
  81. $admin = serialize($admin);
  82. $upd = mysql_query("UPDATE roles SET name='$name',projects='$projects',tasks='$tasks',milestones='$milestones',messages='$messages',files='$files',timetracker='$timetracker',chat='$chat',admin='$admin' WHERE ID = $id");
  83. if ($upd)
  84. {
  85. return true;
  86. }
  87. else
  88. {
  89. return false;
  90. }
  91. }
  92. /**
  93. * Delete a role
  94. * This method takes the ID of the role to be deleted.
  95. * It returns true if the deletion was sucessful, otherwise false
  96. *
  97. * @param int $id ID of the role to be deleted
  98. * @return bool
  99. */
  100. function del($id)
  101. {
  102. $id = (int) $id;
  103. $del = mysql_query("DELETE FROM roles WHERE ID = $id");
  104. $del2 = mysql_query("DELETE FROM roles_assigned WHERE role = $id");
  105. if ($del)
  106. {
  107. return true;
  108. }
  109. else
  110. {
  111. return false;
  112. }
  113. }
  114. /**
  115. * Assign a role to a user
  116. * Assigns role $role to user $user
  117. *
  118. * @param int $role ID of the role
  119. * @param int $user ID of the user
  120. * @return bool
  121. */
  122. function assign($role, $user)
  123. {
  124. $role = (int) $role;
  125. $user = (int) $user;
  126. // get the number of roles already assigned to $user
  127. $chk = mysql_query("SELECT COUNT(*) FROM roles_assigned WHERE user = $user");
  128. $chk = mysql_fetch_row($chk);
  129. $chk = $chk[0];
  130. // If there already is a role assigned to the user, just update this entry
  131. // Otherwise create a new entry
  132. if ($chk > 0)
  133. {
  134. $ins = mysql_query("UPDATE roles_assigned SET role = $role WHERE user = $user");
  135. }
  136. else
  137. {
  138. $ins = mysql_query("INSERT INTO roles_assigned (user,role) VALUES ($user,$role)");
  139. }
  140. if ($ins)
  141. {
  142. return true;
  143. }
  144. else
  145. {
  146. return false;
  147. }
  148. }
  149. /**
  150. * Deassign a role from a user
  151. * Remove role $role from user $user
  152. *
  153. * @param int $role ID of the role
  154. * @param int $user ID of the user
  155. * @return bool
  156. */
  157. function deassign($role, $user)
  158. {
  159. $role = (int) $role;
  160. $user = (int) $user;
  161. $del = mysql_query("DELETE FROM roles_assigned WHERE user = $user AND role = $role LIMIT 1");
  162. if ($del)
  163. {
  164. return true;
  165. }
  166. else
  167. {
  168. return false;
  169. }
  170. }
  171. /**
  172. * Get all available roles
  173. *
  174. * @param bool $limit Limit the query or show all ?
  175. * @return array $roles Array with roles
  176. */
  177. function getAllRoles($limit = false)
  178. {
  179. $roles = array();
  180. if (!$limit)
  181. {
  182. $sel = mysql_query("SELECT ID FROM roles ORDER BY ID DESC");
  183. }
  184. else
  185. {
  186. $sel = mysql_query("SELECT ID FROM roles ORDER BY ID DESC LIMIT $limit");
  187. }
  188. while ($role = mysql_fetch_array($sel, MYSQL_ASSOC))
  189. {
  190. $therole = $this->getRole($role["ID"]);
  191. array_push($roles, $therole);
  192. }
  193. if (!empty($roles))
  194. {
  195. return $roles;
  196. }
  197. else
  198. {
  199. return array();
  200. }
  201. }
  202. /**
  203. * Get the role of a user
  204. * This is mainly called by class user
  205. *
  206. * @param int $user ID of the user
  207. * @return bool
  208. */
  209. function getUserRole($user)
  210. {
  211. $user = (int) $user;
  212. $sel = mysql_query("SELECT role FROM roles_assigned WHERE user = $user");
  213. $usr = mysql_fetch_row($sel);
  214. $usr = $usr[0];
  215. if ($usr)
  216. {
  217. $role = $this->getRole($usr);
  218. }
  219. else
  220. {
  221. return false;
  222. }
  223. if (!empty($role))
  224. {
  225. return $role;
  226. }
  227. else
  228. {
  229. return array();
  230. }
  231. }
  232. /**
  233. * make sure all the fields are either 1 or 0 , fill empty ones with 0
  234. * This is mainly called when adding a role
  235. *
  236. * @param array $inarr Array to sanitize
  237. * @return array $inarr Sanitized array
  238. */
  239. function sanitizeArray($inarr)
  240. {
  241. if (!is_array($inarr))
  242. {
  243. $inarr = array();
  244. }
  245. if (empty($inarr["add"]))
  246. {
  247. $inarr["add"] = 0;
  248. }
  249. if (empty($inarr["edit"]))
  250. {
  251. $inarr["edit"] = 0;
  252. }
  253. if (empty($inarr["del"]))
  254. {
  255. $inarr["del"] = 0;
  256. }
  257. if (empty($inarr["close"]))
  258. {
  259. $inarr["close"] = 0;
  260. }
  261. if (empty($inarr["read"]))
  262. {
  263. $inarr["read"] = 0;
  264. }
  265. return (array) $inarr;
  266. }
  267. private function getRole($role)
  268. {
  269. $role = (int) $role;
  270. $sel2 = mysql_query("SELECT * FROM roles WHERE ID = $role");
  271. $therole = mysql_fetch_array($sel2, MYSQL_ASSOC);
  272. $therole["projects"] = unserialize($therole["projects"]);
  273. $therole["tasks"] = unserialize($therole["tasks"]);
  274. $therole["milestones"] = unserialize($therole["milestones"]);
  275. $therole["messages"] = unserialize($therole["messages"]);
  276. $therole["files"] = unserialize($therole["files"]);
  277. $therole["timetracker"] = unserialize($therole["timetracker"]);
  278. $therole["chat"] = unserialize($therole["chat"]);
  279. $therole["admin"] = unserialize($therole["admin"]);
  280. if (!empty($therole))
  281. {
  282. return $therole;
  283. }
  284. else
  285. {
  286. return array();
  287. }
  288. }
  289. }
  290. ?>