home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / modules / admin / vw_usr_perms.php < prev    next >
Encoding:
PHP Script  |  2004-01-12  |  8.5 KB  |  283 lines

  1. <?php /* ADMIN $Id: vw_usr_perms.php,v 1.19 2004/01/12 01:39:54 gregorerhardt Exp $ */
  2. GLOBAL $AppUI, $user_id, $canEdit, $tab;
  3.  
  4. $pgos = array(
  5.     'files' => 'file_name',
  6.     'users' => 'user_username',
  7.     'projects' => 'project_name',
  8.     'tasks' => 'task_name',
  9.     'companies' => 'company_name',
  10.     'forums' => 'forum_name'
  11. );
  12.  
  13. $pvs = array(
  14. '-1' => 'read-write',
  15. '0' => 'deny',
  16. '1' => 'read only'
  17. );
  18.  
  19.  
  20. //Pull User perms
  21. $sql = "
  22. SELECT u.user_id, u.user_username,
  23.     p.permission_item, p.permission_id, p.permission_grant_on, p.permission_value,
  24.     c.company_id, c.company_name,
  25.     pj.project_id, pj.project_name,
  26.     t.task_id, t.task_name,
  27.     f.file_id, f.file_name,
  28.     fm.forum_id, fm.forum_name,
  29.     u2.user_id, u2.user_username
  30. FROM users u, permissions p
  31. LEFT JOIN companies c ON c.company_id = p.permission_item and p.permission_grant_on = 'companies'
  32. LEFT JOIN projects pj ON pj.project_id = p.permission_item and p.permission_grant_on = 'projects'
  33. LEFT JOIN tasks t ON t.task_id = p.permission_item and p.permission_grant_on = 'tasks'
  34. LEFT JOIN files f ON f.file_id = p.permission_item and p.permission_grant_on = 'files'
  35. LEFT JOIN users u2 ON u2.user_id = p.permission_item and p.permission_grant_on = 'users'
  36. LEFT JOIN forums fm ON fm.forum_id = p.permission_item and p.permission_grant_on = 'forums'
  37. WHERE u.user_id = p.permission_user
  38.     AND u.user_id = $user_id
  39. ";
  40.  
  41. $res = db_exec( $sql );
  42.  
  43. //pull the projects into an temp array
  44. $tarr = array();
  45. while ($row = db_fetch_assoc( $res )) {
  46.     $item = @$row[@$pgos[$row['permission_grant_on']]];
  47.     if (!$item) {
  48.         $item = $row['permission_item'];
  49.     }
  50.     if ($item == -1) {
  51.         $item = 'all';
  52.     }
  53.     $tarr[] = array_merge( $row, array( 'grant_item'=>$item ) );
  54. }
  55.  
  56. // pull list of users for permission duplication from template user
  57. // prevent from copying from users with no permissions
  58. $sql = "SELECT DISTINCT(user_id), user_username FROM users, permissions
  59.     WHERE user_id != $user_id AND permission_user = user_id ORDER BY user_username";
  60. $res = db_loadList( $sql );
  61.  
  62. //create temp array of users
  63. $tUsers = array();
  64. foreach ( $res as $row ) {
  65.     $tUsers = array_merge( $tUsers, array( $row['user_username']=>$row['user_username'] ) );
  66. }
  67.  
  68. // read the installed modules
  69. $modules = arrayMerge( array( 'all'=>'all' ), $AppUI->getActiveModules( 'modules' ));
  70. ?>
  71.  
  72. <script language="javascript">
  73. function editPerm( id, gon, it, vl, nm ) {
  74. /*
  75.     id = Permission_id
  76.     gon =permission_grant_on
  77.     it =permission_item
  78.     vl =permission_value
  79.     nm = text representation of permission_value
  80. */
  81. //alert( 'id='+id+'\ngon='+gon+'\nit='+it+'\nvalue='+vl+'\nnm='+nm);
  82.     var f = document.frmPerms;
  83.  
  84.     f.sqlaction2.value = "<?php echo $AppUI->_('edit'); ?>";
  85.     
  86.     f.permission_id.value = id;
  87.     f.permission_item.value = it;
  88.     f.permission_item_name.value = nm;
  89.     for(var i=0, n=f.permission_grant_on.options.length; i < n; i++) {
  90.         if (f.permission_grant_on.options[i].value == gon) {
  91.             f.permission_grant_on.selectedIndex = i;
  92.             break;
  93.         }
  94.     }
  95.     f.permission_value.selectedIndex = vl+1;
  96.     f.permission_item_name.value = nm;
  97. }
  98.  
  99. function clearIt(){
  100.     var f = document.frmPerms;
  101.     f.sqlaction2.value = "<?php echo $AppUI->_('add'); ?>";
  102.     f.permission_id.value = 0;
  103.     f.permission_grant_on.selectedIndex = 0;
  104. }
  105.  
  106. function delIt(id) {
  107.     if (confirm( 'Are you sure you want to delete this permission?' )) {
  108.         var f = document.frmPerms;
  109.         f.del.value = 1;
  110.         f.permission_id.value = id;
  111.         f.submit();
  112.     }
  113. }
  114.  
  115. var tables = new Array;
  116. tables['companies'] = 'companies';
  117. tables['departments'] = 'departments';
  118. tables['projects'] = 'projects';
  119. tables['tasks'] = 'tasks';
  120. tables['forums'] = 'forums';
  121.  
  122. function popPermItem() {
  123.     var f = document.frmPerms;
  124.     var pgo = f.permission_grant_on.options[f.permission_grant_on.selectedIndex].value;
  125.     if (!(pgo in tables)) {
  126.         alert( 'No list associated with this Module.' );
  127.         return;
  128.     }
  129.     window.open('./index.php?m=public&a=selector&dialog=1&callback=setPermItem&table=' + tables[pgo], 'selector', 'left=50,top=50,height=250,width=400,resizable')
  130. }
  131.  
  132. // Callback function for the generic selector
  133. function setPermItem( key, val ) {
  134.     var f = document.frmPerms;
  135.     if (val != '') {
  136.         f.permission_item.value = key;
  137.         f.permission_item_name.value = val;
  138.     } else {
  139.         f.permission_item.value = '-1';
  140.         f.permission_item_name.value = 'all';
  141.     }
  142. }
  143. </script>
  144.  
  145. <table width="100%" border="0" cellpadding="2" cellspacing="0">
  146. <tr><td width="50%" valign="top">
  147.  
  148. <table width="100%" border="0" cellpadding="2" cellspacing="1" class="tbl">
  149. <tr>
  150.     <th> </th>
  151.     <th nowrap="nowrap"><?php echo $AppUI->_('Module');?></th>
  152.     <th width="100%"><?php echo $AppUI->_('Item');?></th>
  153.     <th nowrap><?php echo $AppUI->_('Type');?></th>
  154.     <th> </th>
  155. </tr>
  156.  
  157. <?php
  158. foreach ($tarr as $row){
  159.     $buf = '';
  160.  
  161.     $buf .= '<td nowrap>';
  162.     if ($canEdit) {
  163.         $buf .= "<a href=# onClick=\"editPerm({$row['permission_id']},'{$row['permission_grant_on']}',{$row['permission_item']},{$row['permission_value']},'{$row['grant_item']}');\" title=\"".$AppUI->_('edit')."\">"
  164.             . dPshowImage( './images/icons/stock_edit-16.png', 16, 16, '' )
  165.             . "</a>";
  166.     }
  167.     $buf .= '</td>';
  168.  
  169.     $style = '';
  170.     if($row['permission_grant_on'] == "all" && $row['permission_item'] == -1 && $row['permission_value'] == -1) {
  171.         $style =  'style="background-color:#ffc235"';
  172.     } else if($row['permission_item'] == -1 && $row['permission_value'] == -1) {
  173.         $style = 'style="background-color:#ffff99"';
  174.     }
  175.  
  176.     $buf .= "<td $style>" . $AppUI->_(ucfirst($row['permission_grant_on'])) . "</td>";
  177.  
  178.     $buf .= "<td>" . $row['grant_item'] . "</td><td nowrap>" . $AppUI->_($pvs[$row['permission_value']]) . "</td>";
  179.  
  180.     $buf .= '<td nowrap>';
  181.     if ($canEdit) {
  182.         $buf .= "<a href=\"javascript:delIt({$row['permission_id']});\" title=\"".$AppUI->_('delete')."\">"
  183.             . dPshowImage( './images/icons/stock_delete-16.png', 16, 16, '' )
  184.             . "</a>";
  185.     }
  186.     $buf .= '</td>';
  187.     
  188.     echo "<tr>$buf</tr>";
  189. }
  190. ?>
  191. </table>
  192.  
  193. <table>
  194. <tr>
  195.     <td><?php echo $AppUI->_('Key');?>:</td>
  196.     <td>   </td>
  197.     <td bgcolor="#ffc235">   </td>
  198.     <td>=<?php echo $AppUI->_('Super User');?></td>
  199.     <td>   </td>
  200.     <td bgcolor="#ffff99">   </td>
  201.     <td>=<?php echo $AppUI->_('full access to module');?></td>
  202. </tr>
  203. </table>
  204.  
  205.  
  206. </td><td width="50%" valign="top">
  207.  
  208. <?php if ($canEdit) {?>
  209.  
  210. <table cellspacing="1" cellpadding="2" border="0" class="std" width="100%">
  211. <form name="frmPerms" method="post" action="?m=admin">
  212.     <input type="hidden" name="del" value="0" />
  213.     <input type="hidden" name="dosql" value="do_perms_aed" />
  214.     <input type="hidden" name="user_id" value="<?php echo $user_id;?>" />
  215.     <input type="hidden" name="permission_user" value="<?php echo $user_id;?>" />
  216.     <input type="hidden" name="permission_id" value="0" />
  217.     <input type="hidden" name="permission_item" value="-1" />
  218. <tr>
  219.     <th colspan="2"><?php echo $AppUI->_('Add or Edit Permissions');?></th>
  220. </tr>
  221. <tr>
  222.     <td nowrap align="right"><?php echo $AppUI->_('Module');?>:</td>
  223.     <td width="100%"><?php echo arraySelect($modules, 'permission_grant_on', 'size="1" class="text"', 'all', true);?></td>
  224. </tr>
  225. <tr>
  226.     <td nowrap align="right"><?php echo $AppUI->_('Item');?>:</td>
  227.     <td>
  228.         <input type="text" name="permission_item_name" class="text" size="30" value="all" disabled>
  229.         <input type="button" name="" class="text" value="..." onclick="popPermItem();">
  230.     </td>
  231. </tr>
  232. <tr>
  233.     <td nowrap align="right"><?php echo $AppUI->_('Level');?>:</td>
  234.     <td><?php echo arraySelect($pvs, 'permission_value', 'size="1" class="text"', 0);?></td>
  235. </tr>
  236. <tr>
  237.     <td>
  238.         <input type="reset" value="<?php echo $AppUI->_('clear');?>" class="button" name="sqlaction" onClick="clearIt();">
  239.     </td>
  240.     <td align="right">
  241.         <input type="submit" value="<?php echo $AppUI->_('add');?>" class="button" name="sqlaction2">
  242.     </td>
  243. </tr>
  244. </form>
  245. </table>
  246. <br />
  247. <table cellspacing="1" cellpadding="2" border="0" class="std" width="100%">
  248. <form name="cpPerms" method="post" action="?m=admin">
  249.     <input type="hidden" name="dosql" value="do_perms_cp" />
  250.     <input type="hidden" name="user_id" value="<?php echo $user_id;?>" />
  251.     <input type="hidden" name="permission_user" value="<?php echo $user_id;?>" />
  252. <tr>
  253.     <th colspan="2"><?php echo $AppUI->_('Copy Permissions from Template');?></th>
  254. </tr>
  255. <tr>
  256.     <td nowrap align="left"><?php echo $AppUI->_('Copy Permissions from User');?>:
  257.     <?php echo arraySelect($tUsers, 'temp_user_name', 'size="1" class="text"', 6);?></td>
  258. </tr>
  259. <tr>
  260.     <td colspan="2">
  261.         <input type="checkbox" name="delPerms" class="text" value="true" checked="checked">
  262.         <?php echo $AppUI->_('adminDeleteTemplate');?>
  263.     </td>
  264. </tr>
  265. <tr>
  266.     <td align="center" colspan="2">
  267.         <input type="submit" value="<?php echo $AppUI->_('Copy from Template');?>" class="button" name="cptempperms">
  268.     </td>
  269. </tr>
  270. </form>
  271. </table>
  272. <?php } ?>
  273.  
  274. </td>
  275.  
  276. </tr>
  277.  
  278.  
  279.  
  280. </tr>
  281.  
  282. </table>
  283.