Преглед изворни кода

Kontakty view, CSV Numeric field search

Piotr Labudda пре 11 година
родитељ
комит
4f2cfe40ec
5 измењених фајлова са 86 додато и 155 уклоњено
  1. 1 1
      SE/VERSION
  2. 1 0
      SE/procesy/testy.php
  3. 61 27
      SE/se-lib/Data_Source.php
  4. 2 102
      SE/se-lib/ProcesMenu.php
  5. 21 25
      SE/superedit-VIEWTABLE_KONTAKTY.php

+ 1 - 1
SE/VERSION

@@ -1 +1 @@
-3.9.4.1
+3.9.5

+ 1 - 0
SE/procesy/testy.php

@@ -87,6 +87,7 @@ function fun_CRM_TESTY_ADD_KANDYDAT() {
 	$sql_obj->ADM_ACCOUNT = 'Kandydat';
 	$sql_obj->ADM_AREA = 'KANDYDAT';
 	$sql_obj->ADM_ADMIN_DESC = 'Kandydat';
+	$sql_obj->EMPLOYEE_TYPE = 'Kandydat';
 
 	$error = false;
 	if (!$sql_obj->ADM_NAME) {

+ 61 - 27
SE/se-lib/Data_Source.php

@@ -321,33 +321,6 @@ if(V::get('DBG_DS', 0, $_GET) > 0){echo'<pre style="max-height:200px;overflow:au
 		return false;
 	}
 
-	private function _sqlValueForGeomField($fldName, $fltrValue, $tblPrefix = 't') {
-		$sqlFilter = false;
-		// example: BBOX:54.40993961633866,18.583889010112824,54.337945760687454,18.397121431987586
-		if ('BBOX:' == substr($fltrValue, 0, 5)) {
-			$val = substr($fltrValue, 5);
-			$valParts = explode(',', $val);
-			if (count($valParts) == 4) {
-				$isAllNumeric = true;
-				foreach ($valParts as $v) {
-					if (!is_numeric($v)) $isAllNumeric = false;
-				}
-				if ($isAllNumeric) {
-					$bounds = "POLYGON((
-						{$valParts[3]} {$valParts[2]},
-						{$valParts[3]} {$valParts[0]},
-						{$valParts[1]} {$valParts[0]},
-						{$valParts[1]} {$valParts[2]},
-						{$valParts[3]} {$valParts[2]}
-					))";
-					// for mysql 5.6 use ST_Contains() @see http://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions.html
-					$sqlFilter = "Intersects(GeomFromText('{$bounds}'), GeomFromText(AsWKT({$tblPrefix}.`{$fldName}`)))=1";
-				}
-			}
-		}
-		return $sqlFilter;
-	}
-
 	function _parse_sql_where($params = array()) {
 
 		// default filter value
@@ -366,6 +339,11 @@ if(V::get('DBG_DS', 0, $_GET) > 0){echo'<pre style="max-height:200px;overflow:au
 					if ($sqlFilter) $sql_where_and[] = $sqlFilter;
 					continue;
 				}
+				if ($this->isCsvNumericField($fldName)) {
+					$sqlFilter = $this->_sqlValueForCsvNumericField($fldName, $v, 't');
+					if ($sqlFilter) $sql_where_and[] = $sqlFilter;
+					continue;
+				}
 
 				if (substr($v, 0, 1) == '=') {
 					$v = $this->_db->_(substr($v, 1));
@@ -430,6 +408,58 @@ if(V::get('DBG_DS', 0, $_GET) > 0){echo'<pre style="max-height:200px;overflow:au
 		return $sql_where;
 	}
 
+	private function _sqlValueForGeomField($fldName, $fltrValue, $tblPrefix = 't') {
+		$sqlFilter = false;
+		// example: BBOX:54.40993961633866,18.583889010112824,54.337945760687454,18.397121431987586
+		if ('BBOX:' == substr($fltrValue, 0, 5)) {
+			$val = substr($fltrValue, 5);
+			$valParts = explode(',', $val);
+			if (count($valParts) == 4) {
+				$isAllNumeric = true;
+				foreach ($valParts as $v) {
+					if (!is_numeric($v)) $isAllNumeric = false;
+				}
+				if ($isAllNumeric) {
+					$bounds = "POLYGON((
+						{$valParts[3]} {$valParts[2]},
+						{$valParts[3]} {$valParts[0]},
+						{$valParts[1]} {$valParts[0]},
+						{$valParts[1]} {$valParts[2]},
+						{$valParts[3]} {$valParts[2]}
+					))";
+					// for mysql 5.6 use ST_Contains() @see http://dev.mysql.com/doc/refman/5.6/en/spatial-relation-functions.html
+					$sqlFilter = "Intersects(GeomFromText('{$bounds}'), GeomFromText(AsWKT({$tblPrefix}.`{$fldName}`)))=1";
+				}
+			}
+		}
+		return $sqlFilter;
+	}
+
+	private function _sqlValueForCsvNumericField($fldName, $fltrValue, $tblPrefix = 't') {
+		$sqlFilter = false;
+		if (is_numeric($fltrValue)) {
+			$sqlFilter = "FIND_IN_SET('{$fltrValue}', `{$fldName}`)>0";
+		} else if (false !== strpos($fltrValue, ' ')) {
+			$sqlGlue = " or ";
+			$fltrValues = $fltrValue;
+			if ('&' == substr($fltrValues, 0, 1)) {
+				$fltrValues = substr($fltrValues, 1);
+				$sqlGlue = " and ";
+			}
+			$fltrValues = explode(' ', $fltrValues);
+			$sqlNumericValues = array();
+			foreach ($fltrValues as $fltrVal) {
+				if (is_numeric($fltrVal)) {
+					$sqlNumericValues[] = "FIND_IN_SET('{$fltrVal}', `{$fldName}`)>0";
+				}
+			}
+			if (!empty($sqlNumericValues)) {
+				$sqlFilter = "(" . implode($sqlGlue, $sqlNumericValues) . ")";
+			}
+		}
+		return $sqlFilter;
+	}
+
 	function get_item($id) {// TODO: RMME
 		$this->getItem($id);
 	}
