Pastebin is 300% more awesome when you are logged in. Sign Up, it's FREE!
Guest

Untitled

By: a guest on Oct 5th, 2010  |  syntax: None  |  size: 6.43 KB  |  hits: 41  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. /*
  3.         Plugin Name: Google Group Map
  4.         Plugin URI:
  5.         Description: This plugin will embed a google map for groups.
  6.         Author: Charl Kruger
  7.         Author URI:
  8.         Version: 1.0
  9.  
  10.  
  11.     This program is free software; you can redistribute it and/or modify
  12.     it under the terms of the GNU General Public License as published by
  13.     the Free Software Foundation; either version 2 of the License, or
  14.     (at your option) any later version.
  15.  
  16.     This program is distributed in the hope that it will be useful,
  17.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.     GNU General Public License for more details.
  20.  
  21.     You should have received a copy of the GNU General Public License
  22.     along with this program; if not, write to the Free Software
  23.     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  24. */
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. /*
  33. ===============================================================================
  34.  
  35.    group stuff
  36.  
  37. ===============================================================================
  38. */
  39.  
  40. /* Show group map in group header */
  41. $ggmap_show_map_in_header = true ;
  42.  
  43. /* - HERE BEGINS THE CODE - */
  44.  
  45. // create the form to add the field for the map
  46. function ggmap_add_map_form() {
  47.         ?>
  48.         <label for="group-map"><?php _e( 'map', 'ggmap' ) ?></label>
  49.         <input type="text" name="group-map" id="group-map" value="" />
  50.  
  51.         <?php
  52.        
  53. }
  54. add_action( 'groups_custom_group_fields_editable', 'ggmap_add_map_form' );
  55.  
  56. // Save the map lat and long in the group meta
  57. function ggmap_save_map( $group_id ) {
  58.         global $bp;
  59.        
  60.         if($bp->groups->new_group_id)
  61.                 $id = $bp->groups->new_group_id;
  62.         else
  63.                 $id = $group_id;
  64.                
  65.         if ( $_POST['group-map']  )
  66.                 groups_update_groupmeta( $id, 'ggmap_group_map', $_POST['group-map'] );
  67. }
  68.  
  69. // Get or return the map lat and long
  70. function ggmap_group_map() {
  71.         echo ggmap_get_group_map();
  72. }
  73.         function ggmap_get_group_map( $group = false ) {
  74.                 global $groups_template;
  75.                 if ( !$group )
  76.                         $group =& $groups_template->group;
  77.                 $group_map = groups_get_groupmeta( $group->id, 'ggmap_group_map' );
  78.                 $group_map = stripcslashes( $group_map );
  79.                 return apply_filters( 'ggmap_get_group_map', $group_map );
  80.         }
  81.  
  82. // show map in group header
  83. function ggmap_show_map_in_header( $description ) {
  84.         global $ggmap_show_map_in_header;
  85.         if ( ggmap_get_group_map() && $ggmap_show_map_in_header ) {
  86.                 $description .= '<div class="ggmap-header">'. __('map', 'ggmap').': '. ggmap_make_map_for_group().'</div>';
  87.         }
  88.         return $description;
  89. }
  90. add_filter( 'bp_get_group_description', 'ggmap_show_map_in_header' );
  91.  
  92. // show map for an individual group
  93. function ggmap_make_map_for_group() {
  94.         global $bp, $wpdb, $ggmap_args;
  95.  
  96.        
  97.         $group_map = "
  98.         <script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>
  99.         <script type='text/javascript'>
  100.                 function makeMap() {
  101.                         var latlng = new google.maps.LatLng(".ggmap_get_group_map().")
  102.                        
  103.                         var myOptions = {
  104.                                 zoom: 14,
  105.                                 center: latlng,
  106.                                 mapTypeControl: true,
  107.                                 mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
  108.                                 navigationControl: true,
  109.                                 navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
  110.                                 mapTypeId: google.maps.MapTypeId.ROADMAP
  111.                         };
  112.                         var map = new google.maps.Map(document.getElementById('SGM'), myOptions);
  113.                        
  114.                         var contentString = '<div class=\"infoWindow\">HI :D</div>';
  115.                         var infowindow = new google.maps.InfoWindow({
  116.                                 content: contentString
  117.                         });
  118.                        
  119.                         var marker = new google.maps.Marker({
  120.                                 position: latlng,
  121.                                 map: map,
  122.                                 title: ''
  123.                         });
  124.                        
  125.                         google.maps.event.addListener(marker, 'click', function() {
  126.                           infowindow.open(map,marker);
  127.                         });
  128.                 }
  129.                 window.onload = makeMap;
  130.         </script>
  131.        
  132.         <div id='SGM'></div>
  133.         ";
  134.        
  135.         return $group_map;     
  136. }
  137.  
  138. add_action( 'groups_create_group_step_save_group-details', 'ggmap_save_map' );
  139. add_action( 'groups_details_updated', 'ggmap_save_map' );
  140.  
  141.  
  142.  
  143.  
  144. /*
  145. ===============================================================================
  146.  
  147.         Google Group Extension API
  148.  
  149. ===============================================================================
  150. */
  151.  
  152.  
  153. class Google_Group_Extension extends BP_Group_Extension {      
  154.  
  155.         function google_group_extension() {
  156.                 $this->name = 'Map';
  157.                 $this->slug = 'map';
  158.  
  159.                 $this->create_step_position = 21;
  160.                 $this->nav_item_position = 31;
  161.         }
  162.  
  163.         function create_screen() {
  164.                 if ( !bp_is_group_creation_step( $this->slug ) )
  165.                         return false;
  166.                 ?>
  167.  
  168.                 <p>The HTML for my creation step goes here.</p>
  169.  
  170.                 <?php
  171.                 wp_nonce_field( 'groups_create_save_' . $this->slug );
  172.         }
  173.  
  174.         function create_screen_save() {
  175.                 global $bp;
  176.  
  177.                 check_admin_referer( 'groups_create_save_' . $this->slug );
  178.  
  179.                 /* Save any details submitted here */
  180.                 groups_update_groupmeta( $bp->groups->new_group_id, 'my_meta_name', 'value' );
  181.         }
  182.  
  183.         function edit_screen() {
  184.                 if ( !bp_is_group_admin_screen( $this->slug ) )
  185.                         return false; ?>
  186.  
  187.                 <h2><?php echo attribute_escape( $this->name ) ?></h2>
  188.  
  189.                 <p>Edit steps here</p>
  190.                 <input type=&quot;submit&quot; name=&quot;save&quot; value=&quot;Save&quot; />
  191.  
  192.                 <?php
  193.                 wp_nonce_field( 'groups_edit_save_' . $this->slug );
  194.         }
  195.  
  196.         function edit_screen_save() {
  197.                 global $bp;
  198.  
  199.                 if ( !isset( $_POST['save'] ) )
  200.                         return false;
  201.  
  202.                 check_admin_referer( 'groups_edit_save_' . $this->slug );
  203.  
  204.                 /* Insert your edit screen save code here */
  205.  
  206.                 /* To post an error/success message to the screen, use the following */
  207.                 if ( !$success )
  208.                         bp_core_add_message( __( 'There was an error saving, please try again', 'buddypress' ), 'error' );
  209.                 else
  210.                         bp_core_add_message( __( 'Settings saved successfully', 'buddypress' ) );
  211.  
  212.                 bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . '/admin/' . $this->slug );
  213.         }
  214.  
  215.         function display() {
  216.                 echo "map goes here :)";
  217.         }
  218.  
  219.         function widget_display() { ?>
  220.                 <div class=&quot;info-group&quot;>
  221.                         <h4><?php echo attribute_escape( $this->name ) ?></h4>
  222.                         <p>
  223.                                 You could display a small snippet of information from your group extension here. It will show on the group
  224.                                 home screen.
  225.                         </p>
  226.                 </div>
  227.                 <?php
  228.         }
  229. }
  230. bp_register_group_extension( 'Google_Group_Extension' );
  231.  
  232.  
  233.  
  234.  
  235. /*
  236. ===============================================================================
  237.  
  238.    insert styles into <head>
  239.  
  240. ===============================================================================
  241. */
  242.  
  243.  
  244.  
  245.  
  246.        
  247.         add_action ('wp_head', 'printStyles');
  248.        
  249.         function printStyles() {
  250.                 print "<!-- styles for Simple Google Map -->\n<style type='text/css'>\n";
  251.                 print get_option('SGMcss');
  252.                 print "\n</style>\n<!-- end styles for Simple Google Map -->\n";
  253.         }
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260. ?>