}
// In case we want to treat the widget data before sending it to the viewfile.
- // May be able to avoid sending Config to the view
+ // May be able to avoid sending the (huge) Config array to the view
+ echo "IN THE WRONG FILE";
foreach ( $this->config[ 'addOns' ] as $a ) {
//$widgetData[] = apply_filters($a['slug'] . "-dashboard-widget");
$widgetData[] = $a['slug'];
--- /dev/null
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * Admin Members Dashboard
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package glmMembersDatabase
+ * @author Steve Sutton <steve@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php';
+
+/**
+ * Dashboard Class Model
+ *
+ * Each Add-On can have one or more dashboards.
+ */
+
+class GlmMembersAdmin_newDashboard_index extends GlmDataMembers
+{
+ /**
+ * Word Press Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+
+ /**
+ * Constructor
+ *
+ * This contructor sets up this model. At this time that only includes
+ * storing away the WordPress data object.
+ *
+ * @return object Class object
+ *
+ */
+ public function __construct ($wpdb, $config)
+ {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ // Run constructor for members data class
+ parent::__construct(false, false);
+
+ }
+
+ /**
+ * Perform Model Action
+ *
+ * This method does the work for this model and returns any resulting data
+ *
+ * @return array Status and data array
+ *
+ * 'status'
+ *
+ * True if successful and false if there was a fatal failure.
+ *
+ * 'menuItemRedirect'
+ *
+ * If not false, provides a menu item the controller should
+ * execute after this one. Normally if this is used, there would also be a
+ * modelRedirect value supplied as well.
+ *
+ * 'modelRedirect'
+ *
+ * If not false, provides an action the controller should execute after
+ * this one.
+ *
+ * 'view'
+ *
+ * A suggested view name that the controller should use instead of the
+ * default view for this model or false to indicate that the default view
+ * should be used.
+ *
+ * 'data'
+ *
+ * Data that the model is returning for use in merging with the view to
+ * produce output.
+ *
+ */
+ public function modelAction ( $actionData = false )
+ {
+
+ $success = true;
+ $text = 'text';
+ $haveInfoRecords = false;
+ $memberInfoRecords = false;
+ $noActive = false;
+ $showArchived = false;
+ $memberID = 0;
+ $clickThroughCounts = array('day' => 0, 'week' => 0, 'month' => 0);
+ $detailViewCounts = array('day' => 0, 'week' => 0, 'month' => 0);
+
+ // Check if there's a logged in user who is locked to their own entity.
+ $lockedToMember = apply_filters( 'glm_members_locked_to_member_id', false );
+ $memberID = $lockedToMember;
+
+ // Get the current date, first date of this week, and first date of this month
+ $today = date('Y-m-d');
+ $thisWeek = date('Y-m-d', strtotime('-'.date('w').' days'));
+ $thisMonth = date('Y-m-d', strtotime('-'.(date('j')-1).' days'));
+
+ $clickThroughCounts = $this->wpdb->get_row("
+ SELECT COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats
+ WHERE member = $memberID
+ AND stat_type = 1
+ AND stat_date = '$today'
+ ), 0) AS day,
+ COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats
+ WHERE member = $memberID
+ AND stat_type = 2
+ AND stat_date = '$thisWeek'
+ ), 0) AS week,
+ COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."clickthrough_stats
+ WHERE member = $memberID
+ AND stat_type = 3
+ AND stat_date = '$thisMonth'
+ ), 0) AS month
+ ", ARRAY_A);
+
+ $detailViewCounts = $this->wpdb->get_row("
+ SELECT COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats
+ WHERE member = $memberID
+ AND stat_type = 1
+ AND stat_date = '$today'
+ ), 0) AS day,
+ COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats
+ WHERE member = $memberID
+ AND stat_type = 2
+ AND stat_date = '$thisWeek'
+ ), 0) AS week,
+ COALESCE ((
+ SELECT clicks
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_detail_stats
+ WHERE member = $memberID
+ AND stat_type = 3
+ AND stat_date = '$thisMonth'
+ ), 0) AS month
+ ", ARRAY_A);
+
+ // Setup the data Abstract class for member info.
+ require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMemberInfo.php';
+ $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
+ $hideArchived = " && T.status != ".$this->config['status_numb']['Archived'];
+ $memberInfoRecords = $MemberInfo->getList( "T.member = $memberID" . $hideArchived, 'T.status' );
+
+ // Check if there's any member information records.
+ if (is_array($memberInfoRecords) && count($memberInfoRecords) > 0) {
+ $haveInfoRecords = true;
+ }
+
+ // In case we want to treat the widget data before sending it to the viewfile.
+ // May be able to avoid sending the (huge) Config array to the view
+ foreach ( $this->config[ 'addOns' ] as $a ) {
+ if ( has_filter( $a['slug'] . "-dashboard-widget") ) {
+ $widgetData[] = apply_filters($a['slug'] . "-dashboard-widget");
+ } else {
+ echo "<br>" . $a['slug'] . " has no filter called " . $a['slug'] . "-dashboard-widget";
+ //$widgetData[] = $a['slug'];
+ }
+
+ }
+
+
+ // Compile template data.
+ $templateData = array(
+ 'lockedToMember' => $lockedToMember,
+ 'member' => $actionData,
+ 'showArchived' => $showArchived,
+ 'statusTypeNumbers' => $this->config['status_numb'],
+ 'memberID' => $memberID,
+ 'haveInfoRecords' => $haveInfoRecords,
+ 'memberInfoRecords' => $memberInfoRecords,
+ 'clickThroughCounts' => $clickThroughCounts,
+ 'detailViewCounts' => $detailViewCounts,
+ 'statusPending' => $this->config['status_numb']['Pending'],
+ 'widgetData' => $widgetData,
+ );
+
+ // Return status, suggested view, and data to controller.
+ return array(
+ 'status' => $success,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/newDashboard/index.html',
+ 'data' => $templateData
+ );
+
+ }
+
+}
* Added menus or sub-menus examples
*
* add_submenu_page(
- * 'glm-members-admin-menu-members', // Parent slug
+ * 'glm-members-admin-menu-dashboard', // Parent slug
* 'Sample', // Page title
* 'Sample', // Menu Title
* 'glm_members_edit', // Capability required
// If user can manage all members, then show "Members" menu item
if (current_user_can('glm_members_members')) {
- $mainMenuSlug = 'glm-members-admin-menu-members';
+ $mainMenuSlug = 'glm-members-admin-menu-dashboard';
$enable_members = $this->config['settings']['enable_members'];
// Add a sub-submenu for the "Member" "List" page
if ( $enable_members ) {
add_menu_page(
- $this->config['terms']['term_admin_menu_members'],
+ 'Dashboard',
'GLM Associate',
'glm_members_main_menu',
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
function() {},
GLM_MEMBERS_PLUGIN_ASSETS_URL.'/flame.png',
'3.100'
// Add a sub-submenu for the "Member" "List" page
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
$this->config['terms']['term_admin_menu_member_list'],
- $this->config['terms']['term_admin_menu_members'],
+ Dashboard,
'glm_members_main_menu',
- 'glm-members-admin-menu-members',
- function() {$this->controller('members', 'index');}
+ 'glm-members-admin-menu-dashboard',
+ function() {$this->controller('newDashboard', 'index');}
);
// Add a sub-submenu for the "Member" "List" page
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
$this->config['terms']['term_admin_menu_member_list'],
' List',
'glm_members_main_menu',
- 'glm-members-admin-menu-members-list',
+ 'glm-members-admin-menu-dashboard-list',
function() {$this->controller('members', 'list');}
);
);
} else {
add_menu_page(
- $this->config['terms']['term_admin_menu_members'],
+ Dashboard,
'GLM Associate',
'glm_members_main_menu',
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
function() {},
GLM_MEMBERS_PLUGIN_ASSETS_URL.'/flame.png',
'3.100'
// Add a sub-submenu for the "Member" "List" page
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Dashboard',
'Dashboard',
'glm_members_main_menu',
- 'glm-members-admin-menu-members',
- function() {$this->controller('members', 'index');}
+ 'glm-members-admin-menu-dashboard',
+ function() {$this->controller('newDashboard', 'index');}
);
}
$mainMenuSlug = 'glm-members-admin-menu-member';
add_menu_page(
- $this->config['terms']['term_admin_menu_members'],
+ Dashboard,
'GLM Associate',
'glm_members_main_menu',
'glm-members-admin-menu-member',
// Add a submenu for the "Files"
if ($this->config['settings']['file_library']) {
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Files Library',
'Files Library',
'glm_members_settings',
// Add a submenu for the "Settings" section
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Settings',
'Settings',
'glm_members_settings',
// Add a submenu for the "Management" section
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Member DB Management',
'Management',
'glm_members_management',
// Add a submenu for the "Import" section
global $glm_import_sub_page;
$glm_import_sub_page = add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Import',
'Import',
'glm_members_management',
// Add a submenu for the "Shortcode Reference" section
add_submenu_page(
- 'glm-members-admin-menu-members',
+ 'glm-members-admin-menu-dashboard',
'Shortcode Reference',
'Shortcodes',
'glm_members_shortcodes',
'dashboardWidget' => array(
'index' => 'glm-member-db'
),
+ 'newDashboard' => array (
+ 'index' => 'glm-member-db'
+ ),
'fileLibrary' => array(
'index' => 'glm-member-db'
),
-
-<div class="glm-summary-widgets-wrapper">
- <h2>GLM Associate Dashboard</h2>
- <div class="glm-summary-widgets-container">
- <div class="glm-summary-widgets">
- <div class="row">
- <div class="glm-summary-widget col s12 m6 l4">
- {foreach $widgetData as $w}
- {include file='admin/members/summaryWidget.html'}
- {/foreach}
-
- </div>
- </div>
- </div>
- </div>
-</div>
-<script>
- jQuery(function($){
- M.AutoInit();
- })
-
-</script>
-
-
-
<div class="wrap glm-associate-admin-wrap glm-associate-admin-members-wrap">
{if $enable_members}
<h2>All {$terms.term_member_plur_cap}</h2>
--- /dev/null
+<div class="wrap glm-associate-admin-wrap glm-associate-admin-dashboard-wrap">
+ <h2>GLM AssociateDashboard</h2>
+ <div id="glm-admin-content-container">
+
+
\ No newline at end of file
--- /dev/null
+{include file='admin/members/header.html'}
+<div class="glm-summary-widgets-wrapper">
+ <h2>GLM Associate Dashboard</h2>
+ <div class="glm-summary-widgets-container">
+ <div class="glm-summary-widgets">
+ <div class="row">
+ <div class="glm-summary-widget col s12 m6 l4">
+ {foreach $widgetData as $w}
+ {include file='admin/members/summaryWidget.html'}
+ {/foreach}
+
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script>
+ jQuery(function($){
+ M.AutoInit();
+ })
+
+</script>
+NewDashboard!
+{include file='admin/footer.html'}
\ No newline at end of file