*/
class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral
{
-
+ public $prefixSlugs = array();
+ public $requiredPages = array();
/**
* WordPress Database Object
*
parent::__construct(false, false);
}
+ public function updateRequiredPages(){
+ $this->requiredPages = array();
+ foreach ($this->config['addOns'] as $a) {
+ if (isset($a['requiredPages'])) {
+ foreach($a['requiredPages'] as $pageName => $pageData) {
+ $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']);
+ $this->prefixSlugs[] = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title'];
+ $this->requiredPages[$a['underscored_name']][$pageName]['id'] = $pageID;
+ $page = get_post($pageID);
+ $this->requiredPages[$a['underscored_name']][$pageName]['slug'] = $page->post_name;
+ $this->requiredPages[$a['underscored_name']][$pageName]['title'] = $page->post_title;
+ }
+ }
+ }
+ }
/*
* Perform Model Action
$settingsUpdated = false;
$settingsUpdateError = false;
$requiredPagesUpdateError = false;
-
// General settings are always stored in a record with ID=1.
$id = 1;
)
);
}
-
+
// Check for submission option
$option = '';
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) {
- $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']);
- $pageData['id'] = $pageID;
- $pageData['slug'] = sanitize_title($pageData['title']);;
- }
- $requiredPages[$a['underscored_name']] = $a['requiredPages'];
- }
- }
-
+
+ $this->updateRequiredPages();
switch($option) {
// Update General Settings and redisplay the form
case 'submit':
+
+ // get all of the IDs from the form
+ $requiredPagesIDs = array_intersect_key($_REQUEST, array_flip(preg_grep('/^glm_members_database_id/', array_keys($_REQUEST))));
+
+ foreach($requiredPagesIDs as $id){
+ $page = get_post($id);
+ $pageTitle = $page->post_title;
+ $pageSlug= $page->post_name;
+ $slug = 'glm_members_database_option_' . $pageSlug;
+ $postValueTitle = filter_var($_POST[$slug], FILTER_SANITIZE_STRING);
+ if($pageTitle != $postValueTitle && !empty($postValueTitle)){
+ $args = array (
+ 'ID' => $id,
+ 'post_title' => $postValueTitle
+ );
+ wp_update_post($args);
+ } else {
+ echo $pageTitle;
+ }
+ }
+ foreach($this->prefixSlugs as $slug){
+ $id = get_option($slug);
+ $pageTitle = $page->post_title;
+ $page = get_post($id);
+ $pageSlug = $page->post_name;
+ $titleSlug = 'glm_members_database_option_' . $pageSlug;
+ $pageSlug = 'glm_members_database_id_' . $pageSlug;
+ $formID = filter_var($_POST[$pageSlug], FILTER_SANITIZE_STRING);
+ $formTitle = filter_var($_POST[$titleSlug], FILTER_SANITIZE_STRING);
+ if($id != $formID && !empty($formTitle) && get_post_status($formID) != false && is_int($formID)){
+ update_option($slug, $formID);
+ } else {
+ update_option($slug, $id);
+ }
+ }
+
+ $this->updateRequiredPages();
+
// Required Pages
$requiredPagesUpdateError = false;
if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID]) ){
} 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.";
- }
-
- // 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;
- }
-
- // Update all general setttings
+
+ // Update all general setttings
$generalSettings = $this->updateEntry(1);
if ($generalSettings['status']) {
$settingsUpdated = true;
}
break;
-
}
-
// Compile template data
$templateData = array(
'reason' => '',
'timezones' => DateTimeZone::listIdentifiers(),
'settingsUpdated' => $settingsUpdated,
'settingsUpdateError' => $settingsUpdateError,
- 'requiredPages' => $requiredPages,
+ 'requiredPages' => $this->requiredPages,
'requiredPagesUpdateError' => $requiredPagesUpdateError
);