From 8ed5af690c7351ccdca9c4a8ab4bab6494df69a9 Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Wed, 13 May 2015 09:51:43 -0400 Subject: [PATCH] Added custom extension to Simple Membership Plugin --- simple-wp-membership/methods.php | 107 +++++++++++++++++++++++++++++++ simple-wp-membership/readme.txt | 50 +++++++++++++++ simple-wp-membership/view.php | 101 +++++++++++++++++++++++++++++ 3 files changed, 258 insertions(+) create mode 100644 simple-wp-membership/methods.php create mode 100644 simple-wp-membership/readme.txt create mode 100644 simple-wp-membership/view.php diff --git a/simple-wp-membership/methods.php b/simple-wp-membership/methods.php new file mode 100644 index 0000000..9c4d43a --- /dev/null +++ b/simple-wp-membership/methods.php @@ -0,0 +1,107 @@ +fields = array(); +$this->membership_level = $membership_level; +$form_table_name = $wpdb->prefix . 'swpm_form_builder_forms'; +$field_table = $wpdb->prefix . 'swpm_form_builder_fields'; +$query = $wpdb->prepare("SELECT form_id FROM $form_table_name WHERE form_type = 1 AND " + . " (form_membership_level= %d OR form_membership_level=0 )" + . " ORDER BY form_membership_level DESC", $membership_level); +$form_id = $wpdb->get_var($query); +$this->form_id = $form_id; +if (empty($form_id)) {return; } +$query = $wpdb->prepare( + "SELECT + field_id AS id, + form_id, + field_key AS _key, + field_type AS type, + field_options AS options, + field_description AS description, + field_name AS name, + field_sequence AS sequence, + field_parent AS parent, + field_validation AS validation, + field_required AS required, + field_size AS size, + field_css AS css, + field_layout AS layout, + field_default AS _default, + field_readonly As readonly, + field_adminonly AS adminonly, + reg_field_id AS reg_field_id + FROM $field_table WHERE form_id= %d and field_key='custom' ORDER BY field_sequence ASC", + $form_id + ); +$data = $wpdb->get_results($query); +foreach ($data as $field){ + $obj = new SwpmFbFieldmeta(); + $obj->load($field); + $this->fields[$obj->reg_field_id] = $obj; +} + +// echo "
".print_r($this->fields,1)."
"; + +$query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl"; +$query .= " LEFT JOIN " . $wpdb->prefix . "swpm_membership_tbl"; +$query .= " ON ( membership_level = id ) "; +if (isset($_REQUEST['last_name']) && $_REQUEST['last_name'] != '') { + + $lastName = sanitize_text_field($_REQUEST['last_name']); + if ( trim($lastName) != '' ) { + $query .= " WHERE last_name LIKE '%$lastName%' "; + } +} +if (isset($_REQUEST['first_name']) && $_REQUEST['first_name'] != '') { + + $firstName = sanitize_text_field($_REQUEST['first_name']); + if ( trim($firstName) != '' ) { + $query .= " WHERE first_name LIKE '%$firstName%' "; + } +} +$alpha = ''; +if (isset($_REQUEST['alpha']) && $_REQUEST['alpha'] != '') { + + $alpha = sanitize_text_field($_REQUEST['alpha']); + if ( trim($alpha) != '' ) { + $query .= " WHERE last_name LIKE '$alpha%' "; + } +} +$orderby = filter_input(INPUT_GET, 'orderby'); +$orderby = empty($orderby) ? 'user_name' : $orderby ; +$order = filter_input(INPUT_GET, 'order'); +$order = empty($order) ? 'DESC' : $order; +$query.=' ORDER BY ' . $orderby . ' ' . $order; +$totalitems = $wpdb->query($query); //return the total number of affected rows +$perpage = 20; +$paged = filter_input(INPUT_GET, 'paged'); +if (empty($paged) || !is_numeric($paged) || $paged <= 0) { + $paged = 1; +} +$totalpages = ceil($totalitems / $perpage); +if (!empty($paged) && !empty($perpage)) { + $offset = ($paged - 1) * $perpage; + $query.=' LIMIT ' . (int) $offset . ',' . (int) $perpage; +} +$this->items = $wpdb->get_results($query, ARRAY_A); +foreach ($this->items as $key => $value){ + $info = array(); + $query = 'SELECT * FROM ' . $wpdb->prefix . 'swpm_form_builder_custom WHERE user_id= %d'; + $query = $wpdb->prepare($query, $value['member_id']); + foreach ($wpdb->get_results($query) as $row) { + $id = empty($row->reg_field_id) ? $row->field_id : $row->reg_field_id; + $x = $this->fields[$id]->name; + $info[$this->fields[$id]->name] = $row; + } + $this->items[$key]['data'] = $info; +} + +// Include the output code +include_once( get_template_directory().'/simple-wp-membership/view.php'); + +?> diff --git a/simple-wp-membership/readme.txt b/simple-wp-membership/readme.txt new file mode 100644 index 0000000..6c75285 --- /dev/null +++ b/simple-wp-membership/readme.txt @@ -0,0 +1,50 @@ +Extension directory for Simple Membership Plugin +------------------------------------------------ + +This directory is checked by additions to the simple-wp-membership plugin to see if there +are certain files here that extend the Simple Membership plugin. + +For the extensions in this directory to function properly, the Simple Membership Form +Builder plugin must also be installed and activated. + +If the plugin is updated, these may have to be replaced in the following file. + + plugins/simple-membership/classes/class.simple-wp-membership.php + +* Add to the add_shortcode section near the tip of the file. + + // List Members extension + add_shortcode('swpm_list_members', array(&$this, 'list_members')); + +* Add in a convenient location down with the other methods in the file + + public function list_members() { + + $currentThemeDirectory = get_template_directory(); + if (file_exists($currentThemeDirectory.'/simple-wp-membership/methods.php')) { + + $auth = BAuth::get_instance(); + $this->notices(); + if ($auth->is_logged_in()) { + + ob_start(); + + if ($themeExtDir !== false) { + include_once($currentThemeDirectory.'/simple-wp-membership/methods.php'); + } + + return ob_get_clean(); + } + return BUtils::_( 'You are not logged in.'); + } + } + + + +Files in this directory + +readme.txt This file +methods.php A file containing methods called by shortcodes in shortcodes.php +view.php A view (template) file containing output code for this extension + + diff --git a/simple-wp-membership/view.php b/simple-wp-membership/view.php new file mode 100644 index 0000000..72a1cd6 --- /dev/null +++ b/simple-wp-membership/view.php @@ -0,0 +1,101 @@ +
+ + + + +

