\n"; } $url = $directory[$city]; if (false === ($metadata = ff_meta_getmetadata ($url))) { return "\n"; } $outstr = "
"; switch ($name) { case 'ff_state': $state = $metadata['state']; $outstr .= sprintf('%s', $state['nodes']); break; case 'ff_services': $outstr .= ''; break; case 'ff_contact': $outstr .= '

'; $contact = $metadata['contact']; // Output -- rather ugly but the data is not uniform, some fields are URIs, some are usernames, ... if (!empty($contact['email'])) { $outstr .= sprintf("E-Mail: %s
\n", $contact['email'], $contact['email']); } if (!empty($contact['ml'])) { $outstr .= sprintf("Mailingliste: %s
\n", $contact['ml'], $contact['ml']); } if (!empty($contact['irc'])) { $outstr .= sprintf("IRC: %s
\n", $contact['irc'], $contact['irc']); } if (!empty($contact['twitter'])) { // catch username instead of URI if ($contact['twitter'][0] === "@") { $twitter_url = 'http://twitter.com/'.ltrim($contact['twitter'], "@"); $twitter_handle = $contact['twitter']; } else { $twitter_url = $contact['twitter']; $twitter_handle = '@' . substr($contact['twitter'], strrpos($contact['twitter'], '/') + 1); } $outstr .= sprintf("Twitter: %s
\n", $twitter_url, $twitter_handle); } if (!empty($contact['facebook'])) { $outstr .= sprintf("Facebook: %s
\n", $contact['facebook'], $contact['facebook']); } if (!empty($contact['googleplus'])) { $outstr .= sprintf("G+: %s
\n", $contact['googleplus'], $contact['googleplus']); } if (!empty($contact['jabber'])) { $outstr .= sprintf("XMPP: %s
\n", $contact['jabber'], $contact['jabber']); } $outstr .= '

'; break; default: return ""; break; } // Output $outstr .= "
"; return $outstr; } // Options Page: add_action( 'admin_menu', 'ff_meta_admin_menu' ); function ff_meta_admin_menu() { add_options_page( 'FF Meta Plugin', // page title 'FF Meta', // menu title 'manage_options', // req'd capability 'ff_meta_plugin', // menu slug 'ff_meta_options_page' // callback function ); } add_action( 'admin_init', 'ff_meta_admin_init' ); function ff_meta_admin_init() { register_setting( 'ff_meta_settings-group', // group name 'ff_meta_cachetime' // option name ); register_setting( 'ff_meta_settings-group', // group name 'ff_meta_city' // option name ); add_settings_section( 'ff_meta_section-one', // ID 'Section One', // Title 'ff_meta_section_one_callback', // callback to fill 'ff_meta_plugin' // page to display on ); add_settings_field( 'ff_meta_city', // ID 'Default community', // Title 'ff_meta_city_callback', // callback to fill field 'ff_meta_plugin', // menu page=slug to display field on 'ff_meta_section-one', // section to display the field in array('label_for' => 'ff_meta_city_id') // ID of input element ); add_settings_field( 'ff_meta_cachetime', // ID 'Cache time', // Title 'ff_meta_cachetime_callback', // callback to fill field 'ff_meta_plugin', // menu page=slug to display field on 'ff_meta_section-one', // section to display the field in array('label_for' => 'ff_meta_cachetime_id') // ID of input element ); } function ff_meta_section_one_callback() { echo 'This Plugin provides shortcodes to display information from the Freifunk meta.json.'; } function ff_meta_cachetime_callback() { $time = get_option( 'ff_meta_cachetime', FF_META_DEFAULT_CACHETIME ); echo " minutes" ."

Data from external URLs is cached for this number of minutes.

"; } function ff_meta_city_callback() { if (false === ($directory = ff_meta_getmetadata ( FF_META_DEFAULT_DIR ))) { // TODO: error handling return; } $default_city = get_option( 'ff_meta_city', FF_META_DEFAULT_CITY ); echo ""; echo "

This is the default city parameter.

"; } function ff_meta_options_page() { ?>

Freifunk Meta Plugin Options