home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / modules / public / selector.php < prev   
Encoding:
PHP Script  |  2003-12-05  |  4.1 KB  |  157 lines

  1. <?php /* PUBLIC $Id: selector.php,v 1.9 2003/12/05 02:37:28 jcgonz Exp $ */
  2.  
  3. function selPermWhere( $table, $idfld ) {
  4.     global $AppUI;
  5.  
  6.     // get any companies denied from viewing
  7.     $sql = "SELECT $idfld"
  8.         ."\nFROM $table, permissions"
  9.         ."\nWHERE permission_user = $AppUI->user_id"
  10.         ."\n    AND permission_grant_on = '$table'"
  11.         ."\n    AND permission_item = $idfld"
  12.         ."\n    AND permission_value = 0";
  13.  
  14.     $deny = db_loadColumn( $sql );
  15.     echo db_error();
  16.  
  17.     return "permission_user = $AppUI->user_id"
  18.         ."\nAND permission_value <> 0"
  19.         ."\nAND ("
  20.         ."\n    (permission_grant_on = 'all')"
  21.         ."\n    OR (permission_grant_on = '$table' and permission_item = -1)"
  22.         ."\n    OR (permission_grant_on = '$table' and permission_item = $idfld)"
  23.         ."\n    )"
  24.         . (count($deny) > 0 ? "\nAND $idfld NOT IN (" . implode( ',', $deny ) . ')' : '');
  25. }
  26.  
  27. $debug = false;
  28. $callback = dPgetParam( $_GET, 'callback', 0 );
  29. $table = dPgetParam( $_GET, 'table', 0 );
  30.  
  31. $ok = $callback & $table;
  32.  
  33. $title = "Generic Selector";
  34. $select = '';
  35. $from = $table;
  36. $where = '';
  37. $order = '';
  38.  
  39. switch ($table) {
  40. case 'companies':
  41.     $title = 'Company';
  42.     $select = 'company_id,company_name';
  43.     $order = 'company_name';
  44.     $table .= ", permissions";
  45.     $where = selPermWhere( 'companies', 'company_id' );
  46.     break;
  47. case 'departments':
  48. // known issue: does not filter out denied companies
  49.     $title = 'Department';
  50.     $company_id = dPgetParam( $_GET, 'company_id', 0 );
  51.     //$ok &= $company_id;  // Is it safe to delete this line ??? [kobudo 13 Feb 2003]
  52.     //$where = selPermWhere( 'companies', 'company_id' );
  53.     $where = "dept_company = company_id ";
  54.     $where .= "\nAND ".selPermWhere( 'departments', 'dept_id' );
  55.  
  56.     $table .= ", companies, permissions";
  57.     $hide_company = dPgetParam( $_GET, 'hide_company', 0 );
  58.     if ( $hide_company == 1 ){
  59.         $select = "dept_id, dept_name";
  60.     }else{
  61.         $select = "dept_id,CONCAT_WS(': ',company_name,dept_name) AS dept_name";
  62.     }
  63.     if ($company_id) {
  64.         $where .= "\nAND dept_company = $company_id";
  65.         $order = 'dept_name';
  66.     } else {
  67.         $order = 'company_name,dept_name';
  68.     }
  69.     break;
  70. case 'forums':
  71.     $title = 'Forum';
  72.     $select = 'forum_id,forum_name';
  73.     $order = 'forum_name';
  74.     break;
  75. case 'projects':
  76.     $project_company = dPgetParam( $_GET, 'project_company', 0 );
  77.  
  78.     $title = 'Project';
  79.     $select = 'project_id,project_name';
  80.     $order = 'project_name';
  81.     $where = selPermWhere( 'projects', 'project_id' );
  82.     $where .= $project_company ? "\nAND project_company = $project_company" : '';
  83.     $table .= ", permissions";
  84.     break;
  85. case 'tasks':
  86.     $task_project = dPgetParam( $_GET, 'task_project', 0 );
  87.  
  88.     $title = 'Task';
  89.     $select = 'task_id,task_name';
  90.     $order = 'task_name';
  91.     $where = $task_project ? "task_project = $task_project" : '';
  92.     break;
  93. case 'users':
  94.     $title = 'User';
  95.     $select = "user_id,CONCAT_WS(' ',user_first_name,user_last_name)";
  96.     $order = 'user_first_name';
  97.     break;
  98. default:
  99.     $ok = false;
  100.     break;
  101. }
  102.  
  103. if (!$ok) {
  104.     echo "Incorrect parameters passed\n";
  105.     if ($debug) {
  106.         echo "<br />callback = $callback \n";
  107.         echo "<br />table = $table \n";
  108.         echo "<br />ok = $ok \n";
  109.     }
  110. } else {
  111.     $sql = "SELECT $select FROM $table";
  112.     $sql .= $where ? " WHERE $where" : '';
  113.     $sql .= $order ? " ORDER BY $order" : '';
  114.     //echo "<pre>$sql</pre>";
  115.  
  116.     $list = arrayMerge( array( 0=>''), db_loadHashList( $sql ) );
  117.     echo db_error();
  118. ?>
  119. <script language="javascript">
  120.     function setClose(){
  121.         var list = document.frmSelector.list;
  122.         var key = list.options[list.selectedIndex].value;
  123.         var val = list.options[list.selectedIndex].text;
  124.         window.opener.<?php echo $callback;?>(key,val);
  125.         window.close();
  126.     }
  127. </script>
  128.  
  129. <table cellspacing="0" cellpadding="3" border="0">
  130. <form name="frmSelector">
  131. <tr>
  132.     <td colspan="2">
  133. <?php
  134.     if (count( $list ) > 1) {
  135.         echo $AppUI->_( 'Select' ).' '.$AppUI->_( $title ).':<br />';
  136.         echo arraySelect( $list, 'list', ' size="8"', 0 );
  137. ?>
  138.     </td>
  139. </tr>
  140. <tr>
  141.     <td>
  142.         <input type="button" class="button" value="<?php echo $AppUI->_( 'cancel' );?>" onclick="window.close()" />
  143. <?php
  144.     } else {
  145.         echo $AppUI->_( "no$table" );
  146.     }
  147. ?>
  148.     </td>
  149.     <td align="right">
  150.         <input type="button" class="button" value="<?php echo $AppUI->_( 'Select', UI_CASE_LOWER );?>" onclick="setClose()" />
  151.     </td>
  152. </tr>
  153. </form>
  154. </table>
  155.  
  156. <?php } ?>
  157.