From f4420e478b86b8751e7b470980b3c53821bcac89 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Mon, 21 Nov 2016 10:43:34 -0500 Subject: [PATCH] Setup coupon dashboard Setup the block for the dashboard. Has the Current Running Coupons in the list. --- models/admin/dashboard/coupons.php | 166 +++++++++++++++++++++++++++++ setup/adminHooks.php | 18 ++++ views/admin/dashboard/coupons.html | 54 ++++++++++ 3 files changed, 238 insertions(+) create mode 100644 models/admin/dashboard/coupons.php create mode 100644 views/admin/dashboard/coupons.html diff --git a/models/admin/dashboard/coupons.php b/models/admin/dashboard/coupons.php new file mode 100644 index 0000000..79ae418 --- /dev/null +++ b/models/admin/dashboard/coupons.php @@ -0,0 +1,166 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +require_once GLM_MEMBERS_COUPONS_PLUGIN_CLASS_PATH.'/data/dataCoupons.php'; + +/** + * Dashboard Class Model + * + * Each Add-On can have one or more dashboards. + */ + +class GlmMembersAdmin_dashboard_coupons extends GlmDataCoupons +{ + /** + * 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; + $memberID = false; + $lockedToMember = false; + + // Get list of member coupons. + if ( isset( $this->config['loggedInUser']['contactUser']['ref_dest'] ) + && $memberID = filter_var( $this->config['loggedInUser']['contactUser']['ref_dest'], FILTER_VALIDATE_INT) + ) { + $lockedToMember = apply_filters('glm_members_locked_to_member_id', false); + if ($lockedToMember) { + $memberID = $lockedToMember; + $lockedToMember = $memberID; + $memberWhere = "T.id = $memberID"; + $lockedWhereT = 'T.ref_type = '.$this->config['ref_type_numb']['Member'].' AND T.ref_dest = '.$memberID; + $lockedWhere = 'ref_type = '.$this->config['ref_type_numb']['Member'].' AND ref_dest = '.$memberID; + $where = ''; + //$coupons = $this->getList( $lockedWhereT.$where); + $coupons = $this->getList( $lockedWhereT.$where, '', true, 'id', 1, 5 ); + // If we have some, tell the template + if ($coupons && count($coupons['list']) > 0) { + $haveCoupons = true; + } + + } + + } else { + // This should be the Current Coupons that are current running. + $where = 'T.start_date <= now() and T.end_date >= now()'; + $coupons = $this->getList( $where ); + // If we have some, tell the template + if ($coupons && count($coupons) > 0) { + $haveCoupons = true; + } + } + // If we have list entries - even if it's an empty list + $success = true; + $haveCoupons = false; + if ($coupons !== false) { + + $success = true; + + // If we have any entries + if (count($coupons) > 0) { + $haveCoupons = true; + } + } + // Compile template data. + $templateData = array( + 'lockedToMember' => $lockedToMember, + 'haveCoupons' => $haveCoupons, + 'coupons' => (isset($coupons['list']) ? $coupons['list']: $coupons), + 'memberID' => $memberID, + ); + + // Return status, suggested view, and data to controller. + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => 'admin/dashboard/coupons.html', + 'data' => $templateData + ); + + } + +} diff --git a/setup/adminHooks.php b/setup/adminHooks.php index 1bb233d..096b6d2 100644 --- a/setup/adminHooks.php +++ b/setup/adminHooks.php @@ -25,3 +25,21 @@ * * Also note that parameters will be in the context of the main admin controller constructor. */ +add_filter( + 'glm-member-db-dashboard-member-widgets', + function ( $member = null ) { + $content = $this->controller( 'dashboard', 'coupons', $member ); + return $content; + }, + 14, + 1 +); +add_filter( + 'glm-member-db-dashboard-member-admin-widgets', + function ( $member = null ) { + $content = $this->controller( 'dashboard', 'coupons', $member ); + return $content; + }, + 14, + 1 +); diff --git a/views/admin/dashboard/coupons.html b/views/admin/dashboard/coupons.html new file mode 100644 index 0000000..a49ba6c --- /dev/null +++ b/views/admin/dashboard/coupons.html @@ -0,0 +1,54 @@ +
+
+

+ Coupons + {if $lockedToMember} +  Add a New Coupon for this {$terms.term_member_cap}  + {else} + (Current) + {/if} +

+
+ + + + + + + + + + + {if $haveCoupons} + {foreach $coupons as $p} + + + + + + + {/foreach} + {else} + + {/if} + +
CouponStartEndExpire
+ {if $p.ref_type.value} + {if $lockedToMember} + {$p.name} + {else} + {$p.name} + {/if} + {else} + {$p.name} + {/if} + + {$p.start_date.date} + + {$p.end_date.date} + + {$p.expire.date} +
(no coupons listed)
+
+
+
-- 2.17.1