user.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. <?php
  2. function task_USER() {
  3. User_procesy5_check_access();
  4. if (!User::logged()) {
  5. return;
  6. }
  7. echo'<p>';
  8. echo "Jesteś zalogowany jako: <b>".User::get('ADM_NAME')."</b> (".'<code>'.User::getName().'</code>'.")";
  9. echo " " . App::link("Ocena pracownika", array('task'=>"USER_OCENA"));
  10. echo'</p>';
  11. // Stanowiska powiazane z userem
  12. $stanowiska = User::getGroups();
  13. if (empty($stanowiska)) {
  14. echo'<p class="red">'."Nie jestes przypisany do żadnego stanowiska - pilnie skontaktuj się z przełożonym!".'</p>';
  15. } else {
  16. echo '<div class="">';
  17. echo '<p style="margin-bottom:0;">'."Stanowisko: ";
  18. if (count($stanowiska) > 0) {
  19. echo App::link("obowiązki", array('task'=>'CRM_WYSWIETL_OBOWIAZKI', 'z'=>array_keys($stanowiska)));
  20. }
  21. echo '</p>';
  22. echo '<ul style="margin-top:0;">';
  23. foreach ($stanowiska as $k_id => $v_zasob) {
  24. echo '<li>' . "[" . App::link($k_id, array('task'=>'CRM_WYSWIETL_OBOWIAZKI', 'z'=>array($k_id))) . "] " . $v_zasob->DESC . '</li>';
  25. }
  26. echo '</ul>';
  27. echo '</div>';// .box-blue
  28. }
  29. $db = DB::getDB();
  30. Lib::loadClass('ProcesLogDao');
  31. Lib::loadClass('ProcesLogSelectView');
  32. $procesLogDao = new ProcesLogDao($db);
  33. $cnt = new ProcesLogSelectView();
  34. $proces_log_list_count = $procesLogDao->get_user_log_list_count(User::getID(), User::getGroupsIds());
  35. $cnt->set('title', "Moje procesy" . (($proces_log_list_count)? " (" . $proces_log_list_count . ")" : ''));
  36. $cnt->set('procesLogDao', $procesLogDao);
  37. $proces_log_list = $procesLogDao->get_user_log_list(User::getID(), User::getGroupsIds());
  38. $cnt->set('proces_log_list_count', $proces_log_list_count);
  39. $cnt->set('proces_log_list', $proces_log_list);
  40. DEBUG_S(4, "All process log list", $proces_log_list, __FILE__, __FUNCTION__, __LINE__);
  41. echo $cnt->render();
  42. }
  43. function task_USERS() {
  44. User_procesy5_check_access();
  45. if (!User::logged()) {
  46. return;
  47. }
  48. // login session info:
  49. //$_SESSION['ADM_PASSWD']=$ADM_PASSWD;
  50. //$_SESSION['AUTHORIZE_USER']="$h->ADM_ACCOUNT";
  51. //$_SESSION['ADM_ACCOUNT']="$h->ADM_ACCOUNT";
  52. //$_SESSION['ADM_AREA']="$h->ADM_AREA";
  53. //$_SESSION['ADM_NAME']="$h->ADM_NAME";
  54. //$_SESSION['ADM_TECH_WORKER']="$h->ADM_TECH_WORKER";
  55. //$_SESSION['ADM_COMPANY']="$h->ADM_COMPANY";
  56. //$_SESSION['ADM_ADMIN_LEVEL']="$h->ADM_ADMIN_LEVEL";
  57. //$_SESSION['ADM_PHONE']="$h->ADM_PHONE";
  58. //$_SESSION['ADM_ADMIN_EXPIRE']="$h->ADM_ADMIN_EXPIRE";
  59. //$_SESSION['ADM_ADMIN_DESC']="$h->ADM_ADMIN_DESC";
  60. Lib::loadClass('UsersHelper');
  61. // TODO: add filters
  62. $items = array();
  63. $params = array();// sql params
  64. $page_nav = new stdClass();
  65. $page_nav->total = 0;
  66. $page_nav->page_total = 0;
  67. $page_nav->base_link = "?task=USERS";// TODO: not used!
  68. $page_nav->page_limit = 20;
  69. $page_nav->page_nr = V::get('_p', 0, $_REQUEST, 'int');
  70. if ($page_nav->page_nr > 0) {
  71. $page_nav->base_link .= "&_p=" . $page_nav->page_nr;
  72. }
  73. $params['p'] = V::get('_p', 0, $_REQUEST, 'int');
  74. $params['group'] = V::get('_group', 0, $_REQUEST, 'int');
  75. if ($params['group'] > 0) {
  76. $page_nav->base_link .= "&_group=" . $params['group'];
  77. }
  78. $page_nav->total = UsersHelper::get_users_total( $params );
  79. $page_nav->last_page_nr = floor($page_nav->total / $page_nav->page_limit);
  80. $items = UsersHelper::get_users_list($params, $page_nav->page_limit, $page_nav->page_nr * $page_nav->page_limit, 'ID', 'DESC');
  81. $page_nav->page_total = count($items);
  82. UsersHelper::add_groups_to_user_list( $items );
  83. //if ($page_nav->total > 0) {
  84. task_USERS_show_items( $params, $page_nav, $items );
  85. //}
  86. }
  87. function task_USERS_show_items( $params, &$page_nav, &$items ) {
  88. User_procesy5_check_access();
  89. $page_nav->links = array();
  90. $base_params = array('task'=>"USERS");
  91. if (!empty($params['group'])) $base_params['_group'] = $params['group'];
  92. $page_nav->links []= App::link("|&lt;&lt;", $base_params, array('title'=>"Pierwsza strona"));
  93. if ($page_nav->page_nr > 0) {
  94. $page_nav->links []= App::link("&lt;&lt;", V::extend($base_params, array('_p'=>($page_nav->page_nr - 1))), array('title'=>"Poprzednia strona (-" . $page_nav->page_limit . ")"));
  95. } else {
  96. $page_nav->links []= " &lt;&lt; ";
  97. }
  98. $page_nav->links []= '<span>'.($page_nav->page_nr * $page_nav->page_limit).'</span>';
  99. $page_nav->links []= '<span title="'."Znaleziono ".$page_nav->total." rekordów".'">'."(".$page_nav->total.") ".'</span>';
  100. if ($page_nav->last_page_nr > $page_nav->page_nr) {
  101. $page_nav->links []= App::link("&gt;&gt;", V::extend($base_params, array('_p'=>($page_nav->page_nr + 1))), array('title'=>"Nastepna strona (+" . $page_nav->page_limit . ")"));
  102. } else {
  103. $page_nav->links []= " &gt;&gt; ";
  104. }
  105. $page_nav->links []= App::link("&gt;&gt;|", V::extend($base_params, array('_p'=>$page_nav->last_page_nr)), array('title'=>"Ostatnia strona"));
  106. echo'<div class="tbl-page-nav">';
  107. echo implode(" ", $page_nav->links);
  108. echo'</div>';
  109. $tbl_filters_selected = false;
  110. if ($params['group'] > 0) {
  111. $tbl_filters_selected = true;
  112. }
  113. echo '<form action="" method="get">';
  114. echo '<input type="hidden" name="' . "task" . '" value="' . App::get_task() . '" />';
  115. echo '<input type="hidden" name="' . "_p" . '" value="' . $params['p'] . '" />';
  116. echo'<table class="tbl-view" border="1" cellspacing="0" cellpaddin="0">';
  117. echo'<thead>';
  118. echo'<tr>';
  119. echo'<th>'."&nbsp;".'</th>';
  120. echo'<th>'."ID".'</th>';
  121. echo'<th>'."login".'</th>';
  122. echo'<th>'."imie i nazwisko".'</th>';
  123. echo'<th>'."telefon".'</th>';
  124. echo'<th>'."email".'</th>';
  125. echo'<th>'."stanowisko".'</th>';
  126. echo'<th>'."status".'</th>';
  127. echo'<th>'."lokalizacja".'</th>';
  128. echo'</tr>';
  129. echo'<tr class="find">';
  130. echo'<td>';
  131. echo '<input type="image" value="Szukaj" src="icon/search.png" title="Szukaj">';
  132. echo App::link("x", array('task'=>App::get_task(), '_p'=>$page_nav->page_nr), array('title'=>"Wyczyść filtr", 'ico'=>'del.png'));
  133. echo '</td>';
  134. echo'<td>'."".'</td>';
  135. echo'<td>'."".'</td>';
  136. echo'<td>'."".'</td>';
  137. echo'<td>'."".'</td>';
  138. echo'<td>'."".'</td>';
  139. $cls = ($params['group'] > 0)? ' class="selected"' : '';
  140. echo'<td'.$cls.'>';
  141. $sel_group_options = array();
  142. $groups = UsersHelper::get_group_list();
  143. foreach ($groups as $k_group_id => $v_group) {
  144. $sel_group_options [$v_group->ID] = $v_group->DESC;
  145. }//end foreach
  146. echo'<select name="'."_group".'" onchange="this.form.submit();">';
  147. echo'<option value="">' . "&nbsp;" . '</option>';
  148. foreach ($sel_group_options as $k_value => $v_label) {
  149. $sel = ($k_value == $params['group'])? ' selected="selected"' : '';
  150. echo'<option value="' . $k_value . '"'.$sel.'>' . $v_label . " (" . $k_value . ")" . '</option>';
  151. }//end foreach
  152. echo'</select>';
  153. echo '</td>';
  154. echo'<td>'."".'</td>';
  155. echo'</tr>';
  156. echo'</thead>';
  157. echo'<tbody>';
  158. if (empty($items)) {
  159. echo'<td colspan="7">';
  160. echo '<span style="color:red">' . "Brak danych" . '</span>';
  161. if ($tbl_filters_selected) {
  162. echo ' - wyczyść filtry ' . App::link("x", array('task'=>App::get_task(), '_p'=>$page_nav->page_nr), array('title'=>"Wyczyść filtr", 'ico'=>'del.png'));
  163. } else if ($page_nav->last_page_nr > 0 && $page_nav->page_nr > 0) {
  164. echo ' - wróć do ' . App::link("pierwszej strony", $base_params, array('title'=>"pierwsza strona"));
  165. } else
  166. echo '</td>';
  167. }
  168. else {
  169. $t = 0;
  170. foreach ($items as $k_id => $r) {
  171. if(TableAcl::canReadRecord($r)) { //@2014-04-24 TODO jest blad przewijania ekranow, ale musialem zabezpieczyc pokazywanie! z reszta ekran przechodzi na domyslny interfejs soon?
  172. echo'<tr class="row-'.($t = 1 - $t).'">';
  173. echo'<td>';
  174. if (0 == User::get('ADM_ADMIN_LEVEL')) {
  175. echo App::link("E", array('task'=>"USER_EDIT", '_user_id'=>$k_id, '_p'=>$page_nav->page_nr), array('ico'=>'edit.png', 'title'=>"Edit"));
  176. echo " ";
  177. }
  178. echo App::link("Ocena", array('task'=>"USER_OCENA", '_user_id'=>$k_id), array('ico'=>'print', 'title'=>"Ocena pracownika"));
  179. echo'</td>';
  180. echo'<td>';
  181. echo $k_id;
  182. echo'</td>';
  183. echo'<td>';
  184. echo $r->ADM_ACCOUNT;
  185. echo'</td>';
  186. echo'<td>';
  187. echo $r->ADM_NAME;
  188. echo'</td>';
  189. echo'<td>';
  190. echo $r->ADM_PHONE;
  191. echo'</td>';
  192. echo'<td>';
  193. //echo $r->ADM_EMAIL;
  194. $emails = trim($r->EMAIL);
  195. if (!empty($emails)) {
  196. $emails_arr = array();
  197. $emails_tmp = explode(',', $emails);
  198. foreach ($emails_tmp as $v) {
  199. $v = trim($v);
  200. if (!empty($v)) {
  201. //$emails_arr []= '<a href="' . "mailto:" . $v . '">' . $v . '</a>';
  202. $emails_arr []= $v;
  203. }
  204. }//end foreach
  205. if (!empty($emails_arr)) {
  206. echo '<span title="' . implode(', '."\n", $emails_arr). '">';
  207. echo reset($emails_arr);
  208. if (count($emails_arr) > 1) echo ' ...';
  209. echo '</span>';
  210. }
  211. }
  212. echo'</td>';
  213. echo'<td>';
  214. if (!empty($r->groups)) {
  215. foreach ($r->groups as $k_zasob_id => $v_zasob_desc) {
  216. echo ' <b style="color:green" title="' . htmlspecialchars($v_zasob_desc) . '">' . $k_zasob_id . '</b>';
  217. }//end foreach
  218. } else {
  219. echo '<b style="color:red" title="' . "Brak przypisanego stanowiska!" . '">' . "Brak!" . '</b>';
  220. }
  221. echo " <em>(" . $r->ADM_ADMIN_DESC . ")</em>";
  222. echo'</td>';
  223. echo'<td>';
  224. echo $r->A_STATUS;
  225. echo'</td>';
  226. echo'<td>';
  227. echo $r->T_TELBOX_NEIGHBOUR_IN_ID_NAME;
  228. echo'</td>';
  229. echo'</tr>';
  230. }
  231. }//end foreach
  232. }
  233. echo'</tbody>';
  234. echo'</table>';
  235. echo '</form>';
  236. }
  237. function task_USER_EDIT() {
  238. User_procesy5_check_access();
  239. if (User::get('ADM_ADMIN_LEVEL') != 0) {
  240. echo'<p>'."Brak dostepu!".'</p>';
  241. return;
  242. }
  243. $user_id = V::get('_user_id', 0, $_REQUEST, 'int');
  244. Lib::loadClass('UsersHelper');
  245. $user_data = UsersHelper::get_user_by_id( $user_id );
  246. if (!$user_data) {
  247. echo'<p>'."User nie istnieje.".'</p>';
  248. return;
  249. }
  250. $groups = UsersHelper::get_group_list();
  251. $get_localisation_list = UsersHelper::get_localisation_list();
  252. $user_data->groups = UsersHelper::get_group_by_user( $user_data->ID, array('T_TELBOX_NAME'=>1) );
  253. $user_cols = array();
  254. $user_cols['ID'] = "ID";
  255. $user_cols['A_STATUS'] = "status";
  256. $user_cols['ADM_ACCOUNT'] = "login";
  257. $user_cols['ADM_ADMIN_LEVEL'] = "admin level";
  258. $user_cols['ADM_NAME'] = "imie i nazwisko";
  259. $user_cols['ADM_PHONE'] = "numer telefonu";
  260. $user_cols['EMAIL'] = "adres email";
  261. $user_cols['ADM_PESEL'] = "pesel";
  262. $user_cols['ADM_NIP'] = "nip";
  263. $user_cols['ADM_ADMIN_DESC'] = "stanowisko";
  264. $user_types = array();
  265. $user_types['ID'] = "";
  266. $user_types['A_STATUS'] = "enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED')";
  267. $user_types['ADM_ACCOUNT'] = "";
  268. $user_types['ADM_ADMIN_LEVEL'] = "enum('0', '1', '2', '3', '4', '5', '6')";
  269. $user_types['ADM_NAME'] = "varchar(100)";
  270. $user_types['ADM_PHONE'] = "varchar(100)";
  271. $user_types['EMAIL'] = "varchar(100)";
  272. $user_types['ADM_PESEL'] = "varchar(30)";
  273. $user_types['ADM_NIP'] = "varchar(100)";
  274. $user_types['ADM_ADMIN_DESC'] = "varchar(100)";
  275. $values = array();
  276. foreach (get_object_vars($user_data) as $k_field => $v_value) {
  277. $values[$k_field] = V::get($k_field, $v_value, $_POST);
  278. }//end foreach
  279. if (1 == V::get('save', 0, $_POST, 'int')) {
  280. // TODO: use DB::UPDATE_OBJ
  281. $sql_arr = array();
  282. $sql_arr_hist = array();
  283. foreach (get_object_vars($user_data) as $k_field => $v_value) {
  284. if ($values[$k_field] != $v_value) {
  285. $sql_field = $k_field;
  286. // if ($k_field == 'EMAIL') $sql_field = "EMAIL";
  287. $sql_arr []= "`".$sql_field."`='".$values[$k_field]."'";
  288. $sql_arr_hist["`".$sql_field."`"] = "'".$values[$k_field]."'";
  289. }
  290. }//end foreach
  291. if (!empty($sql_arr)) {
  292. $sql = "update `ADMIN_USERS` set ".implode(",", $sql_arr)." where `ID`='".$user_data->ID."' limit 1 ";
  293. DB::query( $sql );
  294. $affected = DB::affected_rows();
  295. if ($affected) {
  296. echo'<p class="green">'."Zmieniono rekord".'</p>';
  297. // add HIST data
  298. $sql_arr_hist["`ID_USERS2`"] = "'".$user_data->ID."'";
  299. $sql_hist = "insert into `ADMIN_USERS_HIST` (".implode(",", array_keys($sql_arr_hist)).") values(".implode(",", array_values($sql_arr_hist)).");";
  300. DB::query( $sql_hist );
  301. $insert_id = DB::insert_id();
  302. if ($insert_id) {
  303. echo'<p class="green">'."Dodano dane historyczne".'</p>';
  304. } else {
  305. echo'<p class="red">'."Nie wprowadzono danych HIST".'</p>';
  306. }
  307. } else {
  308. echo'<p class="red">'."Nic nie zmieniono".'</p>';
  309. }
  310. } else {
  311. echo'<p class="red">'."Nie ma nic do zmiany".'</p>';
  312. }
  313. // add stanowiska
  314. if ('' != ($add_group = V::get('add_group', '', $_POST))) {
  315. $add_localisation = V::get('add_localisation', '', $_POST);
  316. $ret_id = UsersHelper::add_group( $user_data->ID, $add_group, $add_localisation );
  317. if ($ret_id <= 0) {
  318. echo'<p class="red">' . "Blad podczas dodawania stanowiska" . '</p>';
  319. } else {
  320. echo'<p class="green">' . "Dodano stanowisko" . '</p>';
  321. $user_data->groups[$add_group] = $groups[$add_group];
  322. $user_data->groups[$add_group]->T_TELBOX_NAME = $get_localisation_list[$add_localisation]->T_TELBOX_NAME;// przypisanie do swiezo dodanego rekordu nazwy dodanej lokalizacji
  323. }
  324. }
  325. // remove stanowiska
  326. if ('' != ($del_group = V::get('del_group', '', $_POST))) {
  327. $ret_code = UsersHelper::remove_group( $user_data->ID, $del_group );
  328. if ($ret_code <= 0) {
  329. echo'<p class="red">' . "Blad podczas usuwania stanowiska ($ret_code)" . '</p>';
  330. } else {
  331. echo'<p class="green">' . "Usunieto stanowisko" . '</p>';
  332. unset($user_data->groups[$del_group]);
  333. }
  334. }
  335. }
  336. echo'<h1>';
  337. echo App::link("Users", array('task'=>"USERS", '_p'=>V::get('_p', 0, $_GET, 'int')));
  338. echo ' &raquo; ' . App::link("Edycja użytkownika [".$user_data->ID."]", array('task'=>'USER_EDIT', '_user_id'=>$user_data->ID));
  339. echo'</h1>';
  340. echo'<div class="box box-blue">';
  341. echo'<form action="" method="post">';
  342. echo'<input type="hidden" name="'."save".'" value="'."1".'" />';
  343. foreach ($user_cols as $k_field => $v_label) {
  344. echo '<label style="color:#666;" for="'.$k_field.'">' . $v_label . '</label>' . ": ";
  345. if ($user_types[$k_field] == '') {
  346. echo $user_data->$k_field;
  347. } else {
  348. echo App::field($k_field, $user_types[$k_field], $values[$k_field]);
  349. }
  350. echo'<br />';
  351. }//end foreach
  352. echo'<div style="padding:0 0 0 30px;">';
  353. echo '<input type="hidden" name="' . "del_group" . '" value="" />';
  354. if (empty($user_data->groups)) {
  355. echo'<b class="red">'."Brak przypisanego stanowiska!".'</b><br />';
  356. }
  357. else {
  358. foreach ($user_data->groups as $k_group_id => $v_group) {
  359. echo "[" . $v_group->ID . "] " . '<span title="'.$v_group->OPIS.'">' . $v_group->DESC . '</span>' . " [" . $v_group->T_TELBOX_NAME . "] ";
  360. $js = "if(confirm('Czy jestes pewien ze chcesz usunac stanowisko: ".$v_group->DESC."?')){ this.form.del_group.value='".$v_group->ID."'; this.form.submit(); } return false;";
  361. echo ' <input type="image" src="' . "stuff/i/del.png". '" alt="' . "Usuń stanowisko" . '" title="' . "Usuń stanowisko" . '" onclick="'.$js.'" />';
  362. echo'<br />';
  363. }//end foreach
  364. }
  365. $add_group_options = array();
  366. foreach ($groups as $k_group_id => $v_group) {
  367. $add_group_options [$v_group->ID] = $v_group->DESC;
  368. }//end foreach
  369. $add_get_localisation_list = array();
  370. foreach ($get_localisation_list as $k_group_id => $v_group) {
  371. $add_get_localisation_list [$v_group->ID] = $v_group->DESC." ".$v_group->T_TELBOX_NAME;
  372. }//end foreach
  373. echo'<img src="icon/add.gif" title="Dodaj">';
  374. echo " Dodaj nowe stanowisko: ";
  375. echo'<select name="'."add_group".'">';
  376. echo'<option value="">' . "&nbsp;" . '</option>';
  377. foreach ($add_group_options as $k_value => $v_label) {
  378. echo'<option value="' . $k_value . '">' . $v_label . " (" . $k_value . ")" . '</option>';
  379. }//end foreach
  380. echo'</select>';
  381. echo " Ustal lokalizacje: ";
  382. echo'<select name="'."add_localisation".'">';
  383. echo'<option value="">' . "&nbsp;" . '</option>';
  384. foreach ($add_get_localisation_list as $k_value => $v_label) {
  385. echo'<option value="' . $k_value . '">' . $v_label . " (" . $k_value . ")" . '</option>';
  386. }//end foreach
  387. echo'</select>';
  388. echo'</div>';
  389. echo'<input type="submit" value="'."zapisz".'" />';
  390. echo'</form>';
  391. echo'</div>';// .box-blue
  392. }
  393. function fun_USER_OCENA_EXPORT() {
  394. $_user_id = V::get('_user_id', '', $_GET, 'int');
  395. $user = new stdClass();
  396. $user->ID = User::getID();
  397. $user->ADM_NAME = User::get('ADM_NAME');
  398. Lib::loadClass('UsersHelper');
  399. if ($_user_id > 0) {
  400. $user = UsersHelper::get_user_by_id($_user_id);
  401. if (!$user) {
  402. echo '<p class="red">' . "Brak użytkownika o ID = " . $_user_id . '</p>';
  403. return;
  404. }
  405. }
  406. header('Content-Type: text/plain; charset=UTF-8');
  407. // Stanowiska powiazane z userem
  408. $stanowiska = UsersHelper::get_group_by_user($user->ID,array('SHOW_IN_PERIOD_MARK'=>'YES'));
  409. if (empty($stanowiska)) {
  410. echo '<p class="red">' . "Brak przypisanego stanowiska do pracownika " . $user->ADM_NAME . "" . '</p>';
  411. return;
  412. }
  413. Lib::loadClass('ProcesHelper');
  414. $procesy_list = ProcesHelper::get_procesy_by_stanowiska( array_keys($stanowiska) );
  415. // update proces_list data
  416. foreach ($procesy_list as $k => $p) {
  417. $procesy_list[$k]->stanowisko = '';
  418. if (array_key_exists($p->z__ID, $stanowiska)) {
  419. $procesy_list[$k]->stanowisko = $stanowiska[$p->z__ID]->DESC;
  420. }
  421. }
  422. echo "{$user->ADM_NAME};;;;;;;;;" . "data: " . date("Y-m-d") . ";;\n";
  423. echo "id;nazwa;stanowisko;ocena pracownika;;ocena kierownika;;ocena specjalisty ds. jakości;;ocena prezesa;;" . "\n";
  424. echo ";;;%;uwagi;%;uwagi;%;uwagi;%;uwagi;" . "\n";
  425. foreach ($procesy_list as $p) {
  426. echo '"' . "{$p->ID}" . '";"' . "{$p->DESC}" . '";"';
  427. echo "{$p->stanowisko}";
  428. if (!empty($p->w__OPIS_ZASOB)) {
  429. echo " (" . str_replace(array("\n","\r"), ' ', $p->w__OPIS_ZASOB) . ")";
  430. }
  431. echo '";" ";" ";" ";" ";" ";" ";" ";" ";' . "\n";
  432. }
  433. exit;
  434. }
  435. function task_USER_OCENA() {
  436. User_procesy5_check_access();
  437. $_print = ('1' == V::get('_print', '', $_GET));
  438. $_user_id = V::get('_user_id', '', $_GET, 'int');
  439. $user = new stdClass();
  440. $user->ID = User::getID();
  441. $user->ADM_NAME = User::get('ADM_NAME');
  442. Lib::loadClass('UsersHelper');
  443. if ($_user_id > 0) {
  444. $user = UsersHelper::get_user_by_id($_user_id);
  445. if (!$user) {
  446. echo '<p class="red">' . "Brak użytkownika o ID = " . $_user_id . '</p>';
  447. return;
  448. }
  449. }
  450. // Stanowiska powiazane z userem
  451. $stanowiska = UsersHelper::get_group_by_user($user->ID,array('SHOW_IN_PERIOD_MARK'=>'YES'));
  452. if (empty($stanowiska)) {
  453. echo '<p class="red">' . "Brak przypisanego stanowiska do pracownika " . $user->ADM_NAME . "" . '</p>';
  454. return;
  455. }
  456. Lib::loadClass('ProcesHelper');
  457. $procesy_list = ProcesHelper::get_procesy_by_stanowiska( array_keys($stanowiska) );
  458. // update proces_list data
  459. foreach ($procesy_list as $k => $p) {
  460. $procesy_list[$k]->stanowisko = '';
  461. if (array_key_exists($p->z__ID, $stanowiska)) {
  462. $procesy_list[$k]->stanowisko = $stanowiska[$p->z__ID]->DESC;
  463. }
  464. }
  465. echo '<h3>';
  466. echo $user->ADM_NAME;
  467. echo '<span style="float:right">' . "data: " . date("Y-m-d") . '</span>';
  468. echo '</h3>';
  469. if (!$_print) {
  470. echo App::link("Drukuj", array('task'=>'USER_OCENA', '_user_id'=>$user->ID, '_print'=>1, 'HIDE_PANEL'=>1), array('ico_after_text'=>'print', 'target'=>'_blank'));
  471. echo ' | ';
  472. echo App::link("Export", array('function_init'=>'fun_USER_OCENA_EXPORT', '_user_id'=>$user->ID, 'HIDE_PANEL'=>1), array('ico_after_text'=>'excel.gif', 'target'=>'_blank'));
  473. echo ' | ';
  474. echo App::link("Ustal kolejność testów", array('task'=>'TEST_SORT'), array('target'=>'_blank'));
  475. echo ' | ';
  476. echo "<font size=-1><a href=index.php?FUNCTION_INIT=GRAPH_VIEW_PROCES&id_proces={$id_proces}&PROCES_INIT_SCAN=1&PROCES_INIT_SCAN_USER={$user->ID} target=blank>Widok mapy</a></font>";
  477. }
  478. echo '<table cellspacing="0" cellpadding="0" border="1" class="tbl-view">';
  479. echo '<thead>';
  480. echo '<tr>';
  481. echo '<th rowspan="2" style="width:2%;">' . "id" . '</th>';
  482. echo '<th rowspan="2" style="width:14%;">' . "nazwa" . '</th>';
  483. echo '<th rowspan="2" style="width:20%;">' . "stanowisko" . '</th>';
  484. echo '<th colspan="2">' . "ocena pracownika" . '</th>';
  485. echo '<th colspan="2">' . "ocena kierownika" . '</th>';
  486. echo '<th colspan="2">' . "ocena specjalisty ds. jakości" . '</th>';
  487. echo '<th colspan="2">' . "ocena prezesa" . '</th>';
  488. echo '</tr>';
  489. echo '<tr>';
  490. echo '<th>' . "%" . '</th>';
  491. echo '<th>' . "uwagi" . '</th>';
  492. echo '<th>' . "%" . '</th>';
  493. echo '<th>' . "uwagi" . '</th>';
  494. echo '<th>' . "%" . '</th>';
  495. echo '<th>' . "uwagi" . '</th>';
  496. echo '<th>' . "%" . '</th>';
  497. echo '<th>' . "uwagi" . '</th>';
  498. echo '</tr>';
  499. echo '</thead>';
  500. echo '<tbody>';
  501. foreach ($procesy_list as $p) {
  502. echo '<tr>';
  503. echo '<td>' . $p->ID . '</td>';
  504. echo '<td>' . $p->DESC . '</td>';
  505. echo '<td>' . $p->stanowisko;
  506. if (!empty($p->w__OPIS_ZASOB)) {
  507. echo '<br />' . '<em style="font-size:x-small;">' . "(" . $p->w__OPIS_ZASOB . ")" . '</em>';
  508. }
  509. echo '</td>';
  510. echo '<td>' . "" . '</td>';
  511. echo '<td>' . "" . '</td>';
  512. echo '<td>' . "" . '</td>';
  513. echo '<td>' . "" . '</td>';
  514. echo '<td>' . "" . '</td>';
  515. echo '<td>' . "" . '</td>';
  516. echo '<td>' . "" . '</td>';
  517. echo '<td>' . "" . '</td>';
  518. echo '</tr>';
  519. }
  520. echo '</tbody>';
  521. echo '</table>';
  522. }