Browse Source

moved from DB to PDO in Przypomnij

Piotr Labudda 8 years ago
parent
commit
7fcc1965e6
1 changed files with 156 additions and 173 deletions
  1. 156 173
      SE/se-lib/Przypomnij.php

+ 156 - 173
SE/se-lib/Przypomnij.php

@@ -32,8 +32,6 @@ class Przypomnij {
 	}
 	}
 
 
 	public function fetchData($usrLogin = null) {
 	public function fetchData($usrLogin = null) {
-		$db = DB::getDB();
-
 		if (!$usrLogin) {
 		if (!$usrLogin) {
 			$usrLogin = User::getLogin();
 			$usrLogin = User::getLogin();
 			$usrAclGroups = User::getLdapGroupsNames();
 			$usrAclGroups = User::getLdapGroupsNames();
@@ -58,7 +56,8 @@ class Przypomnij {
 					or kor.`L_APPOITMENT_USER`='{$usrLogin}'
 					or kor.`L_APPOITMENT_USER`='{$usrLogin}'
 					)
 					)
 		";
 		";
-		$sql = "select kor.ID
+		$sql = "
+			select kor.ID
 				, kor.ID_PROJECT
 				, kor.ID_PROJECT
 				, kor.A_STATUS
 				, kor.A_STATUS
 				, kor.L_APPOITMENT_USER
 				, kor.L_APPOITMENT_USER
@@ -69,30 +68,30 @@ class Przypomnij {
 				, kor.A_RECORD_UPDATE_DATE
 				, kor.A_RECORD_UPDATE_DATE
 				, kor.A_RECORD_UPDATE_AUTHOR
 				, kor.A_RECORD_UPDATE_AUTHOR
 				, kor.K_TYP_KORESP, kor.K_TYP_RODZAJ
 				, kor.K_TYP_KORESP, kor.K_TYP_RODZAJ
-				-- ? , kor.K_TYP_RODZAJ_OPIS
+				-- , kor.K_TYP_RODZAJ_OPIS
 				, kor.K_OD_KOGO
 				, kor.K_OD_KOGO
 				, kor.OD_KOGO_ADRES
 				, kor.OD_KOGO_ADRES
 				, kor.K_ZAWARTOS
 				, kor.K_ZAWARTOS
-				-- TODO:	, proj.M_DIST_DESC
+				-- , proj.M_DIST_DESC
 				, kor.K_LOKALIZACJA
 				, kor.K_LOKALIZACJA
 				, kor.K_LOKALIZACJA_OPIS
 				, kor.K_LOKALIZACJA_OPIS
 			from `IN7_DZIENNIK_KORESP` as kor
 			from `IN7_DZIENNIK_KORESP` as kor
 			where kor.`A_STATUS` not in ('OFF_HARD','DELETED')
 			where kor.`A_STATUS` not in ('OFF_HARD','DELETED')
 				{$sqlAclFltrKoresp}
 				{$sqlAclFltrKoresp}
 		";
 		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$r->A_RECORD_CREATE_DATE = $this->fixDateFormat($r->A_RECORD_CREATE_DATE);
-			$r->A_RECORD_UPDATE_DATE = $this->fixDateFormat($r->A_RECORD_UPDATE_DATE);
-			$r->_task_type = 'koresp';
-			$r->_show = false;
-			$r->_acl_proj_id = (int)$r->ID_PROJECT;
-			$r->_title = "<strong>{$r->K_OD_KOGO}</strong><br><em>{$r->OD_KOGO_ADRES}</em><br>{$r->K_ZAWARTOS}";
-			$r->_type = "{$r->K_TYP_KORESP}-{$r->K_TYP_RODZAJ}";
-			$r->_l_app = $r->L_APPOITMENT_USER;
-			$r->_l_app_date = $r->L_APPOITMENT_DATE;
-			$this->_data['koresp'][$r->ID] = $r;
-		}
+		$this->_data['koresp'] = array_map(function ($row) {
+			return (object)array_merge($row, [
+				'A_RECORD_CREATE_DATE' => $this->fixDateFormat($row['A_RECORD_CREATE_DATE']),
+				'A_RECORD_UPDATE_DATE' => $this->fixDateFormat($row['A_RECORD_UPDATE_DATE']),
+				'_task_type' => 'koresp',
+				'_show' => false,
+				'_acl_proj_id' => (int)$row['ID_PROJECT'],
+				'_title' => "<strong>{$row['K_OD_KOGO']}</strong><br><em>{$row['OD_KOGO_ADRES']}</em><br>{$row['K_ZAWARTOS']}",
+				'_type' => "{$row['K_TYP_KORESP']}-{$row['K_TYP_RODZAJ']}",
+				'_l_app' => $row['L_APPOITMENT_USER'],
+				'_l_app_date' => $row['L_APPOITMENT_DATE'],
+			]);
+		}, DB::getPDO()->fetchAllByKey($sql, $key = 'ID'));
 
 
 		$sqlAclFltrProj = "
 		$sqlAclFltrProj = "
 			and (proj.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
 			and (proj.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
@@ -100,7 +99,8 @@ class Przypomnij {
 					or proj.`L_APPOITMENT_USER`='{$usrLogin}'
 					or proj.`L_APPOITMENT_USER`='{$usrLogin}'
 					)
 					)
 		";
 		";
-		$sql = "select proj.ID
+		$sql = "
+			select proj.ID
 				, proj.P_ID
 				, proj.P_ID
 				, proj.A_STATUS
 				, proj.A_STATUS
 				, proj.M_DIST_DESC
 				, proj.M_DIST_DESC
@@ -120,20 +120,20 @@ class Przypomnij {
 			where proj.`A_STATUS` NOT IN ('OFF_HARD','DELETED')
 			where proj.`A_STATUS` NOT IN ('OFF_HARD','DELETED')
 				{$sqlAclFltrProj}
 				{$sqlAclFltrProj}
 		";
 		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$r->A_RECORD_CREATE_DATE = $this->fixDateFormat($r->A_RECORD_CREATE_DATE);
-			$r->A_RECORD_UPDATE_DATE = $this->fixDateFormat($r->A_RECORD_UPDATE_DATE);
-			$r->M_DIST_DESC = htmlspecialchars($r->M_DIST_DESC);// TODO: fix bug in html a href inside M_DIST_DESC
-			$r->_task_type = 'projekt';
-			$r->_show = false;
-			$r->_acl_proj_id = (int)$r->P_ID;
-			$r->_title = $r->M_DIST_DESC;
-			$r->_type = $r->M_DIST_TYPE;
-			$r->_l_app = $r->L_APPOITMENT_USER;
-			$r->_l_app_date = $r->L_APPOITMENT_DATE;
-			$this->_data['projekt'][$r->ID] = $r;
-		}
+		$this->_data['projekt'] = array_map(function ($row) {
+			return (object)array_merge($row, [
+				'A_RECORD_CREATE_DATE' => $this->fixDateFormat($row['A_RECORD_CREATE_DATE']),
+				'A_RECORD_UPDATE_DATE' => $this->fixDateFormat($row['A_RECORD_UPDATE_DATE']),
+				'M_DIST_DESC' => htmlspecialchars($row['M_DIST_DESC']), // TODO: fix bug in html a href inside M_DIST_DES
+				'_task_type' => 'projekt',
+				'_show' => false,
+				'_acl_proj_id' => (int)$row['P_ID'],
+				'_title' => $row['M_DIST_DESC'],
+				'_type' => $row['M_DIST_TYPE'],
+				'_l_app' => $row['L_APPOITMENT_USER'],
+				'_l_app_date' => $row['L_APPOITMENT_DATE'],
+			]);
+		}, DB::getPDO()->fetchAllByKey($sql, $key = 'ID'));
 
 
 		$sqlAclFltrProces = "
 		$sqlAclFltrProces = "
 			and (p.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
 			and (p.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
@@ -141,7 +141,8 @@ class Przypomnij {
 					or p.`L_APPOITMENT_USER`='{$usrLogin}'
 					or p.`L_APPOITMENT_USER`='{$usrLogin}'
 					)
 					)
 		";
 		";
-		$sql = "select p.ID
+		$sql = "
+			select p.ID
 				, p.`DESC`
 				, p.`DESC`
 				, p.`A_STATUS`
 				, p.`A_STATUS`
 				, p.`TYPE`
 				, p.`TYPE`
@@ -159,18 +160,18 @@ class Przypomnij {
 				and p.`L_APPOITMENT_USER`!=''
 				and p.`L_APPOITMENT_USER`!=''
 				{$sqlAclFltrProces}
 				{$sqlAclFltrProces}
 		";
 		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$r->A_RECORD_CREATE_DATE = $this->fixDateFormat($r->A_RECORD_CREATE_DATE);
-			$r->A_RECORD_UPDATE_DATE = $this->fixDateFormat($r->A_RECORD_UPDATE_DATE);
-			$r->_task_type = 'proces';
-			$r->_show = false;
-			$r->_title = $r->DESC;
-			$r->_type = $r->TYPE;
-			$r->_l_app = $r->L_APPOITMENT_USER;
-			$r->_l_app_date = $r->L_APPOITMENT_DATE;
-			$this->_data['proces'][$r->ID] = $r;
-		}
+		$this->_data['proces'] = array_map(function ($row) {
+			return (object)array_merge($row, [
+				'A_RECORD_CREATE_DATE' => $this->fixDateFormat($row['A_RECORD_CREATE_DATE']),
+				'A_RECORD_UPDATE_DATE' => $this->fixDateFormat($row['A_RECORD_UPDATE_DATE']),
+				'_task_type' => 'proces',
+				'_show' => false,
+				'_title' => $row['DESC'],
+				'_type' => $row['TYPE'],
+				'_l_app' => $row['L_APPOITMENT_USER'],
+				'_l_app_date' => $row['L_APPOITMENT_DATE'],
+			]);
+		}, DB::getPDO()->fetchAllByKey($sql, $key = 'ID'));
 
 
 		$sqlAclFltrProblems = "
 		$sqlAclFltrProblems = "
 			and (probl.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
 			and (probl.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
@@ -178,7 +179,8 @@ class Przypomnij {
 					or probl.`L_APPOITMENT_USER`='{$usrLogin}'
 					or probl.`L_APPOITMENT_USER`='{$usrLogin}'
 					)
 					)
 		";
 		";
-		$sql = "select probl.ID
+		$sql = "
+			select probl.ID
 				, probl.PARENT_ID
 				, probl.PARENT_ID
 				, probl.A_STATUS
 				, probl.A_STATUS
 				, probl.L_APPOITMENT_DATE
 				, probl.L_APPOITMENT_DATE
@@ -196,19 +198,19 @@ class Przypomnij {
 				and probl.`L_APPOITMENT_USER`!=''
 				and probl.`L_APPOITMENT_USER`!=''
 				{$sqlAclFltrProblems}
 				{$sqlAclFltrProblems}
 		";
 		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$r->A_RECORD_CREATE_DATE = $this->fixDateFormat($r->A_RECORD_CREATE_DATE);
-			$r->A_RECORD_UPDATE_DATE = $this->fixDateFormat($r->A_RECORD_UPDATE_DATE);
-			$r->A_PROBLEM_DESC = htmlspecialchars($r->A_PROBLEM_DESC);
-			$r->_task_type = 'task';
-			$r->_show = false;
-			$r->_title = $r->A_PROBLEM_DESC;
-			$r->_type = $r->M_DIST_TYPE;
-			$r->_l_app = $r->L_APPOITMENT_USER;
-			$r->_l_app_date = $r->L_APPOITMENT_DATE;
-			$this->_data['task'][$r->ID] = $r;
-		}
+		$this->_data['task'] = array_map(function ($row) {
+			return (object)array_merge($row, [
+				'A_RECORD_CREATE_DATE' => $this->fixDateFormat($row['A_RECORD_CREATE_DATE']),
+				'A_RECORD_UPDATE_DATE' => $this->fixDateFormat($row['A_RECORD_UPDATE_DATE']),
+				'A_PROBLEM_DESC' => htmlspecialchars($row['A_PROBLEM_DESC']),
+				'_task_type' => 'task',
+				'_show' => false,
+				'_title' => $row['A_PROBLEM_DESC'],
+				'_type' => $row['M_DIST_TYPE'],
+				'_l_app' => $row['L_APPOITMENT_USER'],
+				'_l_app_date' => $row['L_APPOITMENT_DATE'],
+			]);
+		}, DB::getPDO()->fetchAllByKey($sql, $key = 'ID'));
 
 
 		$sqlAclFltrProces = "
 		$sqlAclFltrProces = "
 			and (p.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
 			and (p.`A_ADM_COMPANY` in({$sqlUsrAclGroups}, '')
@@ -216,7 +218,8 @@ class Przypomnij {
 					or p.`L_APPOITMENT_USER`='{$usrLogin}'
 					or p.`L_APPOITMENT_USER`='{$usrLogin}'
 					)
 					)
 		";
 		";
-		$sql = "select p.ID
+		$sql = "
+			select p.ID
 				, p.`DESC`
 				, p.`DESC`
 				, p.`A_STATUS`
 				, p.`A_STATUS`
 				, p.`TYPE`
 				, p.`TYPE`
@@ -233,19 +236,20 @@ class Przypomnij {
 				and p.`L_APPOITMENT_USER`!=''
 				and p.`L_APPOITMENT_USER`!=''
 				{$sqlAclFltrProces}
 				{$sqlAclFltrProces}
 		";
 		";
-		$res = $db->query($sql);
-		while ($r = $db->fetch($res)) {
-			$r->A_RECORD_CREATE_DATE = $this->fixDateFormat($r->A_RECORD_CREATE_DATE);
-			$r->A_RECORD_UPDATE_DATE = $this->fixDateFormat($r->A_RECORD_UPDATE_DATE);
-			$r->_task_type = 'zasob';
-			$r->_show = false;
-			$r->_title = $r->DESC;
-			$r->_type = $r->TYPE;
-			$r->_l_app = $r->L_APPOITMENT_USER;
-			$r->_l_app_date = $r->L_APPOITMENT_DATE;
-			$this->_data['zasob'][$r->ID] = $r;
-		}
-
+		$this->_data['zasob'] = array_map(function ($row) {
+			return (object)array_merge($row, [
+				'A_RECORD_CREATE_DATE' => $this->fixDateFormat($row['A_RECORD_CREATE_DATE']),
+				'A_RECORD_UPDATE_DATE' => $this->fixDateFormat($row['A_RECORD_UPDATE_DATE']),
+				'_task_type' => 'zasob',
+				'_show' => false,
+				'_title' => $row['DESC'],
+				'_type' => $row['TYPE'],
+				'_l_app' => $row['L_APPOITMENT_USER'],
+				'_l_app_date' => $row['L_APPOITMENT_DATE'],
+			]);
+		}, DB::getPDO()->fetchAllByKey($sql, $key = 'ID'));
+
+		DBG::log($this->_data, 'array', "DBG: Przypomnij->_data");
 		$this->_fetchLAppUsers();
 		$this->_fetchLAppUsers();
 	}
 	}
 
 
@@ -273,7 +277,6 @@ class Przypomnij {
 	}
 	}
 
 
 	private function _fetchLAppUsers() {
 	private function _fetchLAppUsers() {
-		$this->_createCacheTable();
 		$this->_updateCacheTable();
 		$this->_updateCacheTable();
 
 
 		$projTodo = array();
 		$projTodo = array();
@@ -296,46 +299,44 @@ class Przypomnij {
 			return;
 			return;
 		}
 		}
 
 
-		$db = DB::getDB();
 		$projIds = array_keys($projTodo);
 		$projIds = array_keys($projTodo);
-		$sql = "select c.`ID`, c.`ID_PROJECT`, c.`L_APPOITMENT_USER`, c.`L_APPOITMENT_DATE`
-			from `_PRZYPOMNIJ_CACHE` as c
-			where c.`ID_PROJECT` in(" . implode(",", $projIds) . ")
-		";
-if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
-		$res = $db->query($sql);
-		if (!$res) {
-			if ($db->has_errors()) {
-				echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">DB Errors: (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'</pre>';
-			}
-		}
-		while ($r = $db->fetch($res)) {
-			foreach ($projTodo[$r->ID_PROJECT] as $kRowId => $vType) {
-				if ($vType == 'projekt') {
-					if (isset($this->_data['projekt'][$kRowId])) {
-						if (!empty($r->L_APPOITMENT_USER)) {
-							$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+		try {
+			$toUpdateByCache = DB::getPDO()->fetchAll("
+				select c.`ID`, c.`ID_PROJECT`, c.`L_APPOITMENT_USER`, c.`L_APPOITMENT_DATE`
+				from `_PRZYPOMNIJ_CACHE` as c
+				where c.`ID_PROJECT` in(" . implode(",", $projIds) . ")
+			");
+			foreach ($toUpdateByCache as $row) {
+				$r = (object)$row;
+				foreach ($projTodo[$r->ID_PROJECT] as $kRowId => $vType) {
+					if ($vType == 'projekt') {
+						if (isset($this->_data['projekt'][$kRowId])) {
+							if (!empty($r->L_APPOITMENT_USER)) {
+								$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+							}
+						} else {
+							//echo '<p style="color:red">'."Error not set \$this->_data['projekt'][$kRowId]".'</p>';
 						}
 						}
-					} else {
-						//echo '<p style="color:red">'."Error not set \$this->_data['projekt'][$kRowId]".'</p>';
 					}
 					}
-				}
-				else if ($vType == 'koresp') {
-					if (!empty($r->L_APPOITMENT_USER)) {
-						$this->_data['koresp'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
-						if (!empty($r->L_APPOITMENT_DATE) && empty($this->_data['koresp'][$kRowId]->_l_app_date)) {
-							//$this->_data['koresp'][$kRowId]->_l_app_date = $r->L_APPOITMENT_DATE;
-							$this->_data['koresp'][$kRowId]->_l_app_date = '0000-00-00';
+					else if ($vType == 'koresp') {
+						if (!empty($r->L_APPOITMENT_USER)) {
+							$this->_data['koresp'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+							if (!empty($r->L_APPOITMENT_DATE) && empty($this->_data['koresp'][$kRowId]->_l_app_date)) {
+								//$this->_data['koresp'][$kRowId]->_l_app_date = $r->L_APPOITMENT_DATE;
+								$this->_data['koresp'][$kRowId]->_l_app_date = '0000-00-00';
+							}
 						}
 						}
 					}
 					}
 				}
 				}
 			}
 			}
+		} catch (Exception $e) {
+			DBG::log($e);
+			UI::alert('danger', $e->getMessage());
 		}
 		}
 	}
 	}
 
 
 	private function _fetchLAppUsersRec() {
 	private function _fetchLAppUsersRec() {
 		$projTodo = array();
 		$projTodo = array();
-		$db = DB::getDB();
 		$loopLimit = $this->_deepRecurseLimit;
 		$loopLimit = $this->_deepRecurseLimit;
 		$firstLoop = true;
 		$firstLoop = true;
 		do {
 		do {
@@ -385,58 +386,52 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 			if ($firstLoop) $firstLoop = false;
 			if ($firstLoop) $firstLoop = false;
 
 
 			if (empty($projTodo)) {
 			if (empty($projTodo)) {
-				if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">loop(' . ($this->_deepRecurseLimit - $loopLimit) . ')  (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r("break loop " . ($this->_deepRecurseLimit - $loopLimit));echo'</pre>';}
 				break;
 				break;
 			}
 			}
-			if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">loop(' . ($this->_deepRecurseLimit - $loopLimit) . ') $projTodo (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($projTodo);echo'</pre>';}
 			$projIds = array_keys($projTodo);
 			$projIds = array_keys($projTodo);
-			$sql = "select `ID`, `P_ID`, `L_APPOITMENT_USER`, `L_APPOITMENT_USER`
-				from `IN7_MK_BAZA_DYSTRYBUCJI`
-				where `ID` in(" . implode(",", $projIds) . ")
-			";
-			if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">loop(' . ($this->_deepRecurseLimit - $loopLimit) . ') sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
-			$res = $db->query($sql);
-			if (!$res) {
-				if ($db->has_errors()) {
-					echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">DB Errors: (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'</pre>';
-				}
-			}
-			while ($r = $db->fetch($res)) {
-				//if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">loop(' . ($this->_deepRecurseLimit - $loopLimit) . ') r [isset($projTodo[$r->ID]) = '.isset($projTodo[$r->ID]).'] (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($r);echo'</pre>';}
-				foreach ($projTodo[$r->ID] as $kRowId => $vType) {
-					if ($vType == 'projekt') {
-						if (isset($this->_data['projekt'][$kRowId])) {
-							$this->_data['projekt'][$kRowId]->_acl_proj_id = (int)$r->P_ID;
+			try {
+				$toUpdateByCache = DB::getPDO()->fetchAll("
+					select `ID`, `P_ID`, `L_APPOITMENT_USER`, `L_APPOITMENT_USER`
+					from `IN7_MK_BAZA_DYSTRYBUCJI`
+					where `ID` in(" . implode(",", $projIds) . ")
+				");
+				foreach ($toUpdateByCache as $row) {
+					$r = (object)$row;
+					foreach ($projTodo[$r->ID] as $kRowId => $vType) {
+						if ($vType == 'projekt') {
+							if (isset($this->_data['projekt'][$kRowId])) {
+								$this->_data['projekt'][$kRowId]->_acl_proj_id = (int)$r->P_ID;
+								if (!empty($r->L_APPOITMENT_USER)) {
+									$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+									//if (!empty($r->L_APPOINTMENT_DATE)) {
+									//	$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+									//}
+								}
+							} else {
+								echo '<p style="color:red">'."Error not set \$this->_data['projekt'][$kRowId]".'</p>';
+							}
+						} else if ($vType == 'koresp') {
+							$this->_data['koresp'][$kRowId]->_acl_proj_id = (int)$r->P_ID;
 							if (!empty($r->L_APPOITMENT_USER)) {
 							if (!empty($r->L_APPOITMENT_USER)) {
-								$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
+								$this->_data['koresp'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
 								//if (!empty($r->L_APPOINTMENT_DATE)) {
 								//if (!empty($r->L_APPOINTMENT_DATE)) {
 								//	$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
 								//	$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
 								//}
 								//}
 							}
 							}
-						} else {
-							echo '<p style="color:red">'."Error not set \$this->_data['projekt'][$kRowId]".'</p>';
-						}
-					} else if ($vType == 'koresp') {
-						$this->_data['koresp'][$kRowId]->_acl_proj_id = (int)$r->P_ID;
-						if (!empty($r->L_APPOITMENT_USER)) {
-							$this->_data['koresp'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
-							//if (!empty($r->L_APPOINTMENT_DATE)) {
-							//	$this->_data['projekt'][$kRowId]->_l_app = $r->L_APPOITMENT_USER;
-							//}
 						}
 						}
 					}
 					}
-				}
 
 
-				unset($projTodo[$r->ID]);
+					unset($projTodo[$r->ID]);
+				}
+			} catch (Exception $e) {
+				DBG::log($e);
+				UI::alert('danger', $e->getMessage());
 			}
 			}
-if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">loop(' . ($this->_deepRecurseLimit - $loopLimit) . ') this->_data (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_data);echo'</pre>';}
-
 		} while (--$loopLimit);
 		} while (--$loopLimit);
 	}
 	}
 
 
 	public function getAllowedUsersList() {
 	public function getAllowedUsersList() {
 		$allowedUsers = array();
 		$allowedUsers = array();
-		$db = DB::getDB();
 
 
 		$usrLogin = User::getLogin();
 		$usrLogin = User::getLogin();
 		$usrAclGroups = User::getLdapGroupsNames();
 		$usrAclGroups = User::getLdapGroupsNames();
@@ -473,17 +468,16 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 						}
 						}
 						$sqlAclFltr = " and {$sqlFltr}";
 						$sqlAclFltr = " and {$sqlFltr}";
 					}
 					}
-					$sql = "select distinct t.`L_APPOITMENT_USER`
+					$sql = "
+						select distinct t.`L_APPOITMENT_USER`
 						from `{$tblName}` t
 						from `{$tblName}` t
 						where t.`L_APPOITMENT_USER`!=''
 						where t.`L_APPOITMENT_USER`!=''
 							and t.`A_STATUS` not in ('OFF_HARD','DELETED')
 							and t.`A_STATUS` not in ('OFF_HARD','DELETED')
 							{$sqlAclFltr}
 							{$sqlAclFltr}
 					";
 					";
-					$res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
-					while ($r = $db->fetch($res)) {
-						$allowedUsers[$r->L_APPOITMENT_USER] = true;
+					foreach (DB::getPDO()->fetchValuesList($sql) as $userLogin) {
+						$allowedUsers[$userLogin] = true;
 					}
 					}
-					DBG::_('DBG_P', '>2', 'allowedUsers after '.$tblName.'', implode(',', array_keys($allowedUsers)), __CLASS__, __FUNCTION__, __LINE__);
 				}
 				}
 			}
 			}
 		}
 		}
@@ -518,15 +512,14 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 			}
 			}
 			$sqlFoundUsers = array_keys($allowedUsers);
 			$sqlFoundUsers = array_keys($allowedUsers);
 			$sqlFoundUsers = "'" . implode("','", $sqlFoundUsers) . "'";
 			$sqlFoundUsers = "'" . implode("','", $sqlFoundUsers) . "'";
