Added custom extension to Simple Membership Plugin
authorChuck Scott <cscott@gaslightmedia.com>
Wed, 13 May 2015 13:51:43 +0000 (09:51 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Wed, 13 May 2015 13:51:43 +0000 (09:51 -0400)
simple-wp-membership/methods.php [new file with mode: 0644]
simple-wp-membership/readme.txt [new file with mode: 0644]
simple-wp-membership/view.php [new file with mode: 0644]

diff --git a/simple-wp-membership/methods.php b/simple-wp-membership/methods.php
new file mode 100644 (file)
index 0000000..9c4d43a
--- /dev/null
@@ -0,0 +1,107 @@
+<?PHP
+
+global $wpdb;
+
+$membership_level = 2;
+$form_id = 4;
+
+$this->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 "<pre>".print_r($this->fields,1)."</pre>";
+
+$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 (file)
index 0000000..6c75285
--- /dev/null
@@ -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 (file)
index 0000000..72a1cd6
--- /dev/null
@@ -0,0 +1,101 @@
+<div class="wrap">
+
+       <style type="text/css">
+               .addSpaceTop {
+                       margin-top: 1em;
+               }
+               .initial {
+                       margin-left: .2em;
+                       padding-left: .2em;
+                       padding-right: .2em;
+                       margin-left: .2em;
+               }
+               .initialSelected {
+                       border: 1px solid black;
+               }
+
+       </style>
+
+       <?php 
+               $pageURL = "http://".$_SERVER['SERVER_NAME'].parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
+               echo '
+                       <form action="'.$pageURL.'" method="post">
+                               <div class="row"><div class="small-12 columns"><h3>Search for Members</h3></div></div>
+                               <div class="row">
+                                       <div class="small-6 columns">First Name: <input type="text" name="first_name" value="'.$first_name.'"></div>
+                                       <div class="small-6 columns">Last Name: <input type="text" name="last_name" value="'.$last_name.'"></div>
+                               </div>
+                               <div class="row"><div class="small-12 columns"><input type="submit" name="Search"></div></div>
+                       </form>
+               ';
+
+               echo '
+                       <div class="row"><div class="small-12 columns addSpaceTop">Or select by last initial.</div></div>
+                       <div class="row">
+                               <div class="small-12 columns">
+               ';
+               foreach (range('A', 'Z') as $initial) {
+                       if ($alpha == $initial) {
+                               echo '<a href="'.$pageURL.'?alpha='.$initial.'" class="initial initialSelected">'.$initial.'</a> ';
+                       } else {
+                               echo '<a href="'.$pageURL.'?alpha='.$initial.'" class="initial">'.$initial.'</a> ';
+                       }
+               }
+               echo '
+                               </div>
+                       </div>
+                       <hr>
+               ';
+               foreach($this->items as $m) {
+                   if ($m['first_name'].$m['last_name'] != '') {
+                       echo '
+                                       <div class="row">
+                                               <div class="small-7 columns"><h3>'.$m['first_name'].' '.$m['last_name'].'</h3></div>
+                                               <div class="small-5 columns">Member since: '.$m['member_since'].'</div>
+                                       </div>
+                                       <div class="row">
+                                               <div class="small-7 columns addSpaceTop">Email address: '.$m['email'].'</div>
+                                               <div class="small-5 columns">Phone:     '.$m['phone'].'</div>
+                                       </div>
+                               '.($m['data']['Spouse name']->value != '' ? '
+                                       <div class="row">
+                                               <div class="small-12 columns addSpaceTop">Spouse: '.$m['data']['Spouse name']->value.'</div>
+                                       </div>
+                                       <div class="row">
+                                               '.($m['data']['Spouse email']->value != '' ? '<div class="small-7 columns">Email: '.$m['data']['Spouse email']->value.'</div>' : '').'
+                                               '.($m['data']['Spouse cell phone']->value != '' ? '<div class="small-5 columns">Cell phone: '.$m['data']['Spouse cell phone']->value.'</div>' : '').'
+                                       </div>
+                               ' : '') .'
+                               '.($m['data']['Summer mailing address (P.O. Box)']->value != '' ? '
+                                       <div class="row"><div class="small-12 columns addSpaceTop">Summer mailing address</div></div>
+                                       <div class="row"><div class="small-12 columns">
+                                               '.$m['data']['Summer mailing address (P.O. Box)']->value.'
+                                               '.($m['data']['Summer Apt']->value != '' ? '
+                                                       Apt: '.$m['data']['Summer Apt']->value.'
+                                               ' : '').'
+                                       </div></div>
+                                       <div class="row">
+                                               <div class="small-12 columns">'.$m['data']['Summer City']->value.', '.$m['data']['Summer State']->value.' '.$m['data']['Summer ZIP/Postal Code']->value.'</div>
+                                       </div>
+                               ' : '') .'
+                                       Address #1: '.$m['data']['Address #1']->value.'<br>
+                                       Phone #1: '.$m['data']['Phone #1']->value.'<br>
+                                       Address #2: '.$m['data']['Address #2']->value.'<br>
+                                       Phone #2: '.$m['data']['Phone #2']->value.'<br>
+                                       Address #3: '.$m['data']['Address #3']->value.'<br>
+                                       Phone #3: '.$m['data']['Phone #3']->value.'<br>
+                                       Winter mailing address: '.$m['data']['Winter mailing address']->value.'<br>
+                                       Winter Apt: '.$m['data']['Winter Apt']->value.'<br>
+                                       Winter City: '.$m['data']['Winter City']->value.'<br>
+                                       Winter State: '.$m['data']['Winter State']->value.'<br>
+                                       Winter ZIP/Postal Code: '.$m['data']['Winter ZIP/Postal Code']->value.'<br>
+                                       Winter phone: '.$m['data']['Winter phone']->value.'<br>
+                                       <hr width="80%">
+                               </div>
+                       ';
+                   }
+               }
+               // Uncomment to show contents of each member entry
+               // echo "<pre>".print_r($this->items[1],1)."</pre>";
+       ?>
+</div><!-- end of wrap -->