public function modelAction($actionData = false)
{
+ $paging = true;
+ $prevStart = false;
+ $nextStart = false;
+ $start = 1;
+
$this->table = GLM_MEMBERS_OBITS_PLUGIN_DB_PREFIX . 'obits';
$view = 'search';
$birth_death_range = array('birth' => $year_ranges->getObitYearRange(BIRTH_YEAR_START), 'death' => $year_ranges->getObitYearRange(DEATH_YEAR_START));
$logic_dropdown = array('Contains' => 'LIKE' ,'Starts With' => 'LIKE%','Equals' => '=', 'More than' => '>', 'Less than' => '<');
- $form_data = $_REQUEST;
+ $per_page = isset( $_REQUEST['results-limit']) ? (int)filter_var( $_REQUEST['results-limit'], FILTER_SANITIZE_STRING) : 20;
+
+ $form_data = $_POST;
+
+ if ( isset( $_REQUEST['alpha'] ) ){
+ $alpha_key = filter_var( $_REQUEST['alpha'], FILTER_SANITIZE_STRING );
+ }
if( isset( $_REQUEST['conditions'] ) && $_REQUEST['conditions'][0] == 'any'){
$clause = ' OR ';
foreach($form_data as $key=>$value){
if (isset($value) && $value !== ''){
- if( $value !== 'Search' && $key !== 'conditions'){
+ if( $value !== 'Search' && $key !== 'conditions' && $key !== 'results-limit'){
if(strpos($key,'-logic') === false && strpos($key,'not-') === false ) {
$value = filter_var($value, FILTER_SANITIZE_STRING);
$search_fields[$key] = $value;
}
$search = implode($clause, $search_fields);
+
+// $sql = "SELECT * FROM $this->table" .
+// ( empty($search) ? " ORDER BY last_name ASC LIMIT 100" : " WHERE $search ORDER BY last_name ASC LIMIT 100");
+
+ if( empty($search) && empty( $alpha_key) ){
+ $where = "";
+ } else if( !empty( $alpha_key ) ) {
+ $where = "last_name LIKE '$alpha_key%'";
+ } else {
+ $where = $search;
+ }
+
+ if (isset($_REQUEST['pageSelect'])) {
+
+ // If request is for Next
+ if ($_REQUEST['pageSelect'][0] == 'N') {
+ $newStart = $_REQUEST['nextStart'] - 0;
+
+ // Otherwise it must be Previous
+ } else {
+ $newStart = $_REQUEST['prevStart'] - 0;
+ }
+
+ if ($newStart > 0) {
+ $start = $newStart;
+ }
+ }
- $sql = "SELECT * FROM $this->table LIMIT 10" .
- (empty($search) ? "" : " WHERE $search");
-// echo '<pre>', print_r($search_fields), '</pre>';
- echo $sql;
+ $obits = $this->getList($where, 'last_name', $fieldVals = true, $idField = 'id', $start, $per_page);
+
+ // Get paging results
+ $numbDisplayed = $obits['returned'];
+
+ $lastDisplayed = $obits['last'];
+
+ if ($start == 1) {
+ $prevStart = false;
+ } else {
+ $prevStart = $start - $per_page;
+ if ($start < 1) {
+ $start = 1;
+ }
+ }
+ if ($obits['returned'] == $per_page) {
+ $nextStart = $start + $per_page;
+ }
+// print_r($obits['list']);
+
+ $get_rows = "SELECT COUNT(*) FROM $this->table";
- $obits = $this->wpdb->get_results($sql, 'ARRAY_A');
-// echo '<pre>', print_r($obits), '</pre>';
+ $rows = $this->wpdb->get_results($get_rows, 'ARRAY_A');
+
+ $total_records = $rows[0]['COUNT(*)'];
+
+ $alphaList = false;
+ $alphaWhere = '';
+ if ($this->config['settings']['list_show_search_alpha']) {
+
+ $alphaSelected = false;
- if( isset($_REQUEST['searchButton']) ){
+ // Check for alpha selected
+ if ($actionData['request']['alpha'] && strlen($actionData['request']['alpha']) == 1) {
+ $alphaSelected = strtoupper($actionData['request']['alpha']);
+ $alphaWhere .= " AND T.member_name LIKE '$alphaSelected%'";
+ }
+
+ // Get full list for all other filters, but not filtered by alpha (that would be silly)
+ $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected);
+
+ }
+// print_r($alphaList);
+
+ if( isset($_REQUEST['searchButton']) || isset( $_REQUEST['pageSelect'] ) || isset($_REQUEST['alpha'] ) ){
$view = 'searchResults';
}
$templateData = array(
'birth_death_range' => $birth_death_range,
'sql' => $sql,
- 'obits' => $obits,
+ 'obits' => $obits['list'],
'logic' => $logic_dropdown,
- 'clause' => $clause
+ 'pages' => $pages,
+ 'per_page' => $per_page,
+ 'numbDisplayed' => $numbDisplayed,
+ 'lastDisplayed' => $lastDisplayed,
+ 'paging' => $paging,
+ 'prevStart' => $prevStart,
+ 'nextStart' => $nextStart,
+ 'start' => $start,
+ 'limit' => $per_page,
+ 'total' => $total_records,
+ 'alphaList' => $alphaList,
+ 'alpha_key' => $alpha_key
+
);
// Return status, any suggested view, and any data to controller
return array(
<div class="row">
- <div class="small-12 large-9 columns results-container">
- <table class="footable">
- <thead>
- <tr>
- <th>Birth Year Range</th>
- <th>Death Year Range</th>
- <th>Last Name</th>
- <th>First Name</th>
- <th>Birth Year</th>
- <th>Death Year</th>
- <th>Spouse</th>
- <th>Maiden Name</th>
- </tr>
- </thead>
- {foreach from=$obits item=i}
- <tr>
- <td>{$i.b_yr_range}</td>
- <td>{$i.d_yr_range}</td>
- <td>{$i.last_name}</td>
- <td>{$i.first_mid}</td>
- <td>{$i.b_year}</td>
- <td>{$i.d_year}</td>
- <td>{$i.spouse_partner}</td>
- <td>{$i.maiden_other}</td>
- </tr>
- {/foreach}
- </table>
- </div>
- <div class="small-12 medium-6 large-3 columns small-centered large-uncentered search-sidebar-container">
- <div class="search-sidebar">
-<!-- {include file='front/obits/search.html'}-->
- <div class="search-container sidebar-container row">
- <div class="small-12 columns">
- <form action="{$thisUrl}" method="post" enctype="multipart/form-data" name="obits-search" id="obits-search">
- <input class="sidebar-criteria" type="radio" checked value="all" name="conditions[]">All
- <input class="sidebar-criteria" type="radio" value="any" name="conditions[]">Any
- <a href="#" class="expand-collapse"> Expand Options </a>
-
-
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Last Name:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-last">Not</label>
- <input type="checkbox" value="not" id="not-last" name="not-last_name">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="last_name-logic" id="last_name-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
- {/foreach}
- </select>
- </div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="last_name" placeholder="Last Name">
- </div>
- </div>
+ <form action="{$thisUrl}" method="post" enctype="multipart/form-data" name="obits-search" id="obits-search">
+ <div class="small-12 large-9 columns results-container">
+ <div class="glm-alpha-links">
+ {foreach $alphaList as $a}
+ <a href="{$thisUrl}?alpha={$a.alpha}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&results-limit={$limit}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+ {/foreach}
+ </div>
+ {if $paging}
+ <br>
+ <a href="{$thisUrl}?pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&results-limit={$limit}{if $alpha_key}&alpha={$alpha_key}{/if}" class="glm-alpha-link obits-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>Previous page</a>
+ <a href="{$thisUrl}?pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&results-limit={$limit}{if $alpha_key}&alpha={$alpha_key}{/if}" class="glm-alpha-link obits-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page</a>
+ <br>
+ showing {$start} through {$lastDisplayed} of {$total}
+ {/if}
+ <label class="search-results-label" for="results-limit">Results per page</label>
+ <select id="results-limit" class="results-limit" name="results-limit">
+ <option value="10">10</option>
+ <option value="20">20</option>
+ <option value="30">30</option>
+ <option value="50">50</option>
+ <option value="100">100</option>
+ <option value="500">500</option>
+ </select>
+ <table class="footable results-table" data-paging="false">
+ <thead>
+ <tr>
+ <th>Birth Year Range</th>
+ <th>Death Year Range</th>
+ <th>Last Name</th>
+ <th>First Name</th>
+ <th>Birth Year</th>
+ <th>Death Year</th>
+ <th>Spouse</th>
+ <th>Maiden Name</th>
+ </tr>
+ </thead>
+ {foreach from=$obits item=i}
+ <tr>
+ <td>{$i.b_yr_range}</td>
+ <td>{$i.d_yr_range}</td>
+ <td>{$i.last_name}</td>
+ <td>{$i.first_mid}</td>
+ <td>{$i.b_year}</td>
+ <td>{$i.d_year}</td>
+ <td>{$i.spouse_partner}</td>
+ <td>{$i.maiden_other}</td>
+ </tr>
+ {/foreach}
+ </table>
+ </div>
+ <div class="small-12 medium-6 large-3 columns small-centered large-uncentered search-sidebar-container">
+ <div class="search-sidebar">
+ <!-- {include file='front/obits/search.html'}-->
+ <div class="search-container sidebar-container row">
+ <div class="small-12 columns">
+ <form action="{$thisUrl}" method="post" enctype="multipart/form-data" name="obits-search" id="obits-search">
+ <input class="sidebar-criteria" type="radio" checked value="all" name="conditions[]">All
+ <input class="sidebar-criteria" type="radio" value="any" name="conditions[]">Any
+ <a href="#" class="expand-collapse"> Expand Options </a>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- First Name & Middle:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-first_mid">Not</label>
- <input type="checkbox" value="not" id="not-first_mid" name="not-first_mid">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="first_mid-logic" id="first_mid-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
- {/foreach}
- </select>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Last Name:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-last">Not</label>
+ <input type="checkbox" value="not" id="not-last" name="not-last_name">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="last_name-logic" id="last_name-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="last_name" placeholder="Last Name">
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="first_mid" placeholder="First - Middle Name">
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Birth Year:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-b_year">Not</label>
- <input type="checkbox" value="not" id="not-b_year" name="not-b_year">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="b_year-logic" id="b_year-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
- {/foreach}
- </select>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ First Name & Middle:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-first_mid">Not</label>
+ <input type="checkbox" value="not" id="not-first_mid" name="not-first_mid">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="first_mid-logic" id="first_mid-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="first_mid" placeholder="First - Middle Name">
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="b_year" placeholder="Year of Birth">
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Birth Year Range:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-b_yr_range">Not</label>
- <input type="checkbox" value="not" id="not-b_yr_range" name="not-b_yr_range">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="b_yr_range-logic" id="b_yr_range-logic">
- <option value="=">Equals</option>
- </select>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Birth Year:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-b_year">Not</label>
+ <input type="checkbox" value="not" id="not-b_year" name="not-b_year">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="b_year-logic" id="b_year-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="b_year" placeholder="Year of Birth">
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <select name="b_yr_range" id="">
- <option value="">Select a date range</option>
- {foreach from=$birth_death_range.birth item=r}
- <option value="{$r.start}">{$r.start} - {$r.end}</option>
- {/foreach}
- </select>
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Death Year:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-death">Not</label>
- <input type="checkbox" value="not" id="not-death" name="not-d_year">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="d_year-logic" id="d_year-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Birth Year Range:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-b_yr_range">Not</label>
+ <input type="checkbox" value="not" id="not-b_yr_range" name="not-b_yr_range">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="b_yr_range-logic" id="b_yr_range-logic">
+ <option value="=">Equals</option>
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <select name="b_yr_range" id="">
+ <option value="">Select a date range</option>
+ {foreach from=$birth_death_range.birth item=r}
+ <option value="{$r.start}">{$r.start} - {$r.end}</option>
{/foreach}
- </select>
+ </select>
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="d_year" placeholder="Year of Death">
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Death Year Range:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-d_yr_range">Not</label>
- <input type="checkbox" value="not" id="not-d_yr_range" name="not-d_yr_range">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="d_yr_range-logic" id="d_yr_range-logic">
- <option value="=">Equals</option>
- </select>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Death Year:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-death">Not</label>
+ <input type="checkbox" value="not" id="not-death" name="not-d_year">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="d_year-logic" id="d_year-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="d_year" placeholder="Year of Death">
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <select name="d_yr_range" id="d_yr_range-range">
- <option value="">Select a date range</option>
- {foreach from=$birth_death_range.death item=r}
- <option value="{$r.start}">{$r.start} - {$r.end}</option>
- {/foreach}
- </select>
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Maiden or Other Name:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-maiden_other">Not</label>
- <input type="checkbox" value="not" id="not-maiden" name="not-maiden_other">
- </div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="maiden_other-logic" id="maiden_other-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Death Year Range:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-d_yr_range">Not</label>
+ <input type="checkbox" value="not" id="not-d_yr_range" name="not-d_yr_range">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="d_yr_range-logic" id="d_yr_range-logic">
+ <option value="=">Equals</option>
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <select name="d_yr_range" id="d_yr_range-range">
+ <option value="">Select a date range</option>
+ {foreach from=$birth_death_range.death item=r}
+ <option value="{$r.start}">{$r.start} - {$r.end}</option>
{/foreach}
- </select>
+ </select>
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="maiden_other" placeholder="Maiden or Other">
- </div>
- </div>
- <div class="row search-row">
- <div class="small-12 columns search-label">
- Spouse / Partner Name:
- </div>
- <div class="options-wrapper">
- <div class="small-3 large-3 columns">
- <label for="not-spouse_partner">Not</label>
- <input type="checkbox" value="not" value="not" id="not-spouse" name="not-spouse_partner">
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Maiden or Other Name:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-maiden_other">Not</label>
+ <input type="checkbox" value="not" id="not-maiden" name="not-maiden_other">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="maiden_other-logic" id="maiden_other-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="maiden_other" placeholder="Maiden or Other">
+ </div>
</div>
-
- <div class="small-4 medium-3 large-6 columns">
- <select name="spouse_partner-logic" id="spouse_partner-logic">
- {foreach from=$logic key=k item=i}
- <option value="{$i}">{$k}</option>
- {/foreach}
- </select>
+
+
+ <div class="row search-row">
+ <div class="small-12 columns search-label">
+ Spouse / Partner Name:
+ </div>
+ <div class="options-wrapper">
+ <div class="small-3 large-3 columns">
+ <label for="not-spouse_partner">Not</label>
+ <input type="checkbox" value="not" value="not" id="not-spouse" name="not-spouse_partner">
+ </div>
+
+ <div class="small-4 medium-3 large-6 columns">
+ <select name="spouse_partner-logic" id="spouse_partner-logic">
+ {foreach from=$logic key=k item=i}
+ <option value="{$i}">{$k}</option>
+ {/foreach}
+ </select>
+ </div>
+ </div>
+ <div class="small-12 columns">
+ <input type="text" name="spouse_partner" placeholder="Spouse or Partner">
+ </div>
</div>
- </div>
- <div class="small-12 columns">
- <input type="text" name="spouse_partner" placeholder="Spouse or Partner">
- </div>
+ <input id="input" class="search-button" name="searchButton" value="Search" type="submit">
</div>
-
- <input id="input" class="search-button" name="searchButton" value="Search" type="submit">
- </form>
+ </div>
</div>
</div>
- </div>
- </div>
-</div>
\ No newline at end of file
+ </form>
+</div>
+<script type="text/javascript">
+ jQuery(document).ready(function($) {
+ var results_limit = {$limit};
+
+ $('#results-limit').val(results_limit);
+ });
+</script>
\ No newline at end of file