Adding icons from NOAA.
City weather shortcode created to fetch the city weather using lat lon
from each city.
Updating shortcode description.
Removing extra end table tag from description.
--- /dev/null
+[Dolphin]
+Timestamp=2018,11,7,16,24,18
+Version=4
return $cities;
}
-}
+ /*
+ * Get Alpha list of first characters in member name
+ * for those members that have active info.
+ *
+ * @param string $where Where clause
+ * Note the table refernces M and I.
+ * @param string $selected Optional selected alpha character
+ *
+ * @return object Class object
+ *
+ */
+ public function getAlphaList( $where = '', $selected = '' )
+ {
+ $sql = "
+ SELECT DISTINCT LEFT(T.name, 1) AS alpha
+ FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "cities T
+ WHERE true $where
+ ORDER BY alpha";
-?>
+ $alphaData = $this->wpdb->get_results($sql, ARRAY_A);
+
+ // Set selected
+ foreach ($alphaData as $k=>$v) {
+ $alphaData[$k]['default'] = ($v['alpha'] == $selected);
+ }
+
+ return $alphaData;
+ }
+
+}
*/
define('GLM_MEMBERS_PLUGIN_VERSION', '2.10.45');
-define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.43');
+define('GLM_MEMBERS_PLUGIN_DB_VERSION', '1.1.44');
// Check if plugin version is not current in WordPress option and if needed updated it
if (GLM_MEMBERS_PLUGIN_VERSION != get_option('glmMembersDatabasePluginVersion')) {
--- /dev/null
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * Front Interactive Map
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package glmMembersDatabase
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+
+// Load Members data abstract
+require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php';
+
+/*
+ * This class performs the work for the default action of the "Members" menu
+ * option, which is to display the members dashboard.
+ *
+ */
+class GlmMembersFront_members_cityWeather extends GlmDataCities
+{
+
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+
+ /*
+ * Constructor
+ *
+ * This contructor sets up this model. At this time that only includes
+ * storing away the WordPress data object.
+ *
+ * @return object Class object
+ *
+ */
+ public function __construct ($wpdb, $config)
+ {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ // Run constructor for members data class
+ parent::__construct(false, false);
+
+ }
+
+ /*
+ * Perform Model Action
+ *
+ * This method does the work for this model and returns any resulting data
+ *
+ * @return array Status and data array
+ *
+ * 'status'
+ *
+ * True if successful and false if there was a fatal failure.
+ *
+ * 'menuItemRedirect'
+ *
+ * If not false, provides a menu item the controller should
+ * execute after this one. Normally if this is used, there would also be a
+ * modelRedirect value supplied as well.
+ *
+ * 'modelRedirect'
+ *
+ * If not false, provides an action the controller should execute after
+ * this one.
+ *
+ * 'view'
+ *
+ * A suggested view name that the contoller should use instead of the
+ * default view for this model or false to indicate that the default view
+ * should be used.
+ *
+ * 'data'
+ *
+ * Data that the model is returning for use in merging with the view to
+ * produce output.
+ *
+ */
+ public function modelAction ( $actionData = false )
+ {
+ $settings = array();
+ $success = true;
+ $alpha = 'A';
+ $alphaList = false;
+ $latbounds =
+ $latbounds = false;
+
+ if ( $actionData['request']['lon-bounds'] ) {
+ $latbounds = $actionData['request']['lat-bounds'];
+ }
+
+ if ( $actionData['request']['lon-bounds'] ) {
+ $lonbounds = $actionData['request']['lon-bounds'];
+ }
+
+ // for current weather
+ $this->now = mktime(
+ date('H') + 1,
+ date('i'),
+ date('s'),
+ date('m'),
+ date('d'),
+ date('Y'));
+
+ // for weather caching
+ $this->validTime = mktime(
+ date('H') - 24,
+ date('i'),
+ date('s'),
+ date('m'),
+ date('d'),
+ date('Y'));
+
+ if ( isset( $_REQUEST['alpha'] ) && $_REQUEST['alpha'] ) {
+ $alpha = filter_var( $_REQUEST['alpha'], FILTER_SANITIZE_STRING );
+ }
+
+ $alphaList = $this->getAlphaList(' AND T.lat IS NOT NULL AND lon IS NOT NULL ', $alpha);
+
+ $alphaSelected = strtoupper( $alpha );
+
+ $where = " T.name LIKE '$alphaSelected%'";
+
+ $cities = $this->getList( $where, 'name' );
+
+ if ( $cities ) {
+ foreach ( $cities as &$city ) {
+ $cWeather = $this->checkWeather( $city['id'] );
+ if ( $cWeather ) {
+ $icon_url = parse_url( $cWeather['icon'] );
+ // echo '<pre>$icon_url: ' . print_r( $icon_url, true ) . '</pre>';
+ $icon_file = basename( $icon_url['path'] );
+ // echo '<pre>$icon_file: ' . print_r( $icon_file, true ) . '</pre>';
+ $city['temp_max'] = $cWeather['temp_max'];
+ $city['temp_min'] = $cWeather['temp_min'];
+ $city['weather'] = $cWeather['weather'];
+ $city['moreinfo'] = $cWeather['moreinfo'];
+ $city['icon'] = $icon_file;
+ } else {
+ $city['temp_max'] = '';
+ $city['temp_min'] = '';
+ $city['weather'] = 'N/A';
+ $city['moreinfo'] = '';
+ $city['icon'] = '';
+ }
+ }
+ }
+
+ $templateData = array(
+ 'jsUrl' => GLM_MEMBERS_PLUGIN_JS_URL,
+ 'cities' => $cities,
+ 'icon_url_path' => GLM_MEMBERS_PLUGIN_ASSETS_URL . '/WeatherIcons',
+ 'alphaList' => $alphaList,
+ );
+
+ // Return status, suggested view, and data to controller - also return any modified settings
+ return array(
+ 'status' => $success,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => "front/members/cityWeather.html",
+ 'data' => $templateData,
+ 'settings' => $settings,
+ );
+
+ }
+
+ /**
+ * Lookup data from zip database to get the lat lon for the city
+ * given it's city_id
+ * need lookup from city table to get city_name
+ * use city_alias field in zip database
+ *
+ * @param mixed $cid city_id from city table
+ *
+ * @access public
+ * @return string
+ */
+ function getLatLonForCity( $city_id )
+ {
+ return $this->wpdb->get_row(
+ $this->wpdb->prepare(
+ "SELECT lat,lon
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "cities
+ WHERE id = %d",
+ $city_id
+ ),
+ ARRAY_A
+ );
+ }
+
+ /**
+ * Checks to see if there's current weather in the database
+ * if not then it will go out to get current ndfd data from noaa
+ * these are 24 hour weather-summaries and they are reloaded
+ * when needed after 24 hours.
+ * You can change the time it refreshes thes by changing the
+ * $this->validTime variable.
+ *
+ * @param int $cid City id from city table
+ *
+ * @access public
+ * @return string
+ */
+ function checkWeather( $cid )
+ {
+ static $validTime;
+ $update = false;
+ if (!$validTime) {
+ $validTime = date("m/d/Y", $this->validTime);
+ }
+
+ // get current db data for city weather
+ $weatherData = $this->wpdb->get_row(
+ $this->wpdb->prepare(
+ "SELECT temp_max,temp_min,icon,weather,moreinfo,wx_time
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "cities
+ WHERE id = %d",
+ $cid
+ ),
+ ARRAY_A
+ );
+ // convert date to timestamp
+ $wx_time = strtotime( $weatherData['wx_time'] );
+
+ if ( ( (int)$wx_time <= $this->validTime ) || $weatherData['weather'] == '' ) {
+ $update = true;
+ } else {
+ return $weatherData;
+ }
+ // echo '<pre>$update: ' . print_r( $update, true ) . '</pre>';
+ // check the valid time if is older that $this->validTime
+ // then set update true
+ if ( $update ) {
+ // do lookup for lat lon
+ $llData = $this->getLatLonForCity( $cid );
+ $weatherData = $this->pullWeather( $llData['lat'], $llData['lon'] );
+ }
+ if ( $update && $weatherData['weather'] ) {
+ $this->wpdb->update(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX . 'cities',
+ array(
+ 'temp_max' => $weatherData['temp_max'],
+ 'temp_min' => $weatherData['temp_min'],
+ 'icon' => $weatherData['icon'],
+ 'weather' => $weatherData['weather'],
+ 'moreinfo' => $weatherData['moreinfo'],
+ 'wx_time' => date( 'Y-m-d H:i:s' )
+ ),
+ array( 'id' => $cid ),
+ array(
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s'
+ ),
+ array( '%d' )
+ );
+ }
+ // if there's no weather then return false
+ if ($weatherData['weather']) {
+ return $weatherData;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * pull the weather feed and give a return string to use
+ *
+ * @param unknown $lat Latitude + North - South
+ * @param unknown $lon Longitude + East - West
+ *
+ * @return void
+ * @access public
+ */
+ function pullWeather( $lat, $lon )
+ {
+ try {
+ $client = new SoapClient(
+ 'https://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl',
+ array(
+ 'trace' => true,
+ 'exceptions' => false,
+ 'connection_timeout' => '60',
+ 'soap_version' => 'SOAP 1.2',
+ 'exceptions' => '1',
+ 'cache_wsdl' => WSDL_CACHE_NONE,
+ 'stream_context' => stream_context_create(
+ array(
+ 'http' => array(
+ 'user_agent' => 'PHP/SoapClient'
+ )
+ )
+ )
+ )
+ );
+ $res2 = $client->__soapCall(
+ 'NDFDgenByDayLatLonList',
+ array(
+ 'listLatLon' => $lat.','.$lon,
+ 'startDate' => date('Y-m-d', $this->now),
+ 'numdays' => '1',
+ 'units' => 'e',
+ 'format' => '24 hourly'
+ )
+ );
+ $result = $this->cleanUpXml($client->__getLastResponse());
+
+ // create a new SimpleXmlElement with clean xml
+ $xml = new SimpleXmlElement($result);
+ // get condition icon url
+ // icon
+ $condIcon = $xml->xpath('//icon-link');
+ $icon = $condIcon[0];
+
+ // more_info
+ $link = $xml->xpath('//moreWeatherInformation');
+ $moreinfo = $link[0];
+
+ // temp_max
+ $tempAppt = $xml->xpath('//temperature[@type="maximum"]');
+ $temp_max = $tempAppt[0]->value;
+
+ // temp_min
+ $tempAppt = $xml->xpath('//temperature[@type="minimum"]');
+ $temp_min = $tempAppt[0]->value;
+
+ // weather
+ $wxSummary = $xml->xpath('//weather/weather-conditions');
+ foreach ($wxSummary[0]->attributes() as $wxkey => $wxval) {
+ $weather = $wxval;
+ }
+ return array(
+ 'temp_max' => $temp_max,
+ 'temp_min' => $temp_min,
+ 'icon' => $icon,
+ 'weather' => $weather,
+ 'moreinfo' => $moreinfo,
+ );
+ } catch (SoapFault $fault) {
+ // let's just give message of no data
+ // or just return empty array
+ return false;
+
+ }
+ }
+
+ /**
+ * Clean up the returning xml format from ndfd data
+ * to be used in SimpleXml
+ *
+ * @param string $xml Xml from SoapClient lastResponse call
+ *
+ * @return string well formated xml for SimpleXml
+ * @access public
+ */
+ function cleanUpXml($xml)
+ {
+ $xml = htmlspecialchars_decode($xml);
+ $patterns[] = "/<?xml version=\"1.0\"?>/";
+ $patterns[] = "/ version='1.0'/";
+ $patterns[] = "/<SOAP-ENV:Envelope (.*)>/";
+ $patterns[] = "/<SOAP-ENV:Body>/";
+ $patterns[] = "/<ns1:NDFDgenResponse (.*)>/";
+ $patterns[] = "/<ns1:NDFDgenLatLonListResponse (.*)>/";
+ $patterns[] = "/<ns1:NDFDgenByDayLatLonListResponse (.*)>/";
+ $patterns[] = "/<ns1:NDFDgenByDayResponse (.*)>/";
+ $patterns[] = "/<ns1:LatLonListZipCodeResponse (.*)>/";
+ $patterns[] = "/<dwmlByDayOut (.*)>/";
+ $patterns[] = "/<dwmlOut (.*)>/";
+ $patterns[] = "/<listLatLonOut (.*)>/";
+ $patterns[] = "/<\/listLatLonOut>/";
+ $patterns[] = "/<\/dwmlOut>/";
+ $patterns[] = "/<\/dwmlByDayOut>/";
+ $patterns[] = "/<\/ns1:LatLonListZipCodeResponse>/";
+ $patterns[] = "/<\/ns1:NDFDgenByDayResponse>/";
+ $patterns[] = "/<\/ns1:NDFDgenLatLonListResponse>/";
+ $patterns[] = "/<\/ns1:NDFDgenByDayLatLonListResponse>/";
+ $patterns[] = "/<\/ns1:NDFDgenResponse>/";
+ $patterns[] = "/<\/SOAP-ENV:Body>/";
+ $patterns[] = "/<\/SOAP-ENV:Envelope>/";
+ foreach ($patterns as $pattern) {
+ $xml = preg_replace($pattern, "", $xml);
+ }
+ return $xml;
+ }
+
+
+}
+++ /dev/null
--- Gaslight Media Members Database
--- File Created: 12/29/16 12:06:00
--- Database Version: 1.1.41
--- Database Creation Script
---
--- To permit each query below to be executed separately,
--- all queries must be separated by a line with four dashes
---
--- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
---
-
--- Amenities
-CREATE TABLE {prefix}amenities (
- id INT NOT NULL AUTO_INCREMENT,
- active TINYINT(1) NULL, -- Amenity is active flag
- name TINYTEXT NULL, -- Name of amenity
- descr TEXT NULL, -- Description of amenity
- short_descr TINYTEXT NULL, -- Short description of amenity
- ref_type INT NULL, -- Type of entity these amenities are associated with - see plugin.ini ref_type tables
- uses_value BOOLEAN NULL, -- Flag indicating whether the amenity requires a quantity number
- PRIMARY KEY (id),
- INDEX(name(20))
-);
-
-----
-
--- Amenity Reference - Links a specific amenity to a specific entity of type ref_type
-CREATE TABLE {prefix}amenity_ref (
- id INT NOT NULL AUTO_INCREMENT,
- amenity INT NULL, -- Pointer to amenity in amenities table
- ref_type INT NULL, -- Copy of ref_type from matching amenities table entry - to simplify searches
- ref_dest INT NULL, -- Pointer to the specific entity of type ref_type
- amenity_value TINYTEXT NULL, -- Quantity if amenity uses values
- PRIMARY KEY (id),
- INDEX(ref_type),
- INDEX(ref_dest)
-);
-
-----
-
--- groups
-CREATE TABLE {prefix}amenity_groups (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of the Group
- PRIMARY KEY (id),
- INDEX(name(20))
-);
-
-----
-
--- Amenity Group - Links a specific amenity to groups
-CREATE TABLE {prefix}grouped_amenities (
- id INT NOT NULL AUTO_INCREMENT,
- group_id INT, -- Pointer to the group
- amenity_id INT, -- Pointer to the Amenity
- searchable BOOLEAN DEFAULT '0', -- Flag indicating whether the amenity group will show in the search form
- PRIMARY KEY (id)
-);
-
-----
-
--- Member Cateogries - used with member information records
-CREATE TABLE {prefix}categories (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of this category
- descr TEXT NULL, -- Description of this category
- short_descr TINYTEXT NULL, -- Short description of this category
- parent INT NULL, -- Pointer to parent category in this table - if there is one
- PRIMARY KEY (id)
-);
-
-----
-
--- Mapping of categories to specific member information records
-CREATE TABLE {prefix}category_member_info (
- id INT NOT NULL AUTO_INCREMENT,
- category INT NULL, -- Pointer to category in categories table
- member_info INT NULL, -- Pointer to member information record
- PRIMARY KEY (id),
- CONSTRAINT {prefix}categories_fk_1
- FOREIGN KEY (category)
- REFERENCES {prefix}categories (id)
- ON DELETE CASCADE,
- INDEX(category),
- INDEX(member_info)
-);
-
-----
-
--- Cities
-CREATE TABLE {prefix}cities (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of city
- lat FLOAT NULL, -- Latitude of city's location
- lon FLOAT NULL, -- Longitude of city's location
- county INT NULL, -- County reference to county table
- PRIMARY KEY (id)
-);
-
-----
-
--- Member Click Through Stats Data - Totals of URL click-throughs - Preserved for 2 years
-CREATE TABLE {prefix}clickthrough_stats (
- member INT NOT NULL, -- ID of member
- stat_type INT NOT NULL, -- Type of stat 1 = day, 2 = week, 3 = month
- stat_date DATE NOT NULL, -- Date for which these stats are accumulated (date or first date of week or month)
- clicks INT NULL, -- Number of Clicks
- PRIMARY KEY (member, stat_type, stat_date),
- INDEX (member),
- INDEX (stat_type),
- INDEX (stat_date)
-);
-
-----
-
--- Files - Files are stored under /wp-content/uploads/glm-member-db/files/
-CREATE TABLE {prefix}files (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Original name of the file - might be URL if copied via HTTP
- status TINYINT(1) NULL, -- Display/Use status - See plugin.ini status table
- file_name TINYTEXT NULL, -- Stored file name for the file
- descr TEXT NULL, -- Description
- caption TINYTEXT NULL, -- Caption for the image
- position INT NULL, -- Numeric position for sequence of display
- ref_type INT NULL, -- Type of entity this image is associated with
- ref_dest INT NULL, -- Pointer to the specific entity of ref_type this image is associated with
- PRIMARY KEY (id),
- INDEX(name(20)),
- INDEX(file_name(20)),
- INDEX(ref_type),
- INDEX(ref_dest)
-);
-
-----
-
--- Images - Images are stored under /wp-content/uploads/glm-member-db/images/{size}/
-CREATE TABLE {prefix}images (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Original name of the image - might be URL if copied via HTTP
- status TINYINT(1) NULL, -- Display/Use status - See plugin.ini status table
- selected BOOLEAN NULL, -- A single special image in the current gallery for this entity
- featured BOOLEAN null, -- Image is a member of a group of featured images
- file_name TINYTEXT NULL, -- Stored file name for the image
- descr TEXT NULL, -- Description
- caption TINYTEXT NULL, -- Caption for the image
- position INT NULL, -- Numeric position for sequence of display
- ref_type INT NULL, -- Type of entity this image is associated with
- ref_dest INT NULL, -- Pointer to the specific entity of ref_type this image is associated with
- PRIMARY KEY (id),
- INDEX(name(20)),
- INDEX(file_name(20)),
- INDEX(ref_type),
- INDEX(ref_dest)
-);
-
-----
-
--- Primary member records - One for each member
-CREATE TABLE {prefix}members (
- id INT NOT NULL AUTO_INCREMENT,
- access INT NULL, -- Access type - See access table in plugin.ini
- member_type INT NULL, -- Pointer to member type in member_type table
- created DATE NULL, -- Date member record was created
- name TINYTEXT NULL, -- Member name
- member_slug TINYTEXT NULL, -- Member name slug for canonical URLs (lowercase, "-" for spaces, no punctuation)
- notes TEXT NULL, -- General notes - Not displayed in front-end
- old_member_id TINYTEXT NULL, -- Old member ID if imported from old database
- featured BOOLEAN DEFAULT '0', -- Whether the member is featured
- PRIMARY KEY (id),
- INDEX(name(20)),
- INDEX(member_slug(20)),
- INDEX(created),
- INDEX(old_member_id(20))
-);
-
-----
-
--- Member Detail Display Stats Data - Totals of times detail page is displayed - Preserved for 2 years
-CREATE TABLE {prefix}member_detail_stats (
- member INT NOT NULL, -- ID of member
- stat_type INT NOT NULL, -- Type of stat 1 = day, 2 = week, 3 = month
- stat_date DATE NOT NULL, -- Date for which these stats are accumulated (date or first date of week or month)
- clicks INT NULL, -- Number of Clicks
- PRIMARY KEY (member, stat_type, stat_date),
- INDEX (member),
- INDEX (stat_type),
- INDEX (stat_date)
-);
-
-----
-
--- Member information version record - May be multiples per member - Only one with status "Active" for a distinct date range
-CREATE TABLE {prefix}member_info (
- id INT NOT NULL AUTO_INCREMENT,
- member INT NULL, -- Pointer to member record in table members
- member_name TINYTEXT NULL, -- Copy of member name from members table entry for fast reference
- status INT NULL, -- Status of this member information record - See plugin.ini status table
- reference_name TINYTEXT NULL, -- Reference name for this member information record - Not displayed on front-end
- has_no_map_data BOOLEAN DEFAULT '0', -- True if member info record has no map data
- has_no_profile BOOLEAN DEFAULT '0', -- True if member has no profile record
- descr TEXT NULL, -- Description
- short_descr TEXT NULL, -- Short description
- addr1 TINYTEXT NULL, -- Main member location address line 1
- addr2 TINYTEXT NULL, -- Address line 2
- city INT NULL, -- Pointer to City in cities table
- state TINYTEXT NULL, -- Two character state code - matches states.ini entries
- country TINYTEXT NULL, -- Two character country code - matches countries.ini entries
- zip TINYTEXT NULL, -- ZIP/Postal code
- lat FLOAT NULL, -- Latitude of member's location
- lon FLOAT NULL, -- Longitude of member's location
- region INT NULL, -- Pointer to entry in regions table
- county INT NULL, -- Pointer to entry in regions table
- phone TINYTEXT NULL, -- Primary phone number
- toll_free TINYTEXT NULL, -- Toll Free phone number
- url TINYTEXT NULL, -- URL with information about this member
- reservation_url TEXT NULL, -- Reservation URL
- email TINYTEXT NULL, -- Main E-Mail address for this member
- logo TINYTEXT NULL, -- Member logo
- cc_type INT NULL, -- Bitmap of credit card types accepted - See credit_card array in plugin.ini
- video_url TINYTEXT NULL, -- Video URL
- video_file TINYTEXT NULL, -- Video File Name
- video_title TINYTEXT NULL, -- Video Title
- video_descr TEXT NULL, -- Video Description
- video_type INT NULL, -- Video Type - See plugin.ini video type table.
- live_cam_url TINYTEXT NULL, -- Live Cam URL
- live_cam_title TINYTEXT NULL, -- Live Cam Title
- live_cam_descr TEXT NULL, -- Live Cam Description
- live_cam_type INT NULL, -- Live Cam Type - See plugin.ini video type table.
- mailing_addr1 TINYTEXT NULL, -- Mailing Address 1
- mailing_addr2 TINYTEXT NULL, -- Mailing Address 2
- mailing_city INT NULL, -- Mailing City (Pointer to City in cities table)
- mailing_state TINYTEXT NULL, -- Mailing State (Two character state code - matches states.ini entries)
- mailing_zip TINYTEXT NULL, -- Mailing ZIP/Postal code
- notes TEXT NULL, -- General notes - Not displayed in front-end
- create_time TIMESTAMP NULL, -- Create date/time
- modify_time TIMESTAMP NULL, -- Last update date/time
- PRIMARY KEY (id),
- INDEX(status),
- INDEX(city),
- INDEX(zip(10)),
- INDEX(lat),
- INDEX(lon),
- INDEX(region),
- INDEX(county),
- FULLTEXT KEY member_name (member_name)
-);
-
-----
-
--- Member type - Can be used to assign members to different "classes" of membership (i.e. Full, Associate, Premium)
--- Mostly for internal use by the member organization, but could be displayed - Consider a short_description if they are.
-CREATE TABLE {prefix}member_type (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of member type
- descr TINYTEXT NULL, -- Description of member type
- PRIMARY KEY (id)
-);
-
-----
-
--- Regions - Used to segment members into various geographical regions - can be cities, counties, or other logical regions
-CREATE TABLE {prefix}regions (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of region
- descr TEXT NULL, -- Description of region
- short_descr TINYTEXT NULL, -- Short description of region
- PRIMARY KEY (id)
-);
-
-----
-
--- Counties
-CREATE TABLE {prefix}counties (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of county
- descr TEXT NULL, -- Description of county
- short_descr TINYTEXT NULL, -- Short description of county
- PRIMARY KEY (id)
-);
-
-----
-
--- File Library Cateogries - used with "Files Library" - Created due to PDF failures in WordPress Media Library
-CREATE TABLE {prefix}file_library_categories (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Name of this category
- descr TEXT NULL, -- Description of this category
- short_descr TINYTEXT NULL, -- Short description of this category
- parent INT NULL, -- Pointer to parent category in this table - if there is one
- PRIMARY KEY (id)
-);
-
-----
-
--- Files Library - Files are stored under /wp-content/uploads/glm-member-db/filesLibrary/
-CREATE TABLE {prefix}file_library (
- id INT NOT NULL AUTO_INCREMENT,
- name TINYTEXT NULL, -- Original name of the file - might be URL if copied via HTTP
- file_name TINYTEXT NULL, -- Stored file name for the file
- descr TEXT NULL, -- Description
- title TINYTEXT NULL, -- File title
- last_access_time DATETIME NULL, -- Upload time or last access time
- PRIMARY KEY (id),
- INDEX(name(20)),
- INDEX(file_name(20))
-);
-
-----
-
--- General settings available on Management page in admin - Only 1 entry in this table
--- Items in this table should be all self-explanatory
-CREATE TABLE {prefix}settings_general (
- id INT NOT NULL AUTO_INCREMENT,
- admin_debug BOOLEAN DEFAULT '0',
- admin_debug_verbose BOOLEAN DEFAULT '0',
- front_debug BOOLEAN DEFAULT '0',
- front_debug_verbose BOOLEAN DEFAULT '0',
- enable_members BOOLEAN DEFAULT '1',
- selected_map_interface SMALLINT DEFAULT '1',
- leaflet_tile_server TINYTEXT DEFAULT '',
- leaflet_tile_server_key TINYTEXT DEFAULT '',
- google_maps_api_key TINYTEXT DEFAULT '',
- maps_default_lat FLOAT DEFAULT '45.3749',
- maps_default_lon FLOAT DEFAULT '-84.9592',
- maps_default_zoom INTEGER DEFAULT '10',
- time_zone TINYTEXT DEFAULT NULL,
- canonical_member_page TINYTEXT DEFAULT NULL,
- phone_infix TINYTEXT DEFAULT NULL,
- phone_format TINYTEXT DEFAULT NULL,
- default_state TINYTEXT DEFAULT NULL,
- enable_counties BOOLEAN DEFAULT '0',
- enable_multiple_profiles BOOLEAN DEFAULT '0',
- enable_single_profile BOOLEAN DEFAULT '0', -- Hide the add profile and clone profile links/buttons
- enable_member_reports BOOLEAN DEFAULT '1',
- enable_caching BOOLEAN DEFAULT '1',
- enable_contact_edit_only BOOLEAN DEFAULT '0',
- memb_info_location BOOLEAN DEFAULT '1',
- memb_info_contact BOOLEAN DEFAULT '1',
- memb_info_categories BOOLEAN DEFAULT '1',
- memb_info_images BOOLEAN DEFAULT '1',
- memb_info_files BOOLEAN DEFAULT '1',
- memb_info_video BOOLEAN DEFAULT '1',
- memb_info_cam BOOLEAN DEFAULT '1',
- file_library BOOLEAN DEFAULT '0',
- list_show_map BOOLEAN DEFAULT '1',
- list_show_featured BOOLEAN DEFAULT '0',
- list_show_featured_count SMALLINT DEFAULT '3',
- list_show_list BOOLEAN DEFAULT '1',
- list_order_list SMALLINT DEFAULT '10',
- list_pagination BOOLEAN DEFAULT '1',
- list_pagination_count SMALLINT DEFAULT '20',
- list_show_search_filters_opened BOOLEAN DEFAULT '0',
- list_show_search BOOLEAN DEFAULT '1',
- list_show_search_text BOOLEAN DEFAULT '1',
- list_show_search_category BOOLEAN DEFAULT '1',
- list_show_search_amenities BOOLEAN DEFAULT '1',
- list_show_search_region BOOLEAN DEFAULT '1',
- list_show_search_alpha BOOLEAN DEFAULT '1',
- list_floating_search BOOLEAN DEFAULT '0',
- list_floating_search_distance_top INTEGER DEFAULT '0', -- How far from the top the sticky Search/Filters box should hover
- list_show_detail_link BOOLEAN DEFAULT '1',
- list_show_logo BOOLEAN DEFAULT '1',
- list_logo_size TINYTEXT NULL,
- list_logo_for_mobile BOOLEAN DEFAULT '1',
- list_show_address BOOLEAN DEFAULT '1',
- list_show_street BOOLEAN DEFAULT '1',
- list_show_citystatezip BOOLEAN DEFAULT '1',
- list_show_country BOOLEAN DEFAULT '1',
- list_show_region BOOLEAN DEFAULT '1',
- list_show_descr BOOLEAN DEFAULT '0',
- list_show_short_descr BOOLEAN DEFAULT '1',
- list_show_phone BOOLEAN DEFAULT '1',
- list_show_tollfree BOOLEAN DEFAULT '1',
- list_show_url BOOLEAN DEFAULT '1',
- list_show_url_newtarget BOOLEAN DEFAULT '1',
- list_show_email BOOLEAN DEFAULT '1',
- list_show_categories BOOLEAN DEFAULT '0',
- list_show_creditcards BOOLEAN DEFAULT '0',
- list_show_amenities BOOLEAN DEFAULT '0',
- list_show_logo_filler BOOLEAN DEFAULT '1',
- list_show_live_cam BOOLEAN DEFAULT '1',
- list_map_show_opened BOOLEAN DEFAULT '0',
- list_map_show_detaillink BOOLEAN DEFAULT '1',
- list_map_show_logo BOOLEAN DEFAULT '0',
- list_map_logo_size TINYTEXT NULL,
- list_map_show_descr BOOLEAN DEFAULT '0',
- list_map_show_short_descr BOOLEAN DEFAULT '1',
- list_map_show_address BOOLEAN DEFAULT '1',
- list_map_show_street BOOLEAN DEFAULT '1',
- list_map_show_citystatezip BOOLEAN DEFAULT '1',
- list_map_show_country BOOLEAN DEFAULT '1',
- list_map_show_region BOOLEAN DEFAULT '1',
- list_map_show_phone BOOLEAN DEFAULT '1',
- list_map_show_tollfree BOOLEAN DEFAULT '1',
- list_map_show_url BOOLEAN DEFAULT '1',
- list_map_show_url_newtarget BOOLEAN DEFAULT '1',
- list_map_show_email BOOLEAN DEFAULT '1',
- list_map_show_categories BOOLEAN DEFAULT '0',
- list_map_show_creditcards BOOLEAN DEFAULT '0',
- list_map_show_amenities BOOLEAN DEFAULT '0',
- list_show_packages BOOLEAN DEFAULT '0',
- list_show_packages_link BOOLEAN DEFAULT '0',
- list_header_text TINYTEXT DEFAULT NULL,
- detail_auto_expand_sections BOOLEAN DEFAULT '0',
- detail_show_map BOOLEAN DEFAULT '1',
- detail_show_directions BOOLEAN DEFAULT '1',
- detail_show_logo BOOLEAN DEFAULT '1',
- detail_logo_size TINYTEXT NULL,
- detail_show_descr BOOLEAN DEFAULT '1',
- detail_show_short_descr BOOLEAN DEFAULT '0',
- detail_show_address BOOLEAN DEFAULT '1',
- detail_show_street BOOLEAN DEFAULT '1',
- detail_show_citystatezip BOOLEAN DEFAULT '1',
- detail_show_country BOOLEAN DEFAULT '1',
- detail_show_region BOOLEAN DEFAULT '1',
- detail_show_phone BOOLEAN DEFAULT '1',
- detail_show_tollfree BOOLEAN DEFAULT '1',
- detail_show_url BOOLEAN DEFAULT '1',
- detail_show_url_newtarget BOOLEAN DEFAULT '1',
- detail_show_email BOOLEAN DEFAULT '1',
- detail_show_categories BOOLEAN DEFAULT '0',
- detail_show_creditcards BOOLEAN DEFAULT '0',
- detail_show_amenities BOOLEAN DEFAULT '1',
- detail_show_imagegallery BOOLEAN DEFAULT '1',
- detail_show_coupons BOOLEAN DEFAULT '0',
- detail_show_packages BOOLEAN DEFAULT '0',
- detail_show_events BOOLEAN DEFAULT '0',
- detail_show_video BOOLEAN DEFAULT '0',
- detail_show_live_cam BOOLEAN DEFAULT '0',
- detail_top_offset_autoscroll INTEGER DEFAULT '0', -- Determines the distance from the top when autoscrolling to a section on member detail pages
- detail_map_show_logo BOOLEAN DEFAULT '0',
- detail_map_logo_size TINYTEXT NULL,
- detail_map_show_descr BOOLEAN DEFAULT '0',
- detail_map_show_short_descr BOOLEAN DEFAULT '1',
- detail_map_show_address BOOLEAN DEFAULT '1',
- detail_map_show_street BOOLEAN DEFAULT '1',
- detail_map_show_citystatezip BOOLEAN DEFAULT '1',
- detail_map_show_country BOOLEAN DEFAULT '1',
- detail_map_show_region BOOLEAN DEFAULT '1',
- detail_map_show_phone BOOLEAN DEFAULT '1',
- detail_map_show_tollfree BOOLEAN DEFAULT '1',
- detail_map_show_url BOOLEAN DEFAULT '1',
- detail_map_show_url_newtarget BOOLEAN DEFAULT '1',
- detail_map_show_email BOOLEAN DEFAULT '1',
- detail_map_show_categories BOOLEAN DEFAULT '0',
- detail_map_show_creditcards BOOLEAN DEFAULT '0',
- detail_map_show_amenities BOOLEAN DEFAULT '0',
- members_only_support_email TINYTEXT DEFAULT '',
- members_only_support_phone TINYTEXT DEFAULT '',
- updates_notification_to TINYTEXT DEFAULT '', -- To email address for the notification email
- updates_notification_from TINYTEXT DEFAULT '', -- From header for the notification email
- updates_notification TEXT DEFAULT '', -- Notification message
- short_desc_char_limit INTEGER DEFAULT '120', -- How many characters the short description is limited to - also used for importing
- use_cluster_markers BOOLEAN DEFAULT '0', -- Flag to say if cluster markers should be use in maps
- recaptcha_site_key TINYTEXT DEFAULT '', -- reCAPTCHA site key
- recaptcha_secret_key TINYTEXT DEFAULT '', -- reCAPTCHA secret key
- recaptcha_header_code TEXT DEFAULT '', -- reCAPTCHA code for page header
- recaptcha_form_code TEXT DEFAULT '', -- reCAPTCHA code for captcha form field
- PRIMARY KEY (id)
-);
-
-----
-
--- Set default entry
-INSERT INTO {prefix}settings_general
- ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size,
- list_pagination, list_pagination_count, enable_counties, enable_multiple_profiles, enable_member_reports, enable_caching, updates_notification, enable_single_profile )
- VALUES
- ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb', '1', 20, 0, 0, 1, 1,
- 'A member has updated their record and is now in a pending state.', 0)
-;
-
-----
-
--- Terms used in site modifiable on Management page in admin - Only 1 entry in this table
--- Terms in this table should be all self-explanatory
-CREATE TABLE {prefix}settings_terms (
- id INT NOT NULL AUTO_INCREMENT,
- term_admin_menu_members TINYTEXT NULL,
- term_admin_menu_member_list TINYTEXT NULL,
- term_admin_menu_member TINYTEXT NULL,
- term_admin_menu_configure TINYTEXT NULL,
- term_admin_menu_settings TINYTEXT NULL,
- term_admin_menu_shortcodes TINYTEXT NULL,
- term_admin_menu_members_dashboard TINYTEXT NULL,
- term_admin_menu_members_list TINYTEXT NULL,
- term_admin_menu_members_reports TINYTEXT NULL,
- term_admin_menu_member_dashboard TINYTEXT NULL,
- term_admin_menu_member_info TINYTEXT NULL,
- term_admin_menu_member_locations TINYTEXT NULL,
- term_admin_menu_member_facilities TINYTEXT NULL,
- term_admin_menu_member_attractions TINYTEXT NULL,
- term_admin_menu_member_contacts TINYTEXT NULL,
- term_admin_menu_configure_member_types TINYTEXT NULL,
- term_admin_menu_configure_member_cats TINYTEXT NULL,
- term_admin_menu_configure_accom_types TINYTEXT NULL,
- term_admin_menu_configure_amenities TINYTEXT NULL,
- term_admin_menu_configure_cities TINYTEXT NULL,
- term_admin_menu_configure_counties TINYTEXT NULL,
- term_admin_menu_configure_regions TINYTEXT NULL,
- term_admin_menu_settings_general TINYTEXT NULL,
- term_admin_menu_settings_terms TINYTEXT NULL,
- term_admin_menu_settings_development TINYTEXT NULL,
- term_member TINYTEXT NULL,
- term_member_cap TINYTEXT NULL,
- term_member_plur TINYTEXT NULL,
- term_member_plur_cap TINYTEXT NULL,
- term_location TINYTEXT NULL,
- term_location_cap TINYTEXT NULL,
- term_location_plur TINYTEXT NULL,
- term_location_plur_cap TINYTEXT NULL,
- term_county TINYTEXT NULL,
- term_county_cap TINYTEXT NULL,
- term_county_plur TINYTEXT NULL,
- term_county_plur_cap TINYTEXT NULL,
- term_facility TINYTEXT NULL,
- term_facility_cap TINYTEXT NULL,
- term_facility_plur TINYTEXT NULL,
- term_facility_plur_cap TINYTEXT NULL,
- term_attraction TINYTEXT NULL,
- term_attraction_cap TINYTEXT NULL,
- term_attraction_plur TINYTEXT NULL,
- term_attraction_plur_cap TINYTEXT NULL,
- term_contact TINYTEXT NULL,
- term_contact_cap TINYTEXT NULL,
- term_contact_plur TINYTEXT NULL,
- term_contact_plur_cap TINYTEXT NULL,
- term_webcam_cap TINYTEXT NULL,
- PRIMARY KEY (id)
-);
-
-----
-
--- Default terms entry
-INSERT INTO {prefix}settings_terms
- (
- id,
- term_admin_menu_members,
- term_admin_menu_member_list,
- term_admin_menu_member,
- term_admin_menu_configure,
- term_admin_menu_settings,
- term_admin_menu_shortcodes,
- term_admin_menu_members_dashboard,
- term_admin_menu_members_list,
- term_admin_menu_members_reports,
- term_admin_menu_member_dashboard,
- term_admin_menu_member_info,
- term_admin_menu_member_locations,
- term_admin_menu_member_facilities,
- term_admin_menu_member_attractions,
- term_admin_menu_member_contacts,
- term_admin_menu_configure_member_types,
- term_admin_menu_configure_member_cats,
- term_admin_menu_configure_accom_types,
- term_admin_menu_configure_amenities,
- term_admin_menu_configure_cities,
- term_admin_menu_configure_counties,
- term_admin_menu_configure_regions,
- term_admin_menu_settings_general,
- term_admin_menu_settings_terms,
- term_admin_menu_settings_development,
- term_member,
- term_member_cap,
- term_member_plur,
- term_member_plur_cap,
- term_location,
- term_location_cap,
- term_location_plur,
- term_location_plur_cap,
- term_county,
- term_county_cap,
- term_county_plur,
- term_county_plur_cap,
- term_facility,
- term_facility_cap,
- term_facility_plur,
- term_facility_plur_cap,
- term_attraction,
- term_attraction_cap,
- term_attraction_plur,
- term_attraction_plur_cap,
- term_contact,
- term_contact_cap,
- term_contact_plur,
- term_contact_plur_cap,
- term_webcam_cap
- )
- VALUES
- (
- 1,
- 'Members',
- 'Member',
- 'Member',
- 'Configure',
- 'Management',
- 'Shortcodes',
- 'Dashboard',
- 'Member List',
- 'Reports',
- 'Member Dashboard',
- 'Member Info',
- 'Locations',
- 'Facilities',
- 'Attractions',
- 'Contacts',
- 'Member Types',
- 'Member Categories',
- 'Accommodation Types',
- 'Amenities',
- 'Cities',
- 'Counties',
- 'Regions',
- 'General Settings',
- 'Terms & Phrases',
- 'Development',
- 'member',
- 'Member',
- 'members',
- 'Members',
- 'location',
- 'Location',
- 'locations',
- 'Locations',
- 'county',
- 'County',
- 'counties',
- 'Counties',
- 'facility',
- 'Facility',
- 'facilities',
- 'Facilities',
- 'attraction',
- 'Attraction',
- 'attractions',
- 'Attractions',
- 'contact',
- 'Contact',
- 'contacts',
- 'Contacts',
- 'Webcam'
- )
-;
-
-----
-
--- Shortcode Output Cache
-CREATE TABLE {prefix}cache (
- shortcode TINYTEXT NULL,
- cache_code TINYTEXT NOT NULL,
- created DATETIME NULL,
- html MEDIUMTEXT NULL,
- PRIMARY KEY (cache_code(20)),
- INDEX (created)
-);
-
-----
-
--- Theme Settings - Only 1 entry in this table
-CREATE TABLE {prefix}settings_theme (
- id INT NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-);
-
-----
-
--- Default Theme Settings entry
-INSERT INTO {prefix}settings_theme
- (
- id
- )
- VALUES
- (
- 1
- )
-;
-
-----
-
--- Member Email Notifications
-CREATE TABLE {prefix}email_notifications (
- id INT NOT NULL AUTO_INCREMENT,
- notification_message TEXT NULL,
- declined_message TEXT NULL,
- approved_message TEXT NULL,
- to_email TINYTEXT NULL,
- from_email TINYTEXT NULL,
- PRIMARY KEY (id)
-);
-
-----
-
--- Set default email notifications
-INSERT INTO {prefix}email_notifications
- ( id, notification_message, declined_message, approved_message )
-VALUES
- ( 1, 'A member has requested a profile update.', 'Your profile update has been declined.', 'Your profile has been approved!' );
-
--- /dev/null
+-- Gaslight Media Members Database
+-- File Created: 12/29/16 12:06:00
+-- Database Version: 1.1.41
+-- Database Creation Script
+--
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+--
+-- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
+--
+
+-- Amenities
+CREATE TABLE {prefix}amenities (
+ id INT NOT NULL AUTO_INCREMENT,
+ active TINYINT(1) NULL, -- Amenity is active flag
+ name TINYTEXT NULL, -- Name of amenity
+ descr TEXT NULL, -- Description of amenity
+ short_descr TINYTEXT NULL, -- Short description of amenity
+ ref_type INT NULL, -- Type of entity these amenities are associated with - see plugin.ini ref_type tables
+ uses_value BOOLEAN NULL, -- Flag indicating whether the amenity requires a quantity number
+ PRIMARY KEY (id),
+ INDEX(name(20))
+);
+
+----
+
+-- Amenity Reference - Links a specific amenity to a specific entity of type ref_type
+CREATE TABLE {prefix}amenity_ref (
+ id INT NOT NULL AUTO_INCREMENT,
+ amenity INT NULL, -- Pointer to amenity in amenities table
+ ref_type INT NULL, -- Copy of ref_type from matching amenities table entry - to simplify searches
+ ref_dest INT NULL, -- Pointer to the specific entity of type ref_type
+ amenity_value TINYTEXT NULL, -- Quantity if amenity uses values
+ PRIMARY KEY (id),
+ INDEX(ref_type),
+ INDEX(ref_dest)
+);
+
+----
+
+-- groups
+CREATE TABLE {prefix}amenity_groups (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of the Group
+ PRIMARY KEY (id),
+ INDEX(name(20))
+);
+
+----
+
+-- Amenity Group - Links a specific amenity to groups
+CREATE TABLE {prefix}grouped_amenities (
+ id INT NOT NULL AUTO_INCREMENT,
+ group_id INT, -- Pointer to the group
+ amenity_id INT, -- Pointer to the Amenity
+ searchable BOOLEAN DEFAULT '0', -- Flag indicating whether the amenity group will show in the search form
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Member Cateogries - used with member information records
+CREATE TABLE {prefix}categories (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of this category
+ descr TEXT NULL, -- Description of this category
+ short_descr TINYTEXT NULL, -- Short description of this category
+ parent INT NULL, -- Pointer to parent category in this table - if there is one
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Mapping of categories to specific member information records
+CREATE TABLE {prefix}category_member_info (
+ id INT NOT NULL AUTO_INCREMENT,
+ category INT NULL, -- Pointer to category in categories table
+ member_info INT NULL, -- Pointer to member information record
+ PRIMARY KEY (id),
+ CONSTRAINT {prefix}categories_fk_1
+ FOREIGN KEY (category)
+ REFERENCES {prefix}categories (id)
+ ON DELETE CASCADE,
+ INDEX(category),
+ INDEX(member_info)
+);
+
+----
+
+-- Cities
+CREATE TABLE {prefix}cities (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of city
+ lat FLOAT NULL, -- Latitude of city's location
+ lon FLOAT NULL, -- Longitude of city's location
+ county INT NULL, -- County reference to county table
+ temp_max TINYTEXT NULL, -- Max temp
+ temp_min TINYTEXT NULL, -- Min temp
+ icon TINYTEXT NULL, -- Icon url
+ weather TINYTEXT NULL, -- weather
+ moreinfo TEXT NULL, -- moreinfo
+ wx_time DATETIME NULL, -- last update time for weather
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Member Click Through Stats Data - Totals of URL click-throughs - Preserved for 2 years
+CREATE TABLE {prefix}clickthrough_stats (
+ member INT NOT NULL, -- ID of member
+ stat_type INT NOT NULL, -- Type of stat 1 = day, 2 = week, 3 = month
+ stat_date DATE NOT NULL, -- Date for which these stats are accumulated (date or first date of week or month)
+ clicks INT NULL, -- Number of Clicks
+ PRIMARY KEY (member, stat_type, stat_date),
+ INDEX (member),
+ INDEX (stat_type),
+ INDEX (stat_date)
+);
+
+----
+
+-- Files - Files are stored under /wp-content/uploads/glm-member-db/files/
+CREATE TABLE {prefix}files (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Original name of the file - might be URL if copied via HTTP
+ status TINYINT(1) NULL, -- Display/Use status - See plugin.ini status table
+ file_name TINYTEXT NULL, -- Stored file name for the file
+ descr TEXT NULL, -- Description
+ caption TINYTEXT NULL, -- Caption for the image
+ position INT NULL, -- Numeric position for sequence of display
+ ref_type INT NULL, -- Type of entity this image is associated with
+ ref_dest INT NULL, -- Pointer to the specific entity of ref_type this image is associated with
+ PRIMARY KEY (id),
+ INDEX(name(20)),
+ INDEX(file_name(20)),
+ INDEX(ref_type),
+ INDEX(ref_dest)
+);
+
+----
+
+-- Images - Images are stored under /wp-content/uploads/glm-member-db/images/{size}/
+CREATE TABLE {prefix}images (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Original name of the image - might be URL if copied via HTTP
+ status TINYINT(1) NULL, -- Display/Use status - See plugin.ini status table
+ selected BOOLEAN NULL, -- A single special image in the current gallery for this entity
+ featured BOOLEAN null, -- Image is a member of a group of featured images
+ file_name TINYTEXT NULL, -- Stored file name for the image
+ descr TEXT NULL, -- Description
+ caption TINYTEXT NULL, -- Caption for the image
+ position INT NULL, -- Numeric position for sequence of display
+ ref_type INT NULL, -- Type of entity this image is associated with
+ ref_dest INT NULL, -- Pointer to the specific entity of ref_type this image is associated with
+ PRIMARY KEY (id),
+ INDEX(name(20)),
+ INDEX(file_name(20)),
+ INDEX(ref_type),
+ INDEX(ref_dest)
+);
+
+----
+
+-- Primary member records - One for each member
+CREATE TABLE {prefix}members (
+ id INT NOT NULL AUTO_INCREMENT,
+ access INT NULL, -- Access type - See access table in plugin.ini
+ member_type INT NULL, -- Pointer to member type in member_type table
+ created DATE NULL, -- Date member record was created
+ name TINYTEXT NULL, -- Member name
+ member_slug TINYTEXT NULL, -- Member name slug for canonical URLs (lowercase, "-" for spaces, no punctuation)
+ notes TEXT NULL, -- General notes - Not displayed in front-end
+ old_member_id TINYTEXT NULL, -- Old member ID if imported from old database
+ featured BOOLEAN DEFAULT '0', -- Whether the member is featured
+ PRIMARY KEY (id),
+ INDEX(name(20)),
+ INDEX(member_slug(20)),
+ INDEX(created),
+ INDEX(old_member_id(20))
+);
+
+----
+
+-- Member Detail Display Stats Data - Totals of times detail page is displayed - Preserved for 2 years
+CREATE TABLE {prefix}member_detail_stats (
+ member INT NOT NULL, -- ID of member
+ stat_type INT NOT NULL, -- Type of stat 1 = day, 2 = week, 3 = month
+ stat_date DATE NOT NULL, -- Date for which these stats are accumulated (date or first date of week or month)
+ clicks INT NULL, -- Number of Clicks
+ PRIMARY KEY (member, stat_type, stat_date),
+ INDEX (member),
+ INDEX (stat_type),
+ INDEX (stat_date)
+);
+
+----
+
+-- Member information version record - May be multiples per member - Only one with status "Active" for a distinct date range
+CREATE TABLE {prefix}member_info (
+ id INT NOT NULL AUTO_INCREMENT,
+ member INT NULL, -- Pointer to member record in table members
+ member_name TINYTEXT NULL, -- Copy of member name from members table entry for fast reference
+ status INT NULL, -- Status of this member information record - See plugin.ini status table
+ reference_name TINYTEXT NULL, -- Reference name for this member information record - Not displayed on front-end
+ has_no_map_data BOOLEAN DEFAULT '0', -- True if member info record has no map data
+ has_no_profile BOOLEAN DEFAULT '0', -- True if member has no profile record
+ descr TEXT NULL, -- Description
+ short_descr TEXT NULL, -- Short description
+ addr1 TINYTEXT NULL, -- Main member location address line 1
+ addr2 TINYTEXT NULL, -- Address line 2
+ city INT NULL, -- Pointer to City in cities table
+ state TINYTEXT NULL, -- Two character state code - matches states.ini entries
+ country TINYTEXT NULL, -- Two character country code - matches countries.ini entries
+ zip TINYTEXT NULL, -- ZIP/Postal code
+ lat FLOAT NULL, -- Latitude of member's location
+ lon FLOAT NULL, -- Longitude of member's location
+ region INT NULL, -- Pointer to entry in regions table
+ county INT NULL, -- Pointer to entry in regions table
+ phone TINYTEXT NULL, -- Primary phone number
+ toll_free TINYTEXT NULL, -- Toll Free phone number
+ url TINYTEXT NULL, -- URL with information about this member
+ reservation_url TEXT NULL, -- Reservation URL
+ email TINYTEXT NULL, -- Main E-Mail address for this member
+ logo TINYTEXT NULL, -- Member logo
+ cc_type INT NULL, -- Bitmap of credit card types accepted - See credit_card array in plugin.ini
+ video_url TINYTEXT NULL, -- Video URL
+ video_file TINYTEXT NULL, -- Video File Name
+ video_title TINYTEXT NULL, -- Video Title
+ video_descr TEXT NULL, -- Video Description
+ video_type INT NULL, -- Video Type - See plugin.ini video type table.
+ live_cam_url TINYTEXT NULL, -- Live Cam URL
+ live_cam_title TINYTEXT NULL, -- Live Cam Title
+ live_cam_descr TEXT NULL, -- Live Cam Description
+ live_cam_type INT NULL, -- Live Cam Type - See plugin.ini video type table.
+ mailing_addr1 TINYTEXT NULL, -- Mailing Address 1
+ mailing_addr2 TINYTEXT NULL, -- Mailing Address 2
+ mailing_city INT NULL, -- Mailing City (Pointer to City in cities table)
+ mailing_state TINYTEXT NULL, -- Mailing State (Two character state code - matches states.ini entries)
+ mailing_zip TINYTEXT NULL, -- Mailing ZIP/Postal code
+ notes TEXT NULL, -- General notes - Not displayed in front-end
+ create_time TIMESTAMP NULL, -- Create date/time
+ modify_time TIMESTAMP NULL, -- Last update date/time
+ PRIMARY KEY (id),
+ INDEX(status),
+ INDEX(city),
+ INDEX(zip(10)),
+ INDEX(lat),
+ INDEX(lon),
+ INDEX(region),
+ INDEX(county),
+ FULLTEXT KEY member_name (member_name)
+);
+
+----
+
+-- Member type - Can be used to assign members to different "classes" of membership (i.e. Full, Associate, Premium)
+-- Mostly for internal use by the member organization, but could be displayed - Consider a short_description if they are.
+CREATE TABLE {prefix}member_type (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of member type
+ descr TINYTEXT NULL, -- Description of member type
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Regions - Used to segment members into various geographical regions - can be cities, counties, or other logical regions
+CREATE TABLE {prefix}regions (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of region
+ descr TEXT NULL, -- Description of region
+ short_descr TINYTEXT NULL, -- Short description of region
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Counties
+CREATE TABLE {prefix}counties (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of county
+ descr TEXT NULL, -- Description of county
+ short_descr TINYTEXT NULL, -- Short description of county
+ PRIMARY KEY (id)
+);
+
+----
+
+-- File Library Cateogries - used with "Files Library" - Created due to PDF failures in WordPress Media Library
+CREATE TABLE {prefix}file_library_categories (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Name of this category
+ descr TEXT NULL, -- Description of this category
+ short_descr TINYTEXT NULL, -- Short description of this category
+ parent INT NULL, -- Pointer to parent category in this table - if there is one
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Files Library - Files are stored under /wp-content/uploads/glm-member-db/filesLibrary/
+CREATE TABLE {prefix}file_library (
+ id INT NOT NULL AUTO_INCREMENT,
+ name TINYTEXT NULL, -- Original name of the file - might be URL if copied via HTTP
+ file_name TINYTEXT NULL, -- Stored file name for the file
+ descr TEXT NULL, -- Description
+ title TINYTEXT NULL, -- File title
+ last_access_time DATETIME NULL, -- Upload time or last access time
+ PRIMARY KEY (id),
+ INDEX(name(20)),
+ INDEX(file_name(20))
+);
+
+----
+
+-- General settings available on Management page in admin - Only 1 entry in this table
+-- Items in this table should be all self-explanatory
+CREATE TABLE {prefix}settings_general (
+ id INT NOT NULL AUTO_INCREMENT,
+ admin_debug BOOLEAN DEFAULT '0',
+ admin_debug_verbose BOOLEAN DEFAULT '0',
+ front_debug BOOLEAN DEFAULT '0',
+ front_debug_verbose BOOLEAN DEFAULT '0',
+ enable_members BOOLEAN DEFAULT '1',
+ selected_map_interface SMALLINT DEFAULT '1',
+ leaflet_tile_server TINYTEXT DEFAULT '',
+ leaflet_tile_server_key TINYTEXT DEFAULT '',
+ google_maps_api_key TINYTEXT DEFAULT '',
+ maps_default_lat FLOAT DEFAULT '45.3749',
+ maps_default_lon FLOAT DEFAULT '-84.9592',
+ maps_default_zoom INTEGER DEFAULT '10',
+ time_zone TINYTEXT DEFAULT NULL,
+ canonical_member_page TINYTEXT DEFAULT NULL,
+ phone_infix TINYTEXT DEFAULT NULL,
+ phone_format TINYTEXT DEFAULT NULL,
+ default_state TINYTEXT DEFAULT NULL,
+ enable_counties BOOLEAN DEFAULT '0',
+ enable_multiple_profiles BOOLEAN DEFAULT '0',
+ enable_single_profile BOOLEAN DEFAULT '0', -- Hide the add profile and clone profile links/buttons
+ enable_member_reports BOOLEAN DEFAULT '1',
+ enable_caching BOOLEAN DEFAULT '1',
+ enable_contact_edit_only BOOLEAN DEFAULT '0',
+ memb_info_location BOOLEAN DEFAULT '1',
+ memb_info_contact BOOLEAN DEFAULT '1',
+ memb_info_categories BOOLEAN DEFAULT '1',
+ memb_info_images BOOLEAN DEFAULT '1',
+ memb_info_files BOOLEAN DEFAULT '1',
+ memb_info_video BOOLEAN DEFAULT '1',
+ memb_info_cam BOOLEAN DEFAULT '1',
+ file_library BOOLEAN DEFAULT '0',
+ list_show_map BOOLEAN DEFAULT '1',
+ list_show_featured BOOLEAN DEFAULT '0',
+ list_show_featured_count SMALLINT DEFAULT '3',
+ list_show_list BOOLEAN DEFAULT '1',
+ list_order_list SMALLINT DEFAULT '10',
+ list_pagination BOOLEAN DEFAULT '1',
+ list_pagination_count SMALLINT DEFAULT '20',
+ list_show_search_filters_opened BOOLEAN DEFAULT '0',
+ list_show_search BOOLEAN DEFAULT '1',
+ list_show_search_text BOOLEAN DEFAULT '1',
+ list_show_search_category BOOLEAN DEFAULT '1',
+ list_show_search_amenities BOOLEAN DEFAULT '1',
+ list_show_search_region BOOLEAN DEFAULT '1',
+ list_show_search_alpha BOOLEAN DEFAULT '1',
+ list_floating_search BOOLEAN DEFAULT '0',
+ list_floating_search_distance_top INTEGER DEFAULT '0', -- How far from the top the sticky Search/Filters box should hover
+ list_show_detail_link BOOLEAN DEFAULT '1',
+ list_show_logo BOOLEAN DEFAULT '1',
+ list_logo_size TINYTEXT NULL,
+ list_logo_for_mobile BOOLEAN DEFAULT '1',
+ list_show_address BOOLEAN DEFAULT '1',
+ list_show_street BOOLEAN DEFAULT '1',
+ list_show_citystatezip BOOLEAN DEFAULT '1',
+ list_show_country BOOLEAN DEFAULT '1',
+ list_show_region BOOLEAN DEFAULT '1',
+ list_show_descr BOOLEAN DEFAULT '0',
+ list_show_short_descr BOOLEAN DEFAULT '1',
+ list_show_phone BOOLEAN DEFAULT '1',
+ list_show_tollfree BOOLEAN DEFAULT '1',
+ list_show_url BOOLEAN DEFAULT '1',
+ list_show_url_newtarget BOOLEAN DEFAULT '1',
+ list_show_email BOOLEAN DEFAULT '1',
+ list_show_categories BOOLEAN DEFAULT '0',
+ list_show_creditcards BOOLEAN DEFAULT '0',
+ list_show_amenities BOOLEAN DEFAULT '0',
+ list_show_logo_filler BOOLEAN DEFAULT '1',
+ list_show_live_cam BOOLEAN DEFAULT '1',
+ list_map_show_opened BOOLEAN DEFAULT '0',
+ list_map_show_detaillink BOOLEAN DEFAULT '1',
+ list_map_show_logo BOOLEAN DEFAULT '0',
+ list_map_logo_size TINYTEXT NULL,
+ list_map_show_descr BOOLEAN DEFAULT '0',
+ list_map_show_short_descr BOOLEAN DEFAULT '1',
+ list_map_show_address BOOLEAN DEFAULT '1',
+ list_map_show_street BOOLEAN DEFAULT '1',
+ list_map_show_citystatezip BOOLEAN DEFAULT '1',
+ list_map_show_country BOOLEAN DEFAULT '1',
+ list_map_show_region BOOLEAN DEFAULT '1',
+ list_map_show_phone BOOLEAN DEFAULT '1',
+ list_map_show_tollfree BOOLEAN DEFAULT '1',
+ list_map_show_url BOOLEAN DEFAULT '1',
+ list_map_show_url_newtarget BOOLEAN DEFAULT '1',
+ list_map_show_email BOOLEAN DEFAULT '1',
+ list_map_show_categories BOOLEAN DEFAULT '0',
+ list_map_show_creditcards BOOLEAN DEFAULT '0',
+ list_map_show_amenities BOOLEAN DEFAULT '0',
+ list_show_packages BOOLEAN DEFAULT '0',
+ list_show_packages_link BOOLEAN DEFAULT '0',
+ list_header_text TINYTEXT DEFAULT NULL,
+ detail_auto_expand_sections BOOLEAN DEFAULT '0',
+ detail_show_map BOOLEAN DEFAULT '1',
+ detail_show_directions BOOLEAN DEFAULT '1',
+ detail_show_logo BOOLEAN DEFAULT '1',
+ detail_logo_size TINYTEXT NULL,
+ detail_show_descr BOOLEAN DEFAULT '1',
+ detail_show_short_descr BOOLEAN DEFAULT '0',
+ detail_show_address BOOLEAN DEFAULT '1',
+ detail_show_street BOOLEAN DEFAULT '1',
+ detail_show_citystatezip BOOLEAN DEFAULT '1',
+ detail_show_country BOOLEAN DEFAULT '1',
+ detail_show_region BOOLEAN DEFAULT '1',
+ detail_show_phone BOOLEAN DEFAULT '1',
+ detail_show_tollfree BOOLEAN DEFAULT '1',
+ detail_show_url BOOLEAN DEFAULT '1',
+ detail_show_url_newtarget BOOLEAN DEFAULT '1',
+ detail_show_email BOOLEAN DEFAULT '1',
+ detail_show_categories BOOLEAN DEFAULT '0',
+ detail_show_creditcards BOOLEAN DEFAULT '0',
+ detail_show_amenities BOOLEAN DEFAULT '1',
+ detail_show_imagegallery BOOLEAN DEFAULT '1',
+ detail_show_coupons BOOLEAN DEFAULT '0',
+ detail_show_packages BOOLEAN DEFAULT '0',
+ detail_show_events BOOLEAN DEFAULT '0',
+ detail_show_video BOOLEAN DEFAULT '0',
+ detail_show_live_cam BOOLEAN DEFAULT '0',
+ detail_top_offset_autoscroll INTEGER DEFAULT '0', -- Determines the distance from the top when autoscrolling to a section on member detail pages
+ detail_map_show_logo BOOLEAN DEFAULT '0',
+ detail_map_logo_size TINYTEXT NULL,
+ detail_map_show_descr BOOLEAN DEFAULT '0',
+ detail_map_show_short_descr BOOLEAN DEFAULT '1',
+ detail_map_show_address BOOLEAN DEFAULT '1',
+ detail_map_show_street BOOLEAN DEFAULT '1',
+ detail_map_show_citystatezip BOOLEAN DEFAULT '1',
+ detail_map_show_country BOOLEAN DEFAULT '1',
+ detail_map_show_region BOOLEAN DEFAULT '1',
+ detail_map_show_phone BOOLEAN DEFAULT '1',
+ detail_map_show_tollfree BOOLEAN DEFAULT '1',
+ detail_map_show_url BOOLEAN DEFAULT '1',
+ detail_map_show_url_newtarget BOOLEAN DEFAULT '1',
+ detail_map_show_email BOOLEAN DEFAULT '1',
+ detail_map_show_categories BOOLEAN DEFAULT '0',
+ detail_map_show_creditcards BOOLEAN DEFAULT '0',
+ detail_map_show_amenities BOOLEAN DEFAULT '0',
+ members_only_support_email TINYTEXT DEFAULT '',
+ members_only_support_phone TINYTEXT DEFAULT '',
+ updates_notification_to TINYTEXT DEFAULT '', -- To email address for the notification email
+ updates_notification_from TINYTEXT DEFAULT '', -- From header for the notification email
+ updates_notification TEXT DEFAULT '', -- Notification message
+ short_desc_char_limit INTEGER DEFAULT '120', -- How many characters the short description is limited to - also used for importing
+ use_cluster_markers BOOLEAN DEFAULT '0', -- Flag to say if cluster markers should be use in maps
+ recaptcha_site_key TINYTEXT DEFAULT '', -- reCAPTCHA site key
+ recaptcha_secret_key TINYTEXT DEFAULT '', -- reCAPTCHA secret key
+ recaptcha_header_code TEXT DEFAULT '', -- reCAPTCHA code for page header
+ recaptcha_form_code TEXT DEFAULT '', -- reCAPTCHA code for captcha form field
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Set default entry
+INSERT INTO {prefix}settings_general
+ ( id, time_zone, canonical_member_page, list_logo_size, list_map_logo_size, detail_logo_size, detail_map_logo_size,
+ list_pagination, list_pagination_count, enable_counties, enable_multiple_profiles, enable_member_reports, enable_caching, updates_notification, enable_single_profile )
+ VALUES
+ ( 1, 'America/Detroit', 'member-detail', 'large', 'thumb', 'large', 'thumb', '1', 20, 0, 0, 1, 1,
+ 'A member has updated their record and is now in a pending state.', 0)
+;
+
+----
+
+-- Terms used in site modifiable on Management page in admin - Only 1 entry in this table
+-- Terms in this table should be all self-explanatory
+CREATE TABLE {prefix}settings_terms (
+ id INT NOT NULL AUTO_INCREMENT,
+ term_admin_menu_members TINYTEXT NULL,
+ term_admin_menu_member_list TINYTEXT NULL,
+ term_admin_menu_member TINYTEXT NULL,
+ term_admin_menu_configure TINYTEXT NULL,
+ term_admin_menu_settings TINYTEXT NULL,
+ term_admin_menu_shortcodes TINYTEXT NULL,
+ term_admin_menu_members_dashboard TINYTEXT NULL,
+ term_admin_menu_members_list TINYTEXT NULL,
+ term_admin_menu_members_reports TINYTEXT NULL,
+ term_admin_menu_member_dashboard TINYTEXT NULL,
+ term_admin_menu_member_info TINYTEXT NULL,
+ term_admin_menu_member_locations TINYTEXT NULL,
+ term_admin_menu_member_facilities TINYTEXT NULL,
+ term_admin_menu_member_attractions TINYTEXT NULL,
+ term_admin_menu_member_contacts TINYTEXT NULL,
+ term_admin_menu_configure_member_types TINYTEXT NULL,
+ term_admin_menu_configure_member_cats TINYTEXT NULL,
+ term_admin_menu_configure_accom_types TINYTEXT NULL,
+ term_admin_menu_configure_amenities TINYTEXT NULL,
+ term_admin_menu_configure_cities TINYTEXT NULL,
+ term_admin_menu_configure_counties TINYTEXT NULL,
+ term_admin_menu_configure_regions TINYTEXT NULL,
+ term_admin_menu_settings_general TINYTEXT NULL,
+ term_admin_menu_settings_terms TINYTEXT NULL,
+ term_admin_menu_settings_development TINYTEXT NULL,
+ term_member TINYTEXT NULL,
+ term_member_cap TINYTEXT NULL,
+ term_member_plur TINYTEXT NULL,
+ term_member_plur_cap TINYTEXT NULL,
+ term_location TINYTEXT NULL,
+ term_location_cap TINYTEXT NULL,
+ term_location_plur TINYTEXT NULL,
+ term_location_plur_cap TINYTEXT NULL,
+ term_county TINYTEXT NULL,
+ term_county_cap TINYTEXT NULL,
+ term_county_plur TINYTEXT NULL,
+ term_county_plur_cap TINYTEXT NULL,
+ term_facility TINYTEXT NULL,
+ term_facility_cap TINYTEXT NULL,
+ term_facility_plur TINYTEXT NULL,
+ term_facility_plur_cap TINYTEXT NULL,
+ term_attraction TINYTEXT NULL,
+ term_attraction_cap TINYTEXT NULL,
+ term_attraction_plur TINYTEXT NULL,
+ term_attraction_plur_cap TINYTEXT NULL,
+ term_contact TINYTEXT NULL,
+ term_contact_cap TINYTEXT NULL,
+ term_contact_plur TINYTEXT NULL,
+ term_contact_plur_cap TINYTEXT NULL,
+ term_webcam_cap TINYTEXT NULL,
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Default terms entry
+INSERT INTO {prefix}settings_terms
+ (
+ id,
+ term_admin_menu_members,
+ term_admin_menu_member_list,
+ term_admin_menu_member,
+ term_admin_menu_configure,
+ term_admin_menu_settings,
+ term_admin_menu_shortcodes,
+ term_admin_menu_members_dashboard,
+ term_admin_menu_members_list,
+ term_admin_menu_members_reports,
+ term_admin_menu_member_dashboard,
+ term_admin_menu_member_info,
+ term_admin_menu_member_locations,
+ term_admin_menu_member_facilities,
+ term_admin_menu_member_attractions,
+ term_admin_menu_member_contacts,
+ term_admin_menu_configure_member_types,
+ term_admin_menu_configure_member_cats,
+ term_admin_menu_configure_accom_types,
+ term_admin_menu_configure_amenities,
+ term_admin_menu_configure_cities,
+ term_admin_menu_configure_counties,
+ term_admin_menu_configure_regions,
+ term_admin_menu_settings_general,
+ term_admin_menu_settings_terms,
+ term_admin_menu_settings_development,
+ term_member,
+ term_member_cap,
+ term_member_plur,
+ term_member_plur_cap,
+ term_location,
+ term_location_cap,
+ term_location_plur,
+ term_location_plur_cap,
+ term_county,
+ term_county_cap,
+ term_county_plur,
+ term_county_plur_cap,
+ term_facility,
+ term_facility_cap,
+ term_facility_plur,
+ term_facility_plur_cap,
+ term_attraction,
+ term_attraction_cap,
+ term_attraction_plur,
+ term_attraction_plur_cap,
+ term_contact,
+ term_contact_cap,
+ term_contact_plur,
+ term_contact_plur_cap,
+ term_webcam_cap
+ )
+ VALUES
+ (
+ 1,
+ 'Members',
+ 'Member',
+ 'Member',
+ 'Configure',
+ 'Management',
+ 'Shortcodes',
+ 'Dashboard',
+ 'Member List',
+ 'Reports',
+ 'Member Dashboard',
+ 'Member Info',
+ 'Locations',
+ 'Facilities',
+ 'Attractions',
+ 'Contacts',
+ 'Member Types',
+ 'Member Categories',
+ 'Accommodation Types',
+ 'Amenities',
+ 'Cities',
+ 'Counties',
+ 'Regions',
+ 'General Settings',
+ 'Terms & Phrases',
+ 'Development',
+ 'member',
+ 'Member',
+ 'members',
+ 'Members',
+ 'location',
+ 'Location',
+ 'locations',
+ 'Locations',
+ 'county',
+ 'County',
+ 'counties',
+ 'Counties',
+ 'facility',
+ 'Facility',
+ 'facilities',
+ 'Facilities',
+ 'attraction',
+ 'Attraction',
+ 'attractions',
+ 'Attractions',
+ 'contact',
+ 'Contact',
+ 'contacts',
+ 'Contacts',
+ 'Webcam'
+ )
+;
+
+----
+
+-- Shortcode Output Cache
+CREATE TABLE {prefix}cache (
+ shortcode TINYTEXT NULL,
+ cache_code TINYTEXT NOT NULL,
+ created DATETIME NULL,
+ html MEDIUMTEXT NULL,
+ PRIMARY KEY (cache_code(20)),
+ INDEX (created)
+);
+
+----
+
+-- Theme Settings - Only 1 entry in this table
+CREATE TABLE {prefix}settings_theme (
+ id INT NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Default Theme Settings entry
+INSERT INTO {prefix}settings_theme
+ (
+ id
+ )
+ VALUES
+ (
+ 1
+ )
+;
+
+----
+
+-- Member Email Notifications
+CREATE TABLE {prefix}email_notifications (
+ id INT NOT NULL AUTO_INCREMENT,
+ notification_message TEXT NULL,
+ declined_message TEXT NULL,
+ approved_message TEXT NULL,
+ to_email TINYTEXT NULL,
+ from_email TINYTEXT NULL,
+ PRIMARY KEY (id)
+);
+
+----
+
+-- Set default email notifications
+INSERT INTO {prefix}email_notifications
+ ( id, notification_message, declined_message, approved_message )
+VALUES
+ ( 1, 'A member has requested a profile update.', 'Your profile update has been declined.', 'Your profile has been approved!' );
+
'1.1.41' => array('version' => '1.1.41', 'tables' => 23, 'date' => '10/12/18'),
'1.1.42' => array('version' => '1.1.42', 'tables' => 23, 'date' => '10/29/18'),
'1.1.43' => array('version' => '1.1.43', 'tables' => 23, 'date' => '11/07/18'),
+ '1.1.44' => array('version' => '1.1.44', 'tables' => 23, 'date' => '11/08/18'),
);
-- Gaslight Media Members Database
--- File Created: 2018-10-12
--- Database Version: 1.1.41
+-- File Created: 2018-11-07
+-- Database Version: 1.1.43
-- Database Update From Previous Version Script
--
-- To permit each query below to be executed separately,
--- /dev/null
+-- Gaslight Media Members Database
+-- File Created: 2018-11-08
+-- Database Version: 1.1.44
+-- Database Update From Previous Version Script
+--
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+
+-- Add temp_max to cities table
+ALTER TABLE {prefix}cities ADD COLUMN temp_max TINYTEXT NULL; -- Max temp
+
+----
+
+-- Add temp_min to cities table
+ALTER TABLE {prefix}cities ADD COLUMN temp_min TINYTEXT NULL; -- Min temp
+
+----
+
+-- Add icon to cities table
+ALTER TABLE {prefix}cities ADD COLUMN icon TINYTEXT NULL; -- Icon url
+
+----
+
+-- Add weather to cities table
+ALTER TABLE {prefix}cities ADD COLUMN weather TINYTEXT NULL; -- weather
+
+----
+
+-- Add moreinfo to cities table
+ALTER TABLE {prefix}cities ADD COLUMN moreinfo TEXT NULL; -- moreinfo
+
+----
+
+-- Add wx_time to cities table
+ALTER TABLE {prefix}cities ADD COLUMN wx_time DATETIME NULL; -- last update time for weather
'lon-bounds' => false,
),
),
+ 'glm-member-city-weather' => array(
+ 'plugin' => GLM_MEMBERS_PLUGIN_SLUG,
+ 'menu' => 'members',
+ 'action' => 'cityWeather',
+ 'attributes' => array(
+ 'alpha' => false,
+ ),
+ ),
);
$glmMembersShortcodes = apply_filters( 'glm-custom-fields-shortcodes', $glmMembersShortcodes );
<span>categories</span>
<span>credit-cards</span>
<span>amenities</span>
- </table>
</p>
</td>
</tr>
+ <tr>
+ <th>[glm-member-interactive-map]</th>
+ <td> </td>
+ <td>
+ Display Interactive Map.
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <th>
+ main-level-cats="{ Category ID(s) }"
+ </th>
+ <td>
+ The "main-level-cats" attribute is used to set the top level main categories for the map.
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <th>
+ main-level-colors="{ Color(s) }"
+ </th>
+ <td>
+ The "main-level-colors" attribute is used to set the Colors for each top level main categories for the map.
+ </td>
+ </tr>
+ <tr>
+ <th>[glm-member-city-weather]</th>
+ <td> </td>
+ <td>
+ Display City Weather. Each city must have lat lon data for weather to work.
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ <th>
+ alpha="{ First Letter of City Name }"
+ </th>
+ <td>
+ The "alpha" attribute is used to set the letter used for the city displayed. This is overridden using
+ $_REQUEST[\'alpha\'].
+ </td>
+ </tr>
';
} else {
$glmMembersShortcodes = array();
'detail' => 'glm-member-db',
'featured' => 'glm-member-db',
'interactivemap' => 'glm-member-db',
+ 'cityWeather' => 'glm-member-db',
),
'error' => array(
'index' => 'glm-member-db',
--- /dev/null
+<style>
+.weatherBlock {
+ overflow: hidden;
+ width: 275px;
+ float: left;
+ margin-bottom: 5px;
+ margin-top: 10px;
+}
+.weatherIn {
+ margin: 6px 0 6px 6px;
+ height: 1%;
+ overflow: hidden;
+ border: 1px solid #CBCBAA;
+ background: url(assets/bg-form.jpg);
+}
+</style>
+<div class="glm-alpha-links">
+ {foreach $alphaList as $a}
+ <a href="{$thisUrl}?glm_action=cityWeather&alpha={$a.alpha}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+ {/foreach}
+</div>
+<div id="weather_wrapper">
+ {foreach $cities as $city}
+ {if $city.moreinfo}
+ <div class="weatherBlock">
+ <div class="weatherIn">
+ {if $city.moreinfo}
+ <a style="float:left;" target="_blank" href="{$city.moreinfo}" title="Weather Forecast">
+ <img src="{$icon_url_path}\{$city.icon}" style="margin: 10px 15px 10px 10px; float: left; display: block;" />
+ </a>
+ {/if}
+ {if !$city.moreinfo}
+ <img width="55" height="58" src="http://app.gaslightmedia.com/city/na.jpg" style="margin: 10px 15px 10px 10px; float: left; display: block;" />
+ {/if}
+ <p style="color: #7D3619; margin: 10px 0 0 0px; font-weight: bold; font-size: 15px;">{$city.name}</p>
+ <p style="color: #7D3619; margin: 10px 0 0 0px; font-weight: bold;">{$city.weather}</p>
+ {if $city.temp_max}
+ <p style="color: #7D3619; margin: 6px 0 0 0px; font-weight: bold;">{$city.temp_max}°/{$city.temp_min}°F</p>
+ {/if}
+ {if !$city.temp_max}
+ <p style="height:15px;color: #7D3619; margin: 6px 0 0 0px; font-weight: bold;"> </p>
+ {/if}
+ </div>
+ </div>
+ {/if}
+ {/foreach}
+</div>