]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - admin/index.php
Big cosmetic commit
[Github/YOURLS.git] / admin / index.php
1 <?php\r
2 // Require Files\r
3 require_once( dirname(dirname(__FILE__)).'/includes/config.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'] ) ? mysql_real_escape_string(trim($_GET['s_search'])) : '' );\r
18 $perpage = ( isset( $_GET['perpage'] ) && intval( $_GET['perpage'] ) ? intval($_GET['perpage']) : 20 );\r
19 $link_limit = ( isset( $_GET['link_limit'] ) && intval($_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 $base_page = YOURLS_SITE . '/admin/index.php';\r
28 \r
29 // Searching\r
30 if(!empty($search) && !empty($_GET['s_in'])) {\r
31         switch($_GET['s_in']) {\r
32                 case 'keyword':\r
33                         $search_in_text = 'Short URL';\r
34                         $search_in_sql = 'keyword';\r
35                         break;\r
36                 case 'url':\r
37                         $search_in_text = 'URL';\r
38                         $search_in_sql = 'url';\r
39                         break;\r
40                 case 'ip':\r
41                         $search_in_text = 'IP Address';\r
42                         $search_in_sql = 'ip';\r
43                         break;\r
44         }\r
45         $search_text = stripslashes($search);\r
46         $search_display = "Searching for <strong>$search_text</strong> in <strong>$search_in_text</strong>. ";\r
47         $search_url = "&amp;s_search=$search_text &amp;s_in=$search_in_sql";\r
48         $search = str_replace('*', '%', '*'.$search.'*');\r
49         $where .= " AND $search_in_sql LIKE ('$search')";\r
50 }\r
51 \r
52 // Sorting\r
53 if(!empty($_GET['s_by']) || !empty($_GET['s_order'])) {\r
54         switch($_GET['s_by']) {\r
55                 case 'keyword':\r
56                         $sort_by_text = 'Short URL';\r
57                         $sort_by_sql = 'keyword';\r
58                         break;\r
59                 case 'url':\r
60                         $sort_by_text = 'URL';\r
61                         $sort_by_sql = 'url';\r
62                         break;\r
63                 case 'timestamp':\r
64                         $sort_by_text = 'Date';\r
65                         $sort_by_sql = 'timestamp';\r
66                         break;\r
67                 case 'ip':\r
68                         $sort_by_text = 'IP Address';\r
69                         $sort_by_sql = 'ip';\r
70                         break;\r
71                 case 'clicks':\r
72                         $sort_by_text = 'Clicks';\r
73                         $sort_by_sql = 'clicks';\r
74                         break;\r
75         }\r
76         switch($_GET['s_order']) {\r
77                 case 'asc':\r
78                         $sort_order_text = 'Ascending Order';\r
79                         $sort_order_sql = 'asc';\r
80                         break;\r
81                 case 'desc':\r
82                         $sort_order_text = 'Descending Order';\r
83                         $sort_order_sql = 'desc';\r
84                         break;\r
85         }\r
86 }\r
87 \r
88 // Get URLs Count for current filter, total links in DB & total clicks\r
89 list( $total_urls, $total_clicks ) = array_values( yourls_get_db_stats() );\r
90 if ( $where ) {\r
91         list( $total_items, $total_items_clicks ) = array_values( yourls_get_db_stats( $where ) );\r
92 } else {\r
93         $total_items = $total_urls;\r
94 }\r
95 \r
96 // This is a bookmarklet\r
97 if ( isset( $_GET['u'] ) ) {\r
98         $is_bookmark = true;\r
99 \r
100         $url = $_GET['u'];\r
101         $keyword = ( isset( $_GET['k'] ) ? $_GET['k'] : '' );\r
102         $return = yourls_add_new_link( $url, $keyword );\r
103         \r
104         // If fails because keyword already exist, retry with no keyword\r
105         if ( isset( $return['status'] ) && $return['status'] == 'fail' && isset( $return['code'] ) && $return['code'] == 'error:keyword' ) {\r
106                 $msg = $return['message'];\r
107                 $return = yourls_add_new_link( $url, '', $ydb );\r
108                 $return['message'] .= ' ('.$msg.')';\r
109         }\r
110         \r
111         $s_url = stripslashes( $url );\r
112         $where = " AND url LIKE '$s_url' ";\r
113         \r
114         $page = $total_pages = $perpage = 1;\r
115         $offset = 0;\r
116         \r
117         $text = ( isset( $_GET['s'] ) ? stripslashes( $_GET['s'] ) : '' );\r
118         $title = ( isset( $_GET['t'] ) ? stripslashes( $_GET['t'] ) : '' );\r
119 \r
120 // This is not a bookmarklet\r
121 } else {\r
122         $is_bookmark = false;\r
123         \r
124         // Checking $page, $offset, $perpage\r
125         if(empty($page) || $page == 0) { $page = 1; }\r
126         if(empty($offset)) { $offset = 0; }\r
127         if(empty($perpage) || $perpage == 0) { $perpage = 50; }\r
128 \r
129         // Determine $offset\r
130         $offset = ($page-1) * $perpage;\r
131 \r
132         // Determine Max Number Of Items To Display On Page\r
133         if(($offset + $perpage) > $total_items) { \r
134                 $max_on_page = $total_items; \r
135         } else { \r
136                 $max_on_page = ($offset + $perpage); \r
137         }\r
138 \r
139         // Determine Number Of Items To Display On Page\r
140         if (($offset + 1) > ($total_items)) { \r
141                 $display_on_page = $total_items; \r
142         } else { \r
143                 $display_on_page = ($offset + 1); \r
144         }\r
145 \r
146         // Determing Total Amount Of Pages\r
147         $total_pages = ceil($total_items / $perpage);\r
148 \r
149 }\r
150 \r
151 \r
152 // Begin output of the page\r
153 $context = ( $is_bookmark ? 'bookmark' : 'index' );\r
154 yourls_html_head( $context );\r
155 ?>\r
156         <h1>\r
157                 <a href="<?php echo $base_page; ?>" title="YOURLS"><span>YOURLS</span>: <span>Y</span>our <span>O</span>wn <span>URL</span> <span>S</span>hortener<br/>\r
158                 <img src="<?php echo YOURLS_SITE; ?>/images/yourls-logo.png" alt="YOURLS" title="YOURLS" style="border: 0px;" /></a>\r
159         </h1>\r
160         <p>\r
161         <?php if ( yourls_is_private() ) { ?>\r
162                 Your are logged in as: <strong><?php echo YOURLS_USER; ?></strong>. <a href="?mode=logout" title="Logout">Logout</a>.\r
163         <?php } ?>\r
164         Check the <a href="tools.php">Tools</a>.</p>\r
165         <?php if ( !$is_bookmark ) {\r
166         ?>\r
167         <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.</p>\r
168         <p><?php echo $search_display; ?></p>\r
169         <?php } ?>\r
170         <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
171 \r
172         <?php yourls_html_addnew(); ?>\r
173         \r
174         <?php if ( $is_bookmark ) {\r
175                 echo '<h2 class="bookmark_result">' . $return['message'] . '</h2>';\r
176         \r
177         } ?>\r
178         \r
179         <table id="tblUrl" class="tblSorter" cellpadding="0" cellspacing="1">\r
180                 <thead>\r
181                         <tr>\r
182                                 <th>Short URL&nbsp;</th>\r
183                                 <th>Original URL</th>\r
184                                 <th>Date</th>\r
185                                 <th>IP</th>\r
186                                 <th>Clicks&nbsp;&nbsp;</th>\r
187                                 <th>Actions</th>\r
188                         </tr>\r
189                 </thead>\r
190 \r
191                 <?php\r
192                 if ( !$is_bookmark ) {\r
193                         $params = array(\r
194                                 'search_text'    => $search_text,\r
195                                 'search_in_sql'  => $search_in_sql,\r
196                                 'sort_by_sql'    => $sort_by_sql,\r
197                                 'sort_order_sql' => $sort_order_sql,\r
198                                 'page'           => $page,\r
199                                 'perpage'        => $perpage,\r
200                                 'link_filter'    => $link_filter,\r
201                                 'link_limit'     => $link_limit,\r
202                                 'total_pages'    => $total_pages,\r
203                                 'base_page'      => $base_page,\r
204                                 'search_url'     => $search_url,\r
205                         );\r
206                         yourls_html_tfooter( $params );\r
207                 }\r
208                 ?>\r
209 \r
210                 <tbody>\r
211                         <?php\r
212                         // Main Query\r
213                         $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
214                         if( $url_results ) {\r
215                                 foreach( $url_results as $url_result ) {\r
216                                         $keyword = yourls_sanitize_string($url_result->keyword);\r
217                                         $timestamp = strtotime($url_result->timestamp);\r
218                                         $url = stripslashes($url_result->url);\r
219                                         $ip = $url_result->ip;\r
220                                         $clicks = $url_result->clicks;\r
221 \r
222                                         echo yourls_table_add_row( $keyword, $url, $ip, $clicks, $timestamp );\r
223                                 }\r
224                         } else {\r
225                                 echo '<tr class="nourl_found"><td colspan="6">No URL Found</td></tr>';\r
226                         }\r
227                         ?>\r
228                 </tbody>\r
229         </table>\r
230         \r
231         <?php if ( $is_bookmark )\r
232                 yourls_share_box( $url, $return['shorturl'], $title, $text );\r
233         ?>\r
234         \r
235 <?php yourls_html_footer( ); ?>