-			$sql = "select t.`ADM_ACCOUNT`
+			$sql = "
+				select t.`ADM_ACCOUNT`
 				from `{$tblName}` t
 				from `{$tblName}` t
 				where t.`ADM_ACCOUNT` in({$sqlFoundUsers})
 				where t.`ADM_ACCOUNT` in({$sqlFoundUsers})
 					{$sqlAclFltr}
 					{$sqlAclFltr}
 			";
 			";
-			DBG::_('DBG_P', '>2', 'sql', $sql, __CLASS__, __FUNCTION__, __LINE__);
-			$res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
-			while ($r = $db->fetch($res)) {
-				$allowedUsersFiltered[$r->ADM_ACCOUNT] = true;
+			foreach (DB::getPDO()->fetchValuesList($sql) as $userLogin) {
+				$allowedUsersFiltered[$userLogin] = true;
 			}
 			}
 			$allowedUsers = $allowedUsersFiltered;
 			$allowedUsers = $allowedUsersFiltered;
 		}
 		}
@@ -538,8 +531,8 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 	}
 	}
 
 
 	private function _createCacheTable() {
 	private function _createCacheTable() {
-		$db = DB::getDB();
-		$sql = "CREATE TABLE IF NOT EXISTS `_PRZYPOMNIJ_CACHE` (
+		DB::getPDO()->execSql("
+			CREATE TABLE IF NOT EXISTS `_PRZYPOMNIJ_CACHE` (
 				`ID` int(11) NOT NULL AUTO_INCREMENT,
 				`ID` int(11) NOT NULL AUTO_INCREMENT,
 				`ID_PROJECT` int(11) NOT NULL,
 				`ID_PROJECT` int(11) NOT NULL,
 				`_l_app_user` varchar(40) NOT NULL DEFAULT '',
 				`_l_app_user` varchar(40) NOT NULL DEFAULT '',
@@ -561,24 +554,22 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 				KEY `P_ID` (`P_ID`),
 				KEY `P_ID` (`P_ID`),
 				KEY `ID_PROJECT` (`ID_PROJECT`)
 				KEY `ID_PROJECT` (`ID_PROJECT`)
 			) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
 			) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
-		";
-		if(V::get('DBG_P', '', $_GET) > 3){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
-		$db->query($sql);
+		");
 	}
 	}
 
 
 	private function _updateCacheTable() {
 	private function _updateCacheTable() {
-		$db = DB::getDB();
-		$sql = "truncate table `_PRZYPOMNIJ_CACHE`; ";
-		$db->query($sql);
-		$sql = "insert into `_PRZYPOMNIJ_CACHE` (`ID_PROJECT`,`P_ID`,`_l_app_user`,`L_APPOITMENT_USER`,`L_APPOITMENT_DATE`)
+		$this->_createCacheTable();
+		DB::getPDO()->execSql(" truncate table `_PRZYPOMNIJ_CACHE` ");
+		DB::getPDO()->execSql("
+			insert into `_PRZYPOMNIJ_CACHE` (`ID_PROJECT`,`P_ID`,`_l_app_user`,`L_APPOITMENT_USER`,`L_APPOITMENT_DATE`)
 			select `ID`,`P_ID`,`L_APPOITMENT_USER`,`L_APPOITMENT_USER`,`L_APPOITMENT_DATE`
 			select `ID`,`P_ID`,`L_APPOITMENT_USER`,`L_APPOITMENT_USER`,`L_APPOITMENT_DATE`
 			from `IN7_MK_BAZA_DYSTRYBUCJI`
 			from `IN7_MK_BAZA_DYSTRYBUCJI`
 				where 1=1
 				where 1=1
-		";
-		$db->query($sql);
+		");
 
 
 		// test recurse update l_app
 		// test recurse update l_app
-		$sql = "select c._l_app_user
+		$sql = "
+			select c._l_app_user
 				, p.L_APPOITMENT_USER
 				, p.L_APPOITMENT_USER
 				, p1.L_APPOITMENT_USER
 				, p1.L_APPOITMENT_USER
 				, p2.L_APPOITMENT_USER
 				, p2.L_APPOITMENT_USER
@@ -602,7 +593,8 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 		";
 		";
 
 
 		// for i to recurse limit
 		// for i to recurse limit
-		$sql = "update `_PRZYPOMNIJ_CACHE` as c
+		$sql = "
+			update `_PRZYPOMNIJ_CACHE` as c
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p on (p.ID=c.ID_PROJECT)
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p on (p.ID=c.ID_PROJECT)
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p1 on (p1.ID=p.P_ID)
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p1 on (p1.ID=p.P_ID)
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p2 on (p2.ID=p1.P_ID)
 				left join `IN7_MK_BAZA_DYSTRYBUCJI` as p2 on (p2.ID=p1.P_ID)
@@ -625,7 +617,7 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 				)
 				)
 			where c.`_l_app_user`=''
 			where c.`_l_app_user`=''
 		";
 		";
-		$db->query($sql);
+		DB::getPDO()->execSql($sql);
 	}
 	}
 
 
 	public function orderByDateAsc($t1, $t2) {
 	public function orderByDateAsc($t1, $t2) {
@@ -917,7 +909,6 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 
 
 	public function sendAjaxEditAppDateInlineSave() {
 	public function sendAjaxEditAppDateInlineSave() {
 		$DBG = ('1' == V::get('DBG', '', $_REQUEST));
 		$DBG = ('1' == V::get('DBG', '', $_REQUEST));
-		sleep(1);// TODO: RMME DBG loading
 
 
 		$rowID = V::get('rowid', 0, $_POST, 'int');
 		$rowID = V::get('rowid', 0, $_POST, 'int');
 		$type = V::get('type', '', $_POST);
 		$type = V::get('type', '', $_POST);
@@ -956,7 +947,6 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 				if ($DBG) echo "404: No field by name ({$fieldName})";
 				if ($DBG) echo "404: No field by name ({$fieldName})";
 				continue;
 				continue;
 			}
 			}
-			if ($DBG) echo "fieldID: {$fieldID}\n";
 
 
 			if (!$tblAcl->isAllowed($fieldID, 'W', $row)) {
 			if (!$tblAcl->isAllowed($fieldID, 'W', $row)) {
 				if ($DBG) echo " W not allowed\n";
 				if ($DBG) echo " W not allowed\n";
@@ -972,26 +962,19 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 				$sqlObj->{$fieldName} = $tblAcl->fixEmptyValueFromUser($fieldID);
 				$sqlObj->{$fieldName} = $tblAcl->fixEmptyValueFromUser($fieldID);
 			}
 			}
 		}
 		}
