From: Chuck Scott Note: Customers will not have access to this tab.
+ Import data from "Connections" business directory
+
+ {if $importNotice}
+
', 'AdminError');
+ break;
+ }
+ if (!$this->createDataTables($dbVersion)) {
+ glmMembersAdmin::addNotice('Unable to create the database tables while resetting the database.
', 'AdminError');
+ break;
+ }
+ glmMembersAdmin::addNotice('Database tables have been reset in preparation importing members.
', 'AdminNotice');
+
+ // Delete Images
+ foreach( new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator( GLM_MEMBERS_PLUGIN_IMAGES_PATH, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ),
+ RecursiveIteratorIterator::CHILD_FIRST ) as $value ) {
+ if ($value->isFile()) {
+ unlink( $value );
+ }
+ }
+
+ $templateData['import'] = true;
+ $templateData['membersImported'] = $Connections->doImport();
+
+ } else {
+
+ // Check if Connections is not installed or not active. If active, gets count of entries.
+ $c = $Connections->checkConnections();
+ if ($c === false) {
+ glmMembersAdmin::addNotice('Connections Business Directory plugin is not installed or not active!
'.print_r($c,1), 'AdminError');
+ break;
+ }
+ $templateData['numbEntries'] = $c;
+ $importNotice = 'Connections Business Directory plugin is active.
Number of businesses listed: '.$c.'
';
+
+ // Get the basic business data for review.
+ $templateData['members'] = $Connections->getList();
+ if ($templateData['members'] === false) {
+ $importNotice = 'No businesses were retieved.';
+ break;
+ }
+
+ $templateData['haveMembers'] = true;
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice($templateData['members'], 'DataBlock', 'Base Members Data');
+ }
+
+ }
+
+ break;
+
+ case 'drop':
+ case 'reset':
+
+ $del = $this->deleteDataTables($dbVersion);
+
+ if ($del) {
+ glmMembersAdmin::addNotice('New database tables for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been deleted.', 'AdminNotice');
+
+ }
+
+ if ($option != 'reset') {
+ break;
+ }
+
+ case 'create':
+
+ $create = $this->createDataTables($dbVersion);
+
+ // If there were no errors
+ if ($create) {
+
+ // Notify the user that the database has been installed
+ glmMembersAdmin::addNotice('New database tables installed for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin.', 'AdminNotice');
+
+ // Save the version of the installed database
+ update_option('glmMembersDatabaseDbVersion', $dbVersion);
+
+ }
+
+ break;
+
+ case 'list':
+
+ // Check if the database version set for this plugin is invalid.
+ if (!isset($activate->dbVersions[$dbVersion])) {
+ $templateData['resultMessage'] .= "The last database version set for the ".GLM_MEMBERS_PLUGIN_NAME." (V$dbVersion) isn't valid.
";
+ break;
+ }
+
+ // Get the number of tables for this plugin database version that should exist.
+ $tables = $activate->dbVersions[$dbVersion]['tables'];
+
+ // Get the number of tables for this plugin that do currently exist.
+ $existingTables = $this->wpdb->get_results("
+ SELECT table_name
+ FROM information_schema.tables
+ WHERE table_name like '".GLM_MEMBERS_PLUGIN_DB_PREFIX."%';
+ ", ARRAY_A);
+
+ if (is_array($existingTables)) {
+
+
+
+
+ $templateData['resultMessage'] .= 'Current database tables';
+ foreach($existingTables as $t){
+ $templateData['resultMessage'] .= "
';
+ } else {
+ $templateData['resultMessage'] .= 'No tables currently exist
';
+ }
+ $templateData['resultMessage'] .= '
';
+ }
+
+ break;
+
+ default:
+
+ break;
+
+ }
+
+ // Return status, suggested view, and data to controller
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/management/development.html',
+ 'data' => $templateData
+ );
+
+ }
+
+ /*
+ * Delete Members Database Tables
+ *
+ * @param string $dbVersion Current version of Members Database
+ *
+ * @return boolean
+ * @access public
+ */
+ public function deleteDataTables($dbVersion)
+ {
+
+ // Read in Database deletion script - assumes the current db version.
+ $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/drop_database_V'.$dbVersion.'.sql';
+ $sql = file_get_contents($sqlFile);
+
+ // Replace {prefix} with table name prefix
+ $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice('Dropping all database tables', 'Process');
+ glmMembersAdmin::addNotice($sql, 'DataBlock', 'Drop Tables SQL');
+ }
+
+ // Removing the tables using the script
+ $this->wpdb->query($sql);
+
+ // If there's been an error, display in debug Alert
+ $queryError = $this->wpdb->last_error;
+ if ($queryError) {
+ glmMembersAdmin::addNotice('Error when deleting database: Database tables may not have existed.
Check following message.
'.$queryError, 'AdminError');
+ return false;
+ }
+
+ return true;
+
+ }
+
+ /*
+ * Create Members Database Tables
+ *
+ * @param string $dbVersion Current version of Members Database
+ *
+ * @return boolean
+ * @access public
+ */
+ public function createDataTables($dbVersion)
+ {
+
+ // Read in Database creation script
+ $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/create_database_V'.$dbVersion.'.sql';
+ $sql = file_get_contents($sqlFile);
+
+ // Replace {prefix} with table name prefix
+ $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
+
+ // Split script into separate queries by looking for lines with only "---"
+ $queries = preg_split('/^----$/m', $sql);
+
+ // Try executing all queries to build database
+ $qForDebug = '';
+ do {
+ $q = current($queries);
+ $this->wpdb->query($q);
+ $queryError = $this->wpdb->last_error;
+
+ if ($queryError) {
+ glmMembersAdmin::addNotice('Error when creating database: Database tables may already exist.
Check following message.
'.$queryError, 'AdminError');
+ return false;
+ }
+ $qForDebug .= $queryError.$q;
+
+ } while ($queryError == '' && next($queries));
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice('Creating database tables', 'Process');
+ glmMembersAdmin::addNotice($qForDebug, 'DataBlock', 'Create Tables SQL');
+ }
+
+ return true;
+
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/models/admin/management/import.php b/models/admin/management/import.php
new file mode 100644
index 00000000..db7b9591
--- /dev/null
+++ b/models/admin/management/import.php
@@ -0,0 +1,1097 @@
+
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+/*
+ * This class performs the work for the default action of the "Members" menu
+ * option, which is to display the members dashboard.
+ *
+ */
+class GlmMembersAdmin_management_import
+{
+
+ /**
+ * 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;
+
+ }
+
+ /*
+ * 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 successfull 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)
+ {
+
+ $templateData = array();
+
+ $requestedView = false;
+ $failure = false;
+
+ $option = '';
+
+ // If there has been a redirect
+ if ($actionData) {
+
+ $templateData = $actionData;
+ $option = 'importSelect';
+
+ // Otherwise check the request for desired option
+ } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] != '') {
+
+ $option = $_REQUEST['option'];
+
+ // Fall back to importSelect
+ } else {
+
+ $option = 'importSelect';
+
+ }
+
+ switch($option) {
+
+ case 'importSelect':
+
+ $requestedView = 'import.html';
+
+ break;
+
+ case 'readDatabase':
+
+ /*
+ * Check all input
+ */
+
+ // Check hostname
+ $dbServer = preg_replace("/[^a-zA-Z0-9\._-]+/", "", trim($_REQUEST['dbServer']));
+ $templateData['dbServer'] = array('value' => $dbServer, 'problem' => false);
+ if (!$dbServer || $dbServer == '' || $dbServer != trim($_REQUEST['dbServer'])) {
+ $templateData['dbServer']['problem'] = 'Server name or IP address was not provided or contained invalid characters.';
+ $failure = true;
+ }
+
+ // Check database port #
+ $dbPort = preg_replace("/[^0-9]+/", "", trim($_REQUEST['dbPort']));
+ $templateData['dbPort'] = array('value' => $dbPort, 'problem' => false);
+ if (!$dbPort || $dbPort == '' || $dbPort != trim($_REQUEST['dbPort'])) {
+ $templateData['dbPort']['problem'] = 'Server port was not provided or is not a valid nummber.';
+ $failure = true;
+ }
+
+ // Check database name
+ $dbName = preg_replace("/[^a-zA-Z0-9_]+/", "", trim($_REQUEST['dbName']));
+ $templateData['dbName'] = array('value' => $dbName, 'problem' => false);
+ if (!$dbName || $dbName == '' || $dbName != trim($_REQUEST['dbName'])) {
+ $templateData['dbName']['problem'] = 'Database name was not provided or is not valid for Postgres.';
+ $failure = true;
+ }
+
+ // Check database user
+ $dbUser = preg_replace("/[^a-zA-Z0-9_]+/", "", trim($_REQUEST['dbUser']));
+ $templateData['dbUser'] = array('value' => $dbUser, 'problem' => false);
+ if (!$dbUser || $dbUser == '' || $dbUser != trim($_REQUEST['dbUser'])) {
+ $templateData['dbUser']['problem'] = 'Database user was not provided or is not valid for Postgres.';
+ $failure = true;
+ }
+
+ // Check Image URL
+ $dbImageURL = filter_var($_REQUEST['dbImageURL'], FILTER_SANITIZE_URL);
+ $templateData['dbImageURL'] = array('value' => $dbImageURL, 'problem' => false);
+ if (!$dbImageURL || $dbImageURL == '' || $dbImageURL != trim($_REQUEST['dbImageURL'])) {
+ $templateData['dbImageURL']['problem'] = 'Image URL does not appear to be valid.';
+ $failure = true;
+ }
+
+ if ($failure) {
+ $templateData['genError'] = 'There was a problem with the database connection information you provided. See below for specific instructions.';
+ }
+
+ /*
+ * Determine if source database is sane
+ */
+
+ // Connect to database
+ if (!$failure) {
+ $connString = "host=$dbServer port=$dbPort dbname=$dbName user=$dbUser";
+ $db = @pg_connect($connString);
+ if (!$db) {
+
+ $err = error_get_last();
+ $templateData['genError'] = 'There was a problem connecting to the database. The error message was...
'.$err['message'];
+ $failure = true;
+
+ }
+ }
+
+ // Determine if the members schema exists
+ if (!$failure) {
+ $sql = "
+ SELECT EXISTS
+ (
+ SELECT 1
+ FROM information_schema.schemata AS exists
+ WHERE schema_name = 'members'
+ ) AS isMembers
+ ;";
+ $res = pg_query($db, $sql);
+ if (pg_fetch_result($res, 0, 'isMembers') == 'f') {
+ $templateData['genError'] = 'The "members" schema was not found! Is this the right database?';
+ $failure = true;
+ }
+ }
+
+ /*
+ * Load data from source database
+ */
+
+ // Attempt to get member base data
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.member
+ ORDER BY member_id
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any members listed in this database!';
+ $failure = true;
+ } else {
+ $member = pg_fetch_all($res);
+ if (count($member) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading base member data, we did not receive the expected number of members! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ }
+ }
+ }
+
+ // Read in all amenities
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.amenity
+ ORDER BY amenity_name
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any cities listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading amenity data, we did not receive the expected number of amenities! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $amenity = array();
+
+ // Reprocess into array indexed by amenity_id
+ foreach ($tmp as $x) {
+ $amenity[$x['amenity_id']] = $x;
+ }
+ }
+ }
+ }
+
+ // Read in member/amenity cross-reference table
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.member_amenity
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any member/amenity cross-reference entries listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading amenity data, we did not receive the expected number of amenities! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the ameities into an array indexed by amenity_id
+ $membAmen = array();
+
+ // Reprocess into array grouped by member with the main index the member ID
+ foreach ($tmp as $x) {
+
+ // If member entry hasn't been created yet, add it now
+ if (!isset($membAmen[$x['member_id']])) {
+ $membAmen[$x['member_id']] = array();
+ }
+
+ $membAmen[$x['member_id']][] = $x;
+ }
+ }
+ }
+ }
+
+ // Read in all credit card types
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.ccard_type
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any credit card types listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading credit card type data, we did not receive the expected number of credit card types! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $ccard = array();
+
+ // Reprocess into array indexed by ccard_type_id
+ foreach ($tmp as $x) {
+ $ccard[$x['ccard_type_id']] = $x;
+ }
+ }
+ }
+ }
+
+ // Read in member/credit card cross-reference table
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.member_ccard_type
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any member/credit card cross-reference entries listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading member/credit card cross-reference data, we did not receive the expected number of entries! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $membCcard = array();
+
+ // Reprocess into array grouped by member with the main index the member ID
+ foreach ($tmp as $x) {
+
+ // If member entry hasn't been created yet, add it now
+ if (!isset($membCcard[$x['member_id']])) {
+ $membCcard[$x['member_id']] = array();
+ }
+
+ $membCcard[$x['member_id']][] = $x;
+ }
+ }
+ }
+ }
+
+
+ // Read in all member categories
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.category
+ ORDER BY category_id
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any categories listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading category data, we did not receive the expected number of categories! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the categories into a higherarchical array
+ $category = array();
+
+ // Process top level categories first
+ foreach ($tmp as $x) {
+
+ // If this is a top level category
+ if ($x['parent_id'] == 0) {
+ $category[$x['category_id']] = $x;
+ $category[$x['category_id']]['subcat'] = array();
+ }
+
+ }
+
+ // Now process all sub-categories
+ reset($tmp);
+ foreach ($tmp as $x) {
+
+ // If this is NOT a top level category
+ if ($x['parent_id'] > 0) {
+
+ // Check if we have the requested parent as a top-level category
+ if (isset($category[$x['parent_id']])) {
+ $category[$x['parent_id']]['subcat'][$x['category_id']] = $x;
+ } else {
+ $templateData['genError'] = 'There is at least one sub-category that does not have a matching top-level parent! ('.$x['name'].')
+ This could be a third-level category. Perhaps we can handle this when we have time to work on this a bit.';
+ $failure = true;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Read in member/Category cross-reference table
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.member_category
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any member/category cross-reference entries listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading category data, we did not receive the expected number of categories! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $membCat = array();
+
+ // Reprocess into array grouped by member with the main index the member ID
+ foreach ($tmp as $x) {
+
+ // If member entry hasn't been created yet, add it now
+ if (!isset($membCat[$x['member_id']])) {
+ $membCat[$x['member_id']] = array();
+ }
+
+ $membCat[$x['member_id']][] = $x;
+ }
+ }
+ }
+ }
+
+
+
+ // Read in all cities
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.city
+ ORDER BY city_name
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any cities listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading city data, we did not receive the expected number of cities! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $city = array();
+
+ // Reprocess into array indexed by city_id
+ foreach ($tmp as $x) {
+ $city[$x['city_id']] = $x;
+ }
+ }
+ }
+ }
+
+ // Read in all states
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.state
+ ORDER BY state_name
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any states listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading state data, we did not receive the expected number of states! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $state = array();
+
+ // Reprocess into array indexed by state_id
+ foreach ($tmp as $x) {
+ $state[$x['state_id']] = $x;
+ }
+ }
+ }
+ }
+
+ // Read in all regions
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.region
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any regions listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading region data, we did not receive the expected number of regions! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $region = array();
+
+ // Reprocess into array indexed by state_id
+ foreach ($tmp as $x) {
+ $region[$x['region_id']] = $x;
+ }
+ }
+ }
+ }
+
+
+
+ // Read in all member photos for member image gallery
+ if (!$failure) {
+ $sql = "
+ SELECT *
+ FROM members.member_photos
+ ;";
+ $res = pg_query($db, $sql);
+ $rows = pg_num_rows($res);
+ if ($rows == 0) {
+ $templateData['genError'] = 'There does not appear to be any member photos listed in this database!';
+ $failure = true;
+ } else {
+ $tmp = pg_fetch_all($res);
+ if (count($tmp) != $rows) {
+ $notice = pg_last_notice($res);
+ $templateData['genError'] = 'While reading member photo data, we did not receive the expected number of member photos! ';
+ if ($notice) {
+ $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
+ }
+ $failure = true;
+ } else {
+
+ // Since there was no problem, we'll post-process the cities into an array indexed by city_id
+ $image = array();
+
+ // Reprocess into array grouped by member with the main index the member ID
+ foreach ($tmp as $x) {
+
+ // If member entry hasn't been created yet, add it now
+ if (!isset($image[$x['member_id']])) {
+ $image[$x['member_id']] = array();
+ }
+
+ $image[$x['member_id']][] = $x;
+ }
+ }
+ }
+ }
+
+ /*
+ * If requested, reset the database
+ */
+
+ // Reset database is Option is selected
+ if (!$failure && isset($_REQUEST['dbReset']) && $_REQUEST['dbReset'] == 'on') {
+
+ // Get current db version
+ $dbVersion = GLM_MEMBERS_PLUGIN_DB_VERSION;
+
+ // Reset the database
+ if (!$this->deleteDataTables($dbVersion)) {
+ glmMembersAdmin::addNotice('Unable to delete the database tables while resetting the database.
', 'AdminError');
+ break;
+ }
+ if (!$this->createDataTables($dbVersion)) {
+ glmMembersAdmin::addNotice('Unable to create the database tables while resetting the database.
', 'AdminError');
+ break;
+ }
+
+ glmMembersAdmin::addNotice('Database tables have been reset in preparation importing members.
', 'AdminNotice');
+
+ // Delete Images
+ foreach( new RecursiveIteratorIterator(
+
+ new RecursiveDirectoryIterator( GLM_MEMBERS_PLUGIN_IMAGES_PATH, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ),
+ RecursiveIteratorIterator::CHILD_FIRST ) as $value ) {
+ if ($value->isFile()) {
+ unlink( $value );
+ }
+ }
+
+ }
+
+ /*
+ * Start importing data
+ */
+
+ if (!$failure) {
+
+ // Import Cities
+ while (list ($key, $val) = each ($city) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'cities',
+ array(
+ 'name' => $val['city_name'],
+ ),
+ array(
+ '%s',
+ )
+ );
+ $city[$key]['new_id'] = $this->wpdb->insert_id;
+
+ }
+
+ // Import Regions
+ while (list ($key, $val) = each ($region) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'regions',
+ array(
+ 'name' => $val['region_name'],
+ 'descr' => '',
+ 'short_descr' => ''
+ ),
+ array(
+ '%s',
+ '%s',
+ '%s'
+ )
+ );
+ $region[$key]['new_id'] = $this->wpdb->insert_id;
+
+ }
+
+ // Import Amenities
+ while (list ($key, $val) = each ($amenity) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'amenities',
+ array(
+ 'active' => true,
+ 'name' => $val['amenity_name'],
+ 'descr' => '',
+ 'short_descr' => '',
+ 'ref_type' => $this->config['ref_type_numb']['MemberInfo']
+ ),
+ array(
+ '%d',
+ '%s',
+ '%s',
+ '%s',
+ '%d'
+ )
+ );
+ $amenity[$key]['new_id'] = $this->wpdb->insert_id;
+
+ }
+
+ // Import Categories
+ $catTrans = array();
+ while (list ($key, $val) = each ($category) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'categories',
+ array(
+ 'name' => $val['name'],
+ 'descr' => '',
+ 'short_descr' => '',
+ 'parent' => 0
+ ),
+ array(
+ '%s',
+ '%s',
+ '%s',
+ '%d'
+ )
+ );
+ $newID = $this->wpdb->insert_id;
+ $category[$key]['new_id'] = $newID;
+ $category[$key]['new_parent'] = 0;
+
+ $catTrans[$key] = array(
+ 'new' => $newID,
+ 'parent' => 0
+ );
+
+ // Do any sub-cats for this category
+ while (list ($key2, $val2) = each ($val['subcat']) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'categories',
+ array(
+ 'name' => $val2['name'],
+ 'descr' => '',
+ 'short_descr' => '',
+ 'parent' => $category[$key]['new_id']
+ ),
+ array(
+ '%s',
+ '%s',
+ '%s',
+ '%d'
+ )
+ );
+ $newID2 = $this->wpdb->insert_id;
+ $category[$key]['subcat'][$key2]['new_id'] = $newID;
+ $category[$key]['subcat'][$key2]['new_parent'] = $category[$key]['new_id'];
+
+ $catTrans[$key2] = array(
+ 'new' => $newID2,
+ 'parent' => $newID
+ );
+
+ }
+ }
+
+
+
+ // Index Credit Card types - Match to card types in configuration
+ while (list ($key, $val) = each ($ccard) ) {
+ reset($this->config['credit_card_numb']);
+ while (list ($key2, $val2) = each ($this->config['credit_card_numb']) ) {
+ if (substr($val['ccard_type_name'], 0, 3) == substr(($key2), 0, 3)) {
+ $ccard[$key]['bitpos'] = $val2;
+ }
+ }
+ }
+
+ /*
+ * Create Defaults Not Provided By Old Member DB
+ */
+
+ // Member Types
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'member_type',
+ array(
+ 'name' => 'Default',
+ 'descr' => '',
+ ),
+ array(
+ '%s',
+ '%s',
+ )
+ );
+ $defaultMemberType = $this->wpdb->insert_id;
+
+ /*
+ * Now Start Adding Members
+ */
+
+ // Import Members
+ while (list ($key, $val) = each ($member) ) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'members',
+ array(
+ 'access' => $this->config['memb_access_numb']['Full'],
+ 'member_type' => $defaultMemberType,
+ 'created' => date('Y-m-d'),
+ 'name' => $val['member_name']
+ ),
+ array(
+ '%d',
+ '%d',
+ '%s',
+ '%s'
+ )
+ );
+ $membID = $this->wpdb->insert_id;
+ $member[$key]['new_id'] = $membID;
+
+ // Create truncated short_descr from descritions - Less tags, html encoded characters, newlines, tabs, etc.
+ $stripped = str_replace(PHP_EOL, '', preg_replace('/\t+/', '', preg_replace("/?[a-z0-9]{2,8};/i", "", strip_tags($val['description']))));
+ $short_descr = implode(' ', array_slice(explode(' ', $stripped), 0, 30));
+ if (strlen($short_descr) < strlen($stripped)) {
+ $short_descr .= ' ...';
+ }
+
+ // Build Credit Card bitmap
+ $ccBits = 0;
+ if (isset($membCcard[$val['member_id']])) {
+ foreach ($membCcard[$val['member_id']] as $c) {
+ $b = $ccard[$c['ccard_type_id']]['bitpos'];
+ $ccBits += pow(2, $b);
+ }
+ }
+
+ // Insert Member Information Record
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'member_info',
+ array(
+ 'member' => $membID,
+ 'member_name' => $val['member_name'],
+ 'status' => $this->config['status_numb']['Active'],
+ 'reference_name' => 'Imported Membmer Information',
+ 'descr' => $val['description'],
+ 'short_descr' => $short_descr,
+ 'addr1' => $val['street'],
+ 'addr2' => '',
+ 'city' => $city[$val['city_id']]['new_id'],
+ 'state' => $state[$val['state_id']]['state_abb'],
+ 'country' => 'US',
+ 'zip' => $val['zip'],
+ 'lat' => $val['lat'],
+ 'lon' => $val['lon'],
+ 'region' => (isset($region[$val['region']]) ? $region[$val['region']]['new_id'] : 0),
+ 'phone' => $val['phone'],
+ 'toll_free' => $val['toll_free'],
+ 'url' => $val['url'],
+ 'email' => $val['process_email'],
+ 'logo' => '',
+ 'cc_type' => $ccBits,
+ 'notes' => '',
+ 'create_time' => $val['create_date'],
+ 'modify_time' => $val['last_update']
+ ),
+ array(
+ '%d',
+ '%s',
+ '%d',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%d',
+ '%s',
+ '%s',
+ '%s',
+ '%f',
+ '%f',
+ '%d',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%d',
+ '%s',
+ '%s',
+ '%s'
+ )
+ );
+ $mID = $this->wpdb->insert_id;
+ $member[$key]['new_id'] = $mID;
+
+ // Add Member Categories
+ if (isset($membCat[$val['member_id']])) {
+ foreach ($membCat[$val['member_id']] as $c) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'category_member_info',
+ array(
+ 'category' => $catTrans[$c['category_id']]['new'],
+ 'member_info' => $mID
+ ),
+ array(
+ '%d',
+ '%d'
+ )
+ );
+
+ }
+ }
+
+ // Add Member Amenities
+ if (isset($membAmen[$val['member_id']])) {
+ foreach ($membAmen[$val['member_id']] as $a) {
+
+ $res = $this->wpdb->insert(
+ GLM_MEMBERS_PLUGIN_DB_PREFIX.'amenity_ref',
+ array(
+ 'amenity' => $amenity[$a['amenity_id']]['new_id'],
+ 'ref_type' => $this->config['ref_type_numb']['MemberInfo'],
+ 'ref_dest' => $mID
+ ),
+ array(
+ '%d',
+ '%d',
+ '%d'
+ )
+ );
+
+ }
+ }
+
+
+ }
+
+ // Import
+
+ }
+
+ // If everything is OK, make data available to the template
+ if (!$failure) {
+ $templateData['member'] = $member;
+ $templateData['defaultMemberType'] = $defaultMemberType;
+ $templateData['amenity'] = $amenity;
+ $templateData['membAmen'] = $membAmen;
+ $templateData['category'] = $category;
+ $templateData['membCat'] = $membCat;
+ $templateData['catTrans'] = $catTrans;
+ $templateData['city'] = $city;
+ $templateData['state'] = $state;
+ $templateData['region'] = $region;
+ $templateData['ccard'] = $ccard;
+ $templateData['membCcard'] = $membCcard;
+ $templateData['image'] = $image;
+ }
+
+
+ if ($failure) {
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => 'management',
+ 'modelRedirect' => 'import',
+ 'view' => 'admin/management/import.html',
+ 'data' => $templateData
+ );
+
+ }
+
+ $requestedView = 'import/readDatabase.html';
+
+ break;
+
+ default:
+
+ break;
+
+ }
+
+ // Return status, suggested view, and data to controller
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/management/'.$requestedView,
+ 'data' => $templateData
+ );
+
+ }
+
+ /*
+ * Delete Members Database Tables
+ *
+ * @param string $dbVersion Current version of Members Database
+ *
+ * @return boolean
+ * @access public
+ */
+ public function deleteDataTables($dbVersion)
+ {
+
+ // Read in Database deletion script - assumes the current db version.
+ $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/drop_database_V'.$dbVersion.'.sql';
+ $sql = file_get_contents($sqlFile);
+
+ // Replace {prefix} with table name prefix
+ $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice('Dropping all database tables', 'Process');
+ glmMembersAdmin::addNotice($sql, 'DataBlock', 'Drop Tables SQL');
+ }
+
+ // Removing the tables using the script
+ $this->wpdb->query($sql);
+
+ // If there's been an error, display in debug Alert
+ $queryError = $this->wpdb->last_error;
+ if ($queryError) {
+ glmMembersAdmin::addNotice('Error when deleting database: Database tables may not have existed.
Check following message.
'.$queryError, 'AdminError');
+ }
+
+ return true;
+
+ }
+
+ /*
+ * Create Members Database Tables
+ *
+ * @param string $dbVersion Current version of Members Database
+ *
+ * @return boolean
+ * @access public
+ */
+ public function createDataTables($dbVersion)
+ {
+
+ // Read in Database creation script
+ $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/create_database_V'.$dbVersion.'.sql';
+ $sql = file_get_contents($sqlFile);
+
+ // Replace {prefix} with table name prefix
+ $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
+
+ // Split script into separate queries by looking for lines with only "---"
+ $queries = preg_split('/^----$/m', $sql);
+
+ // Try executing all queries to build database
+ $qForDebug = '';
+ do {
+ $q = current($queries);
+ $this->wpdb->query($q);
+ $queryError = $this->wpdb->last_error;
+
+ if ($queryError) {
+ glmMembersAdmin::addNotice('Error when creating database: Database tables may already exist.
Check following message.
'.$queryError, 'AdminError');
+ return false;
+ }
+ $qForDebug .= $queryError.$q;
+
+ } while ($queryError == '' && next($queries));
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice('Creating database tables', 'Process');
+ glmMembersAdmin::addNotice($qForDebug, 'DataBlock', 'Create Tables SQL');
+ }
+
+ return true;
+
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/models/admin/management/index.php b/models/admin/management/index.php
new file mode 100644
index 00000000..f96ce954
--- /dev/null
+++ b/models/admin/management/index.php
@@ -0,0 +1,185 @@
+
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+// Load Members data abstract
+require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsGeneral.php');
+
+/*
+ * This class performs the work for the default action of the "Members" menu
+ * option, which is to display the members dashboard.
+ *
+ */
+class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral
+{
+
+ /**
+ * 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 successfull 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)
+ {
+ // General settings are always stored in a record with ID=1.
+ $id = 1;
+
+ // Determine if current user can edit configurations
+ if (!current_user_can('glm_members_configure')) {
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'User does not have rights to make configuration changes.'
+ )
+ );
+ }
+
+ // Check for submission option
+ $option = '';
+ if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+ $option = $_REQUEST['option'];
+ }
+
+ switch($option) {
+
+ // Update the settings and redisplay the form
+ case 'submit':
+
+ // Update the general settings
+ $generalSettings = $this->updateEntry(1);
+
+ // Display admin message that the data has been updated
+ glmMembersAdmin::addNotice('General Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
+
+ break;
+
+ // Default is to get the current settings and display the form
+ default:
+
+ // Try to get the first (should be only) entry for general settings.
+ $generalSettings = $this->editEntry($id);
+
+ if ($generalSettings === false) {
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice(" /modesl/admin/settings/index.php: Unable to load General Settings.", 'Alert');
+ }
+/*
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'Unable to create general settings entry in database.'
+ )
+ );
+*/
+ }
+
+ break;
+
+ }
+
+ // Compile template data
+ $templateData = array(
+ 'reason' => '',
+ 'settings' => $generalSettings,
+ 'timezones' => DateTimeZone::listIdentifiers()
+// 'canEdit' => $canEdit
+ );
+
+ // Return status, suggested view, and data to controller
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/management/index.html',
+ 'data' => $templateData
+ );
+
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/models/admin/management/terms.php b/models/admin/management/terms.php
new file mode 100644
index 00000000..392698a5
--- /dev/null
+++ b/models/admin/management/terms.php
@@ -0,0 +1,184 @@
+
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+// Load Members data abstract
+require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsTerms.php');
+
+/*
+ * This class performs the work for the default action of the "Members" menu
+ * option, which is to display the members dashboard.
+ *
+ */
+class GlmMembersAdmin_management_terms extends GlmDataSettingsTerms
+{
+
+ /**
+ * 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 successfull 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)
+ {
+ // General settings are always stored in a record with ID=1.
+ $id = 1;
+
+ // Determine if current user can edit configurations
+ if (!current_user_can('glm_members_configure')) {
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'User does not have rights to make configuration changes.'
+ )
+ );
+ }
+
+ // Check for submission option
+ $option = '';
+ if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+ $option = $_REQUEST['option'];
+ }
+
+ switch($option) {
+
+ // Update the settings and redisplay the form
+ case 'submit':
+
+ // Update the general settings
+ $termsSettings = $this->updateEntry(1);
+
+ // Display admin message that the data has been updated
+ glmMembersAdmin::addNotice('Terms Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
+
+ break;
+
+ // Default is to get the current settings and display the form
+ default:
+
+ // Try to get the first (should be only) entry for general settings.
+ $termsSettings = $this->editEntry($id);
+
+ // Check that we actually have the terms
+ if ($termsSettings === false) {
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice("/modesl/admin/settings/terms.php: Unable to load Terms Settings.", 'Alert');
+ }
+
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'Unable to create terms settings entry in database.'
+ )
+ );
+ }
+
+ break;
+
+ }
+
+ // Compile template data
+ $templateData = array(
+ 'reason' => '',
+ 'settings' => $termsSettings,
+// 'canEdit' => $canEdit
+ );
+
+ // Return status, suggested view, and data to controller
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/management/terms.html',
+ 'data' => $templateData
+ );
+
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/models/admin/settings/development.php b/models/admin/settings/development.php
deleted file mode 100644
index bded5bda..00000000
--- a/models/admin/settings/development.php
+++ /dev/null
@@ -1,345 +0,0 @@
-
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @version 0.1
- */
-
-/*
- * This class performs the work for the default action of the "Members" menu
- * option, which is to display the members dashboard.
- *
- */
-class GlmMembersAdmin_settings_development
-{
-
- /**
- * 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;
-
- }
-
- /*
- * 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 successfull 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)
- {
-
- // Get current database version
- $dbVersion = GLM_MEMBERS_PLUGIN_DB_VERSION;
- settype($dbVersion, 'string');
-
- $templateData['resultMessage'] = '';
- $templateData['success'] = false;
- $templateData['haveNotices'] = false;
- $notices = array();
- $templateData['haveMembers'] = false;
- $templateData['import'] = false;
- $templateData['importNotice'] = false;
- $templateData['haveDatabaseTableList'] = false;
-
- // Load database activation class to get access to database version information
- require_once (GLM_MEMBERS_PLUGIN_PATH . '/activate.php');
- $activate = new glmMembersPluginActivate($this->wpdb, $this->config, true);
-
- $option = '';
- if (isset($_REQUEST['option']) && $_REQUEST['option'] != '') {
- $option = $_REQUEST['option'];
- }
-
- switch($option) {
-
- case 'import_connections':
-
- // Load Member Info Data Class and get info data for later use
- require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/glmMemberImportFromConnections.php');
- $Connections = new GlmMemberImportFromConnections($this->wpdb, $this->config);
-
- if (isset($_REQUEST['import']) && $_REQUEST['import'] == 'now') {
-
- // Reset the database
- if (!$this->deleteDataTables($dbVersion)) {
- glmMembersAdmin::addNotice('Unable to delete the database tables while resetting the database.
', 'AdminError');
- break;
- }
- if (!$this->createDataTables($dbVersion)) {
- glmMembersAdmin::addNotice('Unable to create the database tables while resetting the database.
', 'AdminError');
- break;
- }
- glmMembersAdmin::addNotice('Database tables have been reset in preparation importing members.
', 'AdminNotice');
-
- // Delete Images
- foreach( new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator( GLM_MEMBERS_PLUGIN_IMAGES_PATH, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ),
- RecursiveIteratorIterator::CHILD_FIRST ) as $value ) {
- if ($value->isFile()) {
- unlink( $value );
- }
- }
-
- $templateData['import'] = true;
- $templateData['membersImported'] = $Connections->doImport();
-
- } else {
-
- // Check if Connections is not installed or not active. If active, gets count of entries.
- $c = $Connections->checkConnections();
- if ($c === false) {
- glmMembersAdmin::addNotice('Connections Business Directory plugin is not installed or not active!
'.print_r($c,1), 'AdminError');
- break;
- }
- $templateData['numbEntries'] = $c;
- $importNotice = 'Connections Business Directory plugin is active.
Number of businesses listed: '.$c.'
';
-
- // Get the basic business data for review.
- $templateData['members'] = $Connections->getList();
- if ($templateData['members'] === false) {
- $importNotice = 'No businesses were retieved.';
- break;
- }
-
- $templateData['haveMembers'] = true;
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice($templateData['members'], 'DataBlock', 'Base Members Data');
- }
-
- }
-
- break;
-
- case 'drop':
- case 'reset':
-
- $del = $this->deleteDataTables($dbVersion);
-
- if ($del) {
- glmMembersAdmin::addNotice('New database tables for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been deleted.', 'AdminNotice');
-
- }
-
- if ($option != 'reset') {
- break;
- }
-
- case 'create':
-
- $create = $this->createDataTables($dbVersion);
-
- // If there were no errors
- if ($create) {
-
- // Notify the user that the database has been installed
- glmMembersAdmin::addNotice('New database tables installed for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin.', 'AdminNotice');
-
- // Save the version of the installed database
- update_option('glmMembersDatabaseDbVersion', $dbVersion);
-
- }
-
- break;
-
- case 'list':
-
- // Check if the database version set for this plugin is invalid.
- if (!isset($activate->dbVersions[$dbVersion])) {
- $templateData['resultMessage'] .= "The last database version set for the ".GLM_MEMBERS_PLUGIN_NAME." (V$dbVersion) isn't valid.
";
- break;
- }
-
- // Get the number of tables for this plugin database version that should exist.
- $tables = $activate->dbVersions[$dbVersion]['tables'];
-
- // Get the number of tables for this plugin that do currently exist.
- $existingTables = $this->wpdb->get_results("
- SELECT table_name
- FROM information_schema.tables
- WHERE table_name like '".GLM_MEMBERS_PLUGIN_DB_PREFIX."%';
- ", ARRAY_A);
-
- if (is_array($existingTables)) {
-
-
-
-
- $templateData['resultMessage'] .= 'Current database tables';
- foreach($existingTables as $t){
- $templateData['resultMessage'] .= "
';
- } else {
- $templateData['resultMessage'] .= 'No tables currently exist
';
- }
- $templateData['resultMessage'] .= '
';
- }
-
- break;
-
- default:
-
- break;
-
- }
-
- // Return status, suggested view, and data to controller
- return array(
- 'status' => true,
- 'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/settings/development.html',
- 'data' => $templateData
- );
-
- }
-
- /*
- * Delete Members Database Tables
- *
- * @param string $dbVersion Current version of Members Database
- *
- * @return boolean
- * @access public
- */
- public function deleteDataTables($dbVersion)
- {
-
- // Read in Database deletion script - assumes the current db version.
- $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/drop_database_V'.$dbVersion.'.sql';
- $sql = file_get_contents($sqlFile);
-
- // Replace {prefix} with table name prefix
- $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice('Dropping all database tables', 'Process');
- glmMembersAdmin::addNotice($sql, 'DataBlock', 'Drop Tables SQL');
- }
-
- // Removing the tables using the script
- $this->wpdb->query($sql);
-
- // If there's been an error, display in debug Alert
- $queryError = $this->wpdb->last_error;
- if ($queryError) {
- glmMembersAdmin::addNotice('Error when deleting database: Database tables may not have existed.
Check following message.
'.$queryError, 'AdminError');
- return false;
- }
-
- return true;
-
- }
-
- /*
- * Create Members Database Tables
- *
- * @param string $dbVersion Current version of Members Database
- *
- * @return boolean
- * @access public
- */
- public function createDataTables($dbVersion)
- {
-
- // Read in Database creation script
- $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/create_database_V'.$dbVersion.'.sql';
- $sql = file_get_contents($sqlFile);
-
- // Replace {prefix} with table name prefix
- $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
-
- // Split script into separate queries by looking for lines with only "---"
- $queries = preg_split('/^----$/m', $sql);
-
- // Try executing all queries to build database
- $qForDebug = '';
- do {
- $q = current($queries);
- $this->wpdb->query($q);
- $queryError = $this->wpdb->last_error;
-
- if ($queryError) {
- glmMembersAdmin::addNotice('Error when creating database: Database tables may already exist.
Check following message.
'.$queryError, 'AdminError');
- return false;
- }
- $qForDebug .= $queryError.$q;
-
- } while ($queryError == '' && next($queries));
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice('Creating database tables', 'Process');
- glmMembersAdmin::addNotice($qForDebug, 'DataBlock', 'Create Tables SQL');
- }
-
- return true;
-
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/models/admin/settings/import.php b/models/admin/settings/import.php
deleted file mode 100644
index 6cfecf59..00000000
--- a/models/admin/settings/import.php
+++ /dev/null
@@ -1,1097 +0,0 @@
-
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @version 0.1
- */
-
-/*
- * This class performs the work for the default action of the "Members" menu
- * option, which is to display the members dashboard.
- *
- */
-class GlmMembersAdmin_settings_import
-{
-
- /**
- * 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;
-
- }
-
- /*
- * 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 successfull 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)
- {
-
- $templateData = array();
-
- $requestedView = false;
- $failure = false;
-
- $option = '';
-
- // If there has been a redirect
- if ($actionData) {
-
- $templateData = $actionData;
- $option = 'importSelect';
-
- // Otherwise check the request for desired option
- } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] != '') {
-
- $option = $_REQUEST['option'];
-
- // Fall back to importSelect
- } else {
-
- $option = 'importSelect';
-
- }
-
- switch($option) {
-
- case 'importSelect':
-
- $requestedView = 'import.html';
-
- break;
-
- case 'readDatabase':
-
- /*
- * Check all input
- */
-
- // Check hostname
- $dbServer = preg_replace("/[^a-zA-Z0-9\._-]+/", "", trim($_REQUEST['dbServer']));
- $templateData['dbServer'] = array('value' => $dbServer, 'problem' => false);
- if (!$dbServer || $dbServer == '' || $dbServer != trim($_REQUEST['dbServer'])) {
- $templateData['dbServer']['problem'] = 'Server name or IP address was not provided or contained invalid characters.';
- $failure = true;
- }
-
- // Check database port #
- $dbPort = preg_replace("/[^0-9]+/", "", trim($_REQUEST['dbPort']));
- $templateData['dbPort'] = array('value' => $dbPort, 'problem' => false);
- if (!$dbPort || $dbPort == '' || $dbPort != trim($_REQUEST['dbPort'])) {
- $templateData['dbPort']['problem'] = 'Server port was not provided or is not a valid nummber.';
- $failure = true;
- }
-
- // Check database name
- $dbName = preg_replace("/[^a-zA-Z0-9_]+/", "", trim($_REQUEST['dbName']));
- $templateData['dbName'] = array('value' => $dbName, 'problem' => false);
- if (!$dbName || $dbName == '' || $dbName != trim($_REQUEST['dbName'])) {
- $templateData['dbName']['problem'] = 'Database name was not provided or is not valid for Postgres.';
- $failure = true;
- }
-
- // Check database user
- $dbUser = preg_replace("/[^a-zA-Z0-9_]+/", "", trim($_REQUEST['dbUser']));
- $templateData['dbUser'] = array('value' => $dbUser, 'problem' => false);
- if (!$dbUser || $dbUser == '' || $dbUser != trim($_REQUEST['dbUser'])) {
- $templateData['dbUser']['problem'] = 'Database user was not provided or is not valid for Postgres.';
- $failure = true;
- }
-
- // Check Image URL
- $dbImageURL = filter_var($_REQUEST['dbImageURL'], FILTER_SANITIZE_URL);
- $templateData['dbImageURL'] = array('value' => $dbImageURL, 'problem' => false);
- if (!$dbImageURL || $dbImageURL == '' || $dbImageURL != trim($_REQUEST['dbImageURL'])) {
- $templateData['dbImageURL']['problem'] = 'Image URL does not appear to be valid.';
- $failure = true;
- }
-
- if ($failure) {
- $templateData['genError'] = 'There was a problem with the database connection information you provided. See below for specific instructions.';
- }
-
- /*
- * Determine if source database is sane
- */
-
- // Connect to database
- if (!$failure) {
- $connString = "host=$dbServer port=$dbPort dbname=$dbName user=$dbUser";
- $db = @pg_connect($connString);
- if (!$db) {
-
- $err = error_get_last();
- $templateData['genError'] = 'There was a problem connecting to the database. The error message was...
'.$err['message'];
- $failure = true;
-
- }
- }
-
- // Determine if the members schema exists
- if (!$failure) {
- $sql = "
- SELECT EXISTS
- (
- SELECT 1
- FROM information_schema.schemata AS exists
- WHERE schema_name = 'members'
- ) AS isMembers
- ;";
- $res = pg_query($db, $sql);
- if (pg_fetch_result($res, 0, 'isMembers') == 'f') {
- $templateData['genError'] = 'The "members" schema was not found! Is this the right database?';
- $failure = true;
- }
- }
-
- /*
- * Load data from source database
- */
-
- // Attempt to get member base data
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.member
- ORDER BY member_id
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any members listed in this database!';
- $failure = true;
- } else {
- $member = pg_fetch_all($res);
- if (count($member) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading base member data, we did not receive the expected number of members! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- }
- }
- }
-
- // Read in all amenities
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.amenity
- ORDER BY amenity_name
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any cities listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading amenity data, we did not receive the expected number of amenities! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $amenity = array();
-
- // Reprocess into array indexed by amenity_id
- foreach ($tmp as $x) {
- $amenity[$x['amenity_id']] = $x;
- }
- }
- }
- }
-
- // Read in member/amenity cross-reference table
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.member_amenity
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any member/amenity cross-reference entries listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading amenity data, we did not receive the expected number of amenities! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the ameities into an array indexed by amenity_id
- $membAmen = array();
-
- // Reprocess into array grouped by member with the main index the member ID
- foreach ($tmp as $x) {
-
- // If member entry hasn't been created yet, add it now
- if (!isset($membAmen[$x['member_id']])) {
- $membAmen[$x['member_id']] = array();
- }
-
- $membAmen[$x['member_id']][] = $x;
- }
- }
- }
- }
-
- // Read in all credit card types
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.ccard_type
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any credit card types listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading credit card type data, we did not receive the expected number of credit card types! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $ccard = array();
-
- // Reprocess into array indexed by ccard_type_id
- foreach ($tmp as $x) {
- $ccard[$x['ccard_type_id']] = $x;
- }
- }
- }
- }
-
- // Read in member/credit card cross-reference table
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.member_ccard_type
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any member/credit card cross-reference entries listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading member/credit card cross-reference data, we did not receive the expected number of entries! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $membCcard = array();
-
- // Reprocess into array grouped by member with the main index the member ID
- foreach ($tmp as $x) {
-
- // If member entry hasn't been created yet, add it now
- if (!isset($membCcard[$x['member_id']])) {
- $membCcard[$x['member_id']] = array();
- }
-
- $membCcard[$x['member_id']][] = $x;
- }
- }
- }
- }
-
-
- // Read in all member categories
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.category
- ORDER BY category_id
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any categories listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading category data, we did not receive the expected number of categories! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the categories into a higherarchical array
- $category = array();
-
- // Process top level categories first
- foreach ($tmp as $x) {
-
- // If this is a top level category
- if ($x['parent_id'] == 0) {
- $category[$x['category_id']] = $x;
- $category[$x['category_id']]['subcat'] = array();
- }
-
- }
-
- // Now process all sub-categories
- reset($tmp);
- foreach ($tmp as $x) {
-
- // If this is NOT a top level category
- if ($x['parent_id'] > 0) {
-
- // Check if we have the requested parent as a top-level category
- if (isset($category[$x['parent_id']])) {
- $category[$x['parent_id']]['subcat'][$x['category_id']] = $x;
- } else {
- $templateData['genError'] = 'There is at least one sub-category that does not have a matching top-level parent! ('.$x['name'].')
- This could be a third-level category. Perhaps we can handle this when we have time to work on this a bit.';
- $failure = true;
- }
- }
- }
- }
- }
- }
-
- // Read in member/Category cross-reference table
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.member_category
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any member/category cross-reference entries listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading category data, we did not receive the expected number of categories! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $membCat = array();
-
- // Reprocess into array grouped by member with the main index the member ID
- foreach ($tmp as $x) {
-
- // If member entry hasn't been created yet, add it now
- if (!isset($membCat[$x['member_id']])) {
- $membCat[$x['member_id']] = array();
- }
-
- $membCat[$x['member_id']][] = $x;
- }
- }
- }
- }
-
-
-
- // Read in all cities
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.city
- ORDER BY city_name
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any cities listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading city data, we did not receive the expected number of cities! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $city = array();
-
- // Reprocess into array indexed by city_id
- foreach ($tmp as $x) {
- $city[$x['city_id']] = $x;
- }
- }
- }
- }
-
- // Read in all states
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.state
- ORDER BY state_name
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any states listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading state data, we did not receive the expected number of states! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $state = array();
-
- // Reprocess into array indexed by state_id
- foreach ($tmp as $x) {
- $state[$x['state_id']] = $x;
- }
- }
- }
- }
-
- // Read in all regions
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.region
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any regions listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading region data, we did not receive the expected number of regions! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $region = array();
-
- // Reprocess into array indexed by state_id
- foreach ($tmp as $x) {
- $region[$x['region_id']] = $x;
- }
- }
- }
- }
-
-
-
- // Read in all member photos for member image gallery
- if (!$failure) {
- $sql = "
- SELECT *
- FROM members.member_photos
- ;";
- $res = pg_query($db, $sql);
- $rows = pg_num_rows($res);
- if ($rows == 0) {
- $templateData['genError'] = 'There does not appear to be any member photos listed in this database!';
- $failure = true;
- } else {
- $tmp = pg_fetch_all($res);
- if (count($tmp) != $rows) {
- $notice = pg_last_notice($res);
- $templateData['genError'] = 'While reading member photo data, we did not receive the expected number of member photos! ';
- if ($notice) {
- $templateData['genError'] .= 'Perhaps the following message will help.
'.$notice;
- }
- $failure = true;
- } else {
-
- // Since there was no problem, we'll post-process the cities into an array indexed by city_id
- $image = array();
-
- // Reprocess into array grouped by member with the main index the member ID
- foreach ($tmp as $x) {
-
- // If member entry hasn't been created yet, add it now
- if (!isset($image[$x['member_id']])) {
- $image[$x['member_id']] = array();
- }
-
- $image[$x['member_id']][] = $x;
- }
- }
- }
- }
-
- /*
- * If requested, reset the database
- */
-
- // Reset database is Option is selected
- if (!$failure && isset($_REQUEST['dbReset']) && $_REQUEST['dbReset'] == 'on') {
-
- // Get current db version
- $dbVersion = GLM_MEMBERS_PLUGIN_DB_VERSION;
-
- // Reset the database
- if (!$this->deleteDataTables($dbVersion)) {
- glmMembersAdmin::addNotice('Unable to delete the database tables while resetting the database.
', 'AdminError');
- break;
- }
- if (!$this->createDataTables($dbVersion)) {
- glmMembersAdmin::addNotice('Unable to create the database tables while resetting the database.
', 'AdminError');
- break;
- }
-
- glmMembersAdmin::addNotice('Database tables have been reset in preparation importing members.
', 'AdminNotice');
-
- // Delete Images
- foreach( new RecursiveIteratorIterator(
-
- new RecursiveDirectoryIterator( GLM_MEMBERS_PLUGIN_IMAGES_PATH, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ),
- RecursiveIteratorIterator::CHILD_FIRST ) as $value ) {
- if ($value->isFile()) {
- unlink( $value );
- }
- }
-
- }
-
- /*
- * Start importing data
- */
-
- if (!$failure) {
-
- // Import Cities
- while (list ($key, $val) = each ($city) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'cities',
- array(
- 'name' => $val['city_name'],
- ),
- array(
- '%s',
- )
- );
- $city[$key]['new_id'] = $this->wpdb->insert_id;
-
- }
-
- // Import Regions
- while (list ($key, $val) = each ($region) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'regions',
- array(
- 'name' => $val['region_name'],
- 'descr' => '',
- 'short_descr' => ''
- ),
- array(
- '%s',
- '%s',
- '%s'
- )
- );
- $region[$key]['new_id'] = $this->wpdb->insert_id;
-
- }
-
- // Import Amenities
- while (list ($key, $val) = each ($amenity) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'amenities',
- array(
- 'active' => true,
- 'name' => $val['amenity_name'],
- 'descr' => '',
- 'short_descr' => '',
- 'ref_type' => $this->config['ref_type_numb']['MemberInfo']
- ),
- array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%d'
- )
- );
- $amenity[$key]['new_id'] = $this->wpdb->insert_id;
-
- }
-
- // Import Categories
- $catTrans = array();
- while (list ($key, $val) = each ($category) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'categories',
- array(
- 'name' => $val['name'],
- 'descr' => '',
- 'short_descr' => '',
- 'parent' => 0
- ),
- array(
- '%s',
- '%s',
- '%s',
- '%d'
- )
- );
- $newID = $this->wpdb->insert_id;
- $category[$key]['new_id'] = $newID;
- $category[$key]['new_parent'] = 0;
-
- $catTrans[$key] = array(
- 'new' => $newID,
- 'parent' => 0
- );
-
- // Do any sub-cats for this category
- while (list ($key2, $val2) = each ($val['subcat']) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'categories',
- array(
- 'name' => $val2['name'],
- 'descr' => '',
- 'short_descr' => '',
- 'parent' => $category[$key]['new_id']
- ),
- array(
- '%s',
- '%s',
- '%s',
- '%d'
- )
- );
- $newID2 = $this->wpdb->insert_id;
- $category[$key]['subcat'][$key2]['new_id'] = $newID;
- $category[$key]['subcat'][$key2]['new_parent'] = $category[$key]['new_id'];
-
- $catTrans[$key2] = array(
- 'new' => $newID2,
- 'parent' => $newID
- );
-
- }
- }
-
-
-
- // Index Credit Card types - Match to card types in configuration
- while (list ($key, $val) = each ($ccard) ) {
- reset($this->config['credit_card_numb']);
- while (list ($key2, $val2) = each ($this->config['credit_card_numb']) ) {
- if (substr($val['ccard_type_name'], 0, 3) == substr(($key2), 0, 3)) {
- $ccard[$key]['bitpos'] = $val2;
- }
- }
- }
-
- /*
- * Create Defaults Not Provided By Old Member DB
- */
-
- // Member Types
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'member_type',
- array(
- 'name' => 'Default',
- 'descr' => '',
- ),
- array(
- '%s',
- '%s',
- )
- );
- $defaultMemberType = $this->wpdb->insert_id;
-
- /*
- * Now Start Adding Members
- */
-
- // Import Members
- while (list ($key, $val) = each ($member) ) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'members',
- array(
- 'access' => $this->config['memb_access_numb']['Full'],
- 'member_type' => $defaultMemberType,
- 'created' => date('Y-m-d'),
- 'name' => $val['member_name']
- ),
- array(
- '%d',
- '%d',
- '%s',
- '%s'
- )
- );
- $membID = $this->wpdb->insert_id;
- $member[$key]['new_id'] = $membID;
-
- // Create truncated short_descr from descritions - Less tags, html encoded characters, newlines, tabs, etc.
- $stripped = str_replace(PHP_EOL, '', preg_replace('/\t+/', '', preg_replace("/?[a-z0-9]{2,8};/i", "", strip_tags($val['description']))));
- $short_descr = implode(' ', array_slice(explode(' ', $stripped), 0, 30));
- if (strlen($short_descr) < strlen($stripped)) {
- $short_descr .= ' ...';
- }
-
- // Build Credit Card bitmap
- $ccBits = 0;
- if (isset($membCcard[$val['member_id']])) {
- foreach ($membCcard[$val['member_id']] as $c) {
- $b = $ccard[$c['ccard_type_id']]['bitpos'];
- $ccBits += pow(2, $b);
- }
- }
-
- // Insert Member Information Record
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'member_info',
- array(
- 'member' => $membID,
- 'member_name' => $val['member_name'],
- 'status' => $this->config['status_numb']['Active'],
- 'reference_name' => 'Imported Membmer Information',
- 'descr' => $val['description'],
- 'short_descr' => $short_descr,
- 'addr1' => $val['street'],
- 'addr2' => '',
- 'city' => $city[$val['city_id']]['new_id'],
- 'state' => $state[$val['state_id']]['state_abb'],
- 'country' => 'US',
- 'zip' => $val['zip'],
- 'lat' => $val['lat'],
- 'lon' => $val['lon'],
- 'region' => (isset($region[$val['region']]) ? $region[$val['region']]['new_id'] : 0),
- 'phone' => $val['phone'],
- 'toll_free' => $val['toll_free'],
- 'url' => $val['url'],
- 'email' => $val['process_email'],
- 'logo' => '',
- 'cc_type' => $ccBits,
- 'notes' => '',
- 'create_time' => $val['create_date'],
- 'modify_time' => $val['last_update']
- ),
- array(
- '%d',
- '%s',
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%s',
- '%s',
- '%s',
- '%f',
- '%f',
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%s',
- '%s',
- '%s'
- )
- );
- $mID = $this->wpdb->insert_id;
- $member[$key]['new_id'] = $mID;
-
- // Add Member Categories
- if (isset($membCat[$val['member_id']])) {
- foreach ($membCat[$val['member_id']] as $c) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'category_member_info',
- array(
- 'category' => $catTrans[$c['category_id']]['new'],
- 'member_info' => $mID
- ),
- array(
- '%d',
- '%d'
- )
- );
-
- }
- }
-
- // Add Member Amenities
- if (isset($membAmen[$val['member_id']])) {
- foreach ($membAmen[$val['member_id']] as $a) {
-
- $res = $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX.'amenity_ref',
- array(
- 'amenity' => $amenity[$a['amenity_id']]['new_id'],
- 'ref_type' => $this->config['ref_type_numb']['MemberInfo'],
- 'ref_dest' => $mID
- ),
- array(
- '%d',
- '%d',
- '%d'
- )
- );
-
- }
- }
-
-
- }
-
- // Import
-
- }
-
- // If everything is OK, make data available to the template
- if (!$failure) {
- $templateData['member'] = $member;
- $templateData['defaultMemberType'] = $defaultMemberType;
- $templateData['amenity'] = $amenity;
- $templateData['membAmen'] = $membAmen;
- $templateData['category'] = $category;
- $templateData['membCat'] = $membCat;
- $templateData['catTrans'] = $catTrans;
- $templateData['city'] = $city;
- $templateData['state'] = $state;
- $templateData['region'] = $region;
- $templateData['ccard'] = $ccard;
- $templateData['membCcard'] = $membCcard;
- $templateData['image'] = $image;
- }
-
-
- if ($failure) {
- return array(
- 'status' => true,
- 'menuItemRedirect' => 'settings',
- 'modelRedirect' => 'import',
- 'view' => 'admin/settings/import.html',
- 'data' => $templateData
- );
-
- }
-
- $requestedView = 'import/readDatabase.html';
-
- break;
-
- default:
-
- break;
-
- }
-
- // Return status, suggested view, and data to controller
- return array(
- 'status' => true,
- 'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/settings/'.$requestedView,
- 'data' => $templateData
- );
-
- }
-
- /*
- * Delete Members Database Tables
- *
- * @param string $dbVersion Current version of Members Database
- *
- * @return boolean
- * @access public
- */
- public function deleteDataTables($dbVersion)
- {
-
- // Read in Database deletion script - assumes the current db version.
- $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/drop_database_V'.$dbVersion.'.sql';
- $sql = file_get_contents($sqlFile);
-
- // Replace {prefix} with table name prefix
- $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice('Dropping all database tables', 'Process');
- glmMembersAdmin::addNotice($sql, 'DataBlock', 'Drop Tables SQL');
- }
-
- // Removing the tables using the script
- $this->wpdb->query($sql);
-
- // If there's been an error, display in debug Alert
- $queryError = $this->wpdb->last_error;
- if ($queryError) {
- glmMembersAdmin::addNotice('Error when deleting database: Database tables may not have existed.
Check following message.
'.$queryError, 'AdminError');
- }
-
- return true;
-
- }
-
- /*
- * Create Members Database Tables
- *
- * @param string $dbVersion Current version of Members Database
- *
- * @return boolean
- * @access public
- */
- public function createDataTables($dbVersion)
- {
-
- // Read in Database creation script
- $sqlFile = GLM_MEMBERS_PLUGIN_DB_SCRIPTS.'/create_database_V'.$dbVersion.'.sql';
- $sql = file_get_contents($sqlFile);
-
- // Replace {prefix} with table name prefix
- $sql = str_replace('{prefix}', GLM_MEMBERS_PLUGIN_DB_PREFIX, $sql);
-
- // Split script into separate queries by looking for lines with only "---"
- $queries = preg_split('/^----$/m', $sql);
-
- // Try executing all queries to build database
- $qForDebug = '';
- do {
- $q = current($queries);
- $this->wpdb->query($q);
- $queryError = $this->wpdb->last_error;
-
- if ($queryError) {
- glmMembersAdmin::addNotice('Error when creating database: Database tables may already exist.
Check following message.
'.$queryError, 'AdminError');
- return false;
- }
- $qForDebug .= $queryError.$q;
-
- } while ($queryError == '' && next($queries));
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice('Creating database tables', 'Process');
- glmMembersAdmin::addNotice($qForDebug, 'DataBlock', 'Create Tables SQL');
- }
-
- return true;
-
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/models/admin/settings/index.php b/models/admin/settings/index.php
deleted file mode 100644
index e9244c6f..00000000
--- a/models/admin/settings/index.php
+++ /dev/null
@@ -1,185 +0,0 @@
-
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @version 0.1
- */
-
-// Load Members data abstract
-require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsGeneral.php');
-
-/*
- * This class performs the work for the default action of the "Members" menu
- * option, which is to display the members dashboard.
- *
- */
-class GlmMembersAdmin_settings_index extends GlmDataSettingsGeneral
-{
-
- /**
- * 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 successfull 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)
- {
- // General settings are always stored in a record with ID=1.
- $id = 1;
-
- // Determine if current user can edit configurations
- if (!current_user_can('glm_members_configure')) {
- return array(
- 'status' => false,
- 'menuItemRedirect' => 'error',
- 'modelRedirect' => 'index',
- 'view' => 'admin/error/index.html',
- 'data' => array(
- 'reason' => 'User does not have rights to make configuration changes.'
- )
- );
- }
-
- // Check for submission option
- $option = '';
- if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
- $option = $_REQUEST['option'];
- }
-
- switch($option) {
-
- // Update the settings and redisplay the form
- case 'submit':
-
- // Update the general settings
- $generalSettings = $this->updateEntry(1);
-
- // Display admin message that the data has been updated
- glmMembersAdmin::addNotice('General Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
-
- break;
-
- // Default is to get the current settings and display the form
- default:
-
- // Try to get the first (should be only) entry for general settings.
- $generalSettings = $this->editEntry($id);
-
- if ($generalSettings === false) {
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice(" /modesl/admin/settings/index.php: Unable to load General Settings.", 'Alert');
- }
-/*
- return array(
- 'status' => false,
- 'menuItemRedirect' => 'error',
- 'modelRedirect' => 'index',
- 'view' => 'admin/error/index.html',
- 'data' => array(
- 'reason' => 'Unable to create general settings entry in database.'
- )
- );
-*/
- }
-
- break;
-
- }
-
- // Compile template data
- $templateData = array(
- 'reason' => '',
- 'settings' => $generalSettings,
- 'timezones' => DateTimeZone::listIdentifiers()
-// 'canEdit' => $canEdit
- );
-
- // Return status, suggested view, and data to controller
- return array(
- 'status' => true,
- 'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/settings/index.html',
- 'data' => $templateData
- );
-
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/models/admin/settings/terms.php b/models/admin/settings/terms.php
deleted file mode 100644
index 9db4ce66..00000000
--- a/models/admin/settings/terms.php
+++ /dev/null
@@ -1,184 +0,0 @@
-
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @version 0.1
- */
-
-// Load Members data abstract
-require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsTerms.php');
-
-/*
- * This class performs the work for the default action of the "Members" menu
- * option, which is to display the members dashboard.
- *
- */
-class GlmMembersAdmin_settings_terms extends GlmDataSettingsTerms
-{
-
- /**
- * 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 successfull 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)
- {
- // General settings are always stored in a record with ID=1.
- $id = 1;
-
- // Determine if current user can edit configurations
- if (!current_user_can('glm_members_configure')) {
- return array(
- 'status' => false,
- 'menuItemRedirect' => 'error',
- 'modelRedirect' => 'index',
- 'view' => 'admin/error/index.html',
- 'data' => array(
- 'reason' => 'User does not have rights to make configuration changes.'
- )
- );
- }
-
- // Check for submission option
- $option = '';
- if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
- $option = $_REQUEST['option'];
- }
-
- switch($option) {
-
- // Update the settings and redisplay the form
- case 'submit':
-
- // Update the general settings
- $termsSettings = $this->updateEntry(1);
-
- // Display admin message that the data has been updated
- glmMembersAdmin::addNotice('Terms Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
-
- break;
-
- // Default is to get the current settings and display the form
- default:
-
- // Try to get the first (should be only) entry for general settings.
- $termsSettings = $this->editEntry($id);
-
- // Check that we actually have the terms
- if ($termsSettings === false) {
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice("/modesl/admin/settings/terms.php: Unable to load Terms Settings.", 'Alert');
- }
-
- return array(
- 'status' => false,
- 'menuItemRedirect' => 'error',
- 'modelRedirect' => 'index',
- 'view' => 'admin/error/index.html',
- 'data' => array(
- 'reason' => 'Unable to create terms settings entry in database.'
- )
- );
- }
-
- break;
-
- }
-
- // Compile template data
- $templateData = array(
- 'reason' => '',
- 'settings' => $termsSettings,
-// 'canEdit' => $canEdit
- );
-
- // Return status, suggested view, and data to controller
- return array(
- 'status' => true,
- 'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/settings/terms.html',
- 'data' => $templateData
- );
-
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/views/admin/management/development.html b/views/admin/management/development.html
new file mode 100644
index 00000000..4ce4fe2b
--- /dev/null
+++ b/views/admin/management/development.html
@@ -0,0 +1,135 @@
+{include file='admin/management/header.html'}
+
+ Development Activities
+
+
+
Import
+
+
Note: Customers will not have access to this tab.
+ ++ This process export data from a legacy Gaslight Media Member DB database and imports that data into this plugin. It will only work with a Postgres database. + The process will include the following steps. +
++
{$genError}
+ +{/if} + + + +{include file='admin/footer.html'} diff --git a/views/admin/management/import/readDatabase.html b/views/admin/management/import/readDatabase.html new file mode 100644 index 00000000..2f3b8dbc --- /dev/null +++ b/views/admin/management/import/readDatabase.html @@ -0,0 +1,56 @@ +{include file='admin/management/header.html'} + +Note: Customers will not have access to this tab.
+ ++
{$genError}
+ +{/if} + + + +{include file='admin/footer.html'} diff --git a/views/admin/management/index.html b/views/admin/management/index.html new file mode 100644 index 00000000..1e8f1c89 --- /dev/null +++ b/views/admin/management/index.html @@ -0,0 +1,297 @@ +{include file='admin/management/header.html'} + +Note: Customers will not have access to this tab.
- -- Import data from "Connections" business directory - - {if $importNotice} -
Note: Customers will not have access to this tab.
- -- This process export data from a legacy Gaslight Media Member DB database and imports that data into this plugin. It will only work with a Postgres database. - The process will include the following steps. -
--
{$genError}
- -{/if} - - - -{include file='admin/footer.html'} diff --git a/views/admin/settings/import/readDatabase.html b/views/admin/settings/import/readDatabase.html deleted file mode 100644 index 7fe5168d..00000000 --- a/views/admin/settings/import/readDatabase.html +++ /dev/null @@ -1,56 +0,0 @@ -{include file='admin/settings/header.html'} - -Note: Customers will not have access to this tab.
- --
{$genError}
- -{/if} - - - -{include file='admin/footer.html'} diff --git a/views/admin/settings/index.html b/views/admin/settings/index.html deleted file mode 100644 index f4826d23..00000000 --- a/views/admin/settings/index.html +++ /dev/null @@ -1,297 +0,0 @@ -{include file='admin/settings/header.html'} - -