superedit-AHMES_REKLAMACJE.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. <?php
  2. /**
  3. * @param $_GET['task']
  4. * @param $_GET['id_koresp']
  5. * @param $_GET['id_problem']
  6. *
  7. * if $_GET['task'] == 'create_problem'
  8. * @require $_GET['id_koresp']
  9. *
  10. * if $_GET['task'] == 'create_koresp_out'
  11. * @require $_GET['id_problem']
  12. *
  13. * @requires TYPESPECIALS:
  14. * 1613 TYPESPECIALS Powiązania tabel
  15. * 6703 TYPESPECIAL id koresp
  16. * 6704 (ALIAS DO 668)PARAM_OUT {ID}: {K_OD_KOGO} {K_TYP_KORESP} {K_TYP_RODZAJ}
  17. * 6705 (ALIAS DO 668) DANE ID
  18. * 6706 (ALIAS DO 654) DANE K_OD_KOGO
  19. * 6707 (ALIAS DO 660) DANE K_TYP_KORESP
  20. * 6708 (ALIAS DO 643) DANE K_TYP_RODZAJ
  21. * 6709 (ALIAS DO 6691) PARAM_IN Problems.ID_KORESP_IN
  22. * 6710 (ALIAS DO 6692) PARAM_IN Problems.ID_KORESP_OUT
  23. *
  24. * 6699 TYPESPECIAL Problems wyślij koresp.
  25. * 6700 PARAM_OUT Wyślij koresp.
  26. * 6701 (ALIAS DO 4020) DANE ID_PROBLEM
  27. * 6702 (ALIAS DO 6693) PARAM_IN ADD_KORESP_OUT_LINK in Problems
  28. *
  29. * 6695 TYPESPECIAL Koresp. dodaj problem link
  30. * 6696 PARAM_OUT Dodaj problem
  31. * 6697 (ALIAS DO 668) DANE ID_KORESP
  32. * 6698 (ALIAS DO 6694) PARAM_IN ADD_PROBLEM_LINK in Koresp
  33. *
  34. */
  35. function AHMES_REKLAMACJE() {
  36. Lib::loadClass('ProcesHelper');
  37. $tblProblemsId = ProcesHelper::getZasobTableID('PROBLEMS');
  38. $tblKorespId = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');
  39. Lib::loadClass('ProcesHelper');
  40. $zasobObj = ProcesHelper::getZasobTableInfo($tblProblemsId);
  41. if (!$zasobObj) {
  42. echo '<div class="alert alert-danger">' . "Zasob TABELA ID={$tblProblemsId} nie istnieje" . '</div>';
  43. //echo UserActivity::showSimpleList();
  44. return;
  45. }
  46. $korespObj = ProcesHelper::getZasobTableInfo($tblKorespId);
  47. if (!$korespObj) {
  48. echo '<div class="alert alert-danger">' . "Zasob TABELA ID={$tblKorespId} nie istnieje" . '</div>';
  49. //echo UserActivity::showSimpleList();
  50. return;
  51. }
  52. //UserActivity::add($tblProblemsId);
  53. $userAcl = User::getAcl();
  54. $userAcl->fetchGroups();
  55. if (!$userAcl->hasTableAcl($zasobObj->ID)) {
  56. echo '<div class="alert alert-danger">' . "Brak uprawnień do tabeli ID={$zasobObj->ID}" . '</div>';
  57. //echo UserActivity::showSimpleList();
  58. return;
  59. }
  60. if (!$userAcl->hasTableAcl($korespObj->ID)) {
  61. echo '<div class="alert alert-danger">' . "Brak uprawnień do tabeli Korespondencja (ID={$korespObj->ID})" . '</div>';
  62. //echo UserActivity::showSimpleList();
  63. return;
  64. }
  65. $tblAcl = $userAcl->getTableAcl($zasobObj->ID);
  66. $korespAcl = $userAcl->getTableAcl($korespObj->ID);
  67. $forceTblAclInit = ('1' == V::get('_force', '', $_GET));
  68. $tblAcl->init($forceTblAclInit);
  69. $korespAcl->init($forceTblAclInit);
  70. $module = new Ahmes_Reklamacje($tblAcl, $korespAcl, $_GET);
  71. $module->run();
  72. }
  73. class Ahmes_Reklamacje {
  74. private $_args = null;
  75. private $_tbl = null;
  76. private $_acl = null;
  77. private $_zasobID = null;
  78. private $_dataSource = null;
  79. private $_htmlID = '';
  80. public function __construct($tblAcl, $korespAcl, $args) {
  81. $this->_args = $args;
  82. $this->_tbl = $tblAcl->getName();
  83. $this->_acl = $tblAcl;
  84. $this->_korespAcl = $korespAcl;
  85. $this->_zasobID = $tblAcl->getID();
  86. Lib::loadClass('Data_Source');
  87. $this->_dataSource = new Data_Source($tblAcl->getDB());
  88. $this->_dataSource->setTable($tblAcl->getName());
  89. $realFieldList = $tblAcl->getRealFieldList();
  90. $this->_dataSource->setCols($realFieldList);
  91. $this->_dataSource->setColTypes($tblAcl->getTypes());
  92. $this->_dataSource->setVirtualCols($tblAcl->getVirtualFieldList());
  93. $this->_dataSource->setFieldGroupWrite('A_ADM_COMPANY', $tblAcl->hasFieldType('A_ADM_COMPANY'));
  94. $this->_dataSource->setFieldGroupRead('A_CLASSIFIED', $tblAcl->hasFieldType('A_CLASSIFIED'));
  95. $this->_dataSource->setAccessFltrAllowed(!$tblAcl->hasSuperAccessPerms());
  96. $this->_htmlID = 'Ahmes_Reklamacje';
  97. $adminFields = array('A_RECORD_CREATE_DATE', 'A_RECORD_CREATE_AUTHOR', 'A_RECORD_UPDATE_DATE', 'A_RECORD_UPDATE_AUTHOR');
  98. foreach ($adminFields as $vAdmFld) {
  99. if (!in_array($vAdmFld, $realFieldList) && $tblAcl->hasFieldType($vAdmFld)) {
  100. $this->_dataSource->addCol($vAdmFld);
  101. }
  102. }
  103. }
  104. public function run() {
  105. Lib::loadClass('SE_Layout');
  106. SE_Layout::menu();
  107. $task = V::get('task', '', $this->_args);
  108. switch ($task) {
  109. case 'create_problem':
  110. $id_koresp = V::get('id_koresp', '', $this->_args);
  111. if (!$id_koresp) {
  112. echo '<div class="alert alert-danger">' . "Brak numeru z dziennika pism!" . '</div>';
  113. } else {
  114. $this->taskCreateProblem($id_koresp);
  115. }
  116. break;
  117. case 'create_koresp_out':
  118. $id_problem = V::get('id_problem', '', $this->_args);
  119. if (!$id_problem) {
  120. echo '<div class="alert alert-danger">' . "Brak numeru z dziennika pism!" . '</div>';
  121. } else {
  122. $this->taskCreateKorespOut($id_problem);
  123. }
  124. break;
  125. default:
  126. echo '<div class="alert alert-danger">' . "Brak zadania do wykonania!" . '</div>';
  127. }
  128. }
  129. private function renderError($msg) {
  130. echo '<div class="alert alert-danger">' . $msg . '</div>';
  131. }
  132. private function getKoresp($id_koresp) {
  133. $db = DB::getDB();
  134. if (!$db) return false;
  135. $koresp = $db->get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
  136. return $koresp;
  137. }
  138. private function getProblem($id_problem) {
  139. $db = DB::getDB();
  140. if (!$db) return false;
  141. $problem = $db->get_by_id('PROBLEMS', $id_problem);
  142. return $problem;
  143. }
  144. private function checkKorespUsed($id_koresp) {
  145. $db = DB::getDB();
  146. if (!$db) return false;
  147. $sql = "select count(1) as cnt
  148. from `{$this->_tbl}` as p
  149. where p.`ID_KORESP_IN`='{$id_koresp}'
  150. ";
  151. $res = $db->query($sql);
  152. if ($r = $db->fetch($res)) {
  153. if ($r->cnt > 0) {
  154. return true;
  155. }
  156. }
  157. return false;
  158. }
  159. private function checkProblem($problem) {
  160. return true;
  161. }
  162. private function taskCreateProblem($id_koresp) {
  163. $koresp = $this->getKoresp($id_koresp);
  164. if (!$koresp) {
  165. $this->renderError("Brak dostępu do korespondecji lub korespondencja nie istnieje");
  166. return;
  167. }
  168. if ($this->checkKorespUsed($id_koresp)) {
  169. $this->renderError("Korespondecja została już przypisana do problemu");
  170. return;
  171. }
  172. if ('1' == V::get('frm_sent', '', $_POST)) {
  173. $frmSaved = $this->saveCreateProblemForm($koresp, $_POST);
  174. if ($frmSaved) return;
  175. }
  176. $this->renderCreateProblemForm($koresp);
  177. }
  178. public function saveCreateProblemForm($koresp, $args) {
  179. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  180. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save('.$koresp->ID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($args);echo'</pre>';}
  181. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">acl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_acl);echo'</pre>';}
  182. $dbID = $this->_acl->getDB();
  183. $db = DB::getDB($dbID);
  184. if (!$db) return false;
  185. $tblName = $this->_acl->getName();
  186. $sqlObj = new stdClass();
  187. $fields = $this->_acl->getFields();
  188. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">fields (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fields);echo'</pre>';}
  189. foreach ($fields as $kID => $vField) {
  190. if (!$this->_acl->isAllowed($kID, 'C')) {
  191. continue;
  192. }
  193. if (array_key_exists("f{$kID}", $args)) {
  194. $sqlObj->{$vField['name']} = $args["f{$kID}"];
  195. if (empty($args["f{$kID}"]) && strlen($args["f{$kID}"]) == 0) {// fix bug in input type date and value="0000-00-00"
  196. $sqlObj->{$vField['name']} = $this->_acl->fixEmptyValueFromUser($kID);
  197. }
  198. }
  199. }
  200. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
  201. $sqlObj->ID_KORESP_IN = $koresp->ID;
  202. $retID = $db->ADD_NEW_OBJ($tblName, $sqlObj);
  203. if ($retID > 0) {
  204. ?>
  205. <div class="alert alert-success">
  206. Utworzono pomyślnie rekord Nr <?php echo $retID; ?>
  207. </div>
  208. <?php
  209. return true;
  210. }
  211. ?>
  212. <div class="alert alert-danger">
  213. Wystąpił błąd podczas tworzenia rekordu
  214. <?php
  215. if ($db->has_errors()) {
  216. $outArr = array();
  217. $errorsSql = $db->get_errors();
  218. foreach ($errorsSql as $vErr) {
  219. if (substr($vErr, 0, 18) == 'SQL QUERY FAILED: ') {
  220. $vErr = substr($vErr, 18);
  221. // Duplicate entry '123456-1' for key 'P_NIP'
  222. if (substr($vErr, 0, 16) == 'Duplicate entry ') {
  223. }
  224. }
  225. $outArr[] = $vErr;
  226. }
  227. echo implode('<br>', $outArr);
  228. }
  229. ?>
  230. </div>
  231. <?php
  232. return false;
  233. }
  234. /*
  235. * @from TableAjax::sendAjaxCreate($args)
  236. */
  237. public function renderCreateProblemForm($koresp) {
  238. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  239. $cols = array();
  240. $forceFilterInit = array();
  241. foreach ($this->_args as $k => $v) {
  242. if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
  243. $fldName = substr($k, 3);
  244. $forceFilterInit[$fldName] = $v;
  245. }
  246. }
  247. $forceFilterInit['data_nad_pism'] = $koresp->K_DATA_OTRZYMANEJ_KORESP;
  248. $forceFilterInit['data_wpl_pism'] = $koresp->K_DATA_OTRZYM_KORESP;
  249. $forceFilterInit['Osoba'] = $koresp->K_OD_KOGO;
  250. $forceFilterInit['ID_PROJECT'] = $koresp->ID_PROJECT;
  251. $fieldsList = $this->_acl->getFields();
  252. foreach ($fieldsList as $kID => $vCol) {
  253. $defaultValue = '';
  254. if ($vCol['name'] == 'ID') {
  255. unset($fieldsList[$kID]);
  256. continue;
  257. }
  258. if (!empty($forceFilterInit[$vCol['name']])) {
  259. $defaultValue = $forceFilterInit[$vCol['name']];
  260. }
  261. // TODO: read from session cache
  262. $cols[$kID] = V::get("f{$kID}", $defaultValue, $_POST);
  263. $fieldsList[$kID]['label'] = (!empty($vCol['label']))? $vCol['label'] : $vCol['name'];
  264. }
  265. $korespFldsList = $this->_korespAcl->getFields();
  266. $korespFldsList = array_filter($korespFldsList, function($fld) {
  267. $korespFldsName = array();
  268. $korespFldsName[] = 'ID';
  269. $korespFldsName[] = 'K_OD_KOGO';
  270. $korespFldsName[] = 'K_TYP_KORESP';
  271. $korespFldsName[] = 'K_TYP_RODZAJ';
  272. $korespFldsName[] = 'K_DATA_OTRZYMANEJ_KORESP';
  273. $korespFldsName[] = 'K_DATA_OTRZYM_KORESP';
  274. if (in_array($fld['name'], $korespFldsName)) {
  275. return true;
  276. }
  277. return false;
  278. });
  279. Lib::loadClass('SE_Layout');
  280. ?>
  281. <div class="container AjaxFrmHorizontalEdit">
  282. <form class="form-horizontal" action="" method="post">
  283. <input type="hidden" name="frm_sent" value="1">
  284. <fieldset>
  285. <legend>Dodaj nowy Problem/Reklamację na podstawie pisma nr <?php echo $koresp->ID; ?></legend>
  286. <blockquote>
  287. <?php foreach ($korespFldsList as $fldId => $vFld) : ?>
  288. <p><small><b><?php echo $vFld['label']; ?>: </b> <?php echo $koresp->{$vFld['name']}; ?></small></p>
  289. <?php endforeach; ?>
  290. </blockquote>
  291. <?php $tabindex = 0; foreach ($fieldsList as $kID => $vCol) : ?>
  292. <?php if ($this->_acl->isAllowed($kID, 'C')) : ?>
  293. <div class="form-group">
  294. <label class="col-sm-3 control-label" for="<?php echo "f{$kID}"; ?>"><?php echo $vCol['label']; ?>
  295. <i class="glyphicon glyphicon-info-sign frm-help" data-toggle="popover" data-trigger="hover" title="" data-content="<?php echo htmlspecialchars($vCol['opis']); ?>" data-original-title="<?php echo "[{$kID}] {$vCol['name']}"; ?>"></i>
  296. <?php $perms = $this->_acl->getFieldPerms($kID); SE_Layout::hotKeyDBG($perms); ?>
  297. </label>
  298. <div class="col-sm-9">
  299. <?php
  300. $fieldParams = array('appendBack'=>true, 'tabindex'=>(++$tabindex), 'maxGrid'=>8);
  301. echo $this->_acl->showFormItem('C', $kID, "f{$kID}", $cols[$kID], $fieldParams);
  302. ?>
  303. </div>
  304. </div>
  305. <?php endif; ?>
  306. <?php endforeach; ?>
  307. <div class="form-group">
  308. <div class="col-sm-9 col-sm-offset-3">
  309. <button type="submit" class="btn btn-primary" tabindex="<?php echo (++$tabindex); ?>">Dodaj rekord</button>
  310. </div>
  311. </div>
  312. </fieldset>
  313. </form>
  314. </div>
  315. <script>
  316. jQuery(document).ready(function(){
  317. jQuery('textarea').autosize();
  318. jQuery('.frm-help').popover({trigger:'hover'});
  319. });
  320. </script>
  321. <?php
  322. }
  323. private function taskCreateKorespOut($id_problem) {
  324. $problem = $this->getProblem($id_problem);
  325. if (!$problem) {
  326. $this->renderError("Brak dostępu do problemu lub problem nie istnieje");
  327. return;
  328. }
  329. if (!$this->checkProblem($problem)) {
  330. $this->renderError("Problem nie może zostać użyty");
  331. return;
  332. }
  333. if ('1' == V::get('frm_sent', '', $_POST)) {
  334. $frmSaved = $this->saveCreateKorespOutForm($problem, $_POST);
  335. if ($frmSaved) return;
  336. }
  337. $this->renderCreateKorespOutForm($problem);
  338. }
  339. public function renderCreateKorespOutForm($problem) {
  340. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  341. $forceFilterInit = array();
  342. foreach ($this->_args as $k => $v) {
  343. if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
  344. $fldName = substr($k, 3);
  345. $forceFilterInit[$fldName] = $v;
  346. }
  347. }
  348. $forceFilterInit['K_TYP_KORESP'] = 'OUT';
  349. $forceFilterInit['K_DATA_OTRZYMANEJ_KORESP'] = date('Y-m-d');
  350. $forceFilterInit['K_OD_KOGO'] = $problem->Osoba;
  351. $fieldsList = $this->_korespAcl->getFields();
  352. $fieldsList = array_filter($fieldsList, function($vCol) {
  353. return ($vCol['name'] != 'ID');
  354. });
  355. $fieldsList = array_map(function($vCol) {
  356. $vCol['label'] = (!empty($vCol['label']))? $vCol['label'] : $vCol['name'];
  357. return $vCol;
  358. }, $fieldsList);
  359. $cols = array();
  360. foreach ($fieldsList as $kID => $vCol) {
  361. $defaultValue = '';
  362. if (!empty($forceFilterInit[$vCol['name']])) {
  363. $defaultValue = $forceFilterInit[$vCol['name']];
  364. }
  365. // TODO: read from session cache
  366. $cols[$kID] = V::get("f{$kID}", $defaultValue, $_POST);
  367. }
  368. $problFldsList = $this->_acl->getFields();
  369. $problFldsList = array_filter($problFldsList, function($fld) {
  370. $problFldsName = array();
  371. $problFldsName[] = 'ID';
  372. $problFldsName[] = 'Osoba';
  373. $problFldsName[] = 'nazwa_jedn';
  374. $problFldsName[] = 'miejscowosc';
  375. $problFldsName[] = 'data_nad_pism';
  376. $problFldsName[] = 'data_wpl_pism';
  377. $problFldsName[] = 'data_real';
  378. $problFldsName[] = 'A_PROBLEM_DESC_HTML';
  379. if (in_array($fld['name'], $problFldsName)) {
  380. return true;
  381. }
  382. return false;
  383. });
  384. Lib::loadClass('SE_Layout');
  385. ?>
  386. <div class="container AjaxFrmHorizontalEdit">
  387. <form class="form-horizontal" action="" method="post">
  388. <input type="hidden" name="frm_sent" value="1">
  389. <fieldset>
  390. <legend>Dodaj korespondencję na podstawie problemu nr <?php echo $problem->ID; ?></legend>
  391. <blockquote>
  392. <?php foreach ($problFldsList as $fldId => $vFld) : ?>
  393. <p><small><b><?php echo $vFld['label']; ?>: </b> <?php echo $problem->{$vFld['name']}; ?></small></p>
  394. <?php endforeach; ?>
  395. </blockquote>
  396. <?php $tabindex = 0; foreach ($fieldsList as $kID => $vCol) : ?>
  397. <?php if ($this->_korespAcl->isAllowed($kID, 'C')) : ?>
  398. <div class="form-group">
  399. <label class="col-sm-3 control-label" for="<?php echo "f{$kID}"; ?>"><?php echo $vCol['label']; ?>
  400. <i class="glyphicon glyphicon-info-sign frm-help" data-toggle="popover" data-trigger="hover" title="" data-content="<?php echo htmlspecialchars($vCol['opis']); ?>" data-original-title="<?php echo "[{$kID}] {$vCol['name']}"; ?>"></i>
  401. <?php $perms = $this->_korespAcl->getFieldPerms($kID); SE_Layout::hotKeyDBG($perms); ?>
  402. </label>
  403. <div class="col-sm-9">
  404. <?php
  405. $fieldParams = array('appendBack'=>true, 'tabindex'=>(++$tabindex), 'maxGrid'=>8);
  406. echo $this->_korespAcl->showFormItem('C', $kID, "f{$kID}", $cols[$kID], $fieldParams);
  407. ?>
  408. </div>
  409. </div>
  410. <?php endif; ?>
  411. <?php endforeach; ?>
  412. <div class="form-group">
  413. <div class="col-sm-9 col-sm-offset-3">
  414. <button type="submit" class="btn btn-primary" tabindex="<?php echo (++$tabindex); ?>">Dodaj rekord</button>
  415. </div>
  416. </div>
  417. </fieldset>
  418. </form>
  419. </div>
  420. <script>
  421. jQuery(document).ready(function(){
  422. jQuery('textarea').autosize();
  423. jQuery('.frm-help').popover({trigger:'hover'});
  424. });
  425. </script>
  426. <?php
  427. }
  428. public function saveCreateKorespOutForm($problem, $args) {
  429. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  430. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save('.$problem->ID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($args);echo'</pre>';}
  431. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">acl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_korespAcl);echo'</pre>';}
  432. $dbID = $this->_korespAcl->getDB();
  433. $db = DB::getDB($dbID);
  434. if (!$db) return false;
  435. $tblName = $this->_korespAcl->getName();
  436. $sqlObj = new stdClass();
  437. $fields = $this->_korespAcl->getFields();
  438. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">fields (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fields);echo'</pre>';}
  439. foreach ($fields as $kID => $vField) {
  440. if (!$this->_korespAcl->isAllowed($kID, 'C')) {
  441. continue;
  442. }
  443. if (array_key_exists("f{$kID}", $args)) {
  444. $sqlObj->{$vField['name']} = $args["f{$kID}"];
  445. if (empty($args["f{$kID}"]) && strlen($args["f{$kID}"]) == 0) {// fix bug in input type date and value="0000-00-00"
  446. $sqlObj->{$vField['name']} = $this->_korespAcl->fixEmptyValueFromUser($kID);
  447. }
  448. }
  449. }
  450. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
  451. $retID = $db->ADD_NEW_OBJ($tblName, $sqlObj);
  452. if ($retID > 0) {
  453. ?>
  454. <div class="alert alert-success">
  455. Utworzono pomyślnie rekord Nr <?php echo $retID; ?>
  456. </div>
  457. <?php
  458. $dbProblemId = $this->_acl->getDB();
  459. $dbProblem = DB::getDB($dbProblemId);
  460. $tblProblemName = $this->_acl->getName();
  461. $sqlProblemObj = new stdClass();
  462. $sqlProblemObj->ID = $problem->ID;
  463. $sqlProblemObj->ID_KORESP_OUT = $retID;
  464. // TODO: ? $sqlProblemObj->data real "data realizacji" defautl today - date('Y-m-d')
  465. $affectes = $dbProblem->UPDATE_OBJ($tblProblemName, $sqlProblemObj);
  466. return true;
  467. }
  468. ?>
  469. <div class="alert alert-danger">
  470. Wystąpił błąd podczas tworzenia rekordu
  471. <?php
  472. if ($db->has_errors()) {
  473. $outArr = array();
  474. $errorsSql = $db->get_errors();
  475. foreach ($errorsSql as $vErr) {
  476. if (substr($vErr, 0, 18) == 'SQL QUERY FAILED: ') {
  477. $vErr = substr($vErr, 18);
  478. // Duplicate entry '123456-1' for key 'P_NIP'
  479. if (substr($vErr, 0, 16) == 'Duplicate entry ') {
  480. }
  481. }
  482. $outArr[] = $vErr;
  483. }
  484. echo implode('<br>', $outArr);
  485. }
  486. ?>
  487. </div>
  488. <?php
  489. return false;
  490. }
  491. public function ___sendAjaxCreateSave($args) {
  492. header("Content-type: application/json");
  493. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  494. sleep(1);// TODO: RMME DBG loading
  495. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save ID(' . $id . ') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($args);echo'</pre>';}
  496. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">acl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_acl);echo'</pre>';}
  497. $dbID = $this->_acl->getDB();
  498. $db = DB::getDB($dbID);
  499. if (!$db) {
  500. header('HTTP/1.0 406 Not Acceptable');
  501. echo '{"type":"ERROR", "msg": "' . "Błąd połączenia z bazą danych!" . '"}';
  502. exit;
  503. }
  504. $tblName = $this->_acl->getName();
  505. $sqlObj = new stdClass();
  506. $fields = $this->_acl->getFields();
  507. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">fields (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fields);echo'</pre>';}
  508. foreach ($fields as $kID => $vField) {
  509. if (!$this->_acl->isAllowed($kID, 'C')) {
  510. continue;
  511. }
  512. if (array_key_exists("f{$kID}", $args)) {
  513. $sqlObj->{$vField['name']} = $args["f{$kID}"];
  514. if (empty($args["f{$kID}"]) && strlen($args["f{$kID}"]) == 0) {// fix bug in input type date and value="0000-00-00"
  515. $sqlObj->{$vField['name']} = $this->_acl->fixEmptyValueFromUser($kID);
  516. }
  517. }
  518. }
  519. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
  520. $retID = $db->ADD_NEW_OBJ($tblName, $sqlObj);
  521. $retJson = new stdClass();
  522. $retJson->type = '';
  523. $retJson->msg = '';
  524. if ($retID > 0) {
  525. $retJson->type = 'SUCCESS';
  526. $retJson->msg = "Utworzono pomyślnie rekord: ID = {$retID}";
  527. $retJson->id = $retID;
  528. } else {
  529. header('HTTP/1.0 404 Not Found');
  530. $retJson->type = 'ERROR';
  531. $retJson->msg = "";
  532. if ($db->has_errors()) {
  533. $outArr = array();
  534. $errorsSql = $db->get_errors();
  535. foreach ($errorsSql as $vErr) {
  536. if (substr($vErr, 0, 18) == 'SQL QUERY FAILED: ') {
  537. $vErr = substr($vErr, 18);
  538. // Duplicate entry '123456-1' for key 'P_NIP'
  539. if (substr($vErr, 0, 16) == 'Duplicate entry ') {
  540. }
  541. }
  542. $outArr[] = $vErr;
  543. }
  544. $retJson->msg .= implode('<br>', $outArr);
  545. }
  546. }
  547. echo json_encode($retJson);
  548. exit;
  549. }
  550. }