-		if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save type ('.$type.') ID(' . $rowid . ') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
 		$sqlObj->ID = $row->ID;
 		$sqlObj->ID = $row->ID;
 
 
-		$dbID = $tblAcl->getDB();
-		$db = DB::getDB($dbID);
-		if (!$db) {
-			header('HTTP/1.0 406 Not Acceptable');
-			exit;
-		}
-
 		$tblName = $tblAcl->getName();
 		$tblName = $tblAcl->getName();
 
 
 		$sqlObj->ID = $rowID;
 		$sqlObj->ID = $rowID;
-		if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: Save ('.$tblName.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
 
 
 		$allData = array();
 		$allData = array();
 		$allData['L_APPOITMENT_DATE'] = $sqlObj->L_APPOITMENT_DATE;
 		$allData['L_APPOITMENT_DATE'] = $sqlObj->L_APPOITMENT_DATE;
 		$allData['L_APPOITMENT_USER'] = $sqlObj->L_APPOITMENT_USER;
 		$allData['L_APPOITMENT_USER'] = $sqlObj->L_APPOITMENT_USER;
 		$allData['L_APPOITMENT_INFO'] = $sqlObj->L_APPOITMENT_INFO;
 		$allData['L_APPOITMENT_INFO'] = $sqlObj->L_APPOITMENT_INFO;
 
 
+		$dbID = $tblAcl->getDB();
+		$db = DB::getDB($dbID);
 		$ret = $db->UPDATE_OBJ($tblName, $sqlObj);
 		$ret = $db->UPDATE_OBJ($tblName, $sqlObj);
 		if ($ret > 0) {
 		if ($ret > 0) {
 			echo '<div class="alert alert-success">';
 			echo '<div class="alert alert-success">';