diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php
index 902c2d042..d00da0c3e 100644
--- a/e107_handlers/admin_ui.php
+++ b/e107_handlers/admin_ui.php
@@ -2030,6 +2030,11 @@ class e_admin_controller_ui extends e_admin_controller
* @var additional SQL to be applied when auto-building the list query
*/
protected $listQrySql = array();
+
+ /**
+ * @var Custom Filter SQL Query override.
+ */
+ protected $filterQry = null;
/**
* @var boolean
@@ -3098,6 +3103,12 @@ class e_admin_controller_ui extends e_admin_controller
$qry .= ' ORDER BY '.$this->fields[$orderField]['__tableField'].' '.(strtolower($orderDef) == 'desc' ? 'DESC' : 'ASC');
}
}
+
+ if(isset($this->filterQry)) // custom query on filter. (see downloads plugin)
+ {
+ $qry = $this->filterQry;
+ }
+
if($this->getPerPage() || false !== $forceTo)
{
$from = false === $forceFrom ? intval($request->getQuery('from', 0)) : intval($forceFrom);
@@ -3106,7 +3117,9 @@ class e_admin_controller_ui extends e_admin_controller
}
// Debug Filter Query.
- // echo $qry;
+
+ // echo $qry.'
';
+ // print_a($_GET);
return $qry;
}
diff --git a/e107_plugins/download/admin_download.php b/e107_plugins/download/admin_download.php
index 5e26c0df5..1521ce9de 100644
--- a/e107_plugins/download/admin_download.php
+++ b/e107_plugins/download/admin_download.php
@@ -88,24 +88,6 @@ require_once (e_HANDLER.'message_handler.php');
$emessage = &eMessage::getInstance();
-if(isset($_POST['filter_list']))
-{
- //echo $adminDownload->show_existing_items($action, $subAction, $id, 0, 10);
- // exit;
-}
-
-if(isset($_POST['execute_batch']))
-{
- // $adminDownload->_observe_processBatch();
-}
-
-if (isset($_POST['delete']))
-{
- $tmp = array_keys($_POST['delete']);
- list($delete, $del_id) = explode("_", $tmp[0]);
- $del_id = intval($del_id);
- unset($_POST['searchquery']);
-}
$from = ($from ? $from : 0);
$amount = varset($pref['download_view'], 50);
@@ -115,10 +97,6 @@ if (isset($_POST))
$e107cache->clear("download_cat");
}
-if (isset($_POST['add_category']))
-{
- // $adminDownload->create_category($subAction, $id);
-}
if (isset($_POST['submit_download']))
@@ -311,7 +289,7 @@ if (!e_QUERY || $action == "main")
if ($action == "opt")
{
- $adminDownload->show_download_options();
+ // $adminDownload->show_download_options();
}
@@ -439,8 +417,10 @@ function showLimits()
}
-function showMaint()
+function showMaint() // Deprecated.
{
+ $mes = e107::getMessage();
+ $mes->addInfo("Deprecated Area - please use filter instead under 'Manage' ");
global $pref;
$ns = e107::getRender();
diff --git a/e107_plugins/download/includes/admin.php b/e107_plugins/download/includes/admin.php
index 50f019779..2eed63c35 100644
--- a/e107_plugins/download/includes/admin.php
+++ b/e107_plugins/download/includes/admin.php
@@ -359,6 +359,7 @@ class download_main_admin_ui extends e_admin_ui
'download_visible' => array('title'=> LAN_VISIBILITY, 'type' => 'userclass', 'width' => 'auto', 'data' => 'int'),
// 'download_order' => array('title'=> LAN_ORDER, 'type' => 'text', 'width' => '5%', 'thclass' => 'left' ),
+ 'issue' => array('title'=> 'Issue', 'type' => 'method', 'data' => null, 'nolist'=>TRUE, 'noedit'=>TRUE, 'filter'=>TRUE),
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced'=>TRUE)
);
@@ -429,47 +430,149 @@ $columnInfo = array(
//$this->fields['fb_mode']['writeParms'] = array(FBLAN_13,FBLAN_14);
$this->fields['download_category']['readParms'] = $categories;
+
+ // Custom filter queries
+ if($_GET['filter_options'])
+ {
+ list($filter,$mode) = explode("__",$_GET['filter_options']);
+ if($mode == 'missing')
+ {
+ $this->filterQry = $this->missingFiles();
+ }
+ if($mode == 'nocategory')
+ {
+ $this->filterQry = "SELECT * FROM `#download` WHERE download_category=0";
+ }
+
+ if($mode == 'duplicates')
+ {
+ $this->filterQry = "SELECT GROUP_CONCAT(d.download_id SEPARATOR ',') as gc, d.download_id, d.download_name, d.download_url, dc.download_category_name
+ FROM #download as d
+ LEFT JOIN #download_category AS dc ON dc.download_category_id=d.download_category
+ GROUP BY d.download_url
+ HAVING COUNT(d.download_id) > 1";
+ }
+
+ if($mode == "filesize")
+ {
+ $this->filterQry = $this->missingFiles('filesize');
+ }
+
+ }
}
- function createPage()
- {
- global $adminDownload;
- $adminDownload->create_download();
- }
+
+ /*
+ * Return a query for Missing Files and Filesize mismatch
+ */
+ public function missingFiles($mode='missing')
+ {
+
+ $sql = e107::getDb();
+ $count = array();
+
+ if ($sql->db_Select_gen("SELECT * FROM `#download` ORDER BY download_id"))
+ {
+ while($row = $sql->db_Fetch())
+ {
+ if (!is_readable(e_DOWNLOAD.$row['download_url']))
+ {
+ $count[] = $row['download_id'];
+ }
+ elseif($mode == 'filesize')
+ {
+ $filesize = filesize(e_DOWNLOAD.$row['download_url']);
+ if ($filesize <> $row['download_filesize'])
+ {
+ $count[] = $row['download_id'];
+ }
+ }
+
+ }
+ }
+
+ if($count > 0)
+ {
+ return "SELECT * FROM `#download` WHERE download_id IN (".implode(",",$count).")";
+ }
+
+ }
- function importPage()
- {
- $this->batchImportForm();
- }
+
+
+ function orphanFiles() //TODO
+ {
+
+ $files = e107::getFile()->get_files(e_DOWNLOAD);
+ $foundSome = false;
+ foreach($files as $file)
+ {
+ if (0 == $sql->db_Count('download', '(*)', " WHERE download_url='".$file['fname']."'")) {
+ if (!$foundSome) {
+ // $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform");
+ $text .= '