$default_url, ), $atts)); if (empty($url) || false === ($metadata = ff_meta_getmetadata ($url))) { return ''; } $outstr = "
"; switch ($name) { case 'ff_state': $state = $metadata['state']; $outstr .= sprintf('%s', $state['nodes']); break; case 'ff_services': $services = $metadata['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_url' // 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_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 ); add_settings_field( 'ff_meta_url', // ID 'URL of meta.json', // Title 'ff_meta_url_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 ); add_settings_field( 'ff_meta_dir', // ID 'URL of directory.json', // Title 'ff_meta_dir_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 ); } 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' ); if (empty($time)) { $time = "15"; } echo " minutes" ."

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

"; } function ff_meta_dir_callback() { $url = get_option( 'ff_meta_dir' ); if (empty($url)) { $url = "https://raw.githubusercontent.com/freifunk/directory.api.freifunk.net/master/directory.json"; } echo "" ."

Please keep the default unless you really know what you are doing.

"; } function ff_meta_url_callback() { $url = get_option( 'ff_meta_url' ); if (empty($url)) { $url = "http://meta.hamburg.freifunk.net/ffhh.json"; } echo "" ."

This will be the default for all tags without url=\"xyz\" parameter.

"; } function ff_meta_options_page() { ?>

Freifunk Meta Plugin Options