|
@ -20,7 +20,8 @@ |
|
|
* @subpackage Water_The_Theme/public |
|
|
* @subpackage Water_The_Theme/public |
|
|
* @author Jonathan Rosenbaum <gnuser@gmail.com> |
|
|
* @author Jonathan Rosenbaum <gnuser@gmail.com> |
|
|
*/ |
|
|
*/ |
|
|
class Water_The_Theme_Public { |
|
|
class Water_The_Theme_Public |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* The ID of this plugin. |
|
|
* The ID of this plugin. |
|
@ -47,11 +48,11 @@ class Water_The_Theme_Public { |
|
|
* @param string $plugin_name The name of the plugin. |
|
|
* @param string $plugin_name The name of the plugin. |
|
|
* @param string $version The version of this plugin. |
|
|
* @param string $version The version of this plugin. |
|
|
*/ |
|
|
*/ |
|
|
public function __construct( $plugin_name, $version ) { |
|
|
public function __construct($plugin_name, $version) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$this->plugin_name = $plugin_name; |
|
|
$this->plugin_name = $plugin_name; |
|
|
$this->version = $version; |
|
|
$this->version = $version; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -59,7 +60,8 @@ class Water_The_Theme_Public { |
|
|
* |
|
|
* |
|
|
* @since 1.0.0 |
|
|
* @since 1.0.0 |
|
|
*/ |
|
|
*/ |
|
|
public function enqueue_styles() { |
|
|
public function enqueue_styles() |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* This function is provided for demonstration purposes only. |
|
|
* This function is provided for demonstration purposes only. |
|
@ -73,8 +75,7 @@ class Water_The_Theme_Public { |
|
|
* class. |
|
|
* class. |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/water-the-theme-public.css', array(), $this->version, 'all' ); |
|
|
wp_enqueue_style($this->plugin_name, plugin_dir_url(__FILE__) . 'css/water-the-theme-public.css', array(), $this->version, 'all'); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -82,7 +83,8 @@ class Water_The_Theme_Public { |
|
|
* |
|
|
* |
|
|
* @since 1.0.0 |
|
|
* @since 1.0.0 |
|
|
*/ |
|
|
*/ |
|
|
public function enqueue_scripts() { |
|
|
public function enqueue_scripts() |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* This function is provided for demonstration purposes only. |
|
|
* This function is provided for demonstration purposes only. |
|
@ -96,27 +98,27 @@ class Water_The_Theme_Public { |
|
|
* class. |
|
|
* class. |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/water-the-theme-public.js', array( 'jquery' ), $this->version, false ); |
|
|
wp_enqueue_script($this->plugin_name, plugin_dir_url(__FILE__) . 'js/water-the-theme-public.js', array('jquery'), $this->version, false); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public function water_the_theme($thePage) { |
|
|
public function water_the_theme($thePage) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$doc = new DOMDocument(); |
|
|
$doc = new DOMDocument(); |
|
|
$doc->loadHTML($thePage); |
|
|
$doc->loadHTML($thePage); |
|
|
$xml_tree = simplexml_import_dom($doc); |
|
|
$xml_tree = simplexml_import_dom($doc); |
|
|
|
|
|
|
|
|
$short_code_name = (string)$xml_tree->body->div->attributes()->class; |
|
|
|
|
|
|
|
|
|
|
|
$thePage ="<table id='$short_code_name'>"; |
|
|
$short_code_name = (string)$xml_tree->body->div->attributes()->class; |
|
|
|
|
|
|
|
|
|
|
|
$thePage = "<table id='$short_code_name'>"; |
|
|
|
|
|
|
|
|
// front page |
|
|
// front page |
|
|
// [usgs_custom name="Timely Information" location='03071590,03071600,03071605' parameters='00010,00065,62614'] |
|
|
// [usgs_custom name="Timely Information" location='03071590,03071600,03071605' parameters='00010,00065,62614'] |
|
|
if ($short_code_name === 'timely-information') { |
|
|
if ($short_code_name === 'timely-information') { |
|
|
foreach ($xml_tree->body->div->div as $div) { |
|
|
foreach ($xml_tree->body->div->div as $div) { |
|
|
|
|
|
|
|
|
$value = (string)$div; |
|
|
$value = (string)$div; |
|
|
$class = (string)$div->attributes()->class; |
|
|
$class = (string)$div->attributes()->class; |
|
|
|
|
|
|
|
|
$datetime = (string)$div->attributes()->datetime; |
|
|
$datetime = (string)$div->attributes()->datetime; |
|
|
|
|
|
|
|
@ -130,57 +132,57 @@ class Water_The_Theme_Public { |
|
|
if ($sitename === 'Cheat Lake Near Stewartstown Wv') { |
|
|
if ($sitename === 'Cheat Lake Near Stewartstown Wv') { |
|
|
if ($parameter === '(AMSL)') { |
|
|
if ($parameter === '(AMSL)') { |
|
|
$sitename = 'Lake Level'; |
|
|
$sitename = 'Lake Level'; |
|
|
} else { |
|
|
} else { |
|
|
$sitename = 'Lake'; |
|
|
$sitename = 'Lake'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if ($sitename === 'Cheat River At Lake Lynn Pa') { |
|
|
if ($sitename === 'Cheat River At Lake Lynn Pa') { |
|
|
if ($parameter === 'Gage Height') { |
|
|
if ($parameter === 'Gage Height') { |
|
|
$sitename = 'Below Dam'; |
|
|
$sitename = 'Below Dam'; |
|
|
} else { |
|
|
} else { |
|
|
$sitename = 'At Dam'; |
|
|
$sitename = 'At Dam'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if ($sitename === 'Cheat River At Davidson Pa') { |
|
|
if ($sitename === 'Cheat River At Davidson Pa') { |
|
|
$sitename = 'Below Dam'; |
|
|
$sitename = 'Below Dam'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if ( $sitename !== 'Lake') { |
|
|
if ($sitename !== 'Lake') { |
|
|
$thePage .= '<tr>'; |
|
|
$thePage .= '<tr>'; |
|
|
$thePage .= "<td>$sitename $parameter</td><td>$value</td><td datetime='$datetime'></td>"; |
|
|
$thePage .= "<td>$sitename $parameter</td><td>$value</td><td datetime='$datetime'></td>"; |
|
|
$thePage .= '</tr>'; |
|
|
$thePage .= '</tr>'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//[nws_custom location='lldp1'] |
|
|
//[nws_custom location='lldp1'] |
|
|
$att = [ |
|
|
$att = [ |
|
|
'name' => 'Timely Information', |
|
|
'name' => 'Timely Information', |
|
|
'location' => 'lldp1', |
|
|
'location' => 'lldp1', |
|
|
'parameters' => null, |
|
|
'parameters' => null, |
|
|
'date_range' => 'current', |
|
|
'date_range' => 'current', |
|
|
'order' => 'asc' |
|
|
'order' => 'asc' |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
|
$nws_custom = Water_The_Theme_Public::nws_custom($att); |
|
|
$nws_custom = Water_The_Theme_Public::nws_custom($att); |
|
|
|
|
|
|
|
|
$thePage .= $nws_custom; |
|
|
$thePage .= $nws_custom; |
|
|
|
|
|
|
|
|
} // end Timely Information |
|
|
} // end Timely Information |
|
|
|
|
|
|
|
|
// Statics Page - last 5 lake data |
|
|
// Statics Page - last 5 lake data |
|
|
// [usgs_custom name="Statistics" location='03071590,03071600' parameters='00010,00065,62614' date_range='previous,5,16:00' order='desc'] |
|
|
// [usgs_custom name="Statistics" location='03071590,03071600' parameters='00010,00065,62614' date_range='previous,5,16:00' order='desc'] |
|
|
if ($short_code_name === 'Statistics') { |
|
|
if ($short_code_name === 'Statistics') { |
|
|
|
|
|
|
|
|
$statistics = []; |
|
|
$statistics = []; |
|
|
|
|
|
|
|
|
foreach ($xml_tree->body->div->div as $div) { |
|
|
foreach ($xml_tree->body->div->div as $div) { |
|
|
|
|
|
|
|
|
$value = (string)$div; |
|
|
$value = (string)$div; |
|
|
$class = (string)$div->attributes()->class; |
|
|
$class = (string)$div->attributes()->class; |
|
|
|
|
|
|
|
|
$datetime = (string)$div->attributes()->datetime; |
|
|
$datetime = (string)$div->attributes()->datetime; |
|
|
|
|
|
|
|
|
list($sitename, $parameter) = explode(' ', $class); |
|
|
list($sitename, $parameter) = explode(' ', $class); |
|
|
|
|
|
|
|
|
$sitename = ucwords(preg_replace('/_/', ' ', $sitename)); |
|
|
$sitename = ucwords(preg_replace('/_/', ' ', $sitename)); |
|
|
$parameter = ucwords(preg_replace('/_/', ' ', $parameter)); |
|
|
$parameter = ucwords(preg_replace('/_/', ' ', $parameter)); |
|
|
|
|
|
|
|
@ -190,117 +192,134 @@ class Water_The_Theme_Public { |
|
|
if ($sitename === 'Cheat Lake Near Stewartstown Wv') { |
|
|
if ($sitename === 'Cheat Lake Near Stewartstown Wv') { |
|
|
if ($parameter === '(AMSL)') { |
|
|
if ($parameter === '(AMSL)') { |
|
|
$sitename = 'Lake Level'; |
|
|
$sitename = 'Lake Level'; |
|
|
} else { |
|
|
} else { |
|
|
$sitename = 'Lake'; |
|
|
$sitename = 'Lake'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if ($sitename === 'Cheat River At Lake Lynn Pa') { |
|
|
if ($sitename === 'Cheat River At Lake Lynn Pa') { |
|
|
$sitename = 'Tail Race Level'; |
|
|
$sitename = 'Tail Race Level'; |
|
|
$parameter = ' (AMSL)'; |
|
|
$parameter = ' (AMSL)'; |
|
|
} |
|
|
} |
|
|
if ($sitename === 'Cheat River At Davidson Pa') { |
|
|
if ($sitename === 'Cheat River At Davidson Pa') { |
|
|
$sitename = 'Below Dam'; |
|
|
$sitename = 'Below Dam'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if ($sitename === 'Tail Race Level') { |
|
|
if ($sitename === 'Tail Race Level') { |
|
|
$value = (float)$value + 776.63; |
|
|
$value = (float)$value + 776.63; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($value !== 'n/a') { |
|
|
|
|
|
$statistics[] = "<tr><td>$sitename $parameter</td><td>$value</td><td datetime='$datetime'></td></tr>"; |
|
|
} |
|
|
} |
|
|
$statistics[] = "<tr><td>$sitename $parameter</td><td>$value</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
|
|
|
|
|
|
//PC::debug($value . " " . $sitename . " " . $parameter); |
|
|
//PC::debug($value . " " . $sitename . " " . $parameter); |
|
|
} // end foreach |
|
|
} // end foreach |
|
|
|
|
|
|
|
|
list($array1, $array2, $array3) = array_chunk($statistics, ceil(count($statistics) / 3)); |
|
|
|
|
|
foreach($array1 as $key => $value ) { |
|
|
usort($statistics, function ($a, $b) { |
|
|
$thePage .= $array2[$key]; |
|
|
preg_match('/datetime=\'(\d+)\'/', $a, $matchesA); |
|
|
$thePage .= $array3[$key]; |
|
|
preg_match('/datetime=\'(\d+)\'/', $b, $matchesB); |
|
|
|
|
|
|
|
|
|
|
|
$dateTimeA = isset($matchesA[1]) ? (int)$matchesA[1] : 0; |
|
|
|
|
|
$dateTimeB = isset($matchesB[1]) ? (int)$matchesB[1] : 0; |
|
|
|
|
|
|
|
|
|
|
|
return $dateTimeB - $dateTimeA; |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// highlight_string(var_export($statistics, true)); |
|
|
|
|
|
list($array1, $array2, $array3) = array_chunk($statistics, ceil(count($statistics) / 1)); |
|
|
|
|
|
// highlight_string(var_export($array1, true)); |
|
|
|
|
|
|
|
|
|
|
|
foreach ($array1 as $key => $value) { |
|
|
|
|
|
|
|
|
|
|
|
$thePage .= $array2[$key]; |
|
|
|
|
|
$thePage .= $array3[$key]; |
|
|
$thePage .= $value; |
|
|
$thePage .= $value; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//PC::debug($count); |
|
|
//PC::debug($count); |
|
|
|
|
|
|
|
|
} // end Statistics |
|
|
} // end Statistics |
|
|
|
|
|
|
|
|
$thePage .= '</table>'; |
|
|
$thePage .= '</table>'; |
|
|
return $thePage; |
|
|
return $thePage; |
|
|
|
|
|
|
|
|
} // function water the theme |
|
|
} // function water the theme |
|
|
|
|
|
|
|
|
public function nws_custom( $att ) { |
|
|
public function nws_custom($att) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
list($name, $location, $parameters, $date_range, $order) = [ |
|
|
list($name, $location, $parameters, $date_range, $order) = [ |
|
|
$att['name'], |
|
|
$att['name'], |
|
|
$att['location'], |
|
|
$att['location'], |
|
|
$att['parameters'], |
|
|
$att['parameters'], |
|
|
$att['date_range'], |
|
|
$att['date_range'], |
|
|
$att['order'] |
|
|
$att['order'] |
|
|
]; |
|
|
]; |
|
|
$locations = explode(',', $location); |
|
|
$locations = explode(',', $location); |
|
|
|
|
|
|
|
|
// Tail Race Level = Gage Datum + Gage Height |
|
|
// Tail Race Level = Gage Datum + Gage Height |
|
|
foreach ($locations as $location) { |
|
|
foreach ($locations as $location) { |
|
|
|
|
|
|
|
|
$thePage = get_transient('nws_custom-' . $name . $location . $date_range . $parameters . $order ); |
|
|
$thePage = get_transient('nws_custom-' . $name . $location . $date_range . $parameters . $order); |
|
|
|
|
|
|
|
|
if ( !$thePage ) { |
|
|
if (!$thePage) { |
|
|
|
|
|
|
|
|
$url = "http://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=$location&output=xml"; |
|
|
|
|
|
|
|
|
|
|
|
$response = wp_remote_get( $url ); |
|
|
$url = "http://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=$location&output=xml"; |
|
|
$data = wp_remote_retrieve_body( $response ); |
|
|
|
|
|
|
|
|
|
|
|
if ( ! $data ) { |
|
|
$response = wp_remote_get($url); |
|
|
return 'Nation Weather Service is not Responding.'; |
|
|
$data = wp_remote_retrieve_body($response); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!$data) { |
|
|
|
|
|
return 'Nation Weather Service is not Responding.'; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
$xml_tree = simplexml_load_string( $data ); |
|
|
|
|
|
if ( False === $xml_tree ) { |
|
|
$xml_tree = simplexml_load_string($data); |
|
|
return 'Unable to parse NWS XML'; |
|
|
if (False === $xml_tree) { |
|
|
} |
|
|
return 'Unable to parse NWS XML'; |
|
|
|
|
|
|
|
|
// space to underscore; all lower case; only special character allowed is underscored |
|
|
|
|
|
$SiteName = (string)$xml_tree->attributes()->name; |
|
|
|
|
|
$SiteName = preg_replace('/[^A-Za-z0-9_]/', '', strtolower(preg_replace('/\s+/', '_', $SiteName))); |
|
|
|
|
|
|
|
|
|
|
|
$waterlevel = (string)$xml_tree->zerodatum; |
|
|
|
|
|
|
|
|
|
|
|
$c = 0; |
|
|
|
|
|
foreach ( $xml_tree->observed->datum as $datum ) { |
|
|
|
|
|
|
|
|
|
|
|
// in javascript this works out of the box (* 1000) |
|
|
|
|
|
$datetime = strtotime($datum->valid) * 1000; |
|
|
|
|
|
$gageheight = $datum->primary; |
|
|
|
|
|
$waterflow = (string)$datum->secondary; |
|
|
|
|
|
|
|
|
|
|
|
if ($waterflow === '-999' || $waterflow === 0) { |
|
|
|
|
|
$waterflow = '0 cfs'; |
|
|
|
|
|
} else { |
|
|
|
|
|
$waterflow = $waterflow * 1000; |
|
|
|
|
|
$waterflow = $waterflow . " cfs"; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
$tail_race_level = (float)$waterlevel + (float)$gageheight; |
|
|
// space to underscore; all lower case; only special character allowed is underscored |
|
|
|
|
|
$SiteName = (string)$xml_tree->attributes()->name; |
|
|
if($c === 0 && $date_range === 'current') { |
|
|
$SiteName = preg_replace('/[^A-Za-z0-9_]/', '', strtolower(preg_replace('/\s+/', '_', $SiteName))); |
|
|
$thePage .= "<tr><td>Tail Race Level (AMSL)</td><td>$tail_race_level ft</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Gage Datum (AMSL)</td><td>$waterlevel ft</td><td datetime='$datetime'></td></tr>"; |
|
|
$waterlevel = (string)$xml_tree->zerodatum; |
|
|
//$thePage .= "<tr><td>Tail Water Flow</td><td>$waterflow</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
break; |
|
|
$c = 0; |
|
|
} else { |
|
|
foreach ($xml_tree->observed->datum as $datum) { |
|
|
$thePage .= "<tr><td>Tail Race Level (AMSL)</td><td>$tail_race_evel</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Gage Datum (AMSL)</td><td>$waterlevel ft</td><td datetime='$datetime'></td></tr>"; |
|
|
// in javascript this works out of the box (* 1000) |
|
|
//$thePage .= "<tr><td>Tail Water Flow</td><td>$waterflow</td><td datetime='$datetime'></td></tr>"; |
|
|
$datetime = strtotime($datum->valid) * 1000; |
|
|
} |
|
|
$gageheight = $datum->primary; |
|
|
$c++; |
|
|
$waterflow = (string)$datum->secondary; |
|
|
|
|
|
|
|
|
} // foreach xml_tree as site data |
|
|
if ($waterflow === '-999' || $waterflow === 0) { |
|
|
|
|
|
$waterflow = '0 cfs'; |
|
|
} // foreach NWS location |
|
|
} else { |
|
|
|
|
|
$waterflow = $waterflow * 1000; |
|
|
|
|
|
$waterflow = $waterflow . " cfs"; |
|
|
set_transient( 'nws_custom-' . $name . $location . $date_range . $parameters . $order, $thePage, 60 * 15 ); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$tail_race_level = (float)$waterlevel + (float)$gageheight; |
|
|
|
|
|
|
|
|
|
|
|
if ($c === 0 && $date_range === 'current') { |
|
|
|
|
|
$thePage .= "<tr><td>Tail Race Level (AMSL)</td><td>$tail_race_level ft</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Gage Datum (AMSL)</td><td>$waterlevel ft</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Tail Water Flow</td><td>$waterflow</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
break; |
|
|
|
|
|
} else { |
|
|
|
|
|
$thePage .= "<tr><td>Tail Race Level (AMSL)</td><td>$tail_race_evel</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Gage Datum (AMSL)</td><td>$waterlevel ft</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
//$thePage .= "<tr><td>Tail Water Flow</td><td>$waterflow</td><td datetime='$datetime'></td></tr>"; |
|
|
|
|
|
} |
|
|
|
|
|
$c++; |
|
|
|
|
|
} // foreach xml_tree as site data |
|
|
|
|
|
|
|
|
|
|
|
} // foreach NWS location |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set_transient('nws_custom-' . $name . $location . $date_range . $parameters . $order, $thePage, 60 * 15); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return $thePage; |
|
|
return $thePage; |
|
|