diff --git a/src/admin/searches.php b/src/admin/searches.php
index 3b4ce41..2d77f40 100644
--- a/src/admin/searches.php
+++ b/src/admin/searches.php
@@ -73,8 +73,15 @@ if ( isset($_GET['op']) )
$content['userid'] = null;
$content['CHECKED_ISUSERONLY'] = "";
$content['SEARCHID'] = "";
-
+
// --- Check if groups are available
+ $content['SUBGROUPS'] = GetGroupsForSelectfield();
+ if ( is_array($content['SUBGROUPS']) )
+ $content['ISGROUPSAVAILABLE'] = true;
+ else
+ $content['ISGROUPSAVAILABLE'] = false;
+
+ /*
$sqlquery = "SELECT " .
DB_GROUPS . ".ID as mygroupid, " .
DB_GROUPS . ".groupname " .
@@ -93,7 +100,7 @@ if ( isset($_GET['op']) )
array_unshift( $content['SUBGROUPS'], array ("mygroupid" => -1, "groupname" => $content['LN_SEARCH_SELGROUPENABLE'], "group_selected" => "") );
}
else
- $content['ISGROUPSAVAILABLE'] = false;
+ $content['ISGROUPSAVAILABLE'] = false;*/
// ---
}
else if ($_GET['op'] == "edit")
@@ -124,6 +131,26 @@ if ( isset($_GET['op']) )
else
$content['CHECKED_ISUSERONLY'] = "";
+ // --- Check if groups are available
+ $content['SUBGROUPS'] = GetGroupsForSelectfield();
+ if ( is_array($content['SUBGROUPS']) )
+ {
+ // Process All Groups
+ for($i = 0; $i < count($content['SUBGROUPS']); $i++)
+ {
+ if ( $mysearch['groupid'] != null && $content['SUBGROUPS'][$i]['mygroupid'] == $mysearch['groupid'] )
+ $content['SUBGROUPS'][$i]['group_selected'] = "selected";
+ else
+ $content['SUBGROUPS'][$i]['group_selected'] = "";
+ }
+
+ // Enable Group Selection
+ $content['ISGROUPSAVAILABLE'] = true;
+ }
+ else
+ $content['ISGROUPSAVAILABLE'] = false;
+ // ---
+/*
// --- Check if groups are available
$sqlquery = "SELECT " .
DB_GROUPS . ".ID as mygroupid, " .
@@ -150,6 +177,7 @@ if ( isset($_GET['op']) )
else
$content['ISGROUPSAVAILABLE'] = false;
// ---
+*/
}
else
{
diff --git a/src/admin/views.php b/src/admin/views.php
new file mode 100644
index 0000000..738ac95
--- /dev/null
+++ b/src/admin/views.php
@@ -0,0 +1,457 @@
+ Helps administrating custom user views
+ *
+ * All directives are explained within this file
+ *
+ * Copyright (C) 2008 Adiscon GmbH.
+ *
+ * This file is part of phpLogCon.
+ *
+ * PhpLogCon is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PhpLogCon is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with phpLogCon. If not, see .
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this
+ * distribution
+ *********************************************************************
+*/
+
+// *** Default includes and procedures *** //
+define('IN_PHPLOGCON', true);
+$gl_root_path = './../';
+
+// Now include necessary include files!
+include($gl_root_path . 'include/functions_common.php');
+include($gl_root_path . 'include/functions_frontendhelpers.php');
+include($gl_root_path . 'include/functions_filters.php');
+
+// Set PAGE to be ADMINPAGE!
+define('IS_ADMINPAGE', true);
+$content['IS_ADMINPAGE'] = true;
+InitPhpLogCon();
+InitSourceConfigs();
+InitFrontEndDefaults(); // Only in WebFrontEnd
+InitFilterHelpers(); // Helpers for frontend filtering!
+
+// Init admin langauge file now!
+IncludeLanguageFile( $gl_root_path . '/lang/' . $LANG . '/admin.php' );
+// ---
+
+// --- BEGIN Custom Code
+
+// Only if the user is an admin!
+//if ( !isset($_SESSION['SESSION_ISADMIN']) || $_SESSION['SESSION_ISADMIN'] == 0 )
+// DieWithFriendlyErrorMsg( $content['LN_ADMIN_ERROR_NOTALLOWED'] );
+
+if ( isset($_GET['op']) )
+{
+ if ($_GET['op'] == "add")
+ {
+ // Set Mode to add
+ $content['ISEDITORNEWVIEW'] = "true";
+ $content['VIEW_FORMACTION'] = "addnewview";
+ $content['VIEW_SENDBUTTON'] = $content['LN_VIEWS_ADD'];
+
+ //PreInit these values
+ $content['DisplayName'] = "";
+ $content['userid'] = null;
+ $content['CHECKED_ISUSERONLY'] = "";
+ $content['VIEWID'] = "";
+
+ // --- Check if groups are available
+ $content['SUBGROUPS'] = GetGroupsForSelectfield();
+ if ( is_array($content['SUBGROUPS']) )
+ $content['ISGROUPSAVAILABLE'] = true;
+ else
+ $content['ISGROUPSAVAILABLE'] = false;
+ // ---
+ }
+ else if ($_GET['op'] == "edit")
+ {
+ // Set Mode to edit
+ $content['ISEDITORNEWVIEW'] = "true";
+ $content['VIEW_FORMACTION'] = "editview";
+ $content['VIEW_SENDBUTTON'] = $content['LN_VIEWS_EDIT'];
+
+ // View must be loaded as well already!
+ if ( isset($_GET['id']) && $content['VIEWS'][$_GET['id']] )
+ {
+ //PreInit these values
+ $content['VIEWID'] = DB_RemoveBadChars($_GET['id']);
+
+ $sqlquery = "SELECT ID, DisplayName " .
+ " FROM " . DB_VIEWS .
+ " WHERE ID = " . $content['VIEWID'];
+
+ $result = DB_Query($sqlquery);
+ $myview = DB_GetSingleRow($result, true);
+ if ( isset($myview['DisplayName']) )
+ {
+ $content['VIEWID'] = $myview['ID'];
+
+/*
+ $content['DisplayName'] = $mysearch['DisplayName'];
+ $content['SearchQuery'] = $mysearch['SearchQuery'];
+ if ( $mysearch['userid'] != null )
+ $content['CHECKED_ISUSERONLY'] = "checked";
+ else
+ $content['CHECKED_ISUSERONLY'] = "";
+*/
+
+ // --- Check if groups are available
+ $content['SUBGROUPS'] = GetGroupsForSelectfield();
+ if ( is_array($content['SUBGROUPS']) )
+ {
+ // Process All Groups
+ for($i = 0; $i < count($content['SUBGROUPS']); $i++)
+ {
+ if ( $myview['groupid'] != null && $content['SUBGROUPS'][$i]['mygroupid'] == $myview['groupid'] )
+ $content['SUBGROUPS'][$i]['group_selected'] = "selected";
+ else
+ $content['SUBGROUPS'][$i]['group_selected'] = "";
+ }
+
+ // Enable Group Selection
+ $content['ISGROUPSAVAILABLE'] = true;
+ }
+ else
+ $content['ISGROUPSAVAILABLE'] = false;
+ // ---
+ }
+ else
+ {
+ $content['ISEDITORNEWVIEW'] = false;
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_VIEWS_ERROR_IDNOTFOUND'], $content['VIEWID'] );
+ }
+ }
+ else
+ {
+ $content['ISEDITORNEWVIEW'] = false;
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = $content['LN_VIEWS_ERROR_INVALIDID'];
+ }
+ }
+ else if ($_GET['op'] == "delete")
+ {
+ if ( isset($_GET['id']) )
+ {
+ //PreInit these values
+ $content['VIEWID'] = DB_RemoveBadChars($_GET['id']);
+
+ // Get UserInfo
+ $result = DB_Query("SELECT DisplayName FROM " . DB_VIEWS . " WHERE ID = " . $content['VIEWID'] );
+ $myrow = DB_GetSingleRow($result, true);
+ if ( !isset($myrow['DisplayName']) )
+ {
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_VIEWS_ERROR_IDNOTFOUND'], $content['VIEWID'] );
+ }
+
+ // --- Ask for deletion first!
+ if ( (!isset($_GET['verify']) || $_GET['verify'] != "yes") )
+ {
+ // This will print an additional secure check which the user needs to confirm and exit the script execution.
+ PrintSecureUserCheck( GetAndReplaceLangStr( $content['LN_VIEWS_WARNDELETEVIEW'], $myrow['DisplayName'] ), $content['LN_DELETEYES'], $content['LN_DELETENO'] );
+ }
+ // ---
+
+ // do the delete!
+ $result = DB_Query( "DELETE FROM " . DB_VIEWS . " WHERE ID = " . $content['VIEWID'] );
+ if ($result == FALSE)
+ {
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_VIEWS_ERROR_DELSEARCH'], $content['VIEWID'] );
+ }
+ else
+ DB_FreeQuery($result);
+
+ // Do the final redirect
+ RedirectResult( GetAndReplaceLangStr( $content['LN_VIEWS_ERROR_HASBEENDEL'], $myrow['DisplayName'] ) , "views.php" );
+ }
+ else
+ {
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = $content['LN_VIEWS_ERROR_INVALIDID'];
+ }
+ }
+}
+
+// --- Additional work todo for the edit view
+if ( isset($content['ISEDITORNEWVIEW']) && $content['ISEDITORNEWVIEW'] )
+{
+ // Read Columns from FORM data!
+ if ( isset($_POST['Columns']) )
+ {
+ // --- Read Columns from Formdata
+ if ( is_array($_POST['Columns']) )
+ {
+ }
+ else // One element only
+ $content['COLUMNS'][$_POST['Columns']]['ColFieldID'] = $_POST['Columns'];
+ // ---
+
+ // --- Process Columns for display
+ $i = 0; // Help counter!
+ foreach ($content['COLUMNS'] as $key => &$myColumn )
+ {
+ // Set Fieldcaption
+ if ( isset($content[ $fields[$key]['FieldCaptionID'] ]) )
+ $myColumn['ColCaption'] = $content[ $fields[$key]['FieldCaptionID'] ];
+ else
+ $myColumn['ColCaption'] = $key;
+
+ // --- Set CSS Class
+ if ( $i % 2 == 0 )
+ $myColumn['colcssclass'] = "line1";
+ else
+ $myColumn['colcssclass'] = "line2";
+ $i++;
+ // ---
+ }
+ // ---
+ }
+
+ // --- Copy fields data array
+ $content['FIELDS'] = $fields;
+
+ // removed already added fields and set fieldcaption
+ foreach ($content['FIELDS'] as $key => &$myField )
+ {
+ // Set Fieldcaption
+ if ( isset($content[ $myField['FieldCaptionID'] ]) )
+ $myField['FieldCaption'] = $content[ $myField['FieldCaptionID'] ];
+ else
+ $myField['FieldCaption'] = $key;
+ }
+ // ---
+
+}
+// ---
+
+// --- Process POST Form Data
+if ( isset($_POST['op']) )
+{
+ if ( isset ($_POST['id']) ) { $content['VIEWID'] = DB_RemoveBadChars($_POST['id']); } else {$content['VIEWID'] = ""; }
+ if ( isset ($_POST['DisplayName']) ) { $content['DisplayName'] = DB_RemoveBadChars($_POST['DisplayName']); } else {$content['DisplayName'] = ""; }
+// if ( isset ($_POST['SearchQuery']) ) { $content['SearchQuery'] = DB_RemoveBadChars($_POST['SearchQuery']); } else {$content['SearchQuery'] = ""; }
+
+ // User & Group handeled specially
+ if ( isset ($_POST['isuseronly']) )
+ {
+ $content['userid'] = $content['SESSION_USERID'];
+ $content['groupid'] = "null"; // Either user or group not both!
+ }
+ else
+ {
+ $content['userid'] = "null";
+ if ( isset ($_POST['groupid']) && $_POST['groupid'] != -1 )
+ $content['groupid'] = intval($_POST['groupid']);
+ else
+ $content['groupid'] = "null";
+ }
+
+ // --- Check mandotary values
+ if ( $content['DisplayName'] == "" )
+ {
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = $content['LN_VIEWS_ERROR_DISPLAYNAMEEMPTY'];
+ }
+ // ---
+
+ if ( !isset($content['ISERROR']) )
+ {
+ // Check subop's first!
+ if ( isset($_POST['subop']) )
+ {
+ // Get NewColID
+ $szNewColID = DB_RemoveBadChars($_POST['newcolumn']);
+
+ // Add a new Column into our list!
+ if ( $_POST['subop'] == $content['LN_VIEWS_ADDCOLUMN'] && isset($_POST['newcolumn']) )
+ {
+ // Add New entry into columnlist
+ $content['COLUMNS'][$szNewColID]['ColFieldID'] = $szNewColID;
+ // Set Fieldcaption
+ if ( isset($content[ $fields[$szNewColID]['FieldCaptionID'] ]) )
+ $content['COLUMNS'][$szNewColID]['ColCaption'] = $content[ $fields[$szNewColID]['FieldCaptionID'] ];
+ else
+ $content['COLUMNS'][$szNewColID]['ColCaption'] = $szNewColID;
+
+ // Set CSSClass
+ $content['COLUMNS'][$szNewColID]['colcssclass'] = count($content['COLUMNS']) % 2 == 0 ? "line1" : "line2";
+ }
+// else if ()
+// {
+// }
+ }
+ else // Now SUBOP means normal processing!
+ {
+ // Everything was alright, so we go to the next step!
+ if ( $_POST['op'] == "addnewsearch" )
+ {
+ // Add custom search now!
+ $sqlquery = "INSERT INTO " . DB_SEARCHES . " (DisplayName, SearchQuery, userid, groupid)
+ VALUES ('" . $content['DisplayName'] . "',
+ '" . $content['SearchQuery'] . "',
+ " . $content['userid'] . ",
+ " . $content['groupid'] . "
+ )";
+ $result = DB_Query($sqlquery);
+ DB_FreeQuery($result);
+
+ // Do the final redirect
+ RedirectResult( GetAndReplaceLangStr( $content['LN_SEARCH_HASBEENADDED'], $content['DisplayName'] ) , "searches.php" );
+ }
+ else if ( $_POST['op'] == "editsearch" )
+ {
+ $result = DB_Query("SELECT ID FROM " . DB_SEARCHES . " WHERE ID = " . $content['SEARCHID']);
+ $myrow = DB_GetSingleRow($result, true);
+ if ( !isset($myrow['ID']) )
+ {
+ $content['ISERROR'] = true;
+ $content['ERROR_MSG'] = GetAndReplaceLangStr( $content['LN_SEARCH_ERROR_IDNOTFOUND'], $content['SEARCHID'] );
+ }
+ else
+ {
+ // Edit the Search Entry now!
+ $result = DB_Query("UPDATE " . DB_SEARCHES . " SET
+ DisplayName = '" . $content['DisplayName'] . "',
+ SearchQuery = '" . $content['SearchQuery'] . "',
+ userid = " . $content['userid'] . ",
+ groupid = " . $content['groupid'] . "
+ WHERE ID = " . $content['SEARCHID']);
+ DB_FreeQuery($result);
+
+ // Done redirect!
+ RedirectResult( GetAndReplaceLangStr( $content['LN_SEARCH_HASBEENEDIT'], $content['DisplayName']) , "searches.php" );
+ }
+ }
+ }
+ }
+}
+
+if ( !isset($_POST['op']) && !isset($_GET['op']) )
+{
+ // Default Mode = List Searches
+ $content['LISTVIEWS'] = "true";
+/*
+ // Read all Serverentries
+ $sqlquery = "SELECT " .
+ DB_VIEWS . ".ID, " .
+ DB_VIEWS . ".DisplayName, " .
+ DB_VIEWS . ".Columns, " .
+ DB_VIEWS . ".userid, " .
+ DB_VIEWS . ".groupid, " .
+ DB_USERS . ".username, " .
+ DB_GROUPS . ".groupname " .
+ " FROM " . DB_VIEWS .
+ " LEFT OUTER JOIN (" . DB_USERS . ", " . DB_GROUPS .
+ ") ON (" .
+ DB_VIEWS . ".userid=" . DB_USERS . ".ID AND " .
+ DB_VIEWS . ".groupid=" . DB_GROUPS . ".ID " .
+ ") " .
+ " ORDER BY " . DB_VIEWS . ".userid, " . DB_VIEWS . ".groupid, " . DB_VIEWS . ".DisplayName";
+//echo $sqlquery;
+ $result = DB_Query($sqlquery);
+ $content['VIEWS'] = DB_GetAllRows($result, true);
+*/
+
+ // Copy Views array for further modifications
+ $content['VIEWS'] = $content['Views'];
+
+ // --- Process Users
+ $i = 0; // Help counter!
+ foreach ($content['VIEWS'] as &$myView )
+ {
+ // So internal Views can not be edited but seen
+ if ( is_numeric($myView['ID']) )
+ {
+ $myView['ActionsAllowed'] = true;
+
+ // --- Set Image for Type
+ if ( $myView['userid'] != null )
+ {
+ $myView['SearchTypeImage'] = $content["MENU_ADMINUSERS"];
+ $myView['SearchTypeText'] = $content["LN_GEN_USERONLY"];
+ }
+ else if ( $myView['groupid'] != null )
+ {
+ $myView['SearchTypeImage'] = $content["MENU_ADMINGROUPS"];
+ $myView['SearchTypeText'] = $content["LN_GEN_GROUPONLY"];
+ }
+ else
+ {
+ $myView['SearchTypeImage'] = $content["MENU_GLOBAL"];
+ $myView['SearchTypeText'] = $content["LN_GEN_GLOBAL"];
+ }
+ // ---
+ }
+ else
+ {
+ $myView['ActionsAllowed'] = false;
+
+ $myView['SearchTypeImage'] = $content["MENU_INTERNAL"];
+ $myView['SearchTypeText'] = $content["LN_GEN_INTERNAL"];
+ }
+
+ // --- Add DisplayNames to columns
+ $iBegin = true;
+ foreach ($myView['Columns'] as $myCol )
+ {
+ // Get Fieldcaption
+ if ( isset($content[ $fields[$myCol]['FieldCaptionID'] ]) )
+ $myView['COLUMNS'][$myCol]['FieldCaption'] = $content[ $fields[$myCol]['FieldCaptionID'] ];
+ else
+ $myView['COLUMNS'][$myCol]['FieldCaption'] = $myCol;
+
+ if ( $iBegin )
+ {
+ $myView['COLUMNS'][$myCol]['FieldCaptionSeperator'] = "";
+ $iBegin = false;
+ }
+ else
+ $myView['COLUMNS'][$myCol]['FieldCaptionSeperator'] = ", ";
+
+ }
+ // ---
+
+ // --- Set CSS Class
+ if ( $i % 2 == 0 )
+ $myView['cssclass'] = "line1";
+ else
+ $myView['cssclass'] = "line2";
+ $i++;
+ // ---
+ }
+ // ---
+}
+// --- END Custom Code
+
+// --- BEGIN CREATE TITLE
+$content['TITLE'] = InitPageTitle();
+$content['TITLE'] .= " :: " . $content['LN_ADMINMENU_VIEWSOPT'];
+// --- END CREATE TITLE
+
+// --- Parsen and Output
+InitTemplateParser();
+$page -> parser($content, "admin/admin_views.html");
+$page -> output();
+// ---
+
+?>
\ No newline at end of file
diff --git a/src/images/icons/delete_disabled.png b/src/images/icons/delete_disabled.png
new file mode 100644
index 0000000..d856cdd
Binary files /dev/null and b/src/images/icons/delete_disabled.png differ
diff --git a/src/images/icons/edit_disabled.png b/src/images/icons/edit_disabled.png
new file mode 100644
index 0000000..1fa39aa
Binary files /dev/null and b/src/images/icons/edit_disabled.png differ
diff --git a/src/images/icons/gear.png b/src/images/icons/gear.png
new file mode 100644
index 0000000..8e1411f
Binary files /dev/null and b/src/images/icons/gear.png differ
diff --git a/src/include/functions_common.php b/src/include/functions_common.php
index 648d5f5..39b136c 100644
--- a/src/include/functions_common.php
+++ b/src/include/functions_common.php
@@ -432,6 +432,9 @@ function InitFrontEndVariables()
$content['MENU_EDIT'] = $content['BASEPATH'] . "images/icons/edit.png";
$content['MENU_DELETE'] = $content['BASEPATH'] . "images/icons/delete.png";
$content['MENU_GLOBAL'] = $content['BASEPATH'] . "images/icons/earth.png";
+ $content['MENU_INTERNAL'] = $content['BASEPATH'] . "images/icons/gear.png";
+ $content['MENU_EDIT_DISABLED'] = $content['BASEPATH'] . "images/icons/edit_disabled.png";
+ $content['MENU_DELETE_DISABLED'] = $content['BASEPATH'] . "images/icons/delete_disabled.png";
$content['MENU_PAGER_BEGIN'] = $content['BASEPATH'] . "images/icons/media_beginning.png";
$content['MENU_PAGER_PREVIOUS'] = $content['BASEPATH'] . "images/icons/media_rewind.png";
@@ -513,7 +516,7 @@ function InitConfigurationValues()
LoadSearchesFromDatabase();
// Load Configured Views
-// LoadViewsFromDatabase();
+ LoadViewsFromDatabase();
// Load Configured Sources
// LoadSourcesFromDatabase();
diff --git a/src/include/functions_config.php b/src/include/functions_config.php
index 7a308be..e7b2dda 100644
--- a/src/include/functions_config.php
+++ b/src/include/functions_config.php
@@ -209,11 +209,15 @@ function InitViewConfigs()
'ID' => "SYSLOG",
'DisplayName' =>"Syslog Fields",
'Columns' => array ( SYSLOG_DATE, SYSLOG_FACILITY, SYSLOG_SEVERITY, SYSLOG_HOST, SYSLOG_SYSLOGTAG, SYSLOG_PROCESSID, SYSLOG_MESSAGETYPE, SYSLOG_MESSAGE ),
+ 'userid' => null,
+ 'groupid' => null,
);
$CFG['Views']['EVTRPT']= array(
'ID' => "EVTRPT",
'DisplayName' =>"EventLog Fields",
'Columns' => array ( SYSLOG_DATE, SYSLOG_HOST, SYSLOG_SEVERITY, SYSLOG_EVENT_LOGTYPE, SYSLOG_EVENT_SOURCE, SYSLOG_EVENT_ID, SYSLOG_EVENT_USER, SYSLOG_MESSAGE ),
+ 'userid' => null,
+ 'groupid' => null,
);
// Set default of 'DefaultViewsID'
@@ -303,7 +307,6 @@ function LoadSearchesFromDatabase()
global $CFG, $content;
// --- Create SQL Query
-
// Create Where for USERID
if ( isset($content['SESSION_LOGGEDIN']) && $content['SESSION_LOGGEDIN'] )
$szWhereUser = " OR " . DB_SEARCHES . ".userid = " . $content['SESSION_USERID'] . " ";
@@ -314,14 +317,15 @@ function LoadSearchesFromDatabase()
$szGroupWhere = " OR " . DB_SEARCHES . ".groupid IN (" . $content['SESSION_GROUPIDS'] . ")";
else
$szGroupWhere = "";
-
$sqlquery = " SELECT * " .
" FROM " . DB_SEARCHES .
" WHERE (" . DB_SEARCHES . ".userid IS NULL AND " . DB_SEARCHES . ".groupid IS NULL) " .
$szWhereUser .
$szGroupWhere .
" ORDER BY " . DB_SEARCHES . ".userid, " . DB_SEARCHES . ".groupid, " . DB_SEARCHES . ".DisplayName";
-// " ORDER BY " . DB_SEARCHES . ".DisplayName";
+ // ---
+
+ // Get Searches from DB now!
$result = DB_Query($sqlquery);
$myrows = DB_GetAllRows($result, true);
if ( isset($myrows ) && count($myrows) > 0 )
@@ -329,11 +333,51 @@ function LoadSearchesFromDatabase()
// Overwrite Search Array with Database one
$CFG['Search'] = $myrows;
$content['Search'] = $myrows;
-
- // Cleanup searches and fill / load from database
-
-
}
}
+function LoadViewsFromDatabase()
+{
+ // Needed to make global
+ global $CFG, $content;
+
+ // --- Create SQL Query
+ // Create Where for USERID
+ if ( isset($content['SESSION_LOGGEDIN']) && $content['SESSION_LOGGEDIN'] )
+ $szWhereUser = " OR " . DB_VIEWS . ".userid = " . $content['SESSION_USERID'] . " ";
+ else
+ $szWhereUser = "";
+
+ if ( isset($content['SESSION_GROUPIDS']) )
+ $szGroupWhere = " OR " . DB_VIEWS . ".groupid IN (" . $content['SESSION_GROUPIDS'] . ")";
+ else
+ $szGroupWhere = "";
+ $sqlquery = " SELECT * " .
+ " FROM " . DB_VIEWS .
+ " WHERE (" . DB_VIEWS . ".userid IS NULL AND " . DB_VIEWS . ".groupid IS NULL) " .
+ $szWhereUser .
+ $szGroupWhere .
+ " ORDER BY " . DB_VIEWS . ".userid, " . DB_VIEWS . ".groupid, " . DB_VIEWS . ".DisplayName";
+ // ---
+
+ // Get Views from DB now!
+ $result = DB_Query($sqlquery);
+ $myrows = DB_GetAllRows($result, true);
+ if ( isset($myrows ) && count($myrows) > 0 )
+ {
+ // Overwrite existing Views array
+ unset($CFG['Views']);
+ print_r ( $CFG['Views'] );
+ exit;
+
+ // ReINIT Views Array
+ InitViewConfigs();
+
+ // Merge into existing Views Array!
+ $CFG['Views'] = array_merge ( $CFG['Views'], $myrows );
+ $content['Views'] = $CFG['Views'];
+ }
+
+}
+
?>
\ No newline at end of file
diff --git a/src/include/functions_users.php b/src/include/functions_users.php
index 2dc8a1b..081110e 100644
--- a/src/include/functions_users.php
+++ b/src/include/functions_users.php
@@ -222,4 +222,37 @@ function RedirectToDatabaseUpgrade()
// --- END Usermanagement Function ---
+/*
+* Helper function to obtain a list of groups for display
+*/
+function GetGroupsForSelectfield()
+{
+ global $content;
+
+ $sqlquery = "SELECT " .
+ DB_GROUPS . ".ID as mygroupid, " .
+ DB_GROUPS . ".groupname " .
+ "FROM " . DB_GROUPS .
+ " ORDER BY " . DB_GROUPS . ".groupname";
+ $result = DB_Query($sqlquery);
+ $mygroups = DB_GetAllRows($result, true);
+ if ( isset($mygroups) && count($mygroups) > 0 )
+ {
+ // Process All Groups
+ for($i = 0; $i < count($mygroups); $i++)
+ $mygroups[$i]['group_selected'] = "";
+
+ // Enable Group Selection
+ array_unshift( $mygroups, array ("mygroupid" => -1, "groupname" => $content['LN_SEARCH_SELGROUPENABLE'], "group_selected" => "") );
+
+ // return result
+ return $mygroups;
+ }
+ else
+ return false;
+ // ---
+}
+
+
+
?>
\ No newline at end of file
diff --git a/src/lang/en/admin.php b/src/lang/en/admin.php
index 38f581e..939464e 100644
--- a/src/lang/en/admin.php
+++ b/src/lang/en/admin.php
@@ -66,6 +66,10 @@ $content['LN_GEN_IPADRRESOLVE'] = "Resolve IP Addresses using DNS";
$content['LN_GEN_CUSTBTNCAPT'] = "Custom search caption";
$content['LN_GEN_CUSTBTNSRCH'] = "Custom search string";
$content['LN_GEN_SUCCESSFULLYSAVED'] = "The configuration Values have been successfully saved";
+$content['LN_GEN_INTERNAL'] = "Internal";
+$content['LN_GEN_DISABLED'] = "Function disabled";
+$content['LN_GEN_USERONLY'] = "For me only
(Only available to your user)";
+$content['LN_GEN_GROUPONLY'] = "For this group
(Only available to the selected group)";
$content['LN_GEN_'] = "";
// User Center
@@ -128,16 +132,14 @@ $content['LN_GROUP_'] = "";
// Custom Searches center
$content['LN_SEARCH_CENTER'] = "Custom Searches";
-$content['LN_SEARCH_ADD'] = "Add Custom Search";
+$content['LN_SEARCH_ADD'] = "Add new Custom Search";
$content['LN_SEARCH_ID'] = "ID";
$content['LN_SEARCH_NAME'] = "Search Name";
$content['LN_SEARCH_QUERY'] = "Search Query";
-$content['LN_SEARCH_TYPE'] = "Type of Search";
+$content['LN_SEARCH_TYPE'] = "Assigned to";
$content['LN_SEARCH_EDIT'] = "Edit Custom Search";
$content['LN_SEARCH_DELETE'] = "Delete Custom Search";
$content['LN_SEARCH_ADDEDIT'] = "Add / Edit a Custom Search";
-$content['LN_SEARCH_USERONLY'] = "For me only
(Only available to your user)";
-$content['LN_SEARCH_GROUPONLY'] = "For this group
(Only available to the selected group)";
$content['LN_SEARCH_SELGROUPENABLE'] = ">> Select Group to enable <<";
$content['LN_SEARCH_ERROR_DISPLAYNAMEEMPTY'] = "The DisplayName cannot be empty.";
$content['LN_SEARCH_ERROR_SEARCHQUERYEMPTY'] = "The SearchQuery cannot be empty.";
@@ -151,5 +153,30 @@ $content['LN_SEARCH_ERROR_HASBEENDEL'] = "The Custom Search '%1' has been succes
$content['LN_SEARCH_'] = "";
$content['LN_SEARCH_'] = "";
+// Custom Searches center
+$content['LN_VIEWS_CENTER'] = "Views Options";
+$content['LN_VIEWS_ID'] = "ID";
+$content['LN_VIEWS_NAME'] = "View Name";
+$content['LN_VIEWS_COLUMNS'] = "View Columns";
+$content['LN_VIEWS_TYPE'] = "Assigned to";
+$content['LN_VIEWS_ADD'] = "Add new View";
+$content['LN_VIEWS_EDIT'] = "Edit View";
+$content['LN_VIEWS_ERROR_IDNOTFOUND'] = "A View with ID '%1' could not be found.";
+$content['LN_VIEWS_ERROR_INVALIDID'] = "The View with ID '%1' is not a valid View.";
+$content['LN_VIEWS_WARNDELETEVIEW'] = "Are you sure that you want to delete the View '%1'? This cannot be undone!";
+$content['LN_VIEWS_ERROR_DELSEARCH'] = "Deleting of the View with id '%1' failed!";
+$content['LN_VIEWS_ERROR_HASBEENDEL'] = "The View '%1' has been successfully deleted!";
+$content['LN_VIEWS_ADDEDIT'] = "Add / Edit a View";
+$content['LN_VIEWS_COLUMNLIST'] = "Configured Columns";
+$content['LN_VIEWS_ADDCOLUMN'] = "Add Column into list";
+$content['LN_VIEWS_ERROR_DISPLAYNAMEEMPTY'] = "The DisplayName cannot be empty.";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+$content['LN_VIEWS_'] = "";
+
?>
\ No newline at end of file
diff --git a/src/templates/admin/admin_searches.html b/src/templates/admin/admin_searches.html
index 0dd8a72..9abae0c 100644
--- a/src/templates/admin/admin_searches.html
+++ b/src/templates/admin/admin_searches.html
@@ -54,11 +54,11 @@
|
-
+
|
-
+
|
diff --git a/src/templates/admin/admin_views.html b/src/templates/admin/admin_views.html
new file mode 100644
index 0000000..7d60431
--- /dev/null
+++ b/src/templates/admin/admin_views.html
@@ -0,0 +1,128 @@
+
+
+
+
+{ERROR_MSG}
+
+
+
+
+
+ {LN_VIEWS_CENTER} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {ID} |
+ {DisplayName} |
+
+ {FieldCaptionSeperator}{FieldCaption}
+ |
+ {SearchTypeText} |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ {LN_VIEWS_ADD} |
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
\ No newline at end of file