1 | <?php |
---|
2 | define('PHPWG_ROOT_PATH','../../'); |
---|
3 | |
---|
4 | include_once( PHPWG_ROOT_PATH.'include/common.inc.php' ); |
---|
5 | |
---|
6 | if (!isset($rvm_dir)) |
---|
7 | access_denied( 'Plugin not installed' ); |
---|
8 | |
---|
9 | include_once( dirname(__FILE__) .'/include/functions_map.php'); |
---|
10 | include_once( dirname(__FILE__) .'/include/functions.php'); |
---|
11 | |
---|
12 | rvm_load_language(); |
---|
13 | set_make_full_url(); |
---|
14 | |
---|
15 | $section = ''; |
---|
16 | if ( $conf['question_mark_in_urls']==false and |
---|
17 | isset($_SERVER["PATH_INFO"]) and !empty($_SERVER["PATH_INFO"]) ) |
---|
18 | { |
---|
19 | $section = $_SERVER["PATH_INFO"]; |
---|
20 | $section = str_replace('//', '/', $section); |
---|
21 | } |
---|
22 | else |
---|
23 | { |
---|
24 | foreach ($_GET as $key=>$value) |
---|
25 | { |
---|
26 | if (!strlen($value)) $section=$key; |
---|
27 | break; |
---|
28 | } |
---|
29 | } |
---|
30 | // deleting first "/" if displayed |
---|
31 | $tokens = explode( |
---|
32 | '/', |
---|
33 | preg_replace('#^/#', '', $section) |
---|
34 | ); |
---|
35 | $next_token = 0; |
---|
36 | $result = rvm_parse_kml_url($tokens, $next_token); |
---|
37 | $page = array_merge( $page, $result ); |
---|
38 | |
---|
39 | $order_by=null; |
---|
40 | if ( isset($page['ll']) ) |
---|
41 | $where_sql = rvm_ll_to_sql($page['ll'], $order_by); |
---|
42 | else |
---|
43 | $where_sql = rvm_bounds_to_sql( $page['box'] ); |
---|
44 | |
---|
45 | |
---|
46 | $img_fields = ' i.id,i.representative_ext,i.name,i.comment,i.file,i.path,i.lat,i.lon,i.date_creation'; |
---|
47 | |
---|
48 | rvm_build_section_items($img_fields, $where_sql, RVM_BUILD_ARRAY, $order_by); |
---|
49 | |
---|
50 | |
---|
51 | $dataTpl = new Template( PHPWG_ROOT_PATH ); |
---|
52 | $dataTpl->set_filename('main', dirname(__FILE__).'/template/earth_kml.tpl' ); |
---|
53 | |
---|
54 | $dataTpl->assign( |
---|
55 | array( |
---|
56 | 'PAGE_TITLE' => strip_tags(@$page['title']), |
---|
57 | 'CONTENT_ENCODING' => get_pwg_charset(), |
---|
58 | 'PAGE_COMMENT' => strip_tags( @$page['comment'], '<a><br><p><b><i><small><strong><font>'), |
---|
59 | 'U_INDEX' => duplicate_index_url( array('start'=>0) ), |
---|
60 | ) |
---|
61 | ); |
---|
62 | |
---|
63 | if ( !empty($page['items']) ) |
---|
64 | $dataTpl->assign( 'NB_ITEMS_DESC', sprintf( l10n('%d photos'), count($page['items']) ).'<br/>' ); |
---|
65 | |
---|
66 | |
---|
67 | // +-----------------------------------------------------------------------+ |
---|
68 | // | sub categories network links | |
---|
69 | // +-----------------------------------------------------------------------+ |
---|
70 | if ( 'categories'==$page['section'] and !isset($page['flat']) ) |
---|
71 | { |
---|
72 | $query = ' |
---|
73 | SELECT id, name, permalink, comment, uppercats, representative_picture_id |
---|
74 | FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' |
---|
75 | ON id = cat_id and user_id = '.$user['id'].' |
---|
76 | WHERE id_uppercat '. |
---|
77 | (!isset($page['category']) ? 'is NULL' : '= '.$page['category']['id']).' |
---|
78 | ORDER BY rank |
---|
79 | ;'; |
---|
80 | // echo "<pre>" . var_export($query,true); |
---|
81 | $result = pwg_query($query); |
---|
82 | $categories = array(); |
---|
83 | $thumbnail_ids=array(); |
---|
84 | while ($row = pwg_db_fetch_assoc($result)) |
---|
85 | { |
---|
86 | $categories[] = $row; |
---|
87 | if (isset($row['representative_picture_id']) and is_numeric($row['representative_picture_id'])) |
---|
88 | $thumbnail_ids[] = $row['representative_picture_id']; |
---|
89 | } |
---|
90 | $thumbnail_src_of = array(); |
---|
91 | if ( count($thumbnail_ids) ) |
---|
92 | { |
---|
93 | $query = ' |
---|
94 | SELECT id, path, representative_ext |
---|
95 | FROM '.IMAGES_TABLE.' |
---|
96 | WHERE id IN ('.implode(',', $thumbnail_ids).')'; |
---|
97 | $result = pwg_query($query); |
---|
98 | while ($row = pwg_db_fetch_assoc($result)) |
---|
99 | $thumbnail_src_of[$row['id']] = DerivativeImage::thumb_url($row); |
---|
100 | unset($thumbnail_ids); |
---|
101 | } |
---|
102 | |
---|
103 | $cat_bounds = rvm_get_cat_bounds(); |
---|
104 | |
---|
105 | foreach ($categories as $category) |
---|
106 | { |
---|
107 | if ( !isset( $cat_bounds[ $category['id'] ] ) ) |
---|
108 | continue; // without geo tagged images |
---|
109 | |
---|
110 | $bounds = $cat_bounds[ $category['id'] ]; |
---|
111 | |
---|
112 | if ( isset($bounds['self']) ) |
---|
113 | { |
---|
114 | $count_desc = l10n_dec('%d photo', '%d photos', $bounds['self']['count']); |
---|
115 | if ( $bounds['self']['count'] == $bounds['count'] ) |
---|
116 | $count_desc .= ' '.l10n('images_available_cpl'); |
---|
117 | else |
---|
118 | $count_desc .= '/'.l10n_dec('%d photo', '%d photos', $bounds['count']).' '.l10n_dec('images_available_cat','images_available_cats', $bounds['nb_cats'] ); |
---|
119 | } |
---|
120 | else |
---|
121 | $count_desc = l10n_dec('%d photo', '%d photos', $bounds['count']) |
---|
122 | .' '.l10n_dec('images_available_cat','images_available_cats', $bounds['nb_cats'] ); |
---|
123 | |
---|
124 | $tpl_var = array( |
---|
125 | 'NAME' => $category['name'], |
---|
126 | 'COMMENT' => trigger_event('render_category_literal_description', trigger_event('render_category_description', @$category['comment']) ), |
---|
127 | 'U_CATEGORY' => make_index_url( array('category'=>$category) ), |
---|
128 | 'U_KML' => rvm_make_kml_index_url( array('section'=>'categories', 'category'=>$category) ), |
---|
129 | 'U_MAP' => rvm_make_map_index_url( array('section'=>'categories', 'category'=>$category) ), |
---|
130 | 'COUNT_DESC' => $count_desc, |
---|
131 | 'region' => $bounds, |
---|
132 | ); |
---|
133 | if ( isset( $thumbnail_src_of[$category['representative_picture_id']] ) ) |
---|
134 | $tpl_var['TN_SRC'] = $thumbnail_src_of[$category['representative_picture_id']]; |
---|
135 | |
---|
136 | $dataTpl->append( 'categories', $tpl_var ); |
---|
137 | } |
---|
138 | } |
---|
139 | |
---|
140 | |
---|
141 | |
---|
142 | // +-----------------------------------------------------------------------+ |
---|
143 | // | generate content for items | |
---|
144 | // +-----------------------------------------------------------------------+ |
---|
145 | $bounds = array(); |
---|
146 | foreach( $page['items'] as $img ) |
---|
147 | { |
---|
148 | $bounds = bounds_add($bounds, $img['lat'], $img['lon']); |
---|
149 | $page_url = duplicate_picture_url(array('image_id' => $img['id'],'image_file' => $img['file']), array('start') ); |
---|
150 | |
---|
151 | $tpl_var = array( |
---|
152 | 'U_PAGE'=> $page_url, |
---|
153 | 'TN_SRC' => DerivativeImage::url(IMG_THUMB, $img), |
---|
154 | 'TITLE' => render_element_name($img), |
---|
155 | 'DESCRIPTION' => render_element_description($img), |
---|
156 | 'LAT' => $img['lat'], |
---|
157 | 'LON' => $img['lon'], |
---|
158 | 'DATE_CREATION' => $img['date_creation'], |
---|
159 | ); |
---|
160 | $dataTpl->append('images', $tpl_var); |
---|
161 | } |
---|
162 | |
---|
163 | if ( !empty($bounds) ) |
---|
164 | $dataTpl->assign( 'region', $bounds ); |
---|
165 | |
---|
166 | /*header('Cache-Control: public' ); |
---|
167 | header('Expires: '.gmdate('D, d M Y H:i:s', time()+600).' GMT'); |
---|
168 | header('Pragma:');*/ |
---|
169 | header('Content-Disposition: inline; filename="'.str2url($page['title']).'.kml";' ); |
---|
170 | header('Content-Type: application/vnd.google-earth.kml+xml; charset='.get_pwg_charset()); |
---|
171 | if (isset($_GET['debug'])) |
---|
172 | header('Content-Type: text/xml; charset='.get_pwg_charset()); |
---|
173 | |
---|
174 | |
---|
175 | $dataTpl->pparse('main'); |
---|
176 | |
---|
177 | ?> |
---|