use single shortcode_handler and catch missing default URL
This commit is contained in:
parent
0e3aefd62a
commit
24b893f44b
156
freifunkmeta.php
156
freifunkmeta.php
|
@ -22,105 +22,91 @@ function ff_meta_getmetadata ($url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! shortcode_exists( 'ff_state' ) ) {
|
if ( ! shortcode_exists( 'ff_state' ) ) {
|
||||||
add_shortcode( 'ff_state', 'ff_meta_shortcode_state');
|
add_shortcode( 'ff_state', 'ff_meta_shortcode_handler');
|
||||||
|
}
|
||||||
|
if ( ! shortcode_exists( 'ff_services' ) ) {
|
||||||
|
add_shortcode( 'ff_services', 'ff_meta_shortcode_handler');
|
||||||
|
}
|
||||||
|
if ( ! shortcode_exists( 'ff_contact' ) ) {
|
||||||
|
add_shortcode( 'ff_contact', 'ff_meta_shortcode_handler');
|
||||||
}
|
}
|
||||||
// Example:
|
// Example:
|
||||||
// [ff_state]
|
// [ff_state]
|
||||||
// [ff_state url="http://meta.hamburg.freifunk.net/ffhh.json"]
|
// [ff_state url="http://meta.hamburg.freifunk.net/ffhh.json"]
|
||||||
function ff_meta_shortcode_state( $atts ) {
|
function ff_meta_shortcode_handler( $atts, $content, $name ) {
|
||||||
$default_url = get_option( 'ff_meta_url' );
|
$default_url = get_option( 'ff_meta_url' );
|
||||||
extract(shortcode_atts( array(
|
extract(shortcode_atts( array(
|
||||||
'url' => $default_url,
|
'url' => $default_url,
|
||||||
), $atts));
|
), $atts));
|
||||||
|
|
||||||
$metadata = ff_meta_getmetadata ($url);
|
if (empty($url) || false === ($metadata = ff_meta_getmetadata ($url))) {
|
||||||
$state = $metadata['state'];
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$outstr = "<div class=\"ff $name\">";
|
||||||
|
switch ($name) {
|
||||||
|
case 'ff_state':
|
||||||
|
$state = $metadata['state'];
|
||||||
|
$outstr .= sprintf('%s', $state['nodes']);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'ff_services':
|
||||||
|
$services = $metadata['services'];
|
||||||
|
$outstr .= '<ul>';
|
||||||
|
foreach ($services as $service) {
|
||||||
|
$outstr .= sprintf('<li>%s (%s): <a href="%s">%s</a></li>',
|
||||||
|
$service['serviceName'], $service['serviceDescription'],
|
||||||
|
$service['internalUri'], $service['internalUri']);
|
||||||
|
}
|
||||||
|
$outstr .= '</ul>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'ff_contact':
|
||||||
|
$outstr .= '<p>';
|
||||||
|
$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: <a href=\"mailto:%s\">%s</a><br />\n", $contact['email'], $contact['email']);
|
||||||
|
}
|
||||||
|
if (!empty($contact['ml'])) {
|
||||||
|
$outstr .= sprintf("Mailingliste: <a href=\"mailto:%s\">%s</a><br />\n", $contact['ml'], $contact['ml']);
|
||||||
|
}
|
||||||
|
if (!empty($contact['irc'])) {
|
||||||
|
$outstr .= sprintf("IRC: <a href=\"%s\">%s</a><br />\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: <a href=\"%s\">%s</a><br />\n", $twitter_url, $twitter_handle);
|
||||||
|
}
|
||||||
|
if (!empty($contact['facebook'])) {
|
||||||
|
$outstr .= sprintf("Facebook: <a href=\"%s\">%s</a><br />\n", $contact['facebook'], $contact['facebook']);
|
||||||
|
}
|
||||||
|
if (!empty($contact['googleplus'])) {
|
||||||
|
$outstr .= sprintf("G+: <a href=\"%s\">%s</a><br />\n", $contact['googleplus'], $contact['googleplus']);
|
||||||
|
}
|
||||||
|
if (!empty($contact['jabber'])) {
|
||||||
|
$outstr .= sprintf("XMPP: <a href=\"xmpp:%s\">%s</a><br />\n", $contact['jabber'], $contact['jabber']);
|
||||||
|
}
|
||||||
|
$outstr .= '</p>';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Output
|
// Output
|
||||||
$outstr = sprintf('%s',
|
$outstr .= "</div>";
|
||||||
$state['nodes']);
|
|
||||||
return $outstr;
|
return $outstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! shortcode_exists( 'ff_services' ) ) {
|
|
||||||
add_shortcode( 'ff_services', 'ff_meta_shortcode_services');
|
|
||||||
}
|
|
||||||
// Example:
|
|
||||||
// [ff_services]
|
|
||||||
// [ff_services url="http://meta.hamburg.freifunk.net/ffhh.json"]
|
|
||||||
function ff_meta_shortcode_services( $atts ) {
|
|
||||||
$default_url = get_option( 'ff_meta_url' );
|
|
||||||
extract(shortcode_atts( array(
|
|
||||||
'url' => $default_url,
|
|
||||||
), $atts));
|
|
||||||
|
|
||||||
$metadata = ff_meta_getmetadata ($url);
|
|
||||||
$services = $metadata['services'];
|
|
||||||
|
|
||||||
// Output
|
|
||||||
$outstr = '<div class="ff ff_services"><ul>';
|
|
||||||
foreach ($services as $service) {
|
|
||||||
$outstr .= sprintf('<li>%s (%s): <a href="%s">%s</a></li>',
|
|
||||||
$service['serviceName'], $service['serviceDescription'],
|
|
||||||
$service['internalUri'], $service['internalUri']);
|
|
||||||
}
|
|
||||||
$outstr .= '</ul></div>';
|
|
||||||
return $outstr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! shortcode_exists( 'ff_contact' ) ) {
|
|
||||||
add_shortcode( 'ff_contact', 'ff_meta_shortcode_contact');
|
|
||||||
}
|
|
||||||
// Example:
|
|
||||||
// [ff_contact]
|
|
||||||
// [ff_contact url="http://meta.hamburg.freifunk.net/ffhh.json"]
|
|
||||||
function ff_meta_shortcode_contact( $atts ) {
|
|
||||||
$default_url = get_option( 'ff_meta_url' );
|
|
||||||
extract(shortcode_atts( array(
|
|
||||||
'url' => $default_url,
|
|
||||||
), $atts));
|
|
||||||
|
|
||||||
$metadata = ff_meta_getmetadata ($url);
|
|
||||||
$contact = $metadata['contact'];
|
|
||||||
|
|
||||||
// Output -- rather ugly but the data is not uniform, some fields are URIs, some are usernames, ...
|
|
||||||
$outstr = '<div class="ff ff_contact"><p>';
|
|
||||||
if (!empty($contact['email'])) {
|
|
||||||
$outstr .= sprintf("E-Mail: <a href=\"mailto:%s\">%s</a><br />\n", $contact['email'], $contact['email']);
|
|
||||||
}
|
|
||||||
if (!empty($contact['ml'])) {
|
|
||||||
$outstr .= sprintf("Mailingliste: <a href=\"mailto:%s\">%s</a><br />\n", $contact['ml'], $contact['ml']);
|
|
||||||
}
|
|
||||||
if (!empty($contact['irc'])) {
|
|
||||||
$outstr .= sprintf("IRC: <a href=\"%s\">%s</a><br />\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: <a href=\"%s\">%s</a><br />\n", $twitter_url, $twitter_handle);
|
|
||||||
}
|
|
||||||
if (!empty($contact['facebook'])) {
|
|
||||||
$outstr .= sprintf("Facebook: <a href=\"%s\">%s</a><br />\n", $contact['facebook'], $contact['facebook']);
|
|
||||||
}
|
|
||||||
if (!empty($contact['googleplus'])) {
|
|
||||||
$outstr .= sprintf("G+: <a href=\"%s\">%s</a><br />\n", $contact['googleplus'], $contact['googleplus']);
|
|
||||||
}
|
|
||||||
if (!empty($contact['jabber'])) {
|
|
||||||
$outstr .= sprintf("XMPP: <a href=\"xmpp:%s\">%s</a><br />\n", $contact['jabber'], $contact['jabber']);
|
|
||||||
}
|
|
||||||
# maybe we do not want public phone numbers...
|
|
||||||
#if (!empty($contact['phone'])) {
|
|
||||||
# $outstr .= sprintf("Telephon: %s<br />\n", $contact['phone']);
|
|
||||||
#}
|
|
||||||
$outstr .= '</p></div>';
|
|
||||||
return $outstr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Options Page:
|
// Options Page:
|
||||||
add_action( 'admin_menu', 'ff_meta_admin_menu' );
|
add_action( 'admin_menu', 'ff_meta_admin_menu' );
|
||||||
|
|
Loading…
Reference in a new issue