}
- if (get_option('glm_members_database_first_activation', 'none') == 'none') {
- update_option('glm_members_database_first_activation', true);
+ if (get_option(GLM_MEMBERS_PLUGIN_OPTION_FIRST_ACTIVATION, 'none') == 'none') {
+ update_option(GLM_MEMBERS_PLUGIN_OPTION_FIRST_ACTIVATION, true);
} else {
- update_option('glm_members_database_first_activation', false);
+ update_option(GLM_MEMBERS_PLUGIN_OPTION_FIRST_ACTIVATION, false);
}
}
}
- /*
+ /*get_option(GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID)
* Create new pages containing the member DB shortcodes
* @return void
*/
public function createPages($requiredPages)
{
foreach($requiredPages as $requiredPage => $requiredPageInfo) {
- //foreach($requiredPageInfo as $key => $value) {
- $trimmedName = 'glm_members_database_'.str_replace(' ','_',strtolower($requiredPage)).'_id';
+ $trimmedName = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$requiredPageInfo['optionSuffix'];
+ if ($requiredPageInfo['parent'] == 'associate') {
+ $postParent = get_option(GLM_MEMBERS_PLUGIN_OPTION_ASSOCIATE_ID);
+ } else if ($requiredPageInfo['parent'] == 'membersonly') {
+ $postParent = get_option(GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID);
+ } else if (is_numeric($requiredPageInfo['parent'])) {
+ $postParent = $requiredPageInfo['parent'];
+ } else {
+ $postParent = '0';
+ }
if ( !get_post(get_option($trimmedName))) {
- $new_page = array(
- 'post_title' => $requiredPage,
- 'post_content' => $requiredPageInfo['content'],
- 'post_status' => 'publish',
- 'post_type' => 'page',
- 'post_author' => '1',
- 'page_template' => isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php' ,
- 'post_parent' => $requiredPageInfo['parent'] !== '0' ? get_option('glm_members_database_glm_associate_id') : '0'
- );
- $new_id = wp_insert_post($new_page);
- update_option($trimmedName, $new_id);
+ $duplicatePage = get_page_by_title($requiredPageInfo['name']);
+ //echo $duplicatePage;
+ echo $duplicatePage->title;
+ echo $duplicatePage->title->ID;
+ if ($duplicatePage->title == $requiredPageInfo['name']) {
+ update_option($trimmedName, $duplicatePage->ID);
+ } else {
+ $new_page = array(
+ 'post_title' => $requiredPageInfo['name'],
+ 'post_content' => $requiredPageInfo['content'],
+ 'post_status' => 'publish',
+ 'post_type' => 'page',
+ 'post_author' => '1',
+ 'page_template' => isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php' ,
+ 'post_parent' => $postParent
+ );
+ $new_id = wp_insert_post($new_page);
+ update_option($trimmedName, $new_id);
+
+ // Make extra page if members only is created
+ if ($new_id == get_option(GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID)) {
+ $sample_page = array(
+ 'post_title' => 'Members Only Sample Subpage',
+ 'post_content' => 'This page will automatically be locked to Members Only with the members-only-template',
+ 'post_status' => 'publish',
+ 'post_type' => 'page',
+ 'post_author' => '1',
+ 'page_template' => isset($requiredPageInfo['template']) ? $requiredPageInfo['template'] : 'index.php' ,
+ 'post_parent' => $new_id
+ );
+ wp_insert_post($sample_page);
+ }
+ }
}
}
}
}
}
-
+
+ // Add filters for use anywhere else (apply_filter). Will have to add this to index.php eventually
+ add_filter('glmMembersFrontScriptsFilter',array($this,'glmMembersFrontCSS'));
+ add_filter('glmMembersFrontCSSFilter',array($this,'glmMembersFrontCSS'));
}
/**
wp_enqueue_script($jsName, false, array('jquery'), false, true);
}
}
-
+ }
+
+ public function glmMembersFrontCSS () {
+
// Register any front.css files in the css directory of any glm members plugin
foreach ($this->config['addOns'] as $a) {
$cssFile = GLM_MEMBERS_WORDPRESS_PLUGIN_PATH.$a['slug'].'/css/front.css';
wp_enqueue_style($cssName);
}
}
-
}
/**
// Enque all needed scripts and css here so that only happens when we're doing something
$this->glmMembersFrontScripts();
+
+ // Enqueue all css here so that only happens when we're doing something
+ $this->glmMembersFrontCSS();
// Get the current theme directory to check for modified views
$theme = get_template_directory();
margin: 5px 10px 10px;
padding: 10px;
}
-#glm-member-front-header .glm-button {
+#glm-member-front-header .button.glm-button {
float: right;
padding: .4em .8em;
border-radius: 4px;
define('GLM_MEMBERS_PLUGIN_NAME', 'Gaslight Media Membership Management System');
define('GLM_MEMBERS_PLUGIN_SHORT_NAME', 'GLM Member DB');
define('GLM_MEMBERS_PLUGIN_SLUG', 'glm-member-db');
+define('GLM_MEMBERS_PLUGIN_UNDERSCORED_NAME', 'glm_member_db');
+
// Enable to display smarty template debug.
define('GLM_MEMBERS_PLUGIN_DEBUG_SMARTY', false);
define('GLM_MEMBERS_PLUGIN_CURRENT_URL', $urlParts['scheme'].'://'.$urlParts['host'].$pageUri[0]);
define('GLM_MEMBERS_PLUGIN_MEDIA_URL', $WPUploadDir['baseurl'].'/'.GLM_MEMBERS_PLUGIN_SLUG);
+// WP Options
+define('GLM_MEMBERS_PLUGIN_OPTION_PREFIX', 'glm_members_database_option_');
+define('GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID', GLM_MEMBERS_PLUGIN_OPTION_PREFIX.'members_list_id');
+define('GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID', GLM_MEMBERS_PLUGIN_OPTION_PREFIX.'members_only_id');
+define('GLM_MEMBERS_PLUGIN_OPTION_ASSOCIATE_ID', GLM_MEMBERS_PLUGIN_OPTION_PREFIX.'glm_associate_id');
+define('GLM_MEMBERS_PLUGIN_OPTION_FIRST_ACTIVATION', GLM_MEMBERS_PLUGIN_OPTION_PREFIX.'first_activation');
+
// Directories
define('GLM_MEMBERS_PLUGIN_PATH', dirname(__FILE__));
define('GLM_MEMBERS_PLUGIN_SETUP_PATH', GLM_MEMBERS_PLUGIN_PATH.'/setup');
'name' => GLM_MEMBERS_PLUGIN_NAME,
'short_name' => GLM_MEMBERS_PLUGIN_SHORT_NAME,
'slug' => GLM_MEMBERS_PLUGIN_SLUG,
+ 'underscored_name' => GLM_MEMBERS_PLUGIN_UNDERSCORED_NAME,
'actions' => $glmMembersValidActions,
'shortcodes' => $glmMembersShortcodes,
'shortcodesDescription' => $glmMembersShortcodesDescription,
*
*/
jQuery(document).ready(function ($) {
-
// var shortcodeDropdown, shortcodeCategory, blankStart, listBox, detailBox, target, shortcodeString;
// var shortcodeValues = {};
// $("#showDetail").hide();
if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
$option = $_REQUEST['option'];
}
+
+ foreach ($this->config['addOns'] as $a) {
+ if (isset($a['requiredPages'])) {
+ foreach($a['requiredPages'] as $pageName => &$pageData) {
+ //echo $pageName;
+ $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['optionSuffix']);
+ $pageData['id'] = $pageID;
+ $pageData['slug'] = str_replace(' ','_',strtolower($pageData['name']));
+ echo get_the_title($pageID);
+ //$pageData['name'] = single_post_title(get_post(get_option($pageID)));
+ }
+ $requiredPages[$a['underscored_name']] = $a['requiredPages'];
+
+ //$a['requiredPages'][]
+ }
+ }
switch($option) {
// Update the settings and redisplay the form
case 'submit':
+
+ $requiredPagesUpdateError = false;
+ if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID]) ){
+ $membersListIdOption = $requiredPages['glm-member-db']['members_list'][''];
+ $newMembersListId = $_REQUEST[$membersListIdOption];
+ }
+ $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newMembersListId);
+ if (get_option($membersListIdOption) == $newMembersListId) {
+ $requiredPagesUpdateError = false;
+ } else if (is_numeric($newMembersListId)) {
+ if ($results) {
+ $requiredPagesUpdateError = false;
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newMembersListId does not exist. ";
+ }
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newMembersListId must be numeric.";
+ }
+
+
+ // Members Only
+ if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID]) ){
+ $membersOnlyIdOption = GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID;
+ $newMembersOnlyId = $_REQUEST[$membersOnlyIdOption];
+ }
+ $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newMembersOnlyId);
+ if (get_option($membersOnlyIdOption) == $newMembersOnlyId) {
+ $requiredPagesUpdateError = false;
+ } else if (is_numeric($newMembersOnlyId)) {
+ if ($results) {
+ $requiredPagesUpdateError = false;
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newMembersOnlyId does not exist. ";
+ }
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newMembersOnlyId must be numeric.";
+ }
+
+ // Events
+ if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_EVENT_LIST_ID]) ){
+ $eventListIdOption = GLM_MEMBERS_PLUGIN_OPTION_EVENT_LIST_ID;
+ $newEventListId = $_REQUEST[$eventListIdOption];
+ }
+ $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newEventListId);
+ if (get_option($eventListIdOption) == $newEventListId) {
+ $requiredPagesUpdateError = false;
+ } else if (is_numeric($newEventListId)) {
+ if ($results) {
+ $requiredPagesUpdateError = false;
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newEventListId does not exist. ";
+ }
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newEventListId must be numeric.";
+ }
- // Update the general settings
+ // Packaging
+ if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_PACKAGING_LIST_ID]) ){
+ $packagingListIdOption = GLM_MEMBERS_PLUGIN_OPTION_PACKAGING_LIST_ID;
+ $newPackagingListId = $_REQUEST[$packagingListIdOption];
+ }
+ $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newPackagingListId);
+ if (get_option($packagingListIdOption) == $newPackagingListId) {
+ $requiredPagesUpdateError = false;
+ } else if (is_numeric($newPackagingListId)) {
+ if ($results) {
+ $requiredPagesUpdateError = false;
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newPackagingListId does not exist. ";
+ }
+ } else {
+ $requiredPagesUpdateError .= "\n Page ID $newPackagingListId must be numeric.";
+ }
+
+ if (!$requiredPagesUpdateError) {
+ update_option($membersListIdOption, $newMembersListId);
+ $requiredPages['members_list']['id'] = $newMembersListId;
+ update_option($membersOnlyIdOption, $newMembersOnlyId);
+ $requiredPages['members_only']['id'] = $newMembersOnlyId;
+ update_option($eventListIdOption, $newEventListId);
+ $requiredPages['event_list']['id'] = $newEventListId;
+ update_option($packagingListIdOption, $newPackagingListId);
+ $requiredPages['packaging_list']['id'] = $newPackagingListId;
+ }
$generalSettings = $this->updateEntry(1);
if ($generalSettings['status']) {
$settingsUpdated = true;
// Try to get the first (should be only) entry for general settings.
$generalSettings = $this->editEntry($id);
-
+
if ($generalSettings === false) {
if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
);
*/
}
-
+
break;
}
'genSettings' => $generalSettings,
'timezones' => DateTimeZone::listIdentifiers(),
'settingsUpdated' => $settingsUpdated,
- 'settingsUpdateError' => $settingsUpdateError
+ 'settingsUpdateError' => $settingsUpdateError,
+ 'requiredPages' => $requiredPages,
+ 'requiredPagesUpdateError' => $requiredPagesUpdateError
);
// Return status, suggested view, and data to controller
// If it doesn't exist, let's create it.
if( !$menuExists){
- $membersOnlyPageID = get_option('glm_members_database_members_only_id');
+ $membersOnlyPageID = get_option(GLM_MEMBERS_PLUGIN_MEMBERS_ONLY_ID);
//
$menu_id = wp_create_nav_menu($menuName);
// Set up default members only link and add it to the menu.
wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => __('Members Only'),
- 'menu-item-object-id' => get_option('glm_members_database_members_only_id'),
+ 'menu-item-object-id' => $membersOnlyPageID,
'menu-item-parent-id' => 0,
'menu-item-position' => 0,
'menu-item-object' => 'page',
'menu-item-type' => 'post_type',
'menu-item-classes' => 'members-only',
'menu-item-status' => 'publish'));
+ wp_update_nav_menu_item($menu_id, 0, array(
+ 'menu-item-title' => __('Members Only Sample Subpage'),
+ 'menu-item-object-id' => 0,
+ 'menu-item-parent-id' => $membersOnlyPageID,
+ 'menu-item-position' => 0,
+ 'menu-item-object' => 'page',
+ 'menu-item-type' => 'post_type',
+ 'menu-item-classes' => 'members-only',
+ 'menu-item-status' => 'publish'));
}
$locations = get_theme_mod( 'nav_menu_locations' );
add_filter( 'template_include', 'glm_members_only_template', 99 );
function glm_members_only_template( $template ) {
$templateName = "glm-members-only-template.php";
- $membersOnlyPage = get_option('glm_members_database_members_only_id');
+ $membersOnlyPage = get_option(GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID);
$newTemplate = locate_template( $templateName );
if ( is_in_tree($membersOnlyPage) && $newTemplate != '' ) { // if in same tree as the members page for this site
+ apply_filters('glmMembersFrontCSSFilter');
return $newTemplate;
/* Uncomment this if you want every child page of the members only page to be given the members only template
* (i.e. changed in the database) and not just using them on the front-end
* Array of required pages
*
* This array lists all of the required pages made available to the main
- * member plugin
+ * member plugin, utilised by createPages() in admin.php
*
* This array is merged with the data from any registered add-ons
* providing required pages. The plugin providing the required pages
* is designated in the 'plugin' elemeent.
+ *
+ * Leaving 'template' blank will result in index.php default. Any alternative
+ * can be entered, but particularly useful may be 'glm-members-only-template.php'
+ * (providing it exists in the theme!)
+ *
+ * Leaving 'parent' blank will set it to 0. A page ID can be used, as well as:
+ * - 'membersonly' : this will make the page a child of the Members Only locked
+ * area
+ * - 'associate' : this will make the page a child of the GLM Associate page
+ * for management purposes
+ *
+ * When in doubt just use 'associate'
*
*/
$glmMembersRequiredPages = array(
// These should be in GLM Associate
'GLM Associate' => array(
+ 'name' => 'GLM Associate',
'content' => '',
- 'parent' => '0'
+ 'parent' => '0',
+ 'optionSuffix' => 'glm_associate_id',
),
// These should be in GLM Members
'Members Only' => array(
+ 'name' => 'Members Only',
'content' => 'This page and any child beneath it will automatically be locked to Members Only with the members-only-template.',
'parent' => '0',
- 'template' => 'glm-members-only-template.php'
+ 'template' => 'glm-members-only-template.php',
+ 'optionSuffix' => 'members_only_id',
),
'Members List' => array(
+ 'name' => 'Members List',
'content' => '[glm-members-list]',
- 'parent' => 'GLM Associate'
+ 'parent' => 'associate',
+ 'optionSuffix' => 'members_list_id',
),
- 'Member Detail' => array(
+ 'Members Detail' => array(
+ 'name' => 'Members Detail',
'content' => '[glm-member-detail]',
- 'parent' => 'GLM Associate'
+ 'parent' => 'associate',
+ 'optionSuffix' => 'member_detail_id',
)
);
<input type="hidden" name="option" value="submit">
<h2 class="nav-tab-wrapper" style="margin-bottom: 1em;">
- <a id="glm-settings-debug" data-show-table="glm-table-debug" class="glm-settings-tab nav-tab nav-tab-active">Debug Settings</a>
+ <a id="glm-settings-required-page" data-show-table="glm-table-required-page" class="glm-settings-tab nav-tab nav-tab-active">Required Pages</a>
+ <a id="glm-settings-debug" data-show-table="glm-table-debug" class="glm-settings-tab nav-tab">Debug Settings</a>
<a id="glm-settings-misc" data-show-table="glm-table-misc" class="glm-settings-tab nav-tab">Misc. Settings</a>
<a id="glm-settings-list" data-show-table="glm-table-list" class="glm-settings-tab nav-tab">Member List Options</a>
<a id="glm-settings-detail" data-show-table="glm-table-detail" class="glm-settings-tab nav-tab">Member Detail Options</a>
{if $settingsUpdated}<span class="glm-notice glm-flash-updated glm-right">Settings Updated</span>{/if}
+ {if $requiredPageUpdateError}<span class="glm-error glm-flash-updated glm-right">{$requiredPageUpdateError}</span>{/if}
{if $settingsUpdateError}<span class="glm-error glm-flash-updated glm-right">Settings Update Error</span>{/if}
</h2>
<!-- Debug Settings -->
-
+ <table id="glm-table-required" class="glm-admin-table glm-settings-table">
+ {foreach from=$requiredPages key=addon item=requiredPage}
+ <tr><td colspan="2"><hr></td></tr>
+ <tr><td colspan="2"><h2>Plugin: {$addon}</h2></td></tr>
+ {foreach from=$requiredPage key=requiredPageName item=requiredPageData}
+ <tr>
+ <th>{$requiredPageName}</th>
+ <td>
+ <table>
+ <tr>
+ <th>Page Name</th>
+ <td>
+ <input type="text" name="glm_members_database_option_{$requiredPageData.name}" value="{$requiredPageData.name}">
+ </td>
+ </tr>
+<!-- <tr>
+ <th>Page ID</th>
+ <td>
+ <input type="text" readonly value="{$requiredPageData.id}">
+ </td>
+ </tr>-->
+ <tr>
+ <th>Page Slug</th>
+ <td>
+ <input type="text" readonly value="{$requiredPageData.slug}">
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ {/foreach}
+ <hr>
+ {/foreach}
+ </table>
<table id="glm-table-debug" class="glm-admin-table glm-settings-table">
<tr><td colspan="2"><h2>Debug Settings</h2></td></tr>
<tr>