private function _map_from_address($address, $args = array(), $content = false)
 {
     $key = md5(serialize($args));
     $map_id = get_option($key, false);
     if (!$map_id) {
         $model = new AgmMapModel();
         $map_id = $model->autocreate_map(false, false, false, $address);
         if (!$map_id) {
             return $content;
         }
         update_option($key, $map_id);
     }
     $args['id'] = $map_id;
     $codec = new AgmMarkerReplacer();
     return $codec->process_tags($args, $content);
 }
 /**
  * Events map shortcode
  * @param  array   $args    Shortcode arguments
  * @param  boolean $content Fallback content
  * @return string           Map string or fallback content
  */
 function process_events_map_shortcode($args = array(), $content = false)
 {
     if (!class_exists('AgmMapModel') || !class_exists('AgmMarkerReplacer')) {
         return $content;
     }
     $map_args = $args;
     $args = $this->_preparse_arguments($args, array('relative_date' => false, 'date' => false, 'lookahead' => false, 'weeks' => false, 'category' => false, 'categories' => false, 'limit' => false, 'order' => false, 'allow_multiple_markers' => false, 'open_only' => true, 'show_date' => true, 'show_excerpt' => false, 'excerpt_length' => 55, 'legacy' => false, 'featured_image' => false, 'class' => false, 'template' => 'get_shortcode_events_map_marker_body_output'));
     $args['featured_image'] = $this->_arg_to_bool($args['featured_image']);
     $args['show_date'] = $this->_arg_to_bool($args['show_date']);
     $args['show_excerpt'] = $this->_arg_to_bool($args['show_excerpt']);
     $args['allow_multiple_markers'] = $this->_arg_to_bool($args['allow_multiple_markers']);
     $class = $args['class'] ? 'class="' . $args['class'] . '"' : '';
     $query = $this->_to_query_args($args);
     $order_method = $args['order'] ? create_function('', 'return "' . $args['order'] . '";') : false;
     if ($order_method) {
         add_filter('eab-collection-date_ordering_direction', $order_method);
     }
     $maps = array();
     if ($this->_arg_to_bool($args['legacy'])) {
         // Lookahead - depending on presence, use regular upcoming query, or poll week count
         if ($args['lookahead']) {
             $method = $args['weeks'] ? create_function('', 'return ' . $args['weeks'] . ';') : false;
             if ($method) {
                 add_filter('eab-collection-upcoming_weeks-week_number', $method);
             }
             $events = Eab_CollectionFactory::get_upcoming_weeks($args['date'], $query);
             if ($method) {
                 remove_filter('eab-collection-upcoming_weeks-week_number', $method);
             }
         } else {
             // No lookahead, get the full month only
             $events = Eab_CollectionFactory::get_upcoming($args['date'], $query);
         }
         if ($order_method) {
             remove_filter('eab-collection-date_ordering_direction', $order_method);
         }
         $model = new AgmMapModel();
         $raw_maps = $model->get_custom_maps($events->query);
         if (empty($raw_maps)) {
             return $content;
         }
         foreach ($raw_maps as $key => $map) {
             if (empty($map['markers']) || count($map['markers']) > 1) {
                 continue;
             }
             $event = !empty($map['post_ids']) && !empty($map['post_ids'][0]) ? new Eab_EventModel(get_post($map['post_ids'][0])) : false;
             if (!$event) {
                 continue;
             }
             $map['markers'][0]['title'] = $event->get_title();
             $map['markers'][0]['body'] = Eab_Template::util_apply_shortcode_template($event, $args);
             if ($args['featured_image']) {
                 $icon = $event->get_featured_image_url();
                 if ($icon) {
                     $map['markers'][0]['icon'] = $icon;
                 }
             }
             $maps[] = $map;
         }
     } else {
         if ($args['lookahead']) {
             $method = $args['weeks'] ? create_function('', 'return ' . $args['weeks'] . ';') : false;
             if ($method) {
                 add_filter('eab-collection-upcoming_weeks-week_number', $method);
             }
             $events = Eab_CollectionFactory::get_upcoming_weeks_events($args['date'], $query);
             if ($method) {
                 remove_filter('eab-collection-upcoming_weeks-week_number', $method);
             }
         } else {
             // No lookahead, get the full month only
             $events = Eab_CollectionFactory::get_upcoming_events($args['date'], $query);
         }
         if ($order_method) {
             remove_filter('eab-collection-date_ordering_direction', $order_method);
         }
         $open_only = $this->_arg_to_bool($args['open_only']);
         foreach ($events as $event) {
             if ($open_only && !$event->is_open()) {
                 continue;
             }
             $map = $event->get_raw_map();
             if (!is_array($map) || empty($map)) {
                 continue;
             }
             if (empty($map['markers'])) {
                 continue;
             }
             if (empty($args['allow_multiple_markers']) && count($map['markers']) > 1) {
                 continue;
             }
             // Even with multiple markers, only deal with the first one
             $marker_body = Eab_Template::util_apply_shortcode_template($event, $args);
             $map['markers'][0]['title'] = $event->get_title();
             $icon = $args['featured_image'] ? $event->get_featured_image_url() : false;
             foreach ($map['markers'] as $idx => $mrk) {
                 $map['markers'][$idx]['body'] = $marker_body;
                 if ($args['featured_image'] && !empty($icon)) {
                     $map['markers'][$idx]['icon'] = $icon;
                 }
             }
             $maps[] = $map;
         }
     }
     if (!$maps) {
         return $content;
     }
     if (!is_array($map_args)) {
         $map_args = array();
     }
     $codec = new AgmMarkerReplacer();
     return "<div {$class}>" . $codec->create_overlay_tag($maps, $map_args) . '</div>';
 }
 private function _import_event($event)
 {
     $time = !empty($event['time']) && (int) $event['time'] ? (int) $event['time'] / 1000 : false;
     if (!$time) {
         return false;
     }
     if (empty($event['status']) || 'upcoming' != $event['status']) {
         return false;
     }
     // Is the event already imported?
     global $wpdb;
     $id = esc_sql($event['id']);
     $is_imported = $wpdb->get_var("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_eab_meetup_id' AND meta_value='{$id}'");
     if (!empty($is_imported)) {
         return false;
     }
     $post = array('post_type' => Eab_EventModel::POST_TYPE, 'post_status' => 'publish', 'post_title' => isset($event['name']) ? $event['name'] : '', 'post_content' => wp_kses_post(isset($event['description']) ? $event['description'] : ''), 'post_date' => date('Y-m-d H:i:s'), 'post_author' => get_current_user_id());
     $meta = array('_eab_meetup_id' => $event['id'], '_eab_meetup_original' => $event, 'incsub_event_status' => Eab_EventModel::STATUS_OPEN, 'incsub_event_start' => date('Y-m-d H:i:s', $time), 'incsub_event_end' => date('Y-m-d 23:59:00', $time), 'incsub_event_no_end' => 1);
     // Import event
     $post_id = wp_insert_post($post);
     if (!$post_id) {
         return false;
     }
     // Something went very wrong
     foreach ($meta as $key => $value) {
         update_post_meta($post_id, $key, $value);
     }
     // Geolocate event
     if (!empty($event['venue'])) {
         $venue = !empty($event['venue']['name']) ? $event['venue']['name'] : false;
         if (class_exists('AgmMapModel') && !empty($event['venue']['lat']) && !empty($event['venue']['lon'])) {
             $model = new AgmMapModel();
             $map_id = $model->autocreate_map($post_id, $event['venue']['lat'], $event['venue']['lon'], false);
             //if ($map_id) $venue = "[map id='{$map_id}']";
             if ($map_id) {
                 $venue = false;
             }
         }
         if (!empty($venue)) {
             update_post_meta($post_id, 'incsub_event_venue', $venue);
         }
     }
     return $post_id;
 }
 /**
  * Get map object.
  * @param string $venue Venue
  * @param array $args Optional map overrides
  * @return object Map object
  */
 private function _get_venue_map($venue, $args = array())
 {
     $venue = $venue ? $venue : $this->get_venue();
     if (!class_exists('AgmMapModel')) {
         return $venue;
     }
     $map_id = $this->_get_venue_map_id($venue);
     if (!$map_id) {
         return $venue;
     }
     $model = new AgmMapModel();
     return $model->get_map($map_id);
 }
 function json_bp_rebuild_profile_map()
 {
     if (!class_exists('Agm_Bp_Pm_UserPages')) {
         die(-1);
     }
     global $wpdb;
     header('Content-type: application/json');
     $sql = "SELECT DISTINCT ID FROM {$wpdb->users} WHERE ID NOT IN (SELECT DISTINCT ID FROM {$wpdb->users} as user, {$wpdb->usermeta} as meta WHERE user.ID=meta.user_id AND meta_key='agm-bp-profile_maps-location') LIMIT 1";
     $user_id = (int) $wpdb->get_var($sql);
     $model = new AgmMapModel();
     $opts = apply_filters('agm_google_maps-options-bp_profile_maps', get_option('agm_google_maps'));
     $address = bp_get_profile_field_data(array('field' => @$opts['bp_profile_maps-address_field'], 'user_id' => $user_id));
     // Skip this guy
     if (!$address) {
         die(json_encode(array('user_id' => $user_id)));
     }
     $location = $model->_address_to_marker($address);
     if ($location) {
         $location['body'] = Agm_Bp_Pm_UserPages::get_location_body($user_id, $address);
     }
     update_user_meta($user_id, 'agm-bp-profile_maps-location', $location);
     die(json_encode(array('user_id' => $user_id)));
 }
 function json_save_event()
 {
     global $current_user;
     header('Content-type: application/json');
     if (!isset($_POST['data'])) {
         die(json_encode(array('status' => 0, 'message' => __('No data received', Eab_EventsHub::TEXT_DOMAIN))));
     }
     $data = $_POST['data'];
     if (!$this->_check_perms((int) $data['id'])) {
         die(json_encode(array('status' => 0, 'message' => __('Insufficient privileges', Eab_EventsHub::TEXT_DOMAIN))));
     }
     $post = array();
     $start = date('Y-m-d H:i', strtotime($data['start']));
     $end = date('Y-m-d H:i', strtotime($data['end']));
     $post_type = get_post_type_object(Eab_EventModel::POST_TYPE);
     $post['post_title'] = strip_tags($data['title']);
     $post['post_content'] = current_user_can('unfiltered_html') ? $data['content'] : wp_filter_post_kses($data['content']);
     $post['post_status'] = current_user_can($post_type->cap->publish_posts) ? 'publish' : 'pending';
     $post['post_type'] = Eab_EventModel::POST_TYPE;
     $post['post_author'] = $current_user->id;
     $data['featured'] = !empty($data['featured']) ? is_numeric($data['featured']) ? (int) $data['featured'] : false : false;
     if ((int) $data['id']) {
         $post['ID'] = $post_id = $data['id'];
         wp_update_post($post);
         /* Added by Ashok */
         update_post_meta($post_id, '_thumbnail_id', $data['featured']);
         /* End of adding by Ashok */
     } else {
         $post_id = wp_insert_post($post);
         /* Added by Ashok */
         update_post_meta($post_id, '_thumbnail_id', $data['featured']);
         /* End of adding by Ashok */
     }
     if (!$post_id) {
         die(json_encode(array('status' => 0, 'message' => __('There has been an error saving this Event', Eab_EventsHub::TEXT_DOMAIN))));
     }
     update_post_meta($post_id, 'incsub_event_start', $start);
     update_post_meta($post_id, 'incsub_event_end', $end);
     update_post_meta($post_id, 'incsub_event_status', strip_tags($data['status']));
     $venue_map = get_post_meta($post_id, 'agm_map_created', true);
     if (!$venue_map && $data['venue'] && class_exists('AgmMapModel')) {
         $model = new AgmMapModel();
         $model->autocreate_map($post_id, false, false, $data['venue']);
     }
     update_post_meta($post_id, 'incsub_event_venue', strip_tags($data['venue']));
     $is_paid = (int) $data['is_premium'];
     $fee = $is_paid ? strip_tags($data['fee']) : '';
     update_post_meta($post_id, 'incsub_event_paid', $is_paid ? '1' : '');
     update_post_meta($post_id, 'incsub_event_fee', $fee);
     do_action('eab-events-fpe-save_meta', $post_id, $data);
     wp_set_post_terms($post_id, array((int) $data['category']), 'eab_events_category', false);
     if (current_user_can($post_type->cap->publish_posts)) {
         $message = __('Event saved and published', Eab_EventsHub::TEXT_DOMAIN);
         do_action('eab_bp_event_published', $post_id);
     } else {
         $message = __('Event saved and waiting for approval', Eab_EventsHub::TEXT_DOMAIN);
         do_action('eab_bp_event_saved_for_approval', $post_id);
     }
     die(json_encode(array('status' => 1, 'post_id' => $post_id, 'permalink' => get_permalink($post_id), 'message' => $message)));
 }
 private function _get_group_map($group_id, $data_overrides = array())
 {
     $data_overrides = wp_parse_args($data_overrides, array('show_members' => true));
     $data = groups_get_groupmeta($group_id, "agm-group_map");
     $model = new AgmMapModel();
     $map_id = get_option("_agm-group_map-for-{$group_id}", false);
     $address = !empty($data["address"]) ? $data["address"] : apply_filters('agm-group_map-default_group_address', false, $group_id, $data);
     $map = false;
     if ($map_id) {
         $map = $model->get_map($map_id);
     } else {
         if (!$map_id && $address) {
             $map_id = $model->autocreate_map(false, false, false, $address);
             if (!$map_id) {
                 return false;
             }
             update_option("_agm-group_map-for-{$group_id}", $map_id);
             $map = $model->get_map($map_id);
         } else {
             $map = $model->get_map_defaults();
             $map['defaults'] = $model->get_map_defaults();
             $map['id'] = $group_id . md5(time() . rand());
             $map['show_map'] = 1;
             $map['show_markers'] = 0;
             $map['markers'] = array();
         }
     }
     if (!empty($data_overrides['group_marker']) && 'avatar' == $data_overrides['group_marker'] && function_exists('bp_core_fetch_avatar')) {
         if (1 != count($map['markers'])) {
             continue;
         }
         if (empty($map['markers'][0])) {
             continue;
         }
         $avatar = bp_core_fetch_avatar(array('object' => 'group', 'item_id' => $group_id, 'width' => 32, 'height' => 32, 'html' => false));
         if (!empty($avatar)) {
             $map['markers'][0]['icon'] = $avatar;
         }
     }
     if (!empty($data['member_locations']) && !empty($data_overrides['show_members']) && class_exists('Agm_Bp_Pm_UserPages')) {
         $profile = new Agm_Bp_Pm_UserPages();
         $markers = $map['markers'];
         $members = groups_get_group_members($group_id);
         if ($members && !empty($members['members'])) {
             foreach ($members['members'] as $member) {
                 $marker = $profile->member_to_marker($member->ID);
                 if ($marker) {
                     $markers[] = $marker;
                 }
             }
         }
         $map['markers'] = $markers;
     }
     if (empty($map['markers'])) {
         return false;
     }
     return $map;
 }
 function agm_google_maps_post_meta_address($location)
 {
     global $post;
     if (!$location && $post->post_type == 'incsub_event') {
         $meta = get_post_custom($post->ID);
         $venue = '';
         if (isset($meta["incsub_event_venue"]) && isset($meta["incsub_event_venue"][0])) {
             $venue = stripslashes($meta["incsub_event_venue"][0]);
             if (preg_match_all('/map id="([0-9]+)"/', $venue, $matches) > 0) {
                 if (isset($matches[1]) && isset($matches[1][0])) {
                     $model = new AgmMapModel();
                     $map = $model->get_map($matches[1][0]);
                     $venue = $map['markers'][0]['title'];
                     if ($meta["agm_map_created"][0] != $map['id']) {
                         update_post_meta($post->ID, 'agm_map_created', $map['id']);
                         return false;
                     }
                 }
             }
         }
         return $venue;
     }
     return $location;
 }
Esempio n. 9
0
 function create_map_tag_from_shortcode($map, $overrides)
 {
     if ($map) {
         return $map;
     }
     if (!@$overrides['kml_url']) {
         return $map;
     }
     $model = new AgmMapModel();
     $defaults = $model->get_map_defaults();
     $map = array('id' => md5($overrides['kml_url']), 'defaults' => $defaults, 'markers' => array(), 'show_map' => 1, 'show_markers' => 0, 'show_images' => 0, 'zoom' => $defaults['zoom']);
     return $map;
 }
 private function _get_map_sig($map_id)
 {
     $model = new AgmMapModel();
     $map = $model->get_map($map_id);
     return md5(serialize($map) . AUTH_SALT . NONCE_KEY);
 }