More with importing events
authorSteve Sutton <steve@gaslightmedia.com>
Wed, 16 Mar 2016 17:20:32 +0000 (13:20 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Wed, 16 Mar 2016 17:20:32 +0000 (13:20 -0400)
now have the time for events

models/admin/management/events.php

index eee64a0..55eea7e 100644 (file)
@@ -60,6 +60,7 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
      * @access public
      */
     public $categories = array();
+    public $oldCatMap = array();
     /**
      * events
      *
@@ -420,9 +421,12 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                             '%d'
                         )
                     );
-                    $this->categories[$this->wpdb->insert_id] = trim($category['name']);
+                    $catid = $this->wpdb->insert_id;
+                    $this->categories[$catid] = trim($category['name']);
+                    $this->oldCatMap[$category['id']] = $catid;
                 } else {
                      $this->categories[$found['id']] = trim($category['name']);
+                    $this->oldCatMap[$category['id']] = $found['id'];
                 }
             }
         } catch(PDOException $e) {
@@ -432,14 +436,38 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
         return $return;
     }
 
+    public function getTime($time)
+    {
+        if (!$time) {
+            return false;
+        }
+        if (!preg_match('%(\d{1,2}):?(\d{2})? ?(\w{1,2})?%', $time, $timeParts)) {
+            //die('not found');
+            return false;
+        }
+        $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] );
+        // parse the hour from event
+        $dateTime = new DateTime();
+        $dateTime->setTime($hour, (int)$timeParts[2] );
+        return $dateTime->format('H:i');
+    }
+
     public function addEvents()
     {
+        // clear the events tables first
+        $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events" );
+        $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "recurrences" );
+        $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times" );
+        $this->wpdb->query( "DELETE FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "event_categories" );
         $Recurrences = new GlmDataEventsRecurrences($this->wpdb, $this->config);
-        $sql = "
+        $return      = '';
+        $sql         = "
         SELECT *
           FROM {$this->settings['schema']}.{$this->settings['tablename']}
          WHERE edate >= '{$this->settings['sdate']}'::DATE";
-        $sql .= " AND reacur ";
+        $sql .=" AND reacur ";
         try {
             $events = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
             $return .= '<pre>$events: ' . print_r($events, true) . '</pre>';
@@ -451,6 +479,7 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                  WHERE old_event_id = '" . esc_sql( trim($event['id']) ) . "'";
                 $found = $this->wpdb->get_row($sql, ARRAY_A);
                 echo '<pre>$found: ' . print_r($found, true) . '</pre>';
+                $intro = substr(strip_tags($event['descr']), 0, 250);
                 if ( isset($found) ) {
                     $this->wpdb->update(
                         GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'events',
@@ -462,7 +491,7 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                             'updated'      => $event['create_date'],
                             'approved'     => $event['approved_date'],
                             'name'         => $event['header'],
-                            'intro'        => $event['descr'],
+                            'intro'        => $intro,
                             'descr'        => $event['descr'],
                             'image'        => $event['image'],
                         ),
@@ -481,9 +510,7 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                     );
                     $eventId  = $found['id'];
                 } else {
-                    $this->wpdb->insert(
-                        GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'events',
-                        array(
+                    $eventData = array(
                             'status'       => (($event['visable'] == '1')
                                                 ? $this->config['status_numb']['active']
                                                 : $this->config['status_numb']['Inactive']),
@@ -491,11 +518,18 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                             'updated'      => $event['create_date'],
                             'approved'     => $event['approved_date'],
                             'name'         => $event['header'],
-                            'intro'        => $event['descr'],
+                            'intro'        => $intro,
                             'descr'        => $event['descr'],
                             'image'        => $event['image'],
                             'old_event_id' => $event['id']
-                        ),
+                        );
+                    echo '<pre>$eventData: ' . print_r($eventData, true) . '</pre>';
+                    echo '<pre>var_dump ';
+                    var_dump($eventData['intro']);
+                    echo '</pre>';
+                    $this->wpdb->insert(
+                        GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'events',
+                        $eventData,
                         array(
                              '%d',
                              '%s',
@@ -509,16 +543,33 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                         )
                     );
                     $eventId  = $this->wpdb->insert_id;
+                    var_dump( $eventId );
                     echo '<pre>$eventId: from insert ' . print_r($eventId, true) . '</pre>';
                     if ( !$eventId ) {
-                        echo $this->wpdb->last_error;
+                        echo '<pre>SQL Error: ' . $this->wpdb->last_error . '</pre>';
                     }
                 }
                 echo '<pre>$eventId: ' . print_r($eventId, true) . '</pre>';
                 if (!$eventId) {
                     die('something is wrong no eventId');
                 }
+                if ( $event['topicid'] ) {
+                    $this->wpdb->insert(
+                        GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'event_categories',
+                        array(
+                            'event'    => $eventId,
+                            'category' => $this->oldCatMap[$event['topicid']]
+                        ),
+                        array(
+                            '%d',
+                            '%d'
+                        )
+                    );
+                }
                 $allDates  = !$event['reacur'];
+                if ( !$allDates && ( $event['bdate'] == $event['edate'] ) ) {
+                    $allDates = 1;
+                }
                 $allDay    = $event['all_day'];
                 $dayOfWeek =
                 $monthOfYear =
@@ -541,7 +592,10 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                             $weekOfMonth = 4;
                             break;
                         case '4':
-                            $weekOfMonth = 6;
+                            $weekOfMonth = 8;
+                            break;
+                        case '5':
+                            $weekOfMonth = 16;
                             break;
                         }
                     } else {
@@ -549,12 +603,24 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement
                     }
                     $monthOfYear = 4095;
                 }
+                $btime = $this->getTime($event['btime']);
+                if ( $btime ) {
+                    $btime = $event['bdate'] . ' ' . $btime;
+                } else {
+                    $btime = $event['bdate'];
+                }
+                $etime = $this->getTime($event['etime']);
+                if ( $etime ) {
+                    $etime = $event['edate'] . ' ' . $etime;
+                } else {
+                    $etime = $event['edate'];
+                }
                 $this->wpdb->insert(
                     GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'recurrences',
                     array(
                         'event'             => $eventId,
-                        'start_time'        => $event['bdate'],
-                        'end_time'          => $event['bdate'],
+                        'start_time'        => $btime,
+                        'end_time'          => $etime,
                         'from_date'         => $event['bdate'],
                         'to_date'           => $event['edate'],
                         'all_day'           => $allDay,