user.php 21 KB

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