Search for Members

+
+
First Name:
+
Last Name:
+
+
+ + '; + + echo ' +
Or select by last initial.
+
+
+ '; + foreach (range('A', 'Z') as $initial) { + if ($alpha == $initial) { + echo ''.$initial.' '; + } else { + echo ''.$initial.' '; + } + } + echo ' +
+
+
+ '; + foreach($this->items as $m) { + if ($m['first_name'].$m['last_name'] != '') { + echo ' +
+

'.$m['first_name'].' '.$m['last_name'].'

+
Member since: '.$m['member_since'].'
+
+
+
Email address: '.$m['email'].'
+
Phone: '.$m['phone'].'
+
+ '.($m['data']['Spouse name']->value != '' ? ' +
+
Spouse: '.$m['data']['Spouse name']->value.'
+
+
+ '.($m['data']['Spouse email']->value != '' ? '
Email: '.$m['data']['Spouse email']->value.'
' : '').' + '.($m['data']['Spouse cell phone']->value != '' ? '
Cell phone: '.$m['data']['Spouse cell phone']->value.'
' : '').' +
+ ' : '') .' + '.($m['data']['Summer mailing address (P.O. Box)']->value != '' ? ' +
Summer mailing address
+
+ '.$m['data']['Summer mailing address (P.O. Box)']->value.' + '.($m['data']['Summer Apt']->value != '' ? ' + Apt: '.$m['data']['Summer Apt']->value.' + ' : '').' +
+
+
'.$m['data']['Summer City']->value.', '.$m['data']['Summer State']->value.' '.$m['data']['Summer ZIP/Postal Code']->value.'
+
+ ' : '') .' + Address #1: '.$m['data']['Address #1']->value.'
+ Phone #1: '.$m['data']['Phone #1']->value.'
+ Address #2: '.$m['data']['Address #2']->value.'
+ Phone #2: '.$m['data']['Phone #2']->value.'
+ Address #3: '.$m['data']['Address #3']->value.'
+ Phone #3: '.$m['data']['Phone #3']->value.'
+ Winter mailing address: '.$m['data']['Winter mailing address']->value.'
+ Winter Apt: '.$m['data']['Winter Apt']->value.'
+ Winter City: '.$m['data']['Winter City']->value.'
+ Winter State: '.$m['data']['Winter State']->value.'
+ Winter ZIP/Postal Code: '.$m['data']['Winter ZIP/Postal Code']->value.'
+ Winter phone: '.$m['data']['Winter phone']->value.'
+
+
+ '; + } + } + // Uncomment to show contents of each member entry + // echo "
".print_r($this->items[1],1)."
"; + ?> + -- 2.17.1