Просмотр исходного кода

TableAcl add method getDataSource; Data_Source use params in getHistItems

Piotr Labudda 11 лет назад
Родитель
Сommit
af1fe4fabe
3 измененных файлов с 46 добавлено и 31 удалено
  1. 24 2
      SE/se-lib/Data_Source.php
  2. 21 0
      SE/se-lib/TableAcl.php
  3. 1 29
      SE/se-lib/TableAjax.php

+ 24 - 2
SE/se-lib/Data_Source.php

@@ -447,11 +447,23 @@ if(V::get('DBG_DS', 0, $_GET) > 0){echo'<pre style="max-height:200px;overflow:au
 		$this->getHistItems($id);
 	}
 
-	public function getHistItems($id) {
+	public function getHistItems($id, $params = array()) {
 		$ret = array();
 		$sql_tbl = $this->_tbl . "_HIST";
 		$sql_cols = $this->_get_sql_cols();
 		$sql_where = "t.`ID_USERS2`='{$id}'";
+
+		$paramNotEmptyFlds = V::get('notEmptyFlds', '', $params);
+		if (!empty($paramNotEmptyFlds) && is_array($paramNotEmptyFlds)) {
+			$sqlWhereOr = array();
+			foreach ($paramNotEmptyFlds as $fldName) {
+				if (array_key_exists($fldName, $this->_cols)) {
+					$sqlWhereOr[] = "t.`{$fldName}`!='N/S;'";
+				}
+			}
+			if (!empty($sqlWhereOr)) $sql_where .= "\n and (" . implode(" or ", $sqlWhereOr) . ")";
+		}
+
 		$sql = "select {$sql_cols}
 			from {$sql_tbl} as t
 			where {$sql_where}
@@ -460,7 +472,17 @@ if(V::get('DBG_DS', 0, $_GET) > 0){echo'<pre style="max-height:200px;overflow:au
 if(V::get('DBG_DS', 0, $_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>'."\n\n";}
 		$res = $this->_db->query($sql);
 		while ($r = $this->_db->fetch($res)) {
-			$ret [$r->ID] = $r;
+			$r->_author = $r->A_RECORD_UPDATE_AUTHOR;
+			$r->_created = $r->A_RECORD_UPDATE_DATE;
+
+			if (!$r->_author || $r->_author == 'N/S;') {
+				$r->_author = $r->A_RECORD_CREATE_AUTHOR;
+			}
+			if (!$r->_created || $r->_created == 'N/S;') {
+				$r->_created = $r->A_RECORD_CREATE_DATE;
+			}
+
+			$ret[$r->ID] = $r;
 		}
 		return $ret;
 	}

+ 21 - 0
SE/se-lib/TableAcl.php

@@ -831,4 +831,25 @@ class TableAcl {
 		return $arr;
 	}
 
+	public function getDataSource() {
+		Lib::loadClass('Data_Source');
+		$dataSource = new Data_Source($this->getDB());
+		$dataSource->setTable($this->getName());
+		$realFieldList = $this->getRealFieldList();
+		$dataSource->setCols($realFieldList);
+		$dataSource->setColTypes($this->getTypes());
+		$dataSource->setVirtualCols($this->getVirtualFieldList());
+		$dataSource->setFieldGroupWrite('A_ADM_COMPANY', $this->hasFieldType('A_ADM_COMPANY'));
+		$dataSource->setFieldGroupRead('A_CLASSIFIED', $this->hasFieldType('A_CLASSIFIED'));
+		$dataSource->setAccessFltrAllowed(!$this->hasSuperAccessPerms());
+
+		$adminFields = array('A_RECORD_CREATE_DATE', 'A_RECORD_CREATE_AUTHOR', 'A_RECORD_UPDATE_DATE', 'A_RECORD_UPDATE_AUTHOR');
+		foreach ($adminFields as $vAdmFld) {
+			if (!in_array($vAdmFld, $realFieldList) && $this->hasFieldType($vAdmFld)) {
+				$dataSource->addCol($vAdmFld);
+			}
+		}
+		return $dataSource;
+	}
+
 }

+ 1 - 29
SE/se-lib/TableAjax.php

@@ -17,23 +17,7 @@ class TableAjax extends ViewAjax {
 		$this->_tbl = $tblAcl->getName();
 		$this->_acl = $tblAcl;
 		$this->_zasobID = $tblAcl->getID();
-		Lib::loadClass('Data_Source');
-		$this->_dataSource = new Data_Source($tblAcl->getDB());
-		$this->_dataSource->setTable($tblAcl->getName());
-		$realFieldList = $tblAcl->getRealFieldList();
-		$this->_dataSource->setCols($realFieldList);
-		$this->_dataSource->setColTypes($tblAcl->getTypes());
-		$this->_dataSource->setVirtualCols($tblAcl->getVirtualFieldList());
-		$this->_dataSource->setFieldGroupWrite('A_ADM_COMPANY', $tblAcl->hasFieldType('A_ADM_COMPANY'));
-		$this->_dataSource->setFieldGroupRead('A_CLASSIFIED', $tblAcl->hasFieldType('A_CLASSIFIED'));
-		$this->_dataSource->setAccessFltrAllowed(!$tblAcl->hasSuperAccessPerms());
-
-		$adminFields = array('A_RECORD_CREATE_DATE', 'A_RECORD_CREATE_AUTHOR', 'A_RECORD_UPDATE_DATE', 'A_RECORD_UPDATE_AUTHOR');
-		foreach ($adminFields as $vAdmFld) {
-			if (!in_array($vAdmFld, $realFieldList) && $tblAcl->hasFieldType($vAdmFld)) {
-				$this->_dataSource->addCol($vAdmFld);
-			}
-		}
+		$this->_dataSource = $tblAcl->getDataSource();
 
 		$this->_pageSizes = array(10, 20, 50, 100);// default page sizes
 		$this->_filterInit = new stdClass();
@@ -3144,18 +3128,6 @@ jQuery(document).ready(function(){
 
 		$rowFunctionsOut = $this->_showRowFunctions($record->ID, array('hist', 'cp'), true);
 
-		foreach ($rowsHist as $k => $row) {
-			$row->_author = $row->A_RECORD_UPDATE_AUTHOR;
-			$row->_created = $row->A_RECORD_UPDATE_DATE;
-
-			if (!$row->_author || $row->_author == 'N/S;') {
-				$row->_author = $row->A_RECORD_CREATE_AUTHOR;
-			}
-			if (!$row->_created || $row->_created == 'N/S;') {
-				$row->_created = $row->A_RECORD_CREATE_DATE;
-			}
-		}
-
 		$visibleColsWithIds = array();
 		$visibleColsLabels = array();
 		foreach ($visibleCols as $vColName) {