czUtils.class.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. class czUtils {
  3. public static function frenchDateFormat($timestamp, $format = '%B %Y') {
  4. return utf8_encode(ucwords(strftime($format, $timestamp)));
  5. }
  6. public static function frenchDateFormatToTimestamp($date_format) {
  7. if (!preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $date_format)) {
  8. throw new Exception(sprintf('Le format de date suivant n\'est pas valide : "%s" (requis : JJ/MM/AAAA)', $date_format));
  9. return false;
  10. }
  11. list($d, $m, $y) = explode('/', $date_format);
  12. if (false === $timestamp = strtotime("$y-$m-$d")) {
  13. throw new Exception(sprintf('La date suivante n\'est pas valide : "%s"', $date_format));
  14. return false;
  15. }
  16. return $timestamp;
  17. }
  18. public static function getLatitudeAndLongitude($address) {
  19. $result = false;
  20. $xml = simplexml_load_string(utf8_encode(file_get_contents(sprintf('https://maps.google.com/maps/geo?q=%s&output=xml&key=%s', urlencode($address), sfConfig::get('app_gmap')))));
  21. $code = (int)$xml->Response->Status->code;
  22. //printf("[%d] %s\n", $code, $address);
  23. if (200 == $code) {
  24. // Adresse correcte
  25. $coordinates = $xml->Response->Placemark->Point->coordinates;
  26. list($lng, $lat, $altitude) = explode(',', $coordinates);
  27. $result = array($lat, $lng);
  28. } elseif (601 == $code) {
  29. // Adresse manquante
  30. if ('' != $type) {
  31. // print_r(sprintf("\n" . '%s: Adresse "%s" complète inconnue pour "%s"', $type, $address, $name));
  32. }
  33. $result = false;
  34. } elseif (602 == $code) {
  35. // // Adresse invalide
  36. // set_time_limit(60);
  37. // $address = trim($object->getVille());
  38. // $xml = simplexml_load_string(utf8_encode(file_get_contents(sprintf('https://maps.google.com/maps/geo?q=%s&output=xml&key=%s', urlencode($address), sfConfig::get('app_sfGMaps_key')))));
  39. // $code = (int)$xml->Response->Status->code;
  40. // if (200 == $code) {
  41. // // Adresse correcte
  42. // $coordinates = $xml->Response->Placemark->Point->coordinates;
  43. // list($lng, $lat, $altitude) = explode(',', $coordinates);
  44. // $object->setLatitude($lat);
  45. // $object->setLongitude($lng);
  46. // $object->save();
  47. // } elseif (601 == $code) {
  48. // // Adresse manquante
  49. // if ('' != $type) {
  50. // print_r(sprintf("\n" . '%s: Ville "%s" inconnue pour "%s"', $type, $address, $name));
  51. // }
  52. // } elseif (602 == $code) {
  53. // // Adresse invalide
  54. // if ('' != $type) {
  55. // print_r(sprintf("\n" . '%s: Ville "%s" invalide pour "%s"', $type, $address, $name));
  56. // }
  57. // }
  58. }
  59. return $result;
  60. }
  61. public static function getLatestNodes($class, $count = -1, $dateMethod = 'getPublishedAt'){
  62. $nodesIterator = new FilteredContentTreeNodeIterator(ContentTree::instance(), array($class));
  63. $nodes = array();
  64. while ($node = $nodesIterator->next()) {
  65. $page = $node->getPage();
  66. $publishedAt = $page->$dateMethod(null);
  67. while (isset($nodes[$publishedAt])) {
  68. $publishedAt++;
  69. }
  70. $nodes[$publishedAt] = array('node' => $node, 'page' => $page);
  71. }
  72. krsort($nodes);
  73. if($count>0){
  74. for($i = count($nodes) - $count; $i >0; $i--){
  75. array_pop($nodes);
  76. }
  77. }
  78. return $nodes;
  79. }
  80. }