function wikipedia_streetnames_info($info_ret, $object) { global $data_lang; $text=""; if(!$object->tags->get("highway")) return; $res=sql_query("select * from osm_polygon where osm_way && geomfromtext('{$object->data['way']}', 900913) and CollectionIntersects(osm_way, geomfromtext('{$object->data['way']}', 900913)) and osm_tags @> 'boundary=>administrative' order by parse_number(osm_tags->'admin_level') desc"); while($elem=pg_fetch_assoc($res)) { $boundary=load_object($elem['osm_id']); $data=cache_search($boundary->id, "wikipedia:street_names:$data_lang"); if($data) { $data=unserialize($data); } else { $data=wikipedia_get_lang_page($boundary, "wikipedia:street_names"); $article=wikipedia_get_article($boundary, $data['page'], $data['lang']); $data['article']=$article; cache_insert($boundary->id, "wikipedia:street_names:$data_lang", serialize($data), "1 hour"); } if($data['article']) { $text.=wikipedia_streetnames_parse($data['article'], $object); if($text) { $text.="<br>".lang("source").": <a class='external' href='".wikipedia_url($boundary, $data['page'], $data['lang'])."'>Wikipedia</a>\n"; $info_ret[]=array("head"=>"wikipedia_streetnames", "content"=>$text, "doc"=>"plugin:wikipedia_streetnames/feature"); return; } } } }
/** * 读取缓存,并将缓存加载至 $_W 全局变量中 * @param string $key 缓存键名,如果键名以:结束,则做为分组名称读取所有缓存 * */ function cache_load($key, $unserialize = false) { global $_W; if (substr($key, -1) == ':') { $data = cache_search($key); foreach ($data as $k => $v) { $tmp =& cache_global($k); $tmp = $unserialize ? iunserializer($v) : $v; } return cache_global($key); } else { $data = cache_read($key); if ($key == 'setting') { $_W['setting'] = $data; return $_W['setting']; } elseif ($key == 'modules') { $_W['modules'] = $data; return $_W['modules']; } else { $tmp =& cache_global($key); $tmp = $unserialize ? iunserializer($data) : $data; return $unserialize ? iunserializer($data) : $data; } } }
function wikipedia_info($info_ret, $object) { $ret=""; global $data_lang; if($data=cache_search($object->id, "wikipedia_info:$data_lang")) { $data=unserialize($data); $ret.="{$data['text']}<a class='external' href='{$data['url']}' target='_blank'>".lang("wikipedia:read_more")."</a>"; $info_ret[]=array("head"=>"wikipedia", "content"=>$ret, "doc"=>"plugin:wikipedia/feature"); return; } if(!($res=wikipedia_get_lang_page($object))) return; $lang=$res['lang']; $page=$res['page']; if(!($url=wikipedia_url($object, $page, $lang))) return; $text=wikipedia_get_abstract($object, $page, $lang); cache_insert($object->id, "wikipedia_info:$data_lang", serialize(array("text"=>$text, "url"=>$url)), "1 hour"); if($text) { $ret.="$text<a class='external' style='line-height:2em;' href='$url' target='_blank'>".lang("wikipedia:read_more")."</a>"; } $info_ret[]=array("head"=>"wikipedia", "content"=>$ret, "doc"=>"plugin:wikipedia/feature"); }