+++ /dev/null
-<?php
-/**
- * Gaslight Media Members Database
- * GLM Members DB - Registrations Add-on - Management Registrations Tab
- *
- * PHP version 5.5
- *
- * @category glmWordPressPlugin
- * @package glmMembersDatabase
- * @author Chuck Scott <cscott@gaslightmedia.com>
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @release registrations.php,v 1.0 2014/10/31 19:31:47 cscott Exp $
- * @link http://dev.gaslightmedia.com/
- */
-
-// Load Management Registrations data abstract
-require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataManagement.php';
-
-/**
- * GlmMembersAdmin_management_registrations
- *
- * PHP version 5
- *
- * @category Model
- * @package GLM Member DB
- * @author Chuck Scott <cscott@gaslightmedia.com>
- * @license http://www.gaslightmedia.com Gaslightmedia
- * @release SVN: $Id: packaging.php,v 1.0 2011/01/25 19:31:47 cscott
- * Exp $
- */
-class GlmMembersAdmin_management_registrations extends GlmDataRegistrationsManagement
-{
-
- /**
- * WordPress Database Object
- *
- * @var $wpdb
- * @access public
- */
- public $wpdb;
- /**
- * dbh Postgres database connection
- *
- * @var mixed
- * @access public
- */
- public $dbh;
- /**
- * settings used for the schema and tablenames
- *
- * @var mixed
- * @access public
- */
- public $settings = array();
- /**
- * categories
- *
- * @var bool
- * @access public
- */
- public $categories = array();
- public $oldCatMap = array();
- /**
- * registrations
- *
- * @var bool
- * @access public
- */
- public $registrations = array();
- public $image_owner;
-
- /**
- * Constructor
- *
- * This contructor performs the work for this model. This model returns
- * an array containing the following.
- *
- * 'status'
- *
- * True if successfull and false if there was a fatal failure.
- *
- * '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.
- *
- * @wpdb object WordPress database object
- *
- * @return array Array containing status, suggested view, and any data
- */
- 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);
-
- }
-
- public function importRegistrationImages()
- {
- require_once GLM_MEMBERS_PLUGIN_PATH.'/models/admin/ajax/imageUpload.php';
- $ImageUpload = new GlmMembersAdmin_ajax_imageUpload($this->wpdb, $this->config);
- // get all registrations with images
- $sql = "
- SELECT id,image,old_registration_id
- FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX. "registrations
- WHERE image != '' AND image IS NOT NULL";
- $results = $this->wpdb->get_results($sql, ARRAY_A);
- $out = '<pre>$results: ' . print_r($results, true) . '</pre>';
- $imgUrl = 'http://is0.gaslightmedia.com/' . $this->image_owner . '/original/';
- foreach ( $results as $registration ) {
- $imageFullUrl = $imgUrl . $registration['image'];
- $res = $ImageUpload->storeImage($imageFullUrl);
-
- if ( $res['newFileName'] ) {
- $this->wpdb->update(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registrations',
- array(
- 'image' => $res['newFileName']
- ),
- array( 'id' => $registration['id'] ),
- array( '%s' ),
- array( '%d' )
- );
- }
- }
- return $out;
- }
-
- public function importRegistrationFiles()
- {
- // get all registrations with images
- $sql = "
- SELECT id,file1,file2_descr,old_registration_id
- FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX. "registrations
- WHERE file1 != '' AND file1 IS NOT NULL";
- $results = $this->wpdb->get_results($sql, ARRAY_A);
- $fileUrl = 'http://is0.gaslightmedia.com/' . $this->image_owner . '/original/';
- $out = '<pre>$results: ' . print_r($results, true) . '</pre>';
- foreach ( $results as $registration ) {
- if ( $registration['image']) {
- $fileFullUrl = $fileUrl . $registration['image'];
- $fp = fopen( GLM_MEMBERS_PLUGIN_FILES_PATH . '/' . $registration['file1'], 'w+' );
- $ch = curl_init( $fileUrl . $registration['file1'] );
- curl_setopt($ch, CURLOPT_TIMEOUT, 50);
- curl_setopt($ch, CURLOPT_FILE, $fp);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- $fileData = curl_exec($ch);
- $httpCode = curl_getinfo($ch);
- curl_close($ch);
- fclose($fp);
- // Set correct file permissions
- $oldUmask = umask(0);
- chmod( GLM_MEMBERS_PLUGIN_FILES_PATH . '/' . $registration['file1'], 0660 );
- umask($oldUmask);
- }
- }
- return $out;
- }
-
- /**
- * modelAction
- *
- * @param bool $actionData
- * @access public
- * @return void
- */
- public function modelAction($actionData = false)
- {
-
- $option = false;
- $test_result = false;
- $import_result = false;
- $settings_updated = false;
- $settings_update_error = false;
- $registration_settings = false;
- $icalFeedResult = false;
- $import_feeds = false;
- $option2 = false;
-
- if (isset($_REQUEST['option'])) {
- $option = $_REQUEST['option'];
- }
-
- $importFeeds = new GlmDataFeedImport( $this->wpdb, $this->config );
-
- switch ($option) {
-
- case 'timelyImport':
- $import = false;
- if (isset($_REQUEST['import'])) {
- $import = filter_var( $_REQUEST['import'], FILTER_VALIDATE_BOOLEAN );
- }
- $import_result = $this->importFromTimely();
- break;
-
- case 'icalfeed':
- if ( isset( $_REQUEST['option2'] ) ) {
- $option2 = filter_var( $_REQUEST['option2'], FILTER_SANITIZE_STRING );
- }
- $icalFeedResult = '';
- if ( $option2 === 'delete' && $feed_id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) {
- $this->wpdb->delete(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "feed_import",
- array( 'id' => $feed_id ),
- '%d'
- );
- if ( wp_next_scheduled( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) ) ) {
- wp_clear_scheduled_hook( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) );
- }
- }
- if ( $option2 === 'refresh' && $feed_id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) {
- //$icalFeedResult .= $this->importIcalFeed( $feed_id );
- // Set up the registration schedule
- if ( wp_next_scheduled( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) ) ) {
- wp_clear_scheduled_hook( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) );
- }
- wp_schedule_registration( time(), GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_RECURRANCE, GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) );
- }
- if ( isset( $_REQUEST['feed_url'] ) && $feed_url = filter_var( $_REQUEST['feed_url'], FILTER_VALIDATE_URL ) ) {
- // Add this feed url to the table
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "feed_import",
- array(
- 'feed_url' => $feed_url,
- 'created' => current_time( 'mysql' )
- ),
- '%s'
- );
- $feed_id = $this->wpdb->insert_id;
-
- // Setup the registration feed to pull on schedule
- if ( !wp_next_scheduled( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, $feed_id ) ) {
- wp_schedule_registration( time(), GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_RECURRANCE, GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( $feed_id ) );
- }
- }
-
- break;
-
- case 'registrationImagesImport':
-
- $this->image_owner = filter_var($_REQUEST['img_owner_id'], FILTER_SANITIZE_STRING);
-
- if ( $this->image_owner ) {
- $this->importRegistrationImages();
- $this->importRegistrationFiles();
- $import_result = '<p>All images and files imported</p>';
- } else {
- $import_result = '<pre>Failure: Not given owner id.</pre>';
- }
-
- break;
-
- case 'registrationFilesImport':
- break;
-
- case 'registrationimport':
-
- $import = false;
- if (isset($_REQUEST['import'])) {
- $import = filter_var( $_REQUEST['import'], FILTER_VALIDATE_BOOLEAN );
- }
- switch ($import) {
- case 'true':
- $import_result = '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
- $db_host = filter_var( $_REQUEST['db_host'], FILTER_SANITIZE_STRING );
- $db_name = filter_var( $_REQUEST['db_name'], FILTER_SANITIZE_STRING );
- $db_user = filter_var( $_REQUEST['db_user'], FILTER_SANITIZE_STRING );
- $db_password = filter_var( $_REQUEST['db_password'], FILTER_SANITIZE_STRING );
- $this->connectPostgresDb($db_host, $db_name, $db_user, $db_password);
-
- $this->settings = filter_var_array(
- $_REQUEST,
- array(
- 'schema' => FILTER_SANITIZE_STRING,
- 'cattablename' => FILTER_SANITIZE_STRING,
- 'tablename' => FILTER_SANITIZE_STRING,
- 'sdate' => array(
- 'filter' => FILTER_VALIDATE_REGEXP,
- 'options' => array(
- 'regexp' => '%[0-9]{2}/[0-9]{2}/[0-9]{4}%'
- )
- )
-
- )
- );
- $import_result .= '<pre>$this->settings: ' . print_r($this->settings, true) . '</pre>';
- $this->addCategories();
- $import_result .= $this->addRegistrations();
-
- $import_result .= '<pre>$this->categories: ' . print_r($this->categories, true) . '</pre>';
-
-
- break;
- default:
- break;
- }
- $action = '';
- if (isset($_REQUEST['action'])) {
- $action = $_REQUEST['action'];
- }
- break;
-
- case 'settings':
-
- default:
-
- // Make sure option is set if default
- $option = 'settings';
-
- // Determine if current user can edit configurations
- if (!current_user_can('glm_members_management')) {
- 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
- $option2 = '';
- if (isset($_REQUEST['option2'])) {
- $option2 = $_REQUEST['option2'];
- }
-
- switch($option2) {
-
- // Update the settings and redisplay the form
- case 'submit':
-
- // Update the registration management settings
- $registration_settings = $this->updateEntry(1);
- if ($registration_settings['status']) {
- $settings_updated = true;
- } else {
- $settings_update_error = true;
- }
-
- 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.
- $registration_settings = $this->editEntry(1);
- //echo '<pre>$registration_settings: ' . print_r( $registration_settings, true ) . '</pre>';
-
- if ($registration_settings === false) {
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice("<b> /models/admin/management/registrations.php: Unable to load registrations management settings.", 'Alert');
- }
-
- }
-
- break;
-
- }
-
- break;
-
- }
-
- $import_feeds = $importFeeds->getList();
-
- if ( $import_feeds ) {
- foreach ( $import_feeds as $key => &$feed ) {
- // check the next run time
- $feed['next_runtime'] = wp_next_scheduled( GLM_MEMBERS_REGISTRATIONS_PLUGIN_CRON_REGISTRATION, array( (int)$feed['id'] ) );
- }
- }
-
- // Populate the state list for registration default state selection
- $registration_settings['registration_default_state'] = $this->config['states'];
-
- // Compile template data
- $template_data = array(
- 'import_feeds' => $import_feeds,
- 'option' => $option,
- 'testResult' => $test_result,
- 'importResult' => $import_result,
- 'settingsUpdated' => $settings_updated,
- 'settingsUpdateError' => $settings_update_error,
- 'registrationsSettings' => $registration_settings,
- 'icalFeedResult' => $icalFeedResult,
- );
-
- // Return status, suggested view, and data to controller
- return array(
- 'status' => true,
- 'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/management/registrations.html',
- 'data' => $template_data
- );
-
-
- }
-
- /**
- * connectPostgresDb
- *
- * Make a connection to the given database for the site. (postgres)
- * Sets the $this->dbh with the postgers database connection
- *
- * @param mixed $db_host
- * @param mixed $db_name
- * @param mixed $db_user
- * @param mixed $db_password
- * @access public
- * @return void
- */
- public function connectPostgresDb($db_host, $db_name, $db_user, $db_password)
- {
- $conn_str = "pgsql:";
- if ( $db_host ) {
- $conn_part[] = "host={$db_host}";
- }
- if ( $db_name ) {
- $conn_part[] = "dbname={$db_name}";
- }
- if ( $db_user ) {
- $conn_part[] = "user={$db_user}";
- }
- if ( $db_password ) {
- $conn_part[] = "password={$db_password}";
- }
- if ( !empty($conn_part) ) {
- $conn_str .= implode( " ", $conn_part );
- }
- $driver_options = array(
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_BOTH,
- );
- try {
- $this->dbh = new PDO($conn_str, null, null, $driver_options);
- $this->dbh->setAttribute(
- PDO::ATTR_ERRMODE,
- PDO::ERRMODE_EXCEPTION
- );
- } catch(PDOException $e) {
- echo '<pre>$e: ' . print_r($e, true) . '</pre>';
- wp_die();
- }
- }
-
- public function getCategoryId( $category )
- {
- $category_id = $this->wpdb->get_var(
- $this->wpdb->prepare(
- "SELECT id
- FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "categories
- WHERE name = %d",
- $category
- )
- );
- if ( $category_id ) {
- return $category_id;
- } else {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'categories',
- array(
- 'name' => $category,
- 'parent' => 0
- ),
- arary(
- '%s',
- '%d'
- )
- );
- $category_id = $this->wpdb->insert_id;
- return $category_id;
- }
- }
- /**
- * addCategories
- *
- * Checks to see if there's an Registration Category already in the database.
- * If not it will create the entry.
- * Sets up the class variables
- * $this->categories (contains all the categories that get added keyed with
- * category id)
- * $this->oldCatMap (map of the old category id to new category ids)
- *
- * @access public
- * @return void
- */
- public function addCategories()
- {
- $category_label = ( $this->settings['tablename'] == 'registration' ) ? 'descr' : 'name';
- $return = '';
- $sql = "
- SELECT *
- FROM {$this->settings['schema']}.{$this->settings['cattablename']}
- ORDER BY id";
- $return .= '<pre>$sql: ' . print_r($sql, true) . '</pre>';
- try {
- $categories = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
- $return .= '<pre>$categories: ' . print_r($categories, true) . '</pre>';
- foreach ( $categories as $category ) {
- // first check to see if the category is already there
- $sql = "
- SELECT id
- FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "categories
- WHERE name = '" . esc_sql( trim($category[$category_label]) ) . "'";
- $return .= '<pre>$sql: ' . print_r($sql, true) . '</pre>';
- $found = $this->wpdb->get_row($sql, ARRAY_A);
- $return .= '<pre>$found: ' . print_r($found, true) . '</pre>';
- if ( !isset($found) ) {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'categories',
- array(
- 'name' => trim($category[$category_label]),
- 'parent' => 0
- ),
- array(
- '%s',
- '%d'
- )
- );
- $catid = $this->wpdb->insert_id;
- $this->categories[$catid] = trim($category[$category_label]);
- $this->oldCatMap[$category['id']] = $catid;
- } else {
- $this->categories[$found['id']] = trim($category[$category_label]);
- $this->oldCatMap[$category['id']] = $found['id'];
- }
- }
- } catch(PDOException $e) {
- echo '<pre>$e: ' . print_r($e, true) . '</pre>';
- die('end here');
- }
- return $return;
- }
-
- public function addTimelyCategories() {
- $category_counter = 0;
- $categories = get_terms( 'registrations_categories' );
- foreach ( $categories as $category ) {
- ++$category_counter;
- // first check to see if the category is already there
- $sql = "
- SELECT id
- FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "categories
- WHERE name = '" . esc_sql( trim($category->name) ) . "'";
- $found = $this->wpdb->get_row($sql, ARRAY_A);
- if ( !isset($found) ) {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'categories',
- array(
- 'name' => trim($category->name),
- 'parent' => $category->parent
- ),
- array(
- '%s',
- '%d'
- )
- );
- $catid = $this->wpdb->insert_id;
- $this->categories[$catid] = trim($category->name);
- $this->oldCatMap[$category->term_id] = $catid;
- } else {
- $this->categories[$found['id']] = trim($category->name);
- $this->oldCatMap[$category->term_id] = $found['id'];
- }
- }
- // Store the oldCatMap for the next pages.
- update_option( 'glm-member-registration-old-cat-map', serialize( $this->oldCatMap ) );
- return "<p>Adding $category_counter Categories</p>";
- }
- public function getOldCatMap()
- {
- return unserialize( get_option('glm-member-registration-old-cat-map') );
- }
- /**
- * getTime
- *
- * Given a time string return the the following format of time
- * H:i
- * hour and minute
- *
- * @param mixed $time String with any time format
- *
- * @access public
- * @return void
- */
- public function getTime($time)
- {
- //echo '<pre>$time: ' . print_r($time, true) . '</pre>';
- if (!$time) {
- return false;
- }
- if (!preg_match('%(\d{1,2}):?(\d{2})? ?(\w{1,2})?%', $time, $time_parts)) {
- return false;
- }
- //echo '<pre>$timeParts: ' . print_r($time_parts, true) . '</pre>';
- //$hour = (!$timeParts[3] || in_array(strtolower(trim($timeParts[3])), array('pm', 'p')))
- // ? ( ((int)$timeParts[1] === 12) ? 12 : (int)$timeParts[1] += 12 )
- // : ( ((int)$timeParts[1] === 12) ? 0 : (int)$timeParts[1] );
- $hour = $time_parts[1];
- if ( in_array( strtolower( $time_parts[3] ), array( 'pm', 'p' ) ) ) {
- $hour += 12;
- }
- if ( in_array( strtolower( $time_parts[3] ), array( 'am', 'a' ) ) ) {
- if ( (int)$hour === 12 ) {
- $hour = 0;
- }
- }
- $min = ($time_parts[2]) ? $time_parts[2] : 0;
- // parse the hour from registration
- $dateTime = new DateTime();
- $dateTime->setTime( $hour, $min );
- //cho '<pre>$dateTime: ' . print_r($dateTime, true) . '</pre>';
- return $dateTime->format('H:i');
- }
-
- /**
- * getCityId
- *
- * Given a city name find and return the id of the city.
- * If a city cannot be found then create city with that name.
- *
- * @param mixed $city_name Name of the city
- *
- * @access public
- * @return id of city
- */
- public function getCityId($city_name)
- {
- if ( !$city_name ) {
- return false;
- }
- $sql = "
- SELECT id
- FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "cities
- WHERE name like '" . esc_sql( trim( $city_name ) ) . "'";
- $cityId = $this->wpdb->get_row($sql, ARRAY_A);
- if ( !$cityId ) {
- // then add the city to the city table
- $this->wpdb->insert(
- GLM_MEMBERS_PLUGIN_DB_PREFIX . 'cities',
- array( 'name' => trim( $city_name ) ),
- array( '%s' )
- );
- return $this->wpdb->insert_id;
- } else {
- return $cityId['id'];
- }
- }
-
- /**
- * addRegistrations
- *
- * Start with a clean set of registration tables. ( delete all registration data )
- * Grab all registrations starting with the given start date.
- * Enter them into the new registration plugin tables.
- *
- * @access public
- * @return void
- */
- public function addRegistrations()
- {
- // clear the registrations tables first
- $this->clearData();
- $Recurrences = new GlmDataRegistrationsRecurrences($this->wpdb, $this->config);
- $return = '';
- $old_registration_format = ($this->settings['tablename'] == 'registration');
- if ( $old_registration_format ) {
- $sql = "
- SELECT *
- FROM {$this->settings['schema']}.{$this->settings['tablename']}
- WHERE edate >= '{$this->settings['sdate']}'::DATE";
- } else {
- $sql = "
- SELECT *
- FROM {$this->settings['schema']}.{$this->settings['tablename']}
- WHERE ending >= '{$this->settings['sdate']}'::DATE";
- $prepare_sql = "
- SELECT filename,urltext
- FROM {$this->settings['schema']}.files
- WHERE registration = :eid";
- $get_file_data = $this->dbh->prepare($prepare_sql);
- }
- //$sql .=" AND file != '' ";
- //$sql .= " AND id = 2838";
- $this->wpdb->show_errors();
- //echo '<pre>$sql: ' . print_r($sql, true) . '</pre>';
- try {
- $registrations = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
- $return .= '<pre>$registrations: ' . print_r($registrations, true) . '</pre>';
- foreach ( $registrations as $registration ) {
- $found_member_id = $refType = null;
- $member_id = (isset($registration['member_id'])) ? $registration['member_id'] : $registration['member'];
- if ( $member_id ) {
- // get the new member id
- $sql = "
- SELECT id
- FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members
- WHERE old_member_id = " . esc_sql( trim($member_id) );
- $found_member_id = $this->wpdb->get_row($sql, ARRAY_A);
- if ( $found_member_id ) {
- $found_member_id = $found_member_id['id'];
- $refType = $this->config['ref_type_numb']['Member'];
- }
- }
- if ( $old_registration_format ) {
- $intro = substr( trip_tags( $registration['descr'] ), 0, 150 );
- // Remove uneeded newlines from both intro and description
- $intro = preg_replace( "/\s\s+/", ' ', $intro );
- $descr = preg_replace( "/\s\s+/", ' ', $registration['descr'] );
- $registration_data = array(
- 'status' => (($registration['visable'] == '1')
- ? $this->config['status_numb']['Active']
- : $this->config['status_numb']['Inactive']),
- 'created' => $registration['create_date'],
- 'updated' => $registration['create_date'],
- 'approved' => $registration['approved_date'],
- 'name' => $registration['header'],
- 'intro' => $intro,
- 'descr' => $descr,
- 'image' => $registration['img'],
- 'file1' => $registration['file'],
- 'file1_descr' => $registration['filename'],
- 'cost' => $registration['cost'],
- 'url' => $registration['url'],
- 'old_registration_id' => $registration['id'],
-// 'ref_type' => $refType,
- 'ref_type' => 10,
- 'ref_dest' => $found_member_id,
- 'admin_name' => $registration['admin_contact_name'],
- 'admin_org' => $registration['admin_org_name'],
- 'admin_email' => $registration['admin_email'],
- 'admin_phone' => $registration['admin_phone'],
- 'contact_email' => $registration['email'],
- 'contact_name' => $registration['contact'],
- 'contact_phone' => $registration['phone'],
- 'notes' => $registration['notes'],
- 'hide_address' => $registration['hide_address'],
- );
- $registration_data_format = array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%d',
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- );
- } else {
- $get_file_data->bindParam(':eid', $registration['id'], PDO::PARAM_INT);
- $get_file_data->execute();
- $file = $filename = '';
- $fileData = $get_file_data->fetch(PDO::FETCH_ASSOC);
- if ($fileData ) {
- $file = $fileData['filename'];
- $filename = $fileData['urltext'];
- }
- $intro = ($registration['intro'])
- ? substr(strip_tags($registration['intro']), 0, 150)
- : substr(strip_tags($registration['description']), 0, 150);
- // Remove uneeded newlines from both intro and description
- $intro = preg_replace( "/\s\s+/", ' ', $intro );
- $descr = preg_replace( "/\s\s+/", ' ', $registration['description'] );
- $registration_data = array(
- 'status' => (($registration['active'] == '1')
- ? $this->config['status_numb']['Active']
- : $this->config['status_numb']['Inactive']),
- 'created' => $registration['created'],
- 'updated' => $registration['updated'],
- 'approved' => $registration['approved'],
- 'name' => $registration['header'],
- 'intro' => $intro,
- 'descr' => $descr,
- 'image' => $registration['image'],
- 'file1' => $file,
- 'file1_descr' => $filename,
- 'cost' => $registration['cost'],
- 'url' => $registration['website'],
- 'old_registration_id' => $registration['id'],
-// 'ref_type' => $refType,
- 'ref_type' => 10,
- 'ref_dest' => $found_member_id,
- 'admin_name' => $registration['admin_contact'],
- 'admin_org' => $registration['admin_org'],
- 'admin_email' => $registration['admin_email'],
- 'admin_phone' => $registration['admin_phone'],
- 'contact_email' => $registration['contact_email'],
- 'contact_name' => $registration['contact_name'],
- 'contact_phone' => $registration['contact_phone'],
- 'notes' => $registration['notes'],
- 'hide_address' => $registration['hide_address'],
- 'use_member_location' => $registration['use_memberloc']
- );
- $registration_data_format = array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%d',
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%d',
- );
- }
- echo '</pre>';
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registrations',
- $registration_data,
- $registration_data_format
- );
- $registration_id = $this->wpdb->insert_id;
- var_dump( $registration_id );
- echo '<pre>$registrationId: from insert ' . print_r($registration_id, true) . '</pre>';
- if ( !$registration_id ) {
- echo '<pre>SQL Error: ' . $this->wpdb->last_error . '</pre>';
- echo '<pre>SQL Error: ' . $this->wpdb->print_error() . '</pre>';
- }
- // checking for $registrationId
- //echo '<pre>$registrationId: ' . print_r($registrationId, true) . '</pre>';
- if (!$registration_id) {
- die('something is wrong no registrationId');
- }
- // generate the slug name for this new registration
- $registration_abstract = new GlmDataRegistrations($this->wpdb, $this->config);
- $registration_abstract->updateSlug($registration_id);
- // category for registration
- if ( $registration['topicid'] ) {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registration_categories',
- array(
- 'registration' => $registration_id,
- 'category' => $this->oldCatMap[$registration['topicid']]
- ),
- array(
- '%d',
- '%d'
- )
- );
- }
- if ( $registration['category'] ) {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registration_categories',
- array(
- 'registration' => $registration_id,
- 'category' => $this->oldCatMap[$registration['category']]
- ),
- array(
- '%d',
- '%d'
- )
- );
- }
- // recurrences for the registration
- if (isset($registration['reacur'])) {
- $recurring_registration = $registration['reacur'];
- if ( $recurring_registration && ( $registration['bdate'] == $registration['edate'] ) ) {
- $recurring_registration = 0;
- }
- } else {
- $recurring_registration = $registration['recurr'];
- if ( $recurring_registration && ( $registration['starting'] == $registration['ending'] ) ) {
- $recurring_registration = 0;
- }
- }
- $day_of_week =
- $month_of_year =
- $week_of_month =
- $by_day_of_month =
- $last_day_of_month = null;
- if ( $recurring_registration ) {
- if ( $registration['daysow'] ) {
- $day_of_week = $registration['daysow'];
- } else {
- $day_of_week = 127;
- }
- if ( $registration['weekom'] ) {
- switch ($registration['weekom']) {
- case '1':
- $week_of_month = 1;
- break;
- case '2':
- $week_of_month = 2;
- break;
- case '3':
- $week_of_month = 4;
- break;
- case '4':
- $week_of_month = 8;
- break;
- case '5':
- $week_of_month = 16;
- break;
- }
- } else {
- $week_of_month = 63;
- }
- $month_of_year = 4095;
- } else {
- $day_of_week = 127;
- $month_of_year = 4095;
- }
- if ( isset($registration['btime']) ) {
- $btime = $this->getTime($registration['btime']);
- $etime = $this->getTime($registration['etime']);
- } else {
- $btime = $this->getTime($registration['starthour']);
- $etime = $this->getTime($registration['endhour']);
- }
- $start_time_only = ($btime && !$etime);
- if ( $start_time_only ) {
- $etime = $btime;
- }
- if ( isset($registration['all_day']) ) {
- $all_day = ( $registration['all_day'] || !$btime );
- } else {
- $all_day = ( $registration['allday'] || !$btime );
- }
- if (isset($registration['bdate'])) {
- $from_date = $registration['bdate'];
- $to_date = $registration['edate'];
- } else {
- $from_date = $registration['starting'];
- $to_date = $registration['ending'];
- }
- $recur_data = array(
- 'registration' => $registration_id,
- 'name' => 'Imported Registration Schedule',
- 'start_time' => $btime,
- 'end_time' => $etime,
- 'start_time_only' => $start_time_only,
- 'from_date' => $from_date,
- 'to_date' => $to_date,
- 'all_day' => $all_day,
- 'recurring' => $recurring_registration,
- 'month_of_year' => $month_of_year,
- 'week_of_month' => $week_of_month,
- 'day_of_week' => $day_of_week,
- 'by_day_of_month' => $by_day_of_month,
- 'last_day_of_month' => $last_day_of_month
- );
- echo '<pre>' . print_r( $recurData, true) . '</pre>';
- echo '<pre>$recurData: ' . print_r($recur_data, true) . '</pre>';
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'recurrences',
- $recur_data,
- array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- )
- );
- $recur_id = $this->wpdb->insert_id;
- $Recurrences->createRecurrenceTimesEntries( $recur_id, true, true );
- // location for the registration
- $has_location = ($registration['loc'] || $registration['place']);
- if ( $has_location ) {
- $location_data = $location_format = array();
- $location_data['registration'] = $registration_id;
- $location_format[] = '%d';
- if ($registration['place']) {
- $location_data['name'] = $registration['place'];
- $location_format[] = '%s';
- }
- if ($registration['loc']) {
- $location_data['name'] = $registration['loc'];
- $location_format[] = '%s';
- }
- if ($registration['address']) {
- $location_data['address'] = $registration['address'];
- $location_format[] = '%s';
- }
- if ($registration['city']) {
- $location_data['city'] = $this->getCityId( $registration['city'] );
- $location_format[] = '%s';
- }
- if ($registration['state']) {
- $location_data['state'] = $registration['state'];
- $location_format[] = '%s';
- }
- if ($registration['zip']) {
- $location_data['zip'] = $registration['zip'];
- $location_format[] = '%s';
- }
- if ($registration['lat']) {
- $location_data['lat'] = $registration['lat'];
- $location_format[] = '%s';
- }
- if ($registration['lon']) {
- $location_data['lon'] = $registration['lon'];
- $location_format[] = '%s';
- }
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'locations',
- $location_data,
- $location_format
- );
- $location_id = $this->wpdb->insert_id;
- if ( !$location_id ) {
- echo '<pre>$locationData: ' . print_r($location_data, true) . '</pre>';
- die('no return id for location');
- }
- }
- }
- } catch(PDOException $e) {
- echo '<pre>$e: ' . print_r($e, true) . '</pre>';
- die('end here');
- }
- return $return;
- }
- public function clearData()
- {
- $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "registrations" );
- $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "recurrences" );
- $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "times" );
- $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "registration_categories" );
- $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "locations" );
- }
- public function importFromTimely() {
- $limit = 25;
- $debug = false;
- if ( isset( $_REQUEST['start'] ) ) {
- $start = filter_var( $_REQUEST['start'], FILTER_VALIDATE_INT );
- } else {
- $start = 0;
- }
- if ( $start === 0 ) {
- // clear the registrations tables first.
- $this->clearData();
- // Add the Categories from Time.ly.
- $return_string = $this->addTimelyCategories();
- } else {
- $this->oldCatMap = $this->getOldCatMap();
- }
-
- $yearly_registrations =
- $daily_registrations =
- $weekly_registrations =
- $interval_registrations =
- $monthly_registrations =
- $custom_date_registrations = 0;
-
- $Recurrences = new GlmDataRegistrationsRecurrences($this->wpdb, $this->config);
- require_once GLM_MEMBERS_PLUGIN_PATH.'/models/admin/ajax/imageUpload.php';
- $image_upload = new GlmMembersAdmin_ajax_imageUpload($this->wpdb, $this->config);
-
- $sql = "
- SELECT *
- FROM " . $this->wpdb->prefix . "posts
- WHERE post_type = 'ai1ec_registration'
- AND post_status = 'publish'";
- $sql .= " LIMIT $limit OFFSET $start";
- $results = $this->wpdb->get_results( $sql, ARRAY_A );
-
- $registration_counter = 0;
-
- if ( !empty( $results ) ) {
- foreach ( $results as $post ) {
- // Initialize some variables
- $serialized_custom_times = null;
- if ( $debug ) {
- echo '<div style="border:1px solid green;">';
- }
- ++$registration_counter;
- $sql = "
- SELECT *
- FROM " . $this->wpdb->prefix . "ai1ec_registrations
- WHERE post_id = {$post['ID']}";
- $registration_data = $this->wpdb->get_row( $sql, ARRAY_A );
- $cost_data = unserialize( $registration_data['cost'] );
- $cost = $cost_data['cost'];
- $is_free = $cost_data['is_free'];
-
- // use the posts table data
- $image = '';
- if ( has_post_thumbnail( $post['ID'] ) ) {
- $thumbnail_id = get_post_thumbnail_id( $post['ID'] );
- $thumb_src = wp_get_attachment_image_src( $thumbnail_id, 'large' );
- //echo '<pre>$thumb_src: ' . print_r($thumb_src, true) . '</pre>';
- $res = $image_upload->storeImage($thumb_src[0]);
- //echo '<pre>$res: ' . print_r($res, true) . '</pre>';
- if ( $res['newFileName'] ) {
- $image = $res['newFileName'];
- }
- }
- // Insert the registration data
- $registration_import_data = array(
- 'status' => $this->config['status_numb']['Active'],
- 'created' => $post['post_date'],
- 'updated' => $post['post_modified'],
- 'approved' => $post['post_modified'],
- 'name' => $post['post_title'],
- 'name_slug' => $post['post_name'],
- 'intro' => mb_substr( strip_tags( $post['post_content'] ), 0, 80 ),
- 'descr' => $post['post_content'],
- 'image' => $image,
- 'file1' => null,
- 'file1_descr' => null,
- 'cost' => $cost,
- 'free' => $is_free,
- 'url' => $registration_data['contact_url'],
- 'old_registration_id' => $post['ID'],
-// 'ref_type' => null,
- 'ref_type' => 10,
- 'ref_dest' => null,
- 'admin_name' => $registration_data['contact_name'],
- 'admin_org' => null,
- 'admin_email' => $registration_data['contact_email'],
- 'admin_phone' => $registration_data['contact_phone'],
- 'contact_email' => $registration_data['contact_email'],
- 'contact_name' => $registration_data['contact_name'],
- 'contact_phone' => $registration_data['contact_phone'],
- 'notes' => null,
- 'hide_address' => null,
- 'use_member_location' => 0,
- );
- $registration_data_format = array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- );
- $is_insert = $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registrations',
- $registration_import_data,
- $registration_data_format
- );
- if ( $debug ) {
- var_dump( $is_insert );
- }
- $registration_id = $this->wpdb->insert_id;
- if ( $debug ) {
- var_dump( $registration_id );
- }
- if ( !$registration_id ) {
- $this->wpdb->print_error();
- echo '<pre>$registration_import_data: ' . print_r($registration_import_data, true) . '</pre>';
- echo '<pre>SQL Error: ' . $this->wpdb->last_error . '</pre>';
- echo '<pre>SQL Error: ' . $this->wpdb->print_error() . '</pre>';
- die('something is wrong no registration_id');
- }
- // get the post categories
- $categories = array();
- $post_terms = wp_get_post_terms( $post['ID'], 'registrations_categories', 'term_id' );
- foreach ( $post_terms as $term ) {
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'registration_categories',
- array(
- 'registration' => $registration_id,
- 'category' => $this->oldCatMap[$term->term_id]
- ),
- array(
- '%d',
- '%d'
- )
- );
- }
- if ( $debug ) {
- echo '<pre>$registration_data: ' . print_r($registration_data, true) . '</pre>';
- echo '<pre>$categories: ' . print_r($categories, true) . '</pre>';
- }
-
- $by_day_of_month =
- $last_day_of_month = null;
-
- $recurring_registration =
- $start_time_only =
- $recurring_registration = 0;
-
- $weekly =
- $daily = false;
-
- $day_of_week = 127;
- $month_of_year = 4095;
- $week_of_month = 63;
-
- $custom_times = array();
- $curZone = date_default_timezone_get();
- if ( $debug ) {
- echo '<pre>$curZone: ' . print_r($curZone, true) . '</pre>';
- }
- if ( $registration_data['timezone_name'] ) {
- date_default_timezone_set( $registration_data['timezone_name'] );
- }
- $curZone = date_default_timezone_get();
- if ( $debug ) {
- echo '<pre>$curZone: ' . print_r($curZone, true) . '</pre>';
- }
-
- $from_date = date( 'Y-m-d', $registration_data['start'] );
- if ( $debug ) {
- echo '<pre>$from_date: ' . print_r($from_date, true) . '</pre>';
- $from_date_time = date( 'Y-m-d H:m:s', $registration_data['start'] );
- echo '<pre>$from_date_time: ' . print_r($from_date_time, true) . '</pre>';
- }
- $to_date = date( 'Y-m-d', $registration_data['end'] );
- // check if the $to_date has 0 hr
- // if the btime and etime are 00:00 then remove one day from $to_date
- if ( date( 'H', $registration_data['end'] ) === '00' ) {
- $ending_datetime = new DateTime( $to_date );
- $ending_datetime->modify('- 1 day');
- $to_date = $ending_datetime->format( 'Y-m-d' );
- }
- if ( $debug ) {
- echo '<pre>$to_date: ' . print_r($to_date, true) . '</pre>';
- $to_date_time = date( 'Y-m-d H:m:s', $registration_data['end'] );
- echo '<pre>$to_date_time: ' . print_r($to_date_time, true) . '</pre>';
- }
- $btime = date( 'H:i', $registration_data['start'] );
- if ( $debug ) {
- echo '<pre>$btime: ' . print_r($btime, true) . '</pre>';
- }
- $etime = date( 'H:i', $registration_data['end'] );
- if ( $debug ) {
- echo '<pre>$etime: ' . print_r($etime, true) . '</pre>';
- }
-
-
- if ( $registration_data['recurrence_rules'] ) {
- $recurring_registration = 1;
- $recurrence_rules = explode( ';', $registration_data['recurrence_rules'] );
- if ( $debug ) {
- echo '<pre>$recurrence_rules: ' . print_r($recurrence_rules, true) . '</pre>';
- }
- foreach ( $recurrence_rules as $rule ) {
- // check for RDATE , which are the custom dates that need to be serialized
- if(strpos($rule, 'RDATE') !== false){
- $custom_date_registrations++;
- $rdate = $rule;
- $rdate = substr($rdate,6);
- $custom_times = explode(',', $rdate);
- }
- if ( preg_match( ';FREQ=(.*);', $rule, $matches ) ) {
- if ( $debug ) {
- echo '<pre>$matches: ' . print_r($matches, true) . '</pre>';
- }
- switch ( $matches[1] ) {
- case "WEEKLY":
- $weekly_registrations++;
- $weekly_rule = $recurrence_rules[1];
- if(strpos($weekly_rule, "INTERVAL") !== false){
- $weekly_interval = substr($weekly_rule, 9);
- $loopLimit = floor(52 / $weekly_interval);
- $interval_sum = $weekly_interval;
- for($i = 0; $i < $loopLimit; $i++ ){
- $date = date('Y-m-d',strtotime($from_date .'+'. $interval_sum .'weeks'));
- $interval_dates[] = $date;
- $interval_sum += $weekly_interval;
- }
- $serialized_custom_times = serialize($interval_dates);
- }
- $weekly = true;
- // check for BYDAY
- break;
- case "DAILY":
- $daily_registrations++;
- $daily = true;
- if(strpos($recurrence_rules[1], "INTERVAL") === false){
- $month_of_year = 4095;
- $day_of_month = 2147483647;
- $by_day_of_month = true;
- } else {
- $interval = $recurrence_rules[1];
- $interval = substr($interval, 9);
- $loopLimit = floor(365 / $interval);
- $interval_sum = $interval;
- for($i = 0; $i < $loopLimit; $i++ ){
- $date = date('Y-m-d',strtotime($from_date .'+'. $interval_sum .'days'));
- $interval_dates[] = $date;
- $interval_sum += $interval;
- }
- $serialized_custom_times = serialize($interval_dates);
- }
-
- break;
- case "YEARLY":
- $month_ints = $ints = $month_num = null;
- if ( $recurrence_rules[1] ) {
- $ints = 0;
- $day_of_month = 0;
- $yearly_registrations++;
- $selected_from_date = substr($from_date, -2);
- $selected_from_date--;
- $selected_to_date = substr($to_date, -2);
- $selected_to_date--;
- $month_sum = 0;
- $yearly = $recurrence_rules[1];
- $yearly = substr($yearly,8);
- $month_ints = explode(',', $yearly);
- if ( $debug ) {
- echo '<pre>$month_ints: ' . print_r($month_ints, true) . '</pre>';
- }
- foreach($month_ints as $ints){
- $ints--;
- $ints = pow(2, $ints);
- $month_sum += $ints;
- }
- $month_of_year = $month_sum;
- if ( $debug ) {
- echo '<pre>$month_of_year: ' . print_r($month_of_year, true) . '</pre>';
- }
- if($selected_from_date == $selected_to_date){
- $selected_to_date++;
- }
- $day_of_month = pow(2,$selected_from_date ) + pow(2, $selected_to_date);
- if ( $debug ) {
- echo '<pre>$day_of_month: ' . print_r($day_of_month, true) . '</pre>';
- }
- if($month_sum){
- $by_day_of_month = 1;
- }
- } else {
- $ints = 0;
- $month_sum = 0;
- // get the month and day of month from $from_date and $to_date
- $start_month = date( 'n', strtotime( $from_date ) );
- $end_month = date( 'n', strtotime( $to_date ) );
- for ( $index = ( $start_month - 1 ); $index <= ( $end_month -1 ); ++$index ) {
- $ints = pow( 2, $index );
- $month_sum += $ints;
- }
- $month_of_year = $month_sum;
- // Now do the day_of_month
- $ints = 0;
- $day_of_month = 0;
- $start_day = date( 'j', strtotime( $from_date ) );
- if ( $debug ) {
- echo '<pre>$start_day: ' . print_r($start_day, true) . '</pre>';
- }
- $end_day = date( 'j', strtotime( $to_date ) );
- if ( $debug ) {
- echo '<pre>$end_day: ' . print_r($end_day, true) . '</pre>';
- }
- if ( $start_day == $end_day ) {
- for ( $index = ( $start_day - 1); $index <= ( $end_day -1 ); ++$index ) {
- $ints = pow( 2, $index );
- $day_of_month += $ints;
- }
- if($day_of_month){
- $by_day_of_month = 1;
- }
- $ending_datetime = new DateTime( $to_date );
- $ending_date = $ending_datetime->modify('2 years');
- $to_date = $ending_date->format( 'Y-m-d' );
- } else {
- $serialized_custom_times = null;
- $custom_dates_array = array();
- $this_datetime = null;
- // if the dates span more than one day need to build the custom dates array
- $starting_datetime = new DateTime( $from_date );
- $ending_datetime = new DateTime( $to_date );
- // loop through for the next 2 years
- for ( $year_index = 0; $year_index <= 2; ++$year_index ) {
- if ( $year_index !== 0 ) {
- // adjust the datetimes plus one year
- $starting_datetime->modify( '+ 1 year' );
- $ending_datetime->modify( '+ 1 year' );
- }
- $starting_time = $starting_datetime->format( 'U' );
- $ending_time = $ending_datetime->format( 'U' );
- for ($index = $starting_time; $index <= $ending_time; $index += 86400 ) {
- $custom_dates_array[] = date( 'Y-m-d', $index );
- }
- }
- if ( $debug ) {
- echo '<pre>$custom_dates_array: ' . print_r($custom_dates_array, true) . '</pre>';
- }
- $serialized_custom_times = serialize( $custom_dates_array );
- }
- }
- break;
- case "MONTHLY":
- $monthly_registrations++;
- $monthly = $recurrence_rules[1];
- $byday_pos = strpos($monthly, "BYday");
- $bymonthday_pos = strpos($monthly, "BYMONTHDAY");
- if($byday_pos === false){
- $monthly = substr($monthly, 11);
- $day_ints = explode(',', $monthly);
- foreach($day_ints as $day){
- $day--;
- $day = pow(2, $day);
- $day_sum += $day;
- }
- $day_of_month = $day_sum;
- if($day_sum){
- $by_day_of_month = 1;
- }
- }
- break;
- }
- } else if ( preg_match( ';COUNT=(.*);', $rule, $matches ) ) {
- if ( $debug ) {
- echo '<pre>$matches: ' . print_r($matches, true) . '</pre>';
- }
- // set the end date to COUNT days from start
- try {
- $number_of_days = (int)$matches[1] - 1;
- $starting_datetime = new DateTime( $from_date );
- $add = ( $number_of_days === 1 ) ? '1 day': $number_of_days . ' days';
- $ending_date = $starting_datetime->modify($add);
- $to_date = $ending_date->format( 'Y-m-d' );
- $recurring_registration = 0;
- } catch (Exception $e) {
- if ( $debug ) {
- echo '<pre>$e: ' . print_r($e, true) . '</pre>';
- }
- die();
- }
- } else if ( preg_match( ';UNTIL=(.*);', $rule, $matches ) ) {
- $to_date = date( 'Y-m-d', strtotime( $matches[1] ) );
-
- } else if ( preg_match( ';BYMONTH=(.*);', $rule, $matches ) ) {
-// $monthly = $recurrence_rules[1];
-//
-// $selected_from_date = substr($from_date, -2);
-// $selected_from_date--;
-// $selected_to_date = substr($to_date, -2);
-// $selected_to_date--;
-//
-// $monthly = substr($monthly, 8);
-// $month_ints = explode(',', $monthly);
-// foreach($month_ints as $day){
-// $day--;
-// $day = pow(2, $day);
-// $day_sum += $day;
-// }
-// $day_of_month = pow(2,$selected_from_date ) + pow(2,$selected_to_date);
-
- }else if ( preg_match( ';BYday=(.*);', $rule, $matches ) ) {
-
- if ( $debug ) {
- echo '<pre>1354 $matches: ' . print_r($matches, true) . '</pre>';
- }
- // check if the selection is the nth week with a selected day, if not parse the input as a list if selected days
- if(strpos($matches[1], ",") == false){
- $week_number = substr($matches[1],0, 1);
- $week_number = $week_number - 1;
- $week_of_month = pow(2, $week_number);
- $days[] = substr($matches[1], -2);
- $by_day_of_month = 0;
- } else {
- $days = explode( ',', $matches[1] );
- }
- $day_of_week = 0;
- foreach ( $days as $day ) {
- switch ( $day ) {
- case "SU":
- $day_of_week += pow(2, 0);
- break;
- case "MO":
- $day_of_week += pow(2, 1);
- break;
- case "TU":
- $day_of_week += pow(2, 2);
- break;
- case "WE":
- $day_of_week += pow(2, 3);
- break;
- case "TH":
- $day_of_week += pow(2, 4);
- break;
- case "FR":
- $day_of_week += pow(2, 5);
- break;
- case "SA":
- $day_of_week += pow(2, 6);
- break;
- }
- }
- }
- }
- if(!empty($custom_times)){
- $stamp = array();
- date_default_timezone_set('UTC');
- $serialized_custom_times = serialize($custom_times);
- foreach($custom_times as $custom){
-
- $convert = date('U',strtotime($custom));
- $stamp[] = date('Y-m-d', $convert);
- }
-// $from_date = $to_date = $stamp[0];
- $serialized_custom_times = serialize($stamp);
- }
- date_default_timezone_set($curZone);
- }
- if ($recurring_registration && $from_date == $to_date && empty( $custom_times ) ) {
- // Add two years to the recurring registration if dates match
- $starting_datetime = new DateTime( $from_date );
- $ending_date = $starting_datetime->modify('2 years');
- $to_date = $ending_date->format( 'Y-m-d' );
- }
- $all_day = $registration_data['allday'];
-
- // instant registration is an registration with no end time
- $start_time_only = $registration_data['instant_registration'];
- if($start_time_only){
- $etime = $btime;
- }
-
- // for the recurrences part
- $recur_data = array(
- 'registration' => $registration_id,
- 'name' => 'Imported',
- 'start_time' => $btime,
- 'end_time' => $etime,
- 'start_time_only' => $start_time_only,
- 'from_date' => $from_date,
- 'to_date' => $to_date,
- 'all_day' => $all_day,
- 'recurring' => $recurring_registration,
- 'month_of_year' => $month_of_year,
- 'week_of_month' => $week_of_month,
- 'day_of_week' => $day_of_week,
- 'day_of_month' => $day_of_month,
- 'by_day_of_month' => $by_day_of_month,
- 'last_day_of_month' => $last_day_of_month,
- 'specific_dates' => $serialized_custom_times
- );
- if ( $debug ) {
- echo '<pre>$recur_data: ' . print_r($recur_data, true) . '</pre>';
- }
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'recurrences',
- $recur_data,
- array(
- '%d',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%d',
- '%s'
- )
- );
- $recurr_id = $this->wpdb->insert_id;
- $Recurrences->createRecurrenceTimesEntries( $recurr_id, true, true );
- // location for the registration
- $has_location = ( $registration_data['address'] || $registration_data['venue'] );
- $location_data = $location_format = array();
- if ( $has_location ) {
- $location_data['registration'] = $registration_id;
- $location_format[] = '%d';
- if ($registration_data['venue']) {
- $location_data['name'] = $registration_data['venue'];
- $location_format[] = '%s';
- }
- if ($registration_data['address']) {
- // test the address to see if there's commas
- if ( strpos( $registration_data['address'], ',' ) === false) {
- $location_data['address'] = $registration_data['address'];
- } else {
- $location_data['address'] = substr( $registration_data['address'], 0, strpos( $registration_data['address'], ',' ) );
- }
- $location_format[] = '%s';
- }
- if ($registration_data['city']) {
- $location_data['city'] = $this->getCityId( $registration_data['city'] );
- $location_format[] = '%s';
- }
- if ($registration_data['province']) {
- // need to lookup the state abbreviation
- $state_abbr = array_search( $registration_data['province'], $this->config['states'] );
- if ( $state_abbr !== false ) {
- $location_data['state'] = $state_abbr;
- $location_format[] = '%s';
- }
- }
- if ($registration_data['postal_code']) {
- $location_data['zip'] = $registration_data['postal_code'];
- $location_format[] = '%s';
- }
- if ($registration_data['latitude']) {
- $location_data['lat'] = $registration_data['latitude'];
- $location_format[] = '%s';
- }
- if ($registration_data['longitude']) {
- $location_data['lon'] = $registration_data['longitude'];
- $location_format[] = '%s';
- }
- $this->wpdb->insert(
- GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'locations',
- $location_data,
- $location_format
- );
- $location_id = $this->wpdb->insert_id;
- if ( !$location_id ) {
- if ( $debug ) {
- echo '<pre>$location_data: ' . print_r($location_data, true) . '</pre>';
- }
- die('no return id for location');
- }
- }
- if ( $debug ) {
- echo '</div>';
- }
- }
- $return_string .= "<p>Adding $registration_counter Registrations</p>";
- }
- echo $this->config['states'];
- $return_string .= "<pre>
- Start: $start
- </pre>";
- $start += $limit;
- $return_string .= "<p><a href=\""
- . GLM_MEMBERS_PLUGIN_CURRENT_URL
- . "?page=glm-members-admin-menu-management&glm_action=registrations&option=timelyImport&import=true"
- . "&start=$start\">Next</a></p>";
- return $return_string;
- }
-}
-
-?>