From d6d178824c8b8b6a0d0285eee19b023b9f6b80cc Mon Sep 17 00:00:00 2001
From: Cameron <e107inc@gmail.com>
Date: Thu, 5 Mar 2020 11:38:23 -0800
Subject: [PATCH] Admin-UI: $listGroup added for control of specific JOIN
 grouping when necessary.  Example added to blank plugin.

---
 e107_handlers/admin_ui.php           | 12 +++++++++++-
 e107_plugins/_blank/admin_config.php | 11 +++++++----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php
index 02ec5441e..3e598e810 100755
--- a/e107_handlers/admin_ui.php
+++ b/e107_handlers/admin_ui.php
@@ -2508,6 +2508,11 @@ class e_admin_controller_ui extends e_admin_controller
 	 * @var string SQL order, false to disable order, null is default order
 	 */
 	protected $listOrder = null;
+
+	/**
+	 * @var string SQL group-by field name (optional)
+	 */
+	protected $listGroup = null;
 	
 	/**
 	 * @var string field containing the order number
@@ -4411,13 +4416,18 @@ class e_admin_controller_ui extends e_admin_controller
 		}
 
 		// group field - currently auto-added only if there are joins
-		// TODO - groupField property
 		$groupField = '';
 		if($joins && $this->getPrimaryName())
 		{
 			$groupField = $tablePath.$this->getPrimaryName();
 		}
 
+		// appended to GROUP BY when true.
+		if(!empty($this->listGroup))
+		{
+			$groupField = $this->listGroup;
+		}
+
 		if($raw)
 		{
 			$rawData = array(
diff --git a/e107_plugins/_blank/admin_config.php b/e107_plugins/_blank/admin_config.php
index 6927f6875..5b24f6a1d 100644
--- a/e107_plugins/_blank/admin_config.php
+++ b/e107_plugins/_blank/admin_config.php
@@ -95,15 +95,17 @@ class plugin_blank_admin_ui extends e_admin_ui
 
 		/**
 		 * This is only needed if you need to JOIN tables AND don't wanna use $tableJoin
-		 * Write your list query without any Order or Limit.
+		 * Write your list query without any Group, Order or Limit.
 		 *
 		 * @var string [optional]
 		 */
 		protected $listQry = "";
-		//
 
-		// optional - required only in case of e.g. tables JOIN. This also could be done with custom model (set it in init())
-		//protected $editQry = "SELECT * FROM #blank WHERE blank_id = {ID}";
+		protected $listOrder        = 'blank_id DESC';
+
+	//  protected $listGroup        = 'somefield';  // (optional: when needing control over JOINs)
+
+	//  protected $editQry = "SELECT * FROM #blank WHERE blank_id = {ID}";
 
 		// required - if no custom model is set in init() (primary id)
 		protected $pid = "blank_id";
@@ -112,6 +114,7 @@ class plugin_blank_admin_ui extends e_admin_ui
 		protected $perPage = 20;
 
 		protected $batchDelete = true;
+		
 
 	//	protected \$sortField		= 'somefield_order';