]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - admin/index.php
Save title in database
[Github/YOURLS.git] / admin / index.php
1 <?php\r
2 define( 'YOURLS_ADMIN', true );\r
3 require_once( dirname(dirname(__FILE__)).'/includes/load-yourls.php' );\r
4 yourls_maybe_require_auth();\r
5 \r
6 // Variables\r
7 $table_url = YOURLS_DB_TABLE_URL;\r
8 // Default SQL behavior\r
9 $where = $search_display = $search_text = $search_url = $url = $keyword = '';\r
10 $search_in_text = 'URL';\r
11 $search_in_sql = 'url';\r
12 $sort_by_text = 'Short URL';\r
13 $sort_by_sql = 'timestamp';\r
14 $sort_order_text = 'Descending Order';\r
15 $sort_order_sql = 'desc';\r
16 $page = ( isset( $_GET['page'] ) ? intval($_GET['page']) : 1 );\r
17 $search = ( isset( $_GET['s_search'] ) ? htmlspecialchars( trim($_GET['s_search']) ) : '' );\r
18 $perpage = ( isset( $_GET['perpage'] ) && intval( $_GET['perpage'] ) ? intval($_GET['perpage']) : 15 );\r
19 $link_limit = ( isset( $_GET['link_limit'] ) && !empty( $_GET['link_limit'] ) ) ? intval($_GET['link_limit']) : '' ;\r
20 if ( $link_limit !== '' ) {\r
21         $link_filter = ( isset( $_GET['link_filter'] ) && $_GET['link_filter'] == 'more' ? 'more' : 'less' ) ;\r
22         $link_moreless = ( $link_filter == 'more' ? '>' : '<' );\r
23         $where = " AND clicks $link_moreless $link_limit";\r
24 } else {\r
25         $link_filter = '';\r
26 }\r
27 $date_filter = 'before';\r
28 $date_first = $date_second = '';\r
29 $base_page = yourls_admin_url( 'index.php' );\r
30 \r
31 // Searching\r
32 if( !empty($search) && !empty($_GET['s_in']) ) {\r
33         switch($_GET['s_in']) {\r
34                 case 'keyword':\r
35                         $search_in_text = 'Short URL';\r
36                         $search_in_sql = 'keyword';\r
37                         break;\r
38                 case 'url':\r
39                         $search_in_text = 'URL';\r
40                         $search_in_sql = 'url';\r
41                         break;\r
42                 case 'ip':\r
43                         $search_in_text = 'IP Address';\r
44                         $search_in_sql = 'ip';\r
45                         break;\r
46         }\r
47         $search_text = stripslashes($search);\r
48         $search_display = "Searching for <strong>$search_text</strong> in <strong>$search_in_text</strong>. ";\r
49         $search_url = "&amp;s_search=$search_text &amp;s_in=$search_in_sql";\r
50         $search = str_replace('*', '%', '*'.$search.'*');\r
51         $where .= " AND `$search_in_sql` LIKE ('$search')";\r
52 }\r
53 \r
54 // Time span\r
55 if( !empty($_GET['date_filter']) ) {\r
56         switch($_GET['date_filter']) {\r
57                 case 'before':\r
58                         $date_filter = 'before';\r
59                         if( yourls_sanitize_date( $_GET['date_first'] ) ) {\r
60                                 $date_first_sql = yourls_sanitize_date_for_sql( $_GET['date_first'] );\r
61                                 $where .= " AND `timestamp` < '$date_first_sql'";\r
62                                 $date_first = $_GET['date_first'];\r
63                         }\r
64                         break;\r
65                 case 'after':\r
66                         $date_filter = 'after';\r
67                         if( yourls_sanitize_date( $_GET['date_first'] ) ) {\r
68                                 $date_first_sql = yourls_sanitize_date_for_sql( $_GET['date_first'] );\r
69                                 $where .= " AND `timestamp` > '$date_first_sql'";\r
70                                 $date_first = $_GET['date_first'];\r
71                         }\r
72                         break;\r
73                 case 'between':\r
74                         $date_filter = 'between';\r
75                         if( yourls_sanitize_date( $_GET['date_first'] ) && yourls_sanitize_date( $_GET['date_second'] ) ) {\r
76                                 $date_first_sql = yourls_sanitize_date_for_sql( $_GET['date_first'] );\r
77                                 $date_second_sql = yourls_sanitize_date_for_sql( $_GET['date_second'] );\r
78                                 $where .= " AND `timestamp` BETWEEN '$date_first_sql' AND '$date_second_sql'";\r
79                                 $date_first = $_GET['date_first'];\r
80                                 $date_second = $_GET['date_second'];\r
81                         }\r
82                         break;\r
83         }\r
84 }\r
85 \r
86 // Sorting\r
87 if( !empty($_GET['s_by']) || !empty($_GET['s_order']) ) {\r
88         switch($_GET['s_by']) {\r
89                 case 'keyword':\r
90                         $sort_by_text = 'Short URL';\r
91                         $sort_by_sql = 'keyword';\r
92                         break;\r
93                 case 'url':\r
94                         $sort_by_text = 'URL';\r
95                         $sort_by_sql = 'url';\r
96                         break;\r
97                 case 'timestamp':\r
98                         $sort_by_text = 'Date';\r
99                         $sort_by_sql = 'timestamp';\r
100                         break;\r
101                 case 'ip':\r
102                         $sort_by_text = 'IP Address';\r
103                         $sort_by_sql = 'ip';\r
104                         break;\r
105                 case 'clicks':\r
106                         $sort_by_text = 'Clicks';\r
107                         $sort_by_sql = 'clicks';\r
108                         break;\r
109         }\r
110         switch($_GET['s_order']) {\r
111                 case 'asc':\r
112                         $sort_order_text = 'Ascending Order';\r
113                         $sort_order_sql = 'asc';\r
114                         break;\r
115                 case 'desc':\r
116                         $sort_order_text = 'Descending Order';\r
117                         $sort_order_sql = 'desc';\r
118                         break;\r
119         }\r
120 }\r
121 \r
122 // Get URLs Count for current filter, total links in DB & total clicks\r
123 list( $total_urls, $total_clicks ) = array_values( yourls_get_db_stats() );\r
124 if ( $where ) {\r
125         list( $total_items, $total_items_clicks ) = array_values( yourls_get_db_stats( $where ) );\r
126 } else {\r
127         $total_items = $total_urls;\r
128         $total_items_clicks = false;\r
129 }\r
130 \r
131 // This is a bookmarklet\r
132 if ( isset( $_GET['u'] ) ) {\r
133         $is_bookmark = true;\r
134 \r
135         $url = yourls_sanitize_url( $_GET['u'] );\r
136         $keyword = ( isset( $_GET['k'] ) ? yourls_sanitize_keyword( $_GET['k'] ) : '' );\r
137         $return = yourls_add_new_link( $url, $keyword );\r
138         \r
139         // If fails because keyword already exist, retry with no keyword\r
140         if ( isset( $return['status'] ) && $return['status'] == 'fail' && isset( $return['code'] ) && $return['code'] == 'error:keyword' ) {\r
141                 $msg = $return['message'];\r
142                 $return = yourls_add_new_link( $url, '', $ydb );\r
143                 $return['message'] .= ' ('.$msg.')';\r
144         }\r
145         \r
146         // Stop here if bookmarklet with a JSON callback function\r
147         if( isset( $_GET['jsonp'] ) && $_GET['jsonp'] == 'yourls' ) {\r
148                 $short = $return['shorturl'] ? $return['shorturl'] : '';\r
149                 $message = $return['message'];\r
150                 header('Content-type: application/json');\r
151                 echo "yourls_callback({'short_url':'$short','message':'$message'});";\r
152                 \r
153                 die();\r
154         }\r
155 \r
156         $s_url = stripslashes( $url );\r
157         $where = " AND `url` LIKE '$s_url' ";\r
158         \r
159         $page = $total_pages = $perpage = 1;\r
160         $offset = 0;\r
161         \r
162         $text = ( isset( $_GET['s'] ) ? stripslashes( $_GET['s'] ) : '' );\r
163         $title = ( isset( $_GET['t'] ) ? stripslashes( $_GET['t'] ) : '' );\r
164         \r
165 \r
166 // This is not a bookmarklet\r
167 } else {\r
168         $is_bookmark = false;\r
169         \r
170         // Checking $page, $offset, $perpage\r
171         if(empty($page) || $page == 0) { $page = 1; }\r
172         if(empty($offset)) { $offset = 0; }\r
173         if(empty($perpage) || $perpage == 0) { $perpage = 50; }\r
174 \r
175         // Determine $offset\r
176         $offset = ($page-1) * $perpage;\r
177 \r
178         // Determine Max Number Of Items To Display On Page\r
179         if(($offset + $perpage) > $total_items) { \r
180                 $max_on_page = $total_items; \r
181         } else { \r
182                 $max_on_page = ($offset + $perpage); \r
183         }\r
184 \r
185         // Determine Number Of Items To Display On Page\r
186         if (($offset + 1) > ($total_items)) { \r
187                 $display_on_page = $total_items; \r
188         } else { \r
189                 $display_on_page = ($offset + 1); \r
190         }\r
191 \r
192         // Determing Total Amount Of Pages\r
193         $total_pages = ceil($total_items / $perpage);\r
194 \r
195 }\r
196 \r
197 \r
198 // Begin output of the page\r
199 $context = ( $is_bookmark ? 'bookmark' : 'index' );\r
200 yourls_html_head( $context );\r
201 yourls_html_logo();\r
202 yourls_html_menu() ;\r
203 ?>\r
204         <?php if ( !$is_bookmark ) { ?>\r
205         <p><?php echo $search_display; ?></p>\r
206         <p>Display <strong><?php echo $display_on_page; ?></strong> to <strong class='increment'><?php echo $max_on_page; ?></strong> of <strong class='increment'><?php echo $total_items; ?></strong> URLs<?php if( $total_items_clicks !== false ) echo ", counting <strong>$total_items_clicks</strong> " . yourls_plural('click', $total_items_clicks) ?>.</p>\r
207         <?php } ?>\r
208         <p>Overall, tracking <strong class='increment'><?php echo number_format($total_urls); ?></strong> links, <strong><?php echo number_format($total_clicks); ?></strong> clicks, and counting!</p>\r
209 \r
210         <?php yourls_html_addnew(); ?>\r
211         \r
212         <?php\r
213         // If bookmarklet, add message. Otherwise, hide hidden share box.\r
214         if ( !$is_bookmark ) {\r
215                 yourls_share_box( '', '', '', '', '<h2>Your short link</h2>', '<h2>Quick Share</h2>', true );\r
216         } else {\r
217                 echo '<script type="text/javascript">$(document).ready(function(){ feedback( "' . $return['message'] . '", "'. $return['status'] .'") });</script>';\r
218         }\r
219         ?>\r
220         \r
221         <table id="tblUrl" class="tblSorter" cellpadding="0" cellspacing="1">\r
222                 <thead>\r
223                         <tr>\r
224                                 <th>Short URL&nbsp;</th>\r
225                                 <th>Original URL</th>\r
226                                 <th>Date</th>\r
227                                 <th>IP</th>\r
228                                 <th>Clicks&nbsp;&nbsp;</th>\r
229                                 <th>Actions</th>\r
230                         </tr>\r
231                 </thead>\r
232 \r
233                 <?php\r
234                 if ( !$is_bookmark ) {\r
235                         $params = array(\r
236                                 'search_text'    => $search_text,\r
237                                 'search_in_sql'  => $search_in_sql,\r
238                                 'sort_by_sql'    => $sort_by_sql,\r
239                                 'sort_order_sql' => $sort_order_sql,\r
240                                 'page'           => $page,\r
241                                 'perpage'        => $perpage,\r
242                                 'link_filter'    => $link_filter,\r
243                                 'link_limit'     => $link_limit,\r
244                                 'total_pages'    => $total_pages,\r
245                                 'base_page'      => $base_page,\r
246                                 'search_url'     => $search_url,\r
247                                 'date_filter'    => $date_filter,\r
248                                 'date_first'     => $date_first,\r
249                                 'date_second'    => $date_second,\r
250                         );\r
251                         yourls_html_tfooter( $params );\r
252                 }\r
253                 ?>\r
254 \r
255                 <tbody>\r
256                         <?php\r
257                         // Main Query\r
258                         $url_results = $ydb->get_results("SELECT * FROM `$table_url` WHERE 1=1 $where ORDER BY `$sort_by_sql` $sort_order_sql LIMIT $offset, $perpage;");\r
259                         if( $url_results ) {\r
260                                 foreach( $url_results as $url_result ) {\r
261                                         $keyword = yourls_sanitize_string( $url_result->keyword );\r
262                                         $timestamp = strtotime( $url_result->timestamp );\r
263                                         $url = stripslashes( $url_result->url );\r
264                                         $ip = $url_result->ip;\r
265                                         $title = $url_result->title ? $url_result->title : '';\r
266                                         $clicks = $url_result->clicks;\r
267 \r
268                                         echo yourls_table_add_row( $keyword, $url, $title, $ip, $clicks, $timestamp );\r
269                                 }\r
270                         } else {\r
271                                 echo '<tr class="nourl_found"><td colspan="6">No URL Found</td></tr>';\r
272                         }\r
273                         ?>\r
274                 </tbody>\r
275         </table>\r
276         \r
277         <?php if ( $is_bookmark )\r
278                 yourls_share_box( $url, $return['shorturl'], $title, $text );\r
279         ?>\r
280         \r
281 <?php yourls_html_footer( ); ?>