Changeset 1031812
- Timestamp:
- 11/24/2014 02:11:42 PM (11 years ago)
- Location:
- wp-meetup-activity/trunk
- Files:
-
- 1 added
- 12 edited
-
default.css (modified) (2 diffs)
-
meetup_api/Meetup.php (modified) (1 diff)
-
meetup_api/MeetupConnection.class.php (modified) (7 diffs)
-
meetup_api/MeetupFeeds.class.php (modified) (1 diff)
-
meetup_api/MeetupGroups.class.php (modified) (2 diffs)
-
meetup_api/MeetupMembers.class.php (modified) (3 diffs)
-
meetup_api/MeetupPhotos.class.php (modified) (3 diffs)
-
meetup_api/MeetupRsvps.class.php (modified) (1 diff)
-
meetup_api/MeetupTopics.class.php (modified) (1 diff)
-
meetup_api/MeetupVenues.class.php (modified) (3 diffs)
-
readme.txt (modified) (1 diff)
-
wp-meetup-activity-widgets.php (added)
-
wp-meetup-activity.php (modified) (32 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-meetup-activity/trunk/default.css
r668363 r1031812 1 .wpmeetupactivity-icon {2 vertical-align: middle;3 border: 0px;4 padding: 2px;5 }6 7 1 .wpmeetupactivity-setup-fieldset { 8 2 border:1px solid #aaa; … … 18 12 background: #aaa; 19 13 color: #fff; 14 } 15 16 .wpmeetupactivity-widget-list { 17 list-style-type: none; 18 padding: 0px; 19 margin: 0px; 20 } 21 22 .wpmeetupactivity-widget-list li { 23 border-bottom: 1px solid #ccc; 24 } 25 26 .wpmeetupactivity-widget-list li p { 27 padding-left: 5px; 28 } 29 30 .wpmeetupactivity-widget-list li img { 31 float: left; 32 margin: 0 5px 0 0; 33 padding: 2px; 20 34 } 21 35 -
wp-meetup-activity/trunk/meetup_api/Meetup.php
r583907 r1031812 36 36 define('MEETUP_ENDPOINT_VENUES', '/2/venues'); 37 37 38 // Setup includes - this should be an autoloader soon 39 require_once('MeetupConnection.class.php'); 40 require_once('MeetupApiResponse.class.php'); 41 require_once('MeetupApiRequest.class.php'); 42 require_once('MeetupExceptions.class.php'); 43 44 require_once('MeetupCheckins.class.php'); 45 require_once('MeetupEvents.class.php'); 46 require_once('MeetupFeeds.class.php'); 47 require_once('MeetupGroups.class.php'); 48 require_once('MeetupMembers.class.php'); 49 require_once('MeetupPhotos.class.php'); 50 require_once('MeetupRsvps.class.php'); 51 require_once('MeetupTopics.class.php'); 52 require_once('MeetupVenues.class.php'); 53 require_once("MeetupOAuth2Helper.class.php"); 38 include_once('MeetupApiRequest.class.php'); 39 include_once('MeetupApiResponse.class.php'); 40 include_once('MeetupExceptions.class.php'); 41 include_once('MeetupCheckins.class.php'); 42 include_once('MeetupConnection.class.php'); 43 include_once('MeetupEvents.class.php'); 44 include_once('MeetupFeeds.class.php'); 45 include_once('MeetupGroups.class.php'); 46 include_once('MeetupExceptions.class.php'); 47 include_once('MeetupExceptions.class.php'); 48 include_once('MeetupConnection.class.php'); 49 include_once('MeetupMembers.class.php'); 50 include_once('MeetupConnection.class.php'); 51 include_once('MeetupOAuth2Helper.class.php'); 52 include_once('MeetupPhotos.class.php'); 53 include_once('MeetupRsvps.class.php'); 54 include_once('MeetupTopics.class.php'); 55 include_once('MeetupExceptions.class.php'); 56 include_once('MeetupVenues.class.php'); -
wp-meetup-activity/trunk/meetup_api/MeetupConnection.class.php
r583907 r1031812 20 20 // Clear error status 21 21 $ret = false; 22 22 23 23 $options = array( 24 24 CURLOPT_RETURNTRANSFER => true, // return web page … … 29 29 CURLOPT_HEADER => 0 30 30 ); 31 //echo $Url; 31 32 32 $ch = curl_init( $Url ); 33 33 curl_setopt_array( $ch, $options ); … … 40 40 $response->setHttpCode($header['http_code']); 41 41 $response->setResponse($header['content']); 42 42 43 43 44 44 … … 85 85 * NOTE: The Meetup API contains a list of parameters that are required for 86 86 * each endpoint with a default condition of "any of" 87 * 87 * 88 88 * @param Array $RequiredList - Names of required parameters 89 89 * @param Array $Parameters - List of provided paramters … … 112 112 /* 113 113 * Initializes a connection to the Meetup API using API keys 114 * 114 * 115 115 * @param String $key - A users's Meetup api key 116 116 */ … … 121 121 /** 122 122 * Adds additional query parameters for key authentication 123 * 123 * 124 124 * @param Array $params - request parameters 125 125 * @return Array modified request parameters … … 137 137 /* 138 138 * Initializes a connection to the Meetup API using oAuth 2 139 * 139 * 140 140 * @param String $access_token - A valid access token received from a Meetup access token request 141 141 */ 142 142 public function __construct($access_token) { 143 143 $this->_access_token = $access_token; 144 } 144 } 145 145 146 146 /** 147 147 * Adds additional query parameters for key authentication 148 * 148 * 149 149 * @param Array $params - request parameters 150 150 * @return Array modified request parameters -
wp-meetup-activity/trunk/meetup_api/MeetupFeeds.class.php
r583907 r1031812 18 18 public function getActivity( $Parameters = array() ) { 19 19 $url = $this->buildUrl( MEETUP_ENDPOINT_FEED_ACTIVITY, $Parameters ); 20 // echo $url;21 20 $response = $this->get( $url )->getResponse(); 22 21 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupGroups.class.php
r583907 r1031812 22 22 $required_params = array( 'campaign_id', 'domain', 'group_id', 'group_urlname', 'member_id', 'organizer_id', 'sponsor_id'); 23 23 $url = $this->buildUrl( MEETUP_ENDPOINT_GROUPS, $Parameters, $required_params ); 24 echo $url;25 24 $response = $this->get( $url )->getResponse(); 26 25 return $response['results']; … … 40 39 $required_params = array( 'group_id', 'group_urlname', 'topic,groupnum'); 41 40 $url = $this->buildUrl( MEETUP_ENDPOINT_GROUP_COMMENTS, $Parameters, $required_params ); 42 echo $url;43 41 $response = $this->get( $url )->getResponse(); 44 42 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupMembers.class.php
r583907 r1031812 21 21 $required_params = array( 'group_id', 'group_urlname', 'member_id', 'service', 'topic,groupnum'); 22 22 $url = $this->buildUrl( MEETUP_ENDPOINT_MEMBERS, $Parameters, $required_params ); 23 // echo $url;24 23 $response = $this->get( $url )->getResponse(); 25 24 return $response['results']; … … 36 35 public function getMember( $MemberId, $Parameters = array() ) { 37 36 $url = $this->buildUrl( MEETUP_ENDPOINT_MEMBER . "/$MemberId", $Parameters ); 38 // echo $url;39 37 $response = $this->get( $url )->getResponse(); 40 38 return $response; … … 55 53 $required_params = array( 'group_id', 'group_urlname', 'topic,groupnum'); 56 54 $url = $this->buildUrl( MEETUP_ENDPOINT_PROFILES, $Parameters, $required_params ); 57 // echo $url;58 55 $response = $this->get( $url )->getResponse(); 59 56 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupPhotos.class.php
r583907 r1031812 21 21 $required_params = array( 'photo_id'); 22 22 $url = $this->buildUrl( MEETUP_ENDPOINT_PHOTO_COMMENTS, $Parameters, $required_params ); 23 echo $url;24 23 $response = $this->get( $url )->getResponse(); 25 24 return $response; … … 39 38 $required_params = array( 'event_id', 'group_id', 'photo_album_id'); 40 39 $url = $this->buildUrl( MEETUP_ENDPOINT_PHOTO_ALBUMS, $Parameters, $required_params ); 41 echo $url;42 40 $response = $this->get( $url )->getResponse(); 43 41 return $response['results']; … … 57 55 $required_params = array( 'event_id', 'group_id', 'photo_album_id', 'member_id', 'photo_id', 'tagged'); 58 56 $url = $this->buildUrl( MEETUP_ENDPOINT_PHOTOS, $Parameters, $required_params ); 59 echo $url;60 57 $response = $this->get( $url )->getResponse(); 61 58 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupRsvps.class.php
r583907 r1031812 22 22 $required_params = array( 'event_id'); 23 23 $url = $this->buildUrl( MEETUP_ENDPOINT_RSVPS, $Parameters, $required_params ); 24 echo $url;25 24 $response = $this->get( $url )->getResponse(); 26 25 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupTopics.class.php
r583907 r1031812 18 18 public function getTopics( $Parameters ) { 19 19 $url = $this->buildUrl( MEETUP_ENDPOINT_TOPICS, $Parameters ); 20 echo $url;21 20 $response = $this->get( $url )->getResponse(); 22 21 return $response['results']; -
wp-meetup-activity/trunk/meetup_api/MeetupVenues.class.php
r583907 r1031812 24 24 $required_params = array ( 'city', 'country', 'lat', 'lon', 'state', 'text', 'zip' ); 25 25 $url = $this->buildUrl( MEETUP_ENDPOINT_OPEN_VENUES, $Parameters, $required_params ); 26 echo $url;27 26 $response = $this->get( $url )->getResponse(); 28 27 return $response['results']; … … 32 31 * Search for Meetup venues by one of your groups, events, or venue 33 32 * identifiers. For a full text search on public venues use getOpenVenues 34 * 33 * 35 34 * @link http://www.meetup.com/meetup_api/docs/2/venues/ 36 35 * @param <type> $Parameters … … 40 39 $required_params = array ( 'event_id', 'group_id', 'group_urlname', 'venue_id' ); 41 40 $url = $this->buildUrl( MEETUP_ENDPOINT_VENUES, $Parameters, $required_params ); 42 echo $url;43 41 $response = $this->get( $url )->getResponse(); 44 42 return $response['results']; -
wp-meetup-activity/trunk/readme.txt
r676447 r1031812 40 40 == Changelog == 41 41 42 = 0.1.7 = 43 * 44 45 = 0.1.6 = 46 * Fixed PHP warnings on wpdb->prepare 47 42 48 = 0.1.5 = 43 49 * Fixed a bug with scheduled events (wp-cron) -
wp-meetup-activity/trunk/wp-meetup-activity.php
r676447 r1031812 4 4 Plugin URI: http://www.zerozone.it/wordpress-meetup-plugin/ 5 5 Description: Display group activity and events from Meetup.com in a widget for your wordpress 6 Version: 0.1. 56 Version: 0.1.7 7 7 Author: Michele "O-Zone" Pinassi 8 8 Author URI: http://www.zerozone.it/ 9 9 10 Copyright 2012-201 3Michele "O-Zone" Pinassi10 Copyright 2012-2014 Michele "O-Zone" Pinassi 11 11 12 12 This program is free software; you can redistribute it and/or modify … … 25 25 26 26 /* Meetup API */ 27 include(dirname(__FILE__).DIRECTORY_SEPARATOR."meetup_api/Meetup.php"); 28 29 /* Facebook PHP SDK */ 30 if(!class_exists( 'Facebook_WP' )) { 31 require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'facebook-sdk/class-facebook-wp.php'); 32 } 27 include(dirname(__FILE__).DIRECTORY_SEPARATOR.'meetup_api/Meetup.php'); 28 29 include('wp-meetup-activity-widgets.php'); 33 30 34 31 add_option('wpmeetupactivity_apikey', '', '', 'yes'); 35 32 add_option('wpmeetupactivity_events_desc', 'at %ADDRESS%. There are already %RSVP_YES% booked friends !', '', 'yes'); 36 33 add_action('admin_menu', 'wpmeetupactivity_plugin_menu'); 37 add_action('plugins_loaded', 'wpmeetupactivity_widget_init');38 34 add_action('init', 'wpmeetupactivity_register_styles'); 39 add_action('init', 'wpmeetupactivity_fb_init'); 35 36 add_action( 'widgets_init', create_function( '', "register_widget('Meetup_Activity_Widget');" ) ); 37 add_action( 'widgets_init', create_function( '', "register_widget('Meetup_Events_Widget');" ) ); 40 38 41 39 register_activation_hook(__FILE__,'wpmeetupactivity_activate'); … … 44 42 45 43 global $wpdb; 46 47 define(WP_MEETUP_ACTIVITY,'0.1.5'); 44 global $current_site; 45 46 define(WP_MEETUP_ACTIVITY,'0.1.7'); 48 47 define(WP_MEETUP_ACTIVITY_TABLE, $wpdb->prefix."meetup_activity"); 48 define(WP_MEETUP_ACTIVITY_CRON_HOOK, "wpmeetupactivity_".$current_site->id); 49 define(WP_MEETUP_ACTIVITY_OLDERDAYS,7); /* Days for argument degree */ 49 50 50 51 /* … … 54 55 */ 55 56 56 add_action( 'wpmeetupactivity_hourly', 'wpmeetupactivity_plugin_cron_hourly');57 add_action("wpmeetupactivity_".$current_site->id."_hourly", "wpmeetupactivity_plugin_cron_hourly"); 57 58 58 59 function wpmeetupactivity_plugin_cron_hourly() { … … 61 62 } 62 63 64 function wpmeetupactivity_install_cron() { 65 global $current_site; 66 if(!wp_next_scheduled(WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly')) { 67 wp_schedule_event( current_time( 'timestamp' ), 'hourly', WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 68 echo "<div class=\"updated\"><p><strong>"; 69 echo __('CRON Hourly updates scheduled !', $wpmeetupactivity_textdomain); 70 echo "</strong></p></div>"; 71 } 72 } 73 74 function wpmeetupactivity_uninstall_cron() { 75 76 wp_clear_scheduled_hook(WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 77 78 /* $timestamp = wp_next_scheduled(WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 79 while($timestamp) { 80 wp_unschedule_event($timestamp, 'hourly', WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 81 $timestamp = wp_next_scheduled(WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 82 } 83 84 wp_clear_scheduled_hook( WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly' ); 85 */ 86 echo "<div class=\"updated\"><p><strong>"; 87 echo __('CRON Hourly updates cleared !', $wpmeetupactivity_textdomain); 88 echo "</strong></p></div>"; 89 } 90 63 91 /* 64 92 … … 67 95 */ 68 96 function wpmeetupactivity_activate() { 69 if(!wp_next_scheduled('wpmeetupactivity_hourly')) { 70 wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'wpmeetupactivity_hourly'); 71 } 97 wpmeetupactivity_install_cron(); 98 wpmeetupactivity_update_db_check(); 72 99 } 73 100 … … 113 140 group_name text NOT NULL, 114 141 add_date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 142 last_update datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 115 143 UNIQUE KEY group_id (group_id) 116 144 ) DEFAULT CHARSET = utf8;"; … … 123 151 echo __('Updated DB to '.WP_MEETUP_ACTIVITY, $wpmeetupactivity_textdomain); 124 152 echo "</strong></p></div>"; 125 126 wpmeetupactivity_activate();127 153 } 128 154 } 129 155 130 156 function wpmeetupactivity_deactivate() { 131 global $wpdb; 132 $timestamp = wp_next_scheduled('wpmeetupactivity_hourly'); 133 wp_unschedule_event($timestamp, 'hourly', 'wpmeetupactivity_hourly'); 157 wpmeetupactivity_uninstall_cron(); 134 158 } 135 159 … … 139 163 $wpdb->query($wpdb->prepare("DROP ".WP_MEETUP_ACTIVITY_TABLE."_groups; DROP ".WP_MEETUP_ACTIVITY_TABLE."_act;")); 140 164 /* Disable CRON */ 141 $timestamp = wp_next_scheduled('wpmeetupactivity_hourly'); 142 143 while($timestamp) { 144 wp_unschedule_event($timestamp, 'hourly', 'wpmeetupactivity_hourly'); 145 $timestamp = wp_next_scheduled('wpmeetupactivity_hourly'); 146 } 147 148 149 wp_clear_scheduled_hook( 'wpmeetupactivity_hourly' ); 150 165 wpmeetupactivity_uninstall_cron(); 151 166 } 152 167 … … 197 212 $apikey = get_option('wpmeetupactivity_apikey'); 198 213 199 $fb_options = get_option('wpmeetupactivity_fb_options');200 $fb_pages = $fb_options['pages'];201 202 214 $groupsArray = get_option('wpmeetupactivity_groups'); 203 215 … … 212 224 213 225 foreach($activities as $act) { 214 /*215 [group_name] => Siena 5 Stelle216 [discussion_body] => Tommaso bisogna stare attenti, siamo la citt del Palio, potrebbero esser mosse critiche in tal senso, no vivisezione si morte cavalli c' un conflitto in ci. Di cui persino io mi rendo conto pur essendo Palio convinta. S.217 [photo_url] => http://photos4.meetupstatic.com/photos/member/a/a/9/8/thumb_58003672.jpeg218 [link] => http://www.meetup.com/Gruppo-di-Siena/messages/boards/thread/25811602/post/80398742#80398742219 [group_id] => 209457220 [message_id] => 80398742221 [discussion_title] => La Novartis, negli stabilimenti di Siena, pratica la vivisezione ?222 [member_id] => 46604112 [id] => ch209457-ts9223370692436524023-disc-25811602223 [title] => Siena 5 Stelle: Risposta ad una Discussione224 [updated] => Wed Aug 08 05:30:51 EDT 2012225 [member_name] => Silvia226 [published] => Wed Aug 08 05:30:51 EDT 2012227 [thread_id] => 25811602228 [item_type] => new_reply229 [is_reply] => True230 */231 226 if(in_array($act["group_id"],$groupsArray)) { 232 227 /* get activities only from subscribed groups */ … … 252 247 253 248 $wpdb->query($wpdb->prepare("UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_act SET message_id=%d,author=%s,ranking=%f,item_type=%s,chg_date=NOW() WHERE group_id=$groupId AND thread_id=$threadId;",$messageId,$act['member_name'],$ranking,$act['item_type'])); 254 255 if($fb_options['post_on_reply']) { 256 /* Post replies to FB pages, if configured */ 257 wpmeetupactivity_fb_posttopage($act['link'],$act['discussion_body']); 258 } 259 249 260 250 if(is_admin()) { 261 251 echo "<div class=\"updated\"><p><strong>".__('Updated thread '.$act['discussion_title'], $wpmeetupactivity_textdomain)."</strong></p></div>"; … … 266 256 $wpdb->query($wpdb->prepare("INSERT INTO ".WP_MEETUP_ACTIVITY_TABLE."_act (group_id, thread_id, message_id, author, item_type, item_title, item_url, ranking, chg_date, add_date) VALUES ( %d, %d, %d, %s, %s, %s, %s, 1, NOW(), NOW())", $groupId, $threadId, $messageId, $act['member_name'], $act['item_type'], $act['discussion_title'], $act['link'])); 267 257 268 if($fb_options['post_on_new']) {269 /* Post new threads to FB pages, if configured */270 wpmeetupactivity_fb_posttopage($act['link'],$act['discussion_body']);271 }272 273 258 if(is_admin()) { 274 259 echo "<div class=\"updated\"><p><strong>".__('Added new thread '.$act['discussion_title'], $wpmeetupactivity_textdomain)."</strong></p></div>"; … … 276 261 } 277 262 } 263 // Update LAST_UPDATE 278 264 } 265 $wpdb->query($wpdb->prepare("UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_groups SET last_update=NOW() WHERE group_id='%d';",$act["group_id"])); 279 266 } 280 267 // Degrade ranking for older items 281 $wpdb->query($wpdb->prepare("UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_act SET ranking=ranking-0.1 WHERE DATEDIFF(NOW(),chg_date) > 7;"));268 $wpdb->query($wpdb->prepare("UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_act SET ranking=ranking-0.1 WHERE DATEDIFF(NOW(),chg_date) > %d;",WP_MEETUP_ACTIVITY_OLDERDAYS)); 282 269 } catch (Exception $e) { 283 270 echo "Meetup API error: $e"; … … 291 278 292 279 $apikey = get_option('wpmeetupactivity_apikey'); 293 294 $fb_options = get_option('wpmeetupactivity_fb_options');295 $fb_pages = $fb_options['pages'];296 280 297 281 $groupsArray = get_option('wpmeetupactivity_groups'); … … 306 290 307 291 foreach($events as $event) { 308 /* Array ( [visibility] => public309 [status] => upcoming310 [maybe_rsvp_count] => 0311 [venue] => Array (312 [id] => 11656882313 [lon] => 11.35083314 [repinned] =>315 [name] => Circolo CRAL316 [address_1] => via Algero Rosi 6317 [lat] => 43.31786318 [country] => it319 [city] => Siena320 )321 [id] => 103939182322 [utc_offset] => 3600000323 [time] => 1360958400000324 [waitlist_count] => 0325 [created] => 1360515889000326 [yes_rsvp_count] => 10327 [updated] => 1360617331000328 [event_url] => http://www.meetup.com/Gruppo-di-Siena/events/[id]/329 [description] => descrizione evento....330 [headcount] => 0331 [name] => Incontro con l'economista Filippo Abbate332 [group] => Array (333 [id] => 209457334 [group_lat] => 43.319999694824335 [name] => Forum di Siena336 [group_lon] => 11.329999923706337 [join_mode] => open338 [urlname] => Gruppo-di-Siena339 [who] => Amici di Siena340 )341 ) */342 343 292 $eventId = $event['id']; 344 293 345 $eventUpdated = gmdate("Y-m-d H:i:s",intval($event['updated'])/1000); 294 $eventUpdated = gmdate("Y-m-d H:i:s",($event['updated']/1000)); 295 296 $eventDate = gmdate("Y-m-d H:i:s",($event['time']/1000)); 346 297 347 298 $eventVenue = $event['venue']['name'].','.$event['venue']['city']; … … 353 304 // L'evento esiste gia 354 305 if($result['tDelta'] > 0) { 355 $result = $wpdb->query( $wpdb->prepare( "UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_events SET event_title='%s', event_address='%s', event_description='%s', event_datetime='%s', event_updated='%s', event_status='%s', yes_rsvp=%d WHERE event_id=$eventId;", $event['name'], $eventVenue, $event['description'], gmdate("Y-m-d H:i:s",intval($event['time'])/1000), $eventUpdated, $event['status'], intval($event['yes_rsvp_count'])));306 $result = $wpdb->query( $wpdb->prepare( "UPDATE ".WP_MEETUP_ACTIVITY_TABLE."_events SET event_title='%s', event_address='%s', event_description='%s', event_datetime='%s', event_updated='%s', event_status='%s', yes_rsvp=%d WHERE event_id=$eventId;", $event['name'], $eventVenue, $event['description'], $eventDate, $eventUpdated, $event['status'], intval($event['yes_rsvp_count']))); 356 307 if($verbose) { 357 308 echo "<div class=\"updated\"><p><strong>"; … … 366 317 } else { 367 318 // L'evento non esiste: aggiungilo al DB ! 368 $result = $wpdb->query( $wpdb->prepare("INSERT INTO ".WP_MEETUP_ACTIVITY_TABLE."_events (group_id, event_id, event_title, event_address, event_description, event_datetime, event_updated, is_public, event_status, event_url, yes_rsvp, add_date) VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', 1, '%s', '%s', %d, NOW())", $groupId, $eventId, $event['name'], $eventVenue, $event['description'], gmdate("Y-m-d H:i:s",intval($event['time'])/1000), $eventUpdated, $event['status'], $event['event_url'], intval($event['yes_rsvp_count'])));319 $result = $wpdb->query( $wpdb->prepare("INSERT INTO ".WP_MEETUP_ACTIVITY_TABLE."_events (group_id, event_id, event_title, event_address, event_description, event_datetime, event_updated, is_public, event_status, event_url, yes_rsvp, add_date) VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', 1, '%s', '%s', %d, NOW())", $groupId, $eventId, $event['name'], $eventVenue, $event['description'], $eventDate, $eventUpdated, $event['status'], $event['event_url'], intval($event['yes_rsvp_count']))); 369 320 if($verbose) { 370 321 echo "<div class=\"updated\"><p><strong>"; … … 389 340 function wpmeetupactivity_plugin_menu() { 390 341 add_options_page('WP-Meetup-Activity Plugin Options', 'WP-Meetup-Activity', 8, __FILE__, 'wpmeetupactivity_plugin_options'); 391 }392 393 function wpmeetupactivity_widget_init() {394 if ( function_exists( 'wp_register_sidebar_widget' ) ) {395 wp_register_sidebar_widget('wpmeetupactivity','WP-Meetup-Activity', 'wpmeetupactivity_widget_activity',array('description' => 'Display latest activity on your Meetups'));396 wp_register_sidebar_widget('wpmeetupevents','WP-Meetup-Events', 'wpmeetupactivity_widget_events',array('description' => 'Display upcoming Meetups'));397 } else {398 // Deprecated function for older WP...399 register_sidebar_widget('WP-Meetup-Activity', 'wpmeetupactivity_widget_activity');400 register_sidebar_widget('WP-Meetup-Events', 'wpmeetupactivity_widget_events');401 }402 342 } 403 343 … … 466 406 } 467 407 } else { 468 echo "< b>No events planned yet !</b>";408 echo "<ul><li>No events planned in your groups</li></ul>"; 469 409 } 470 410 } else { … … 490 430 $groupsArray = get_option('wpmeetupactivity_groups'); 491 431 $my_prefs = get_option('wpmeetupactivity_prefs'); 492 493 $fb_options = get_option('wpmeetupactivity_fb_options');494 $fb_pages = $fb_options['pages'];495 432 496 433 $orderBy = $my_prefs['orderBy']; … … 548 485 echo "</ul>"; 549 486 } else { 550 echo "< b>No activities in selected groups</b>";487 echo "<ul><li>No activities in selected groups</li></ul>"; 551 488 } 552 489 } else { … … 568 505 } 569 506 570 571 /*572 573 Facebook functions for auto-post of new threads on FB page574 575 */576 577 function wpmeetupactivity_fb_get_locale() {578 $fb_valid_fb_locales = array(579 'ca_ES', 'cs_CZ', 'cy_GB', 'da_DK', 'de_DE', 'eu_ES', 'en_PI', 'en_UD', 'ck_US', 'en_US', 'es_LA', 'es_CL', 'es_CO', 'es_ES', 'es_MX',580 'es_VE', 'fb_FI', 'fi_FI', 'fr_FR', 'gl_ES', 'hu_HU', 'it_IT', 'ja_JP', 'ko_KR', 'nb_NO', 'nn_NO', 'nl_NL', 'pl_PL', 'pt_BR', 'pt_PT',581 'ro_RO', 'ru_RU', 'sk_SK', 'sl_SI', 'sv_SE', 'th_TH', 'tr_TR', 'ku_TR', 'zh_CN', 'zh_HK', 'zh_TW', 'fb_LT', 'af_ZA', 'sq_AL', 'hy_AM',582 'az_AZ', 'be_BY', 'bn_IN', 'bs_BA', 'bg_BG', 'hr_HR', 'nl_BE', 'en_GB', 'eo_EO', 'et_EE', 'fo_FO', 'fr_CA', 'ka_GE', 'el_GR', 'gu_IN',583 'hi_IN', 'is_IS', 'id_ID', 'ga_IE', 'jv_ID', 'kn_IN', 'kk_KZ', 'la_VA', 'lv_LV', 'li_NL', 'lt_LT', 'mk_MK', 'mg_MG', 'ms_MY', 'mt_MT',584 'mr_IN', 'mn_MN', 'ne_NP', 'pa_IN', 'rm_CH', 'sa_IN', 'sr_RS', 'so_SO', 'sw_KE', 'tl_PH', 'ta_IN', 'tt_RU', 'te_IN', 'ml_IN', 'uk_UA',585 'uz_UZ', 'vi_VN', 'xh_ZA', 'zu_ZA', 'km_KH', 'tg_TJ', 'ar_AR', 'he_IL', 'ur_PK', 'fa_IR', 'sy_SY', 'yi_DE', 'gn_PY', 'qu_PE', 'ay_BO',586 'se_NO', 'ps_AF', 'tl_ST'587 );588 589 $locale = get_locale();590 591 // convert locales like "es" to "es_ES", in case that works for the given locale (sometimes it does)592 if (strlen($locale) == 2) {593 $locale = strtolower($locale).'_'.strtoupper($locale);594 }595 596 // convert things like de-DE to de_DE597 $locale = str_replace('-', '_', $locale);598 599 // check to see if the locale is a valid FB one, if not, use en_US as a fallback600 if ( !in_array($locale, $fb_valid_fb_locales) ) {601 $locale = 'en_US';602 }603 604 return apply_filters('fb_locale', $locale); // filter the locale in case somebody has a weird case and needs to change it605 }606 607 function wpmeetupactivity_fb_get_user_meta( $user_id, $meta_key, $single = false ) {608 $override = apply_filters( 'wpmeetupactivity_fb_get_user_meta', false, $user_id, $meta_key, $single );609 if ( false !== $override )610 return $override;611 612 return get_user_meta( $user_id, $meta_key, $single );613 }614 615 function wpmeetupactivity_fb_update_user_meta( $user_id, $meta_key, $meta_value, $prev_value = '' ) {616 $override = apply_filters( 'wpmeetupactivity_fb_update_user_meta', false, $user_id, $meta_key, $meta_value, $prev_value );617 if ( false !== $override )618 return $override;619 620 return update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );621 }622 623 function wpmeetupactivity_fb_delete_user_meta( $user_id, $meta_key, $meta_value = '' ) {624 $override = apply_filters( 'wpmeetupactivity_fb_delete_user_meta', false, $user_id, $meta_key, $meta_value );625 if ( false !== $override )626 return $override;627 628 return delete_user_meta( $user_id, $meta_key, $meta_value );629 }630 631 function wpmeetupactivity_fb_js_sdk_setup() {632 $options = get_option( 'fb_options' );633 634 if ( empty( $options['app_id'] ) )635 return;636 637 $args = apply_filters( 'fb_init', array(638 'appId' => $options['app_id'],639 'channelUrl' => add_query_arg( 'fb-channel-file', 1, site_url( '/' ) ),640 'status' => true,641 'cookie' => true,642 'xfbml' => true,643 'oauth' => true644 ) );645 646 echo '<script type="text/javascript">window.fbAsyncInit=function(){FB.init(' . json_encode( $args ) . ');';647 do_action( 'fb_async_init', $args );648 echo '}</script>';649 650 $locale = wpmeetupactivity_fb_get_locale();651 if ( ! $locale )652 return;653 wp_enqueue_script( 'fb-connect', ( is_ssl() ? 'https' : 'http' ) . '://connect.facebook.net/' . $locale . '/all.js', array(), null, true );654 655 add_action( 'wp_footer', 'wpmeetupactivity_fb_root' );656 }657 658 function wpmeetupactivity_fb_root() {659 echo '<div id="fb-root"></div>';660 }661 662 663 function wpmeetupactivity_fb_posttopage($link,$message) {664 global $facebook;665 666 $fb_options = get_option('wpmeetupactivity_fb_options');667 668 if(count($fb_options['pages']) > 0) {669 foreach($fb_options['pages'] as $fb_page_id) {670 $args = array(671 // 'access_token' => $facebook->getAccessToken(),672 'from' => $fb_page_id,673 'link' => $link,674 'message' => $message,675 );676 677 try {678 $publish_result = $facebook->api("/$fb_page_id/feed", 'POST', $args);679 } catch (WP_FacebookApiException $e) {680 $error_result = $e->getResult();681 if(is_admin()) {682 echo "<div class=\"error\"><p><strong>".__('FB Post-to-Page error: '.$error_result, $wpmeetupactivity_textdomain)."</strong></p></div>";683 }684 }685 686 print_r($publish_result);687 }688 }689 }690 691 function wpmeetupactivity_fb_getuserpages() {692 global $facebook;693 694 $options = get_option('wpmeetupactivity_fb_options');695 696 $accounts = array();697 698 if ( ! isset( $facebook ) )699 return $accounts;700 701 try {702 $accounts = $facebook->api('/me/accounts', 'GET', array('ref' => 'fbwpp'));703 } catch (FacebookApiException $e) {704 return $accounts;705 }706 707 return $accounts['data'];708 }709 710 711 function wpmeetupactivity_fb_init() {712 global $facebook;713 714 $my_prefs = get_option('wpmeetupactivity_prefs');715 716 if($my_prefs["enableFb"]) {717 718 $fb_options = get_option('wpmeetupactivity_fb_options');719 720 // appId and secret are required by BaseFacebook721 if((!empty( $fb_options['app_id']) && !empty($fb_options['app_secret']))) {722 $facebook = new Facebook_WP_Extend(array(723 'appId' => $fb_options['app_id'],724 'secret' => $fb_options['app_secret'],725 ));726 }727 728 add_action( 'wp_head', 'wpmeetupactivity_fb_js_sdk_setup' );729 add_action( 'admin_head', 'wpmeetupactivity_fb_js_sdk_setup' );730 }731 }732 733 507 /* 734 508 … … 738 512 function wpmeetupactivity_plugin_options() { 739 513 global $wpdb; 740 global $facebook;741 742 514 743 515 load_plugin_textdomain($wpmeetupactivity_textdomain, PLUGINDIR . '/' . dirname(plugin_basename(__FILE__)), dirname(plugin_basename(__FILE__))); … … 752 524 if($_SERVER['REQUEST_METHOD'] == 'POST') { 753 525 754 foreach($_POST["wpmeetupactivity_groups"] as $groupId => $val) { 755 if($val == 'on') { 756 $myGroups[] = $groupId; 526 if(is_array($_POST["wpmeetupactivity_groups"])) { 527 foreach($_POST["wpmeetupactivity_groups"] as $groupId => $val) { 528 if($val == 'on') { 529 $myGroups[] = $groupId; 530 } 757 531 } 758 532 } … … 764 538 } 765 539 766 767 540 if($_POST["wpmeetupactivity_prefs_displayauthor"] == 'on') { 768 541 $my_prefs["displayAuthor"] = true; … … 777 550 } 778 551 779 if($_POST["wpmeetupactivity_prefs_fb_enable"] == 'on') {780 $my_prefs["enableFb"] = true;781 } else {782 $my_prefs["enableFb"] = false;783 }784 785 552 $my_prefs["displayAct"] = intval($_POST["wpmeetupactivity_prefs_displayact"]); 786 553 $my_prefs["displayEvents"] = intval($_POST["wpmeetupactivity_prefs_displayevents"]); … … 795 562 update_option('wpmeetupactivity_prefs',$my_prefs); 796 563 797 // FB options798 799 if($my_prefs["enableFb"]) {800 $fb_options['app_id'] = $_POST['wpmeetupactivity_fb_appid'];801 $fb_options['app_secret'] = $_POST['wpmeetupactivity_fb_appsecret'];802 803 if($_POST["wpmeetupactivity_fb_post_on_new"] == 'on') {804 $fb_options['post_on_new'] = true;805 } else {806 $fb_options['post_on_new'] = false;807 }808 809 if($_POST["wpmeetupactivity_fb_post_on_reply"] == 'on') {810 $fb_options['post_on_reply'] = true;811 } else {812 $fb_options['post_on_reply'] = false;813 }814 815 $fb_pages = array();816 817 if(isset($_POST["wpmeetupactivity_fb_pages"])) {818 foreach($_POST["wpmeetupactivity_fb_pages"] as $pageId => $val) {819 $fb_pages[] = $pageId;820 }821 }822 $fb_options['pages'] = $fb_pages;823 824 update_option('wpmeetupactivity_fb_options',$fb_options);825 }826 827 564 // Saved ! 828 565 … … 830 567 echo __('Options saved.', $wpmeetupactivity_textdomain); 831 568 echo "</strong></p></div>"; 569 570 if($_POST["wpmeetupactivity_is_scheduled"] == 'on') { 571 wpmeetupactivity_install_cron(); 572 } else { 573 wpmeetupactivity_uninstall_cron(); 574 } 832 575 833 576 if($_POST["wpmeetupactivity_purge_act_db"] == 'on') { … … 871 614 <b>v".WP_MEETUP_ACTIVITY." © <a href=\"http://www.zerozone.it\">Michele \"O-Zone\" Pinassi</a></b> 872 615 </p> 873 <form method='post'> 616 <!-- Table prefix on DBMS ".WP_MEETUP_ACTIVITY_TABLE." -->"; 617 618 /* Check for CRON schedule */ 619 $is_scheduled = wp_get_schedule(WP_MEETUP_ACTIVITY_CRON_HOOK.'_hourly'); 620 if(!$is_scheduled) { 621 echo "<div class=\"error\"><p><strong>"; 622 echo __('Cron schedule not set ! Your database will not be updated: please activate hourly updates below', $wpmeetupactivity_textdomain); 623 echo "</strong></p></div>"; 624 } 625 626 echo "<form method='post'> 874 627 <fieldset class='wpmeetupactivity-setup-fieldset'><legend> Meetup Api Key </legend> 875 628 <p> … … 895 648 echo " checked"; 896 649 } 897 echo "> ".$group['group_name']." </li>";650 echo "> ".$group['group_name']." (".$group['last_update'].")</li>"; 898 651 } 899 652 echo "</ul> 900 653 </p></fieldset> 901 654 <fieldset class='wpmeetupactivity-setup-fieldset'><legend> Administrator functions </legend> 655 <p> 656 <input type='checkbox' name='wpmeetupactivity_is_scheduled' ".wpmeetupactivity_is_checked($is_scheduled)."> Set hourly updates using wp_cron 657 </p> 902 658 <p> 903 659 <input type='checkbox' name='wpmeetupactivity_force_act_fetch'> Force activity fetch on save changes … … 951 707 </select> 952 708 </p> 953 954 </fieldset><fieldset class='wpmeetupactivity-setup-fieldset'><legend> Facebook settings </legend> 955 <p> 956 <input type='checkbox' name='wpmeetupactivity_prefs_fb_enable' ".wpmeetupactivity_is_checked($my_prefs["enableFb"])."> Enable Facebook support 957 </p>"; 958 959 if($my_prefs["enableFb"]) { 960 $fb_options = get_option('wpmeetupactivity_fb_options'); 961 962 if ((empty($fb_options['app_id']) || empty($fb_options['app_secret'])) && current_user_can( 'manage_options' ) ) { 963 echo "<div class=\"error\"><p><strong>"; 964 echo __('Need to configure Facebook Setting to use the post to page function !', $wpmeetupactivity_textdomain); 965 echo "</strong></p></div>"; 966 } else { 967 $fb_user = $facebook->getUser(); 968 969 $params = array( 'scope' => 'read_stream, manage_pages, publish_stream, offline_access' ); 970 if ($fb_user) { 971 // Proceed knowing you have a logged in user who's authenticated. 972 echo "<b>Currently connected as: $fb_user</b> (<a href='".$facebook->getLogoutUrl()."'>Disconnect from Facebook</a>)<br/>"; 973 } else { 974 echo "Not connected (<a href='".$facebook->getLoginUrl($params)."'>Connect with Facebook App</a>)"; 975 } 976 } 977 echo "<p> 978 App Id: <input type='text' size='64' name='wpmeetupactivity_fb_appid' value='".$fb_options['app_id']."' /> 979 </p><p> 980 App Secret: <input type='text' size='128' name='wpmeetupactivity_fb_appsecret' value='".$fb_options['app_secret']."' /> 981 </p>"; 982 if ($fb_user) { 983 echo "<fieldset class='wpmeetupactivity-setup-fieldset'><legend> Facebook Post-on-Page </legend> 984 <p> 985 <input type='checkbox' name='wpmeetupactivity_fb_post_on_new' ".wpmeetupactivity_is_checked($fb_options["post_on_new"])."> Post new threads on FB pages 986 </p><p> 987 <input type='checkbox' name='wpmeetupactivity_fb_post_on_reply' ".wpmeetupactivity_is_checked($my_prefs["post_on_reply"])."> Post every reply on FB pages (not suggested) 988 </p><p>"; 989 if(is_array($fb_options['pages'])) { 990 $fb_pages = $fb_options['pages']; 991 } else { 992 $fb_pages = array(); 993 } 994 995 $c=0; 996 997 foreach(wpmeetupactivity_fb_getuserpages() as $fb_page) { 998 $fb_page_id = $fb_page['id']; 999 if(is_array($fb_page['perms'])) { 1000 if(in_array('CREATE_CONTENT',$fb_page['perms'])) { 1001 echo "<input type='checkbox' name='wpmeetupactivity_fb_pages[".$fb_page_id."]' ".wpmeetupactivity_is_checked(in_array($fb_page_id,$fb_pages))."> ".$fb_page['name']." (<a href='http://www.facebook.com/$fb_page_id'>link</a>)<br/>"; 1002 $c++; 1003 } 1004 } 1005 } 1006 if($c == 0) { 1007 echo "Sorry: you can't write to any page with this Facebook account !"; 1008 } 1009 echo "</p></fieldset>"; 1010 } 1011 } 1012 echo "</fieldset><p class='submit'><input type='submit' name='Submit' value='Save changes' /></p> 709 <p class='submit'><input type='submit' name='Submit' value='Save changes' /></p> 1013 710 </form></div><!-- /WRAP -->"; 1014 711 }
Note: See TracChangeset
for help on using the changeset viewer.