PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/ecofim-services/ecofilm-metro.php

https://gitlab.com/eco-film-festival/ecof-developer-2016
PHP | 302 lines | 263 code | 23 blank | 16 comment | 16 complexity | de1e4c4fc8845b6d852e6c4d29aadb1f MD5 | raw file
  1. <?
  2. require 'ecofilm-csv.php';
  3. if(!class_exists('WP_Plugin_Ecofim_Service_Metro')){
  4. class WP_Plugin_Ecofim_Service_Metro extends WP_Plugin_Ecofim_Service_csv
  5. {
  6. private $url_path_swf;
  7. function __construct() {
  8. //add_action("wp_enqueue_scripts",array(&$this,'add_dcwss_scripts'));
  9. //$this->url_path_swf = plugins_url('projekktor/swf/StrobeMediaPlayback/', __FILE__);
  10. }
  11. private function time_elapsed_string($datetime, $full = false) {
  12. $now = new DateTime;
  13. $ago = new DateTime($datetime);
  14. $diff = $now->diff($ago);
  15. $diff->w = floor($diff->d / 7);
  16. $diff->d -= $diff->w * 7;
  17. $string = array(
  18. 'y' => 'year',
  19. 'm' => 'month',
  20. 'w' => 'week',
  21. 'd' => 'day',
  22. 'h' => 'hour',
  23. 'i' => 'minute',
  24. 's' => 'second',
  25. );
  26. foreach ($string as $k => &$v) {
  27. if ($diff->$k) {
  28. $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
  29. } else {
  30. unset($string[$k]);
  31. }
  32. }
  33. if (!$full) $string = array_slice($string, 0, 1);
  34. return $string ? implode(', ', $string) . ' ago' : 'just now';
  35. }
  36. public function ecofilm_metro( $atts, $content = null )
  37. {
  38. self::register_styles();
  39. self::regiter_script();
  40. $lang = (isset($_GET['lang']))?$_GET['lang']:'es';
  41. $iconsArray = array("flaticon-cloud351","flaticon-cloud352","flaticon-cloud353","flaticon-cloud354","flaticon-cloud355","flaticon-cloud356","flaticon-cloud357","flaticon-cloud358","flaticon-cloud359","flaticon-cloud360","flaticon-cloud361","flaticon-cloud362","flaticon-cloud363","flaticon-cloud364","flaticon-clouds21","flaticon-cloudy54","flaticon-cloudy55","flaticon-cloudy56","flaticon-cloudy57","flaticon-cloudy58","flaticon-compass114","flaticon-compass2","flaticon-compass3","flaticon-compass4","flaticon-degrees2","flaticon-eclipse6","flaticon-fahrenheit7","flaticon-fog1","flaticon-fog22","flaticon-foggy1","flaticon-fog","flaticon-hail8","flaticon-hail","flaticon-half moon","flaticon-hurricane1","flaticon-lighting1","flaticon-lightning32","flaticon-lightning33","flaticon-lightning34","flaticon-lightning35","flaticon-lightning36","flaticon-moon160","flaticon-moon161","flaticon-moon162","flaticon-moon3","flaticon-rain59","flaticon-rain60","flaticon-rain61","flaticon-rain62","flaticon-rain63","flaticon-rain64","flaticon-rain65","flaticon-rain66","flaticon-rain67","flaticon-rain68","flaticon-rain69","flaticon-rain70","flaticon-rain71","flaticon-rain72","flaticon-rain73","flaticon-raindrop4","flaticon-raindrops7","flaticon-rainy1","flaticon-rainy20","flaticon-snowflake","flaticon-storm15","flaticon-storm16","flaticon-storm17","flaticon-storm2","flaticon-storm","flaticon-sun100","flaticon-sun4","flaticon-sunrise8","flaticon-sunset10","flaticon-sunset11","flaticon-thermometer2","flaticon-thermometer63","flaticon-thermometer65","flaticon-thermometer66","flaticon-umbrella58","flaticon-umbrella59","flaticon-wind36","flaticon-wind37","flaticon-wind38","flaticon-wind39","flaticon-wind40","flaticon-wind41","flaticon-wind42","flaticon-wind43","flaticon-wind44","flaticon-wind45");
  42. $weather_services = array(
  43. array(
  44. 'service_url' => 'http://api.openweathermap.org/data/2.5/weather?id=3530597&units=metric&lang='.$lang,
  45. 'name' => 'Ciudad de México'
  46. ),
  47. array(
  48. 'service_url' => 'http://api.openweathermap.org/data/2.5/weather?id=4005539&units=metric&lang='.$lang,
  49. 'name' => 'Guadalajara, Jalisco'
  50. ),
  51. array(
  52. 'service_url' => 'http://api.openweathermap.org/data/2.5/weather?id=3995465&units=metric&lang='.$lang,
  53. 'name' => 'Monterrey, Nuevo León'
  54. ),
  55. array(
  56. 'service_url' => 'http://api.openweathermap.org/data/2.5/weather?id=3521081&units=metric&lang='.$lang,
  57. 'name' => 'Puebla, Puebla'
  58. ),
  59. array(
  60. 'service_url' => 'http://api.openweathermap.org/data/2.5/weather?id=5389489&units=metric&lang='.$lang,
  61. 'name' => 'Sacramento, California'
  62. )
  63. );
  64. $news_services = array(
  65. array(
  66. 'service_url' => 'https://news.google.com.mx/news/section?pz=1&cf=all&q=cambio%20climatico&siidp=b78f250f06095734494bf768f81c1ac13b3f&ict=ln&num=3&output=rss',
  67. 'name' => 'Google News : Cambio Climatico'
  68. ),
  69. array(
  70. 'service_url' => 'https://news.google.com.mx/news/section?pz=1&cf=all&q=climate%20change&siidp=b78f250f06095734494bf768f81c1ac13b3f&ict=ln&num=3&output=rss',
  71. 'name' => 'Google News : Cambio Climatico'
  72. )
  73. );
  74. $icon_url = 'http://openweathermap.org/img/w/';
  75. ob_start();
  76. ?>
  77. <div class="eco-metro">
  78. <!-- weather-df -->
  79. <? foreach ($weather_services as $location) :
  80. try {
  81. $location_json = @file_get_contents($location['service_url']);
  82. if($location_json === FALSE) {
  83. echo '<!-- $content error -->';
  84. } else {
  85. $location_name = $location['name'];
  86. $location = json_decode($location_json,true);
  87. $location_temp = number_format((float)$location[main][temp], 1, '.', '');
  88. $location_temp_min = number_format((float)$location[main][temp_min], 1, '.', '');
  89. $location_temp_max = number_format((float)$location[main][temp_max], 1, '.', '');
  90. $location_humidity = number_format((float)$location[main][humidity], 1, '.', '');
  91. ?>
  92. <!-- weather-location -->
  93. <figure class="item weather">
  94. <figcaption>
  95. <div class="weather-title-1">&nbsp;</div>
  96. <div class="weather-title"><?= $location_name ?></div>
  97. <div class="weather-icon-container">
  98. <img src="<?= $icon_url.$location[weather][0][icon].'.png' ?>" class="eco-weather-icon" />
  99. </div>
  100. <div class="weather-val"><span class="weather-val-1"><?= $location_temp ?></span> °C</div>
  101. <div class="weather-title-2"><?= strtoupper($location[weather][0][description]) ?></div>
  102. <div class="weather-title-3"><i class="fa fa-tint"></i>&nbsp;<?= $location_humidity ?>%&nbsp;</div>
  103. </figcaption>
  104. </figure>
  105. <!--/weather-location -->
  106. <? }
  107. } catch (Exception $e) {
  108. echo '<!-- Excepción capturada: ', $e->getMessage(), '-->',"\n";
  109. } ?>
  110. <? endforeach; ?>
  111. <?
  112. //titulos segun idioma
  113. switch ($lang) {
  114. case 'en':
  115. $title1 = "National Weather Service";
  116. $title2 = "Call for Entries 5th edition";
  117. $title3 = "Press Conference";
  118. $title4 = "Winners 4th edition";
  119. $title5 = "Press Room";
  120. $title6 = "Teaser Call for Entries 5th edition";
  121. $sub1 = "SATELLITE";
  122. $sub2 = "Gallery";
  123. $sub3 = "Registry";
  124. $sub4 = "Read More";
  125. $convocatoria_url = "http://ecofilmfestival.org/convocatoria/?lang=en";
  126. $convocatoria = "https://vimeo.com/125166739";
  127. break;
  128. default:
  129. $title1 = "Servicio Meteorológico Nacional";
  130. $title2 = "Convocatoria 5ta edición";
  131. $title3 = "Cobertura Conferencia de Prensa";
  132. $title4 = "Ganadores 4ta edición";
  133. $title5 = "Sala de Prensa";
  134. $title6 = "Convocatoria 5ta edición";
  135. $sub1 = "SATÉLITE";
  136. $sub2 = "Galería";
  137. $sub3 = "Registro";
  138. $sub4 = "Leer más";
  139. $convocatoria_url = "http://ecofilmfestival.org/convocatoria/";
  140. $convocatoria = "https://vimeo.com/123269706";
  141. break;
  142. }
  143. ?>
  144. <figure class="item item-w2 item-h3">
  145. <figcaption class="climamx-visible">
  146. <div class="clima-data">
  147. <span class="sat-sub2"><?=$title1?></span>
  148. <span class="sat-sub" ><?=$sub1?></span><span class="sat"> GOES ESTE</span>
  149. </div>
  150. </figcaption>
  151. </figure>
  152. <figure class="item item-h2">
  153. <figcaption class="link-base">
  154. <div class="bg1 link-container1 grayscale" ></div>
  155. <span class="link-bg1 link-data1"><?=$title2?></span>
  156. <span class="link-data2"><a href="<?=$convocatoria_url?>" target="_blank"><i class="fa fa-link"></i> <?=$sub4?></span></a>
  157. </figcaption>
  158. </figure>
  159. <figure class="item item-h2">
  160. <figcaption class="link-base">
  161. <div class="bg2 link-container1 grayscale" ></div>
  162. <span class="link-bg1 link-data1"><?=$title3?></span>
  163. <span class="link-data2"><a href="http://ecofilmfestival.org/galeria-2/<?=($lang=='en')?'?lang='.$lang:''?>" target="_blank"><i class="fa fa-camera"></i> <?=$sub2?></span></a>
  164. </figcaption>
  165. </figure>
  166. <figure class="item">
  167. <figcaption class="link-base">
  168. <div class="bg3 link-container1 grayscale" ></div>
  169. <span class="link-bg1 link-data1"><?=$title4?></span>
  170. <span class="link-data2"><a href="<?=($lang=='en')?'http://ecofilmfestival.org/2014-solid-waste/?lang='.$lang:'http://ecofilmfestival.org/2014-residuos-solidos/'?>" target="_blank"><i class="fa fa-link"></i> ECOFILM Festival 2014</span></a>
  171. </figcaption>
  172. </figure>
  173. <figure class="item">
  174. <figcaption class="link-base">
  175. <div class="bg4 link-container1 grayscale" ></div>
  176. <span class="link-bg1 link-data1"><?=$title5?></span>
  177. <span class="link-data2"><a href="http://ecofilmfestival.org/prensa/registro/<?=($lang=='en')?'?lang='.$lang:''?>" target="_blank"><i class="fa fa-link"></i> <?=$sub3?></span></a>
  178. </figcaption>
  179. </figure>
  180. <figure class="item item-w2 item-h3">
  181. <figcaption class="link-base">
  182. <div class="bg5 link-container1 grayscale" ></div>
  183. <span class="link-data1 link-bg1"><?=$title6?></span>
  184. <span class="link-data2"><a href="<?=$convocatoria?>" rel="prettyPhotoMetro"><i class="fa fa-play-circle"></i> Video</span></a>
  185. </figcaption>
  186. </figure>
  187. <?
  188. $recent = new WP_Query("showposts=3&cat=105");
  189. foreach($recent->posts as $post) :
  190. if (has_post_thumbnail($post->ID)) {
  191. $retina = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'homepage-thumb-retina' );
  192. //echo '<img src="' . $retina[0] . '" alt="' . the_title() . '" width="24" height="24" />' ;
  193. $post_title = $post->post_title;
  194. $post_guid = $post->guid;
  195. ?>
  196. <figure class="item item-h2">
  197. <figcaption class="link-base">
  198. <div class="link-container1 grayscale" style="background-image: url(<?=$retina[0]?>); background-size: inherit; background-color: rgb(29, 29, 29); background-size: cover; background-repeat: no-repeat;" ></div>
  199. <span class="link-bg4 link-data1"><?= $post_title ?></span>
  200. <span class="link-data2"><a href="<?= $post_guid ?>" target="_blank"><i class="fa fa-link"></i> <?=$sub4?></span></a>
  201. </figcaption>
  202. </figure>
  203. <?
  204. };
  205. endforeach;
  206. ?>
  207. <?
  208. try {
  209. $xml = ($lang == 'en')?simplexml_load_file($news_services[1]['service_url']):simplexml_load_file($news_services[0]['service_url']);
  210. if ($xml === false) {
  211. echo "<!--Failed loading XML: ";
  212. foreach(libxml_get_errors() as $error) {
  213. echo "<br>", $error->message;
  214. }
  215. echo "-->";
  216. } else {
  217. ?>
  218. <!-- google-news -->
  219. <? foreach ($xml->channel->item as $item) : ?>
  220. <?php
  221. list($titulo, $fuente) = split(" - ", $item->title);
  222. ?>
  223. <figure class="item">
  224. <figcaption class="link-base link-bg5">
  225. <!-- begin : eco-not -->
  226. <div class="eco-not-container">
  227. <div class="eco-not-icon">
  228. <i class="<?=$iconsArray[array_rand($iconsArray)]?> ecof-iconsize-1" style="display: block;"></i>
  229. </div>
  230. <div class="eco-not-title">
  231. <span class="eco-not-fuente"><?=self::time_elapsed_string($item->pubDate)?></span><br/>
  232. <a href="<?=$item->link?>" target="_blank">
  233. <?=$titulo?>
  234. </a>
  235. <br/><span class="eco-not-fuente"><?=$fuente?></span>
  236. </div>
  237. </div>
  238. <!-- end : eco-not -->
  239. </figcaption>
  240. </figure>
  241. <? endforeach; ?>
  242. <!--/google-news -->
  243. <? }
  244. } catch (Exception $e) {
  245. echo '<!-- Excepción capturada: ', $e->getMessage(), '-->',"\n";
  246. } ?>
  247. </div>
  248. <?
  249. //------------- BEGIN : CONSOLA ----------------------------
  250. if(isset($_GET['cnl']) && $_GET['cnl'] == 1) {
  251. echo '<pre>';
  252. //foreach($recent->posts as $post) {
  253. /*if (has_post_thumbnail($post->ID)) {
  254. $retina = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'homepage-thumb-retina' );
  255. echo '<img src="' . $retina[0] . '" alt="' . the_title() . '" width="24" height="24" />' ;
  256. };*/
  257. print_r($xml->channel);
  258. //print_r($post->post_title);
  259. //}
  260. echo('<hr/>');
  261. //print_r($recent);
  262. echo '</pre>';
  263. }
  264. //------------- END : CONSOLA ----------------------------
  265. $eco_container = ob_get_contents();
  266. ob_end_clean();
  267. return $eco_container;
  268. }
  269. //-------------------------------------END : SELECCION OFICIAL
  270. public function regiter_script(){
  271. wp_enqueue_script( 'jquery' );
  272. //wp_enqueue_script('app_eco_serv_metro_isotope', plugins_url('js/jquery.isotope.min.js', __FILE__));
  273. wp_enqueue_script('app_eco_serv_metro', plugins_url('js/ecofilm-metro.js', __FILE__));
  274. }
  275. public function register_styles(){
  276. wp_enqueue_style( 'css_eco_serv_metro', plugins_url('css/ecofilm-metro.css', __FILE__));
  277. }
  278. }
  279. }