user.php 21 KB

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