@@ -688,6 +718,10 @@ if(V::get('DBG_DS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
 		return in_array($fldName, $this->_geomFields);
 	}
 
+	public function isCsvNumericField($fldName) {
+		return ('_CSV_NUM' == substr($fldName, -8));
+	}
+
 	public function updateItem($item) {
 		if (!$item->ID) return false;
 

+ 2 - 102
SE/se-lib/ProcesMenu.php

@@ -302,6 +302,7 @@ class ProcesMenu {
 			$menu_init = V::get('MENU_INIT', '', $_GET);
 			switch ($menu_init) {
 				case 'VIEWTABLE_AJAX': $active = 'menu'; break;
+				case 'VIEWTABLE_KONTAKTY': $active = 'kontakty'; break;
 				default: {
 					$fun_init = V::get('FUNCTION_INIT', '', $_GET);
 					switch ($fun_init) {
@@ -321,7 +322,6 @@ class ProcesMenu {
 				case 'CRM_WYSWIETL_OBOWIAZKI': $active = 'obowiazki'; break;
 				case 'CRM_TESTY': $active = 'testy'; break;
 				case 'CRM_TESTY_WYNIKI': $active = 'testy_wyniki'; break;
-				case 'USERS': $active = 'kontakty'; break;
 				case 'CRM_SEARCH': $active = 'search'; break;
 				default:
 				// testy_moje		?FUNCTION_INIT=MENU_SELECT_PROCES&MENU_SELECT_PROCES=show_menu_with_process => _action=showMyTests
@@ -388,7 +388,7 @@ class ProcesMenu {
 					<?php if (User::get('ADM_ADMIN_LEVEL') <= 2) : ?>
 						<li<?php if ($active == 'testy_wyniki') echo ' class="active"'; ?>><a href="procesy5.php?task=CRM_TESTY_WYNIKI" title="Wyswietlenie wyników testów">Wyniki</a></li>
 					<?php endif; ?>
-					<li<?php if ($active == 'kontakty') echo ' class="active"'; ?>><a href="procesy5.php?task=USERS" title="Kontakty">Kontakty</a></li>
+					<li<?php if ($active == 'kontakty') echo ' class="active"'; ?>><a href="index.php?MENU_INIT=VIEWTABLE_KONTAKTY" title="Kontakty">Kontakty</a></li>
 					<li<?php if ($active == 'przypomnij') echo ' class="active"'; ?>><a href="index.php?MENU_INIT=PRZYPOMNIJ&KTO=<?php echo User::getLogin(); ?>" title="Przypomnij">Przypomnij</a></li>
 				</ul>
 				<ul class="nav pull-right">
@@ -696,106 +696,6 @@ class ProcesMenu {
 		<?php
 	}
 
-	function show_only_menu_init_old() {
-
-		$testy_teoretyczne = $this->get_actual_tests_count('TEORETYCZNY');
-		$testy_praktyczne = $this->get_actual_tests_count('PRAKTYCZNY');
-		$procesy_init_arr = $this->_acl->getUsedProcesInitIds();
-		$proces_cnt = count($procesy_init_arr);
-		$testy_ok = $this->get_actual_tests_count();
-
-		echo '<style type="text/css">' . "
-body {margin:0/* 8px 8px 8px */; padding:0px;}
-#GORA {margin:0 -8px 5px -8px; background:black; color:#fff; border-bottom:2px solid #969696; font-family:Helvetica;}
- #GORA th,
- #GORA td {color:#fff; font-size:12px;}
- #GORA th.logo {padding:2px 3px; background:#C53000;}
- #GORA a {color:#fff; font:12px Helvetica; text-decoration:none;}
- #GORA .g-menu a {display:block; float:left; margin:0; padding:4px; text-decoration:none; border-top:3px solid black; font-weight:bold;}
- #GORA .g-menu a:hover {border-color:#C53000; text-decoration:none; background:#555;}
- #GORA td.user {padding:2px 3px;}
- #GORA .sub-g {padding:2px 10px;background-color:#969696; color:#FFFF88; font-size:12px; font-weight:bold;}
-  #GORA .sub-g a {color:#FFFF88; font-size:12px; font-weight:bold; text-decoration:underline;}
-
-.tbl-wyniki-testow {}
- .tbl-wyniki-testow td {vertical-align:top;font-size:small;}
- .tbl-wyniki-testow .proces-box {padding:0 6px;background:#f00;color:#fff;font-weight:bold;font-family:arial;text-decoration:none}
- .tbl-wyniki-testow .proces-desc {padding:0 3px;}
-
- .tbl-wyniki-testow .wynik-cell {padding:0 3px;}
- .tbl-wyniki-testow .wynik-BRAK_TESTU {background-color:silver;}
- .tbl-wyniki-testow .wynik-DOBRY {background-color:lightgreen;}
- .tbl-wyniki-testow .wynik-DOSTATECZNY {background-color:#FFFFB1;}
- .tbl-wyniki-testow .wynik-NIEDOSTATECZNY {background-color:#FC5151;}
- .tbl-wyniki-testow .wynik-IDEALNY {background-color:gold;}
- .tbl-wyniki-testow .wynik-NIEAKTUALNY {background-color:silver;}
-
-.tbl-user-urls {width:100%}
- .tbl-user-urls td {padding:0 3px;vertical-align:top;font-size:x-small;text-align:right;}
-
-		" . '</style>';
-		echo '<div id="GORA">';
-		echo '<table cellspacing="0" cellpadding="0" style="width:100%"><tbody><tr>';
-			echo '<th class="logo" style="width:5%; white-space:nowrap;">';
-//				echo '<a href="index.php">SE</a>';
-			$userAcl = User::getAcl();
-			$tbls = $userAcl->getTablesAcl();
-
-			$outMenus = array();
-			if (!empty($tbls)) {
-				foreach ($tbls as $kZasobID => $vTblAcl) {
-					$outMenus[$kZasobID] = $vTblAcl->getName();
-				}
-			}
-?>
-<div class="btn-group">
-	<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-		Menu <span class="caret"></span>
-	</a>
-	<ul class="dropdown-menu">
-		<?php foreach ($outMenus as $kZasobID => $vName) : ?>
-			<li><a href="index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=<?php echo $kZasobID; ?>"><?php echo $vName; ?></a></li>
-		<?php endforeach; ?>
-	</ul>
-</div>
-<?php
-
-			echo '</th>';
-			echo '<td class="g-menu">';
-				echo '<a href="procesy5.php?task=CRM_PROCES" title="Wyswietlenie procesow" class="current">PROCESY</a>';
-				echo '<a href="procesy5.php?task=CRM_LISTA_ZASOBOW" title="Wyswietlenie zasobow">ZASOBY</a>';
-				//echo '<a href="procesy5.php?task=CRM_CZYNNOSCI" title="Lista mozliwych czynnosci">CZYNNOSCI</a>';
-				echo '<a href="procesy5.php?task=CRM_WYSWIETL_OBOWIAZKI" title="Wyswietlenie OBOWIAZKOW">OBOWIAZKI</a>';
-				echo '<a href="procesy5.php?task=CRM_TESTY" title="Wyswietlenie testów">TESTY</a>';
-				$title = "Ilość Procesów: {$proces_cnt}, Aktualnych testów: {$testy_ok},  Teoretycznych: {$testy_teoretyczne}, Praktycznych: {$testy_praktyczne}";
-				echo '<a href="'."index.php?FUNCTION_INIT=MENU_SELECT_PROCES&_action=showMyTests".'" title="'.$title.'" style="color:yellow"> ' ."MOJE ({$testy_ok} z {$proces_cnt}: T {$testy_teoretyczne}, P {$testy_praktyczne})" . '</a>';
-
-				//echo '<a href="procesy5.php?task=CRM_TESTY_WYNIKI" title="Wyswietlenie wyników testów">WYNIKI</a>';
-				echo '<a href="procesy5.php?task=USERS" title="Kontakty">KONTAKTY</a>';
-			echo '</td>';
-			echo '<td class="user" style="text-align:right">';
-				$timer = '';
-				echo '<code id="session-timer" style="padding:0 5px;font-weight:bold;color:red;">'.$timer.'</code>';
-				echo ' | ';
-				echo '<a href="procesy5.php?task=USER" title="' . User::getName() . '">' . User::getName() . '</a>';
-				echo ' <a href="index.php?FUNCTION_INIT=USERS_FIELDS_PROFILE_INIT" title="Przeładuj uprawnienia">' . "(R)" . '</a>';
-				echo ' | ';
-				//echo '0 | ';
-				echo '<a href="' . "index.php?LOGIN=LOGOUT" . '">' . "Wyloguj" .'</a>';
-			echo '</td>';
-			echo '</tr></tbody></table>';
-
-			if (isset($this->MENU_SELECT_PROCES_DATA['uruchom_filtr_uprawnien_dla_procesu'])) {
-				echo '<div class="sub-g">';
-					echo "Aktualnie uruchomiony jest filtr uprawnień dla procesu ";
-					echo '<a href="' . "procesy5.php?task=PROCES_VIEW&id_proces=" . $this->MENU_SELECT_PROCES_DATA['uruchom_filtr_uprawnien_dla_procesu'] . '">' . $this->MENU_SELECT_PROCES_DATA['uruchom_filtr_uprawnien_dla_procesu'] . '</a>' . " - ";
-					echo '<a href="' . "index.php?FUNCTION_INIT=MENU_SELECT_PROCES&_action=setPermsAll".'">' . "Wyłącz filtr uprawnień" . '</a>';
-				echo '</div>';// .sub-g
-			}
-
-		echo '</div>' . "\n";// #GORA
-	}
-
 	/**
 	 * Generates wyniki
 	 */

+ 21 - 25
SE/superedit-VIEWTABLE_KONTAKTY.php

@@ -1,43 +1,35 @@
 <?php
 
 
-function VIEWTABLE_KONTAKTY( $params = array() ) {
+function VIEWTABLE_KONTAKTY($params = array()) {
 
 	SE_Layout::menu();
 
-	$zasobName = 'ADMIN_USERS';
-
-	$zasobObj = null;
-	$db = DB::getDB();
-	$sql = "select z.`ID`, z.`DESC`, z.`OPIS`
-			, zp.`ID` as P__ID, zp.`DESC` as P__DESC, zp.`TYPE` as P__TYPE
-		from `CRM_LISTA_ZASOBOW` as z
-			left join `CRM_LISTA_ZASOBOW` as zp on(zp.`ID`=z.`PARENT_ID`)
-		where z.`DESC`='{$zasobName}'
-			and z.`TYPE`='TABELA'
-	";
-	$res = $db->query($sql);
-	if ($res) {
-		$zasobObj = $db->fetch($res);
+	Lib::loadClass('ProcesHelper');
+	$zasobID = ProcesHelper::getZasobTableID('KONTAKTY_view');
+	if (!$zasobID) {
+		echo "Nr zasobu Kontakty nie został odnaleziony";
+		return;
 	}
-
+	$zasobObj = ProcesHelper::getZasobTableInfo($zasobID);
 	if (!$zasobObj) {
 		echo "Zasob Kontakty nie został odnaleziony";
 		return;
 	}
 
-	//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">zasobObj (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($zasobObj);echo'</pre>';
-
 	$userAcl = User::getAcl();
 	$userAcl->fetchGroups();
-	//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;display:none;">$userAcl (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($userAcl);echo'</pre>';
 
 	if (!$userAcl->hasTableAcl($zasobObj->ID)) {
-		die("Brak uprawnień do tabeli ID={$zasobObj->ID}");
+		?>
+		<div class="container">
+			<div class="alert alert-error">Brak uprawnień do tabeli nr <?php echo $zasobObj->ID; ?></div>
+		</div>
+		<?php
+		return;
 	}
 
 	$tblAcl = $userAcl->getTableAcl($zasobObj->ID);
-	//echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">tblAcl (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($tblAcl);echo'</pre>';
 
 	$forceTblAclInit = ('1' == V::get('_force', '', $_GET));
 	$tblAcl->init($forceTblAclInit);
@@ -45,10 +37,14 @@ function VIEWTABLE_KONTAKTY( $params = array() ) {
 	Lib::loadClass('TableAjax');
 
 	$tbl = new TableAjax($tblAcl);
+	$tblLabel = array();
+	if (!empty($zasobObj->DESC_PL)) $tblLabel []= $zasobObj->DESC_PL;
+	if (!empty($zasobObj->OPIS))    $tblLabel []= $zasobObj->OPIS;
+	$tblLabel = implode(" - ", $tblLabel);
+	$tbl->setLabel($tblLabel);
 	$tbl->addRowFunction('edit');
-	//$tbl->addRowFunction('hist');
-	//$tbl->addRowFunction('files');
-	//$tbl->addRowFunction('cp');
-	$tbl->addRowFunction('ocena', array('href'=>'procesy5.php?task=USER_OCENA&_user_id={0}', 'ico'=>'icon-print', 'title'=>'Ocena pracownika'));
+	$tbl->addRowFunction('hist');
+	$tbl->addRowFunction('files');
+	$tbl->addRowFunction('cp');
 	echo $tbl->render();
 }