superedit-A_ADM_COMPANY_CHECK.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. //@2013-06-24 funkcja do sprawdzania czy ktos ma perma do edycji danego ID
  3. //@2013-07-03 sprawdza czy wlascicielem nie jest osoba odpowiedzialna za projekt - wtedy ma dostep do sprawy
  4. //TODO zrobic cache aby nie wyzwalac wkolko zapytan czy jest PERM
  5. function A_ADM_COMPANY_CHECK($TEST_ID,$TEST_TABLE) {
  6. global $thiss,$result,$db;
  7. if(empty($TEST_TABLE)) $TEST_TABLE=$thiss->DETECT_TABLE_NAME;
  8. if(empty($TEST_ID)) DEBUG_S(-3,'ERROR: function didnt get 1 argument TEST_ID',$TEST_ID,__FILE__,__FUNCTION__,__LINE__);
  9. $exit=false;
  10. //cache check
  11. if(isset($_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']))
  12. if($_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']==$TEST_ID)
  13. if($_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['TIMESTAMP']<(date("U")-60))
  14. return(true);
  15. if (!empty($_SESSION[$thiss->DETECT_TABLE_COLUMN]['TYPE']['L_APPOITMENT_USER'])) {
  16. $sql=" select L_APPOITMENT_USER from `".$TEST_TABLE."` where ID='".$TEST_ID."' ";
  17. $res=DB::query($sql);
  18. while ($h=DB::fetch_array($res)) {
  19. if($_SESSION['ADM_ACCOUNT']==$h['L_APPOITMENT_USER']) {
  20. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']=$TEST_ID;
  21. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['TIMESTAMP']=date("U");
  22. return(true);
  23. }
  24. }
  25. }
  26. //dla projektow - gdzie jest P_ID - jedno drzewo w gore
  27. if (!empty($_SESSION[$thiss->DETECT_TABLE_COLUMN]['TYPE']['P_ID'])) {
  28. $sql=" select t2.L_APPOITMENT_USER from `".$TEST_TABLE."` as t1
  29. left join `".$TEST_TABLE."` as t2 on t1.P_ID=t2.ID
  30. where t1.ID='".$TEST_ID."' ";
  31. $res=DB::query($sql);
  32. while ($h=DB::fetch_array($res)) {
  33. if($_SESSION['ADM_ACCOUNT']==$h['L_APPOITMENT_USER']) {
  34. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']=$TEST_ID;
  35. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['TIMESTAMP']=date("U");
  36. return(true);
  37. }
  38. }
  39. }
  40. $sql="select A_ADM_COMPANY from `".$TEST_TABLE."` where ID='".$TEST_ID."'";
  41. $res=DB::query($sql);
  42. while ($h=DB::fetch_array($res)) {
  43. if(isset($_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'])) {
  44. $com = strtolower($h['A_ADM_COMPANY']);
  45. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;display:none">com('.$com.') (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']]);echo'</pre>';
  46. if((in_array($com,$_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']]) )||(in_array($h['A_ADM_COMPANY'],$_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']]) )||empty($h['A_ADM_COMPANY'])) {
  47. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']=$TEST_ID;
  48. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['TIMESTAMP']=date("U");
  49. return(true);
  50. } else {
  51. return(false);
  52. }
  53. } else if(stristr($h['A_ADM_COMPANY'], $_SESSION['ADM_ACCOUNT'])) {
  54. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['ID']=$TEST_ID;
  55. $_SESSION[$thiss->DETECT_TABLE_COLUMN]['A_ADM_COMPANY_CHECK']['TIMESTAMP']=date("U");
  56. return(true);
  57. } else {
  58. return(false);
  59. }
  60. }
  61. return(false);
  62. }