diff --git a/freifunk-versions.php b/freifunk-versions.php
index da0b8a9..53e5e00 100644
--- a/freifunk-versions.php
+++ b/freifunk-versions.php
@@ -9,143 +9,149 @@ Author URI: http://mschuette.name/
Licence: 2-clause BSD
*/
-define('FF_HH_STABLE_BASEDIR', 'http://updates.hamburg.freifunk.net/stable/');
-define('FF_HH_CACHETIME', 15);
+define( 'FF_HH_STABLE_BASEDIR', 'http://updates.hamburg.freifunk.net/stable/' );
+define( 'FF_HH_CACHETIME', 15 );
/* gets metadata from URL, handles caching */
-function ff_hh_getmanifest ($basedir) {
- // Caching
- if ( WP_DEBUG || ( false === ( $manifest = get_transient( "ff_hh_manifest" ) ) ) ) {
- $manifest = array();
- $url = $basedir . 'sysupgrade/manifest';
- $http_response = wp_remote_get( $url ); // TODO: error handling
- $input = wp_remote_retrieve_body( $http_response );
- foreach ( explode("\n", $input) as $line ) {
- $ret = sscanf($line, '%s %s %s %s', $hw, $sw_ver, $hash, $filename);
- if ($ret === 4) {
- if (preg_match('/^(.*)-v(\d+)$/', $hw, $matches)) {
- $hw = $matches[1];
- $hw_ver = $matches[2];
- } else {
- $hw_ver = '1';
- }
- $manifest[$hw][$hw_ver] = $filename;
- }
- }
+function ff_hh_getmanifest( $basedir ) {
+ // Caching
+ if ( WP_DEBUG || ( false === ( $manifest = get_transient( 'ff_hh_manifest' ) ) ) ) {
+ $manifest = array();
+ $url = $basedir . 'sysupgrade/manifest';
+ $http_response = wp_remote_get( $url ); // TODO: error handling
+ $input = wp_remote_retrieve_body( $http_response );
+ foreach ( explode( "\n", $input ) as $line ) {
+ $ret = sscanf( $line, '%s %s %s %s', $hw, $sw_ver, $hash, $filename );
+ if ( $ret === 4 ) {
+ if ( preg_match( '/^(.*)-v(\d+)$/', $hw, $matches ) ) {
+ $hw = $matches[1];
+ $hw_ver = $matches[2];
+ } else {
+ $hw_ver = '1';
+ }
+ $manifest[$hw][$hw_ver] = $filename;
+ }
+ }
- $cachetime = FF_HH_CACHETIME * MINUTE_IN_SECONDS;
- set_transient( "ff_hh_manifest", $manifest, $cachetime );
- }
- return $manifest;
+ $cachetime = FF_HH_CACHETIME * MINUTE_IN_SECONDS;
+ set_transient( 'ff_hh_manifest', $manifest, $cachetime );
+ }
+ return $manifest;
}
/* gets latest version from first manifest line */
-function ff_hh_getlatest ($basedir) {
- // Caching
- if ( false === ( $sw_ver = get_transient( "ff_hh_latestversion" ) ) ) {
- $sw_ver = 'unknown';
- $input = wp_remote_retrieve_body( wp_remote_get($basedir . 'sysupgrade/manifest') );
- foreach ( explode("\n", $input) as $line ) {
- $ret = sscanf($line, '%s %s %s %s', $hw, $sw_ver, $hash, $filename);
- if ($ret === 4) {
- // break processing on first matching line
- $cachetime = FF_HH_CACHETIME * MINUTE_IN_SECONDS;
- set_transient( "ff_hh_latestversion", $sw_ver, $cachetime );
- break;
- }
- }
- }
- return $sw_ver;
+function ff_hh_getlatest( $basedir ) {
+ // Caching
+ if ( false === ( $sw_ver = get_transient( 'ff_hh_latestversion' ) ) ) {
+ $sw_ver = 'unknown';
+ $input = wp_remote_retrieve_body( wp_remote_get( $basedir . 'sysupgrade/manifest' ) );
+ foreach ( explode( "\n", $input ) as $line ) {
+ $ret = sscanf( $line, '%s %s %s %s', $hw, $sw_ver, $hash, $filename );
+ if ( $ret === 4 ) {
+ // break processing on first matching line
+ $cachetime = FF_HH_CACHETIME * MINUTE_IN_SECONDS;
+ set_transient( 'ff_hh_latestversion', $sw_ver, $cachetime );
+ break;
+ }
+ }
+ }
+ return $sw_ver;
}
if ( ! shortcode_exists( 'ff_hh_latestversion' ) ) {
- add_shortcode( 'ff_hh_latestversion', 'ff_hh_shortcode_latestversion');
+ add_shortcode( 'ff_hh_latestversion', 'ff_hh_shortcode_latestversion' );
}
// Example:
// [ff_hh_latestversion]
function ff_hh_shortcode_latestversion( $atts, $content, $name ) {
- $sw_ver = ff_hh_getlatest(FF_HH_STABLE_BASEDIR);
- $outstr = "$sw_ver";
- return $outstr;
+ $sw_ver = ff_hh_getlatest( FF_HH_STABLE_BASEDIR );
+ $outstr = "$sw_ver";
+ return $outstr;
}
if ( ! shortcode_exists( 'ff_hh_versions' ) ) {
- add_shortcode( 'ff_hh_versions', 'ff_hh_shortcode_versions');
+ add_shortcode( 'ff_hh_versions', 'ff_hh_shortcode_versions' );
}
// Example:
// [ff_hh_versions]
// [ff_hh_versions grep="ubiquiti"]
function ff_hh_shortcode_versions( $atts, $content, $name ) {
- $manifest = ff_hh_getmanifest(FF_HH_STABLE_BASEDIR);
+ $manifest = ff_hh_getmanifest( FF_HH_STABLE_BASEDIR );
- $outstr = "
";
- $outstr .= '
Modell | Erstinstallation | Aktualisierung |
';
+ $outstr = "";
+ $outstr .= '
Modell | Erstinstallation | Aktualisierung |
';
- # optionally filter output by given substring
- if (is_array($atts)
- && array_key_exists('grep', $atts)
- && !empty($atts['grep'])) {
- $grep = $atts['grep'];
- } else {
- $grep = false;
- }
+ # optionally filter output by given substring
+ if ( is_array( $atts )
+ && array_key_exists( 'grep', $atts )
+ && ! empty( $atts['grep'] ) ) {
+ $grep = $atts['grep'];
+ } else {
+ $grep = false;
+ }
- foreach ($manifest as $hw => $versions) {
- // filter
- if ($grep && (false === strpos($hw, $grep))) {
- continue;
- }
- $hw = ff_hh_beautify_hw_name($hw, $grep);
- $outstr .= sprintf("\n%s | ", $hw);
+ foreach ( $manifest as $hw => $versions ) {
+ // filter
+ if ( $grep && ( false === strpos( $hw, $grep ) ) ) {
+ continue;
+ }
+ $hw = ff_hh_beautify_hw_name( $hw, $grep );
+ $outstr .= sprintf( "\n
%s | ", $hw );
- // factory versions
- $hw_ver_links = array();
- foreach ($versions as $hw_ver => $filename) {
- $filename = str_replace('-sysupgrade', '', $filename);
- $hw_ver_links[] = sprintf('%s.x',
- FF_HH_STABLE_BASEDIR.'factory/', $filename, $hw_ver);
- }
- $outstr .= 'Hardware Version ' . join(', ', $hw_ver_links) . ' | ';
+ // factory versions
+ $hw_ver_links = array();
+ foreach ( $versions as $hw_ver => $filename ) {
+ $filename = str_replace( '-sysupgrade', '', $filename );
+ $hw_ver_links[] = sprintf(
+ '%s.x',
+ FF_HH_STABLE_BASEDIR.'factory/',
+ $filename, $hw_ver
+ );
+ }
+ $outstr .= 'Hardware Version ' . join( ', ', $hw_ver_links ) . ' | ';
- // sysupgrade versions
- $hw_ver_links = array();
- foreach ($versions as $hw_ver => $filename) {
- $hw_ver_links[] = sprintf('%s.x',
- FF_HH_STABLE_BASEDIR.'sysupgrade/', $filename, $hw_ver);
- }
- $outstr .= 'Hardware Version ' . join(', ', $hw_ver_links) . ' | ';
+ // sysupgrade versions
+ $hw_ver_links = array();
+ foreach ( $versions as $hw_ver => $filename ) {
+ $hw_ver_links[] = sprintf(
+ '%s.x',
+ FF_HH_STABLE_BASEDIR.'sysupgrade/',
+ $filename, $hw_ver
+ );
+ }
+ $outstr .= 'Hardware Version ' . join( ', ', $hw_ver_links ) . ' | ';
- $outstr .= '
';
- }
+ $outstr .= '';
+ }
- $outstr .= '
';
- $outstr .= '
';
- // $outstr .= ''.print_r($manifest, true).'
';
- return $outstr;
+ $outstr .= '
';
+ $outstr .= '
';
+ // $outstr .= ''.print_r( $manifest, true ).'
';
+ return $outstr;
}
// some crude rules to add capitalization and whitespace to the
// hardware model name.
// set $discard_vendor to strip the vendor name
-// (used for single-vendor lists, e.g. $discard_vendor = 'tp-link')
-function ff_hh_beautify_hw_name($hw, $discard_vendor = "") {
- if (!strncmp($hw, 'tp-link', 7)) {
- if ($discard_vendor) $hw = str_replace($discard_vendor, '', $hw);
- $hw = strtoupper($hw);
- $hw = str_replace('-', ' ', $hw);
- $hw = str_replace('TP LINK ', 'TP-Link ', $hw);
- $hw = str_replace(' TL ', ' TL-', $hw);
- } elseif (!strncmp($hw, 'ubiquiti', 8)) {
- if ($discard_vendor) $hw = str_replace($discard_vendor, '', $hw);
- $hw = str_replace('bullet-m', 'bullet-m / nanostation-loco-m', $hw);
- $hw = str_replace('-m', ' M2', $hw);
- $hw = str_replace('-', ' ', $hw);
- $hw = ucwords($hw);
- } elseif (!strncmp($hw, 'd-link', 6)) {
- if ($discard_vendor) $hw = str_replace($discard_vendor, '', $hw);
- $hw = str_replace('-', ' ', $hw);
- $hw = str_replace('d link ', 'D-Link ', $hw);
- $hw = str_replace(' dir ', ' DIR-', $hw);
- }
- return $hw;
+// (used for single-vendor lists, e.g. $discard_vendor = 'tp-link' )
+function ff_hh_beautify_hw_name( $hw, $discard_vendor = '' ) {
+ if ( ! strncmp( $hw, 'tp-link', 7 ) ) {
+ if ( $discard_vendor ) $hw = str_replace( $discard_vendor, '', $hw );
+ $hw = strtoupper( $hw );
+ $hw = str_replace( '-', ' ', $hw );
+ $hw = str_replace( 'TP LINK ', 'TP-Link ', $hw );
+ $hw = str_replace( ' TL ', ' TL-', $hw );
+ } elseif ( ! strncmp( $hw, 'ubiquiti', 8 ) ) {
+ if ( $discard_vendor ) $hw = str_replace( $discard_vendor, '', $hw );
+ $hw = str_replace( 'bullet-m', 'bullet-m / nanostation-loco-m', $hw );
+ $hw = str_replace( '-m', ' M2', $hw );
+ $hw = str_replace( '-', ' ', $hw );
+ $hw = ucwords( $hw );
+ } elseif ( ! strncmp( $hw, 'd-link', 6 ) ) {
+ if ( $discard_vendor ) $hw = str_replace( $discard_vendor, '', $hw );
+ $hw = str_replace( '-', ' ', $hw );
+ $hw = str_replace( 'd link ', 'D-Link ', $hw );
+ $hw = str_replace( ' dir ', ' DIR-', $hw );
+ }
+ return $hw;
}
diff --git a/tests/test-simple.php b/tests/test-simple.php
index fa25192..0c9b5a5 100644
--- a/tests/test-simple.php
+++ b/tests/test-simple.php
@@ -1,21 +1,23 @@
assertEquals($item[2], trim(ff_hh_beautify_hw_name($item[0], $item[1])));
+ function test_beautify() {
+ $cmplist = array( // examples with and without grep param
+ array( 'tp-link-tl-wr740n-nd', '', 'TP-Link TL-WR740N ND' ),
+ array( 'tp-link-tl-wr740n-nd', 'tp-link', 'TL-WR740N ND' ),
+ array( 'tp-link-tl-wdr4300', '', 'TP-Link TL-WDR4300' ),
+ array( 'tp-link-tl-wdr4300', 'tp-link', 'TL-WDR4300' ),
+ array( 'ubiquiti-unifi', '', 'Ubiquiti Unifi' ),
+ array( 'ubiquiti-unifi', 'ubiquiti', 'Unifi' ),
+ array( 'ubiquiti-bullet-m', '', 'Ubiquiti Bullet M2 / Nanostation Loco M2' ),
+ array( 'ubiquiti-bullet-m', 'ubiquiti', 'Bullet M2 / Nanostation Loco M2' ),
+ array( 'd-link-dir-615-rev-e1', '', 'D-Link DIR-615 rev e1' ),
+ array( 'd-link-dir-615-rev-e1', 'd-link', 'DIR-615 rev e1' ),
+ );
+ foreach ( $cmplist as $item ) {
+ $expect = $item[2];
+ $result = ff_hh_beautify_hw_name( $item[0], $item[1] );
+ $this->assertEquals( $expect, trim( $result ) );
+ }
}
- }
}