You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							106 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							106 lines
						
					
					
						
							2.8 KiB
						
					
					
				| <?php | |
| 
 | |
| ORM::configure('mysql:host=' . Config::$dbHost . ';dbname=' . Config::$dbName); | |
| ORM::configure('username', Config::$dbUsername); | |
| ORM::configure('password', Config::$dbPassword); | |
| 
 | |
| function render($page, $data) { | |
|   global $app; | |
|   return $app->render('layout.php', array_merge($data, array('page' => $page))); | |
| }; | |
| 
 | |
| function partial($template, $data=array(), $debug=false) { | |
|   global $app; | |
| 
 | |
|   if($debug) { | |
|     $tpl = new Savant3(\Slim\Extras\Views\Savant::$savantOptions); | |
|     echo '<pre>' . $tpl->fetch($template . '.php') . '</pre>'; | |
|     return ''; | |
|   } | |
| 
 | |
|   ob_start(); | |
|   $tpl = new Savant3(\Slim\Extras\Views\Savant::$savantOptions); | |
|   foreach($data as $k=>$v) { | |
|     $tpl->{$k} = $v; | |
|   } | |
|   $tpl->display($template . '.php'); | |
|   return ob_get_clean(); | |
| } | |
| 
 | |
| function session($key) { | |
|   if(array_key_exists($key, $_SESSION)) | |
|     return $_SESSION[$key]; | |
|   else | |
|     return null; | |
| } | |
| 
 | |
| function k($a, $k, $default=null) { | |
|   if(is_array($k)) { | |
|     $result = true; | |
|     foreach($k as $key) { | |
|       $result = $result && array_key_exists($key, $a); | |
|     } | |
|     return $result; | |
|   } else { | |
|     if(is_array($a) && array_key_exists($k, $a) && $a[$k]) | |
|       return $a[$k]; | |
|     elseif(is_object($a) && property_exists($a, $k) && $a->$k) | |
|       return $a->$k; | |
|     else | |
|       return $default; | |
|   } | |
| } | |
| 
 | |
| function get_timezone($lat, $lng) { | |
|   try { | |
|     $ch = curl_init(); | |
|     curl_setopt($ch, CURLOPT_URL, 'http://timezone-api.geoloqi.com/timezone/'.$lat.'/'.$lng); | |
|     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
|     $response = curl_exec($ch); | |
|     $tz = @json_decode($response); | |
|     if($tz) | |
|       return new DateTimeZone($tz->timezone); | |
|   } catch(Exception $e) { | |
|     return null; | |
|   } | |
|   return null; | |
| } | |
| 
 | |
| function micropub_post($endpoint, $params, $access_token) { | |
|   $ch = curl_init(); | |
|   curl_setopt($ch, CURLOPT_URL, $endpoint); | |
|   curl_setopt($ch, CURLOPT_HTTPHEADER, array( | |
|     'Authorization: Bearer ' . $access_token | |
|   )); | |
|   curl_setopt($ch, CURLOPT_POST, true); | |
|   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array_merge(array( | |
|     'h' => 'entry' | |
|   ), $params))); | |
|   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
|   curl_setopt($ch, CURLOPT_HEADER, true); | |
|   $response = curl_exec($ch); | |
|   $error = curl_error($ch); | |
|   return array( | |
|     'response' => $response, | |
|     'error' => $error, | |
|     'curlinfo' => curl_getinfo($ch) | |
|   ); | |
| } | |
| 
 | |
| function static_map($latitude, $longitude, $height=180, $width=700, $zoom=14) { | |
|   return 'http://static-maps.pdx.esri.com/img.php?marker[]=lat:' . $latitude . ';lng:' . $longitude . ';icon:small-blue-cutout&basemap=gray&width=' . $width . '&height=' . $height . '&zoom=' . $zoom; | |
| } | |
| 
 | |
| function relative_time($date) { | |
|   static $rel; | |
|   if(!isset($rel)) { | |
|     $config = array( | |
|         'language' => '\RelativeTime\Languages\English', | |
|         'separator' => ', ', | |
|         'suffix' => true, | |
|         'truncate' => 1, | |
|     ); | |
|     $rel = new \RelativeTime\RelativeTime($config); | |
|   } | |
|   return $rel->timeAgo($date); | |
| }
 |