源码分享站 - 分享有用的

fatfree 展示 geo.php源代码

返回 下载fatfree: 单独下载geo.php源代码 - 下载整个fatfree源代码 - 类型:.php文件
  1. <?php
  2.  
  3. /*
  4.  
  5.         Copyright (c) 2009-2016 F3::Factory/Bong Cosca, All rights reserved.
  6.  
  7.         This file is part of the Fat-Free Framework (http://fatfreeframework.com).
  8.  
  9.         This is free software: you can redistribute it and/or modify it under the
  10.         terms of the GNU General Public License as published by the Free Software
  11.         Foundation, either version 3 of the License, or later.
  12.  
  13.         Fat-Free Framework is distributed in the hope that it will be useful,
  14.         but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.         General Public License for more details.
  17.  
  18.         You should have received a copy of the GNU General Public License along
  19.         with Fat-Free Framework.  If not, see <http://www.gnu.org/licenses/>.
  20.  
  21. */
  22.  
  23. namespace Web;
  24.  
  25. //! Geo plug-in
  26. class Geo extends \Prefab {
  27.  
  28.         /**
  29.         *       Return information about specified Unix time zone
  30.         *       @return array
  31.         *       @param $zone string
  32.         **/
  33.         function tzinfo($zone) {
  34.                 $ref=new \DateTimeZone($zone);
  35.                 $loc=$ref->getLocation();
  36.                 $trn=$ref->getTransitions($now=time(),$now);
  37.                 $out=[
  38.                         'offset'=>$ref->
  39.                                 getOffset(new \DateTime('now',new \DateTimeZone('UTC')))/3600,
  40.                         'country'=>$loc['country_code'],
  41.                         'latitude'=>$loc['latitude'],
  42.                         'longitude'=>$loc['longitude'],
  43.                         'dst'=>$trn[0]['isdst']
  44.                 ];
  45.                 unset($ref);
  46.                 return $out;
  47.         }
  48.  
  49.         /**
  50.         *       Return geolocation data based on specified/auto-detected IP address
  51.         *       @return array|FALSE
  52.         *       @param $ip string
  53.         **/
  54.         function location($ip=NULL) {
  55.                 $fw=\Base::instance();
  56.                 $web=\Web::instance();
  57.                 if (!$ip)
  58.                         $ip=$fw->get('IP');
  59.                 $public=filter_var($ip,FILTER_VALIDATE_IP,
  60.                         FILTER_FLAG_IPV4|FILTER_FLAG_IPV6|
  61.                         FILTER_FLAG_NO_RES_RANGE|FILTER_FLAG_NO_PRIV_RANGE);
  62.                 if (function_exists('geoip_db_avail') &&
  63.                         geoip_db_avail(GEOIP_CITY_EDITION_REV1) &&
  64.                         $out=@geoip_record_by_name($ip)) {
  65.                         $out['request']=$ip;
  66.                         $out['region_code']=$out['region'];
  67.                         $out['region_name']=geoip_region_name_by_code(
  68.                                 $out['country_code'],$out['region']);
  69.                         unset($out['country_code3'],$out['region'],$out['postal_code']);
  70.                         return $out;
  71.                 }
  72.                 if (($req=$web->request('http://www.geoplugin.net/json.gp'.
  73.                         ($public?('?ip='.$ip):''))) &&
  74.                         $data=json_decode($req['body'],TRUE)) {
  75.                         $out=[];
  76.                         foreach ($data as $key=>$val)
  77.                                 if (!strpos($key,'currency') && $key!=='geoplugin_status'
  78.                                         && $key!=='geoplugin_region')
  79.                                         $out[$fw->snakecase(substr($key, 10))]=$val;
  80.                         return $out;
  81.                 }
  82.                 return FALSE;
  83.         }
  84.  
  85.         /**
  86.         *       Return weather data based on specified latitude/longitude
  87.         *       @return array|FALSE
  88.         *       @param $latitude float
  89.         *       @param $longitude float
  90.         *       @param $key string
  91.         **/
  92.         function weather($latitude,$longitude,$key) {
  93.                 $fw=\Base::instance();
  94.                 $web=\Web::instance();
  95.                 $query=[
  96.                         'lat'=>$latitude,
  97.                         'lon'=>$longitude,
  98.                         'APPID'=>$key,
  99.                         'units'=>'metric'
  100.                 ];
  101.                 return ($req=$web->request(
  102.                         'http://api.openweathermap.org/data/2.5/weather?'.
  103.                                 http_build_query($query)))?
  104.                         json_decode($req['body'],TRUE):
  105.                         FALSE;
  106.         }
  107.  
  108. }
  109.  
单独下载 单独下载geo.php源码 - 下载整个fatfree源程序
相关源码/软件:
TSA-Travel-Sentry-master-keys - TSA 主密钥的 3D 再现 2017-05-12
python3-cookbook - 《Python Cookbook》 3rd Edition Translatio 2017-05-12
isso - Disqus 替代 https://posativ.org/isso/ 2017-05-12
hologram - 降价基于文件系统的风格指南。 http://trulia.github.io... 2017-05-12
www.html5rocks.com - .......a 争创一流资源为 web 开发人员 2017-05-12
rolify - Role management library with resource scoping ... 2017-05-13
jquery-mockjax - JQuery Mockjax 插件提供了简单、 极其灵活的接口,以嘲笑或模拟 ajax 请求和响应 2017-05-13
yo - CLI 工具运行自耕农发电机 http://yeoman.io 2017-05-13
GrowingTextView - UITextView 增长/收缩与文本并开始滚动时的含量达到一定数量的行。类似于苹果在 SMS 应用... 2017-05-13
phan - 潘是 php 的静态分析器。潘倾向于避免误报,并试图证明不正确,而不是正确性。 2017-05-13
CRYENGINE - CRYENGINE 是由 Crytek 创建一个功能强大的实时游戏开发平台。 ... 2017-06-11
postal - 2017-06-11
reactide - Reactide 是反应 web 应用程序开发的第一个专用的 IDE。http://reactide... 2017-06-11
rkt - rkt 是为 Linux 的 pod 本机容器引擎。它是可组合、 安全和建筑标准。 2017-06-11
uWebSockets - 小小的 Websocket https://forest.webvrexpe... 2017-06-11
realworld - 真实的世界-动力反应、 角、 节点,Django,和更多的模范 fullstack Medium.c... 2017-06-11
goreplay - GoReplay 是用于捕获和重播活 HTTP 交通到测试环境以不断地测试您的系统与实际数据的开源工... 2017-06-10
pyenv - 简单的 Python 版本管理 2017-06-10
redux-saga - Redux 应用程序替代副作用模型 https://redux-saga.g... 2017-06-10
angular-starter - 2017-06-10

 返回顶部