]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - admin/index.php
Slight change in admin's <h1>
[Github/YOURLS.git] / admin / index.php
1 <?php\r
2 ### Require Files\r
3 require_once( dirname(dirname(__FILE__)).'/includes/config.php' );\r
4 if (defined('YOURLS_PRIVATE') && YOURLS_PRIVATE == true)\r
5         require_once( dirname(dirname(__FILE__)).'/includes/auth.php' );\r
6 \r
7 ### Connect To Database\r
8 $db = yourls_db_connect();\r
9 \r
10 ### Variables\r
11 $where = '';\r
12 $search_display = '';\r
13 $search_text = '';\r
14 $search_url = '';\r
15 $search_in_text = 'URL';\r
16 $search_in_sql = 'url';\r
17 $sort_by_text = 'ID';\r
18 $sort_by_sql = 'id';\r
19 $sort_order_text = 'Descending Order';\r
20 $sort_order_sql = 'desc';\r
21 $page = intval($_GET['page']);\r
22 $search = mysql_real_escape_string(trim($_GET['s_search']));\r
23 $perpage = ( intval($_GET['perpage']) ? intval($_GET['perpage']) : 20 );\r
24 $link_limit = ( intval($_GET['link_limit']) ? intval($_GET['link_limit']) : '' );\r
25 if ( $link_limit != '' ) {\r
26         $link_filter = ( $_GET['link_filter'] == 'more' ? 'more' : 'less' ) ;\r
27         $link_moreless = ( $link_filter == 'more' ? '>=' : '<=' );\r
28         $where = " AND clicks $link_moreless $link_limit";\r
29 } else {\r
30         $link_filter = '';\r
31 }\r
32 $base_page = 'admin/index.php';\r
33 \r
34 ### Searching\r
35 if(!empty($search) && !empty($_GET['s_in'])) {\r
36         switch($_GET['s_in']) {\r
37                 case 'id':\r
38                         $search_in_text = 'ID';\r
39                         $search_in_sql = 'id';\r
40                         break;\r
41                 case 'url':\r
42                         $search_in_text = 'URL';\r
43                         $search_in_sql = 'url';\r
44                         break;\r
45                 case 'ip':\r
46                         $search_in_text = 'IP Address';\r
47                         $search_in_sql = 'ip';\r
48                         break;\r
49         }\r
50         $search_text = stripslashes($search);\r
51         $search_display = "Searching for <strong>$search_text</strong> in <strong>$search_in_text</strong>. ";\r
52         $search_url = "&amp;s_search=$search_text &amp;s_in=$search_in_sql";\r
53         $search = str_replace('*', '%', '*'.$search.'*');\r
54         $where .= " AND $search_in_sql LIKE ('$search')";\r
55 }\r
56 \r
57 ### Sorting\r
58 if(!empty($_GET['s_by']) || !empty($_GET['s_order'])) {\r
59         switch($_GET['s_by']) {\r
60                 case 'id':\r
61                         $sort_by_text = 'ID';\r
62                         $sort_by_sql = 'id';\r
63                         break;\r
64                 case 'url':\r
65                         $sort_by_text = 'URL';\r
66                         $sort_by_sql = 'url';\r
67                         break;\r
68                 case 'timestamp':\r
69                         $sort_by_text = 'Date';\r
70                         $sort_by_sql = 'timestamp';\r
71                         break;\r
72                 case 'ip':\r
73                         $sort_by_text = 'IP Address';\r
74                         $sort_by_sql = 'ip';\r
75                         break;\r
76                 case 'clicks':\r
77                         $sort_by_text = 'Clicks';\r
78                         $sort_by_sql = 'clicks';\r
79                         break;\r
80         }\r
81         switch($_GET['s_order']) {\r
82                 case 'asc':\r
83                         $sort_order_text = 'Ascending Order';\r
84                         $sort_order_sql = 'asc';\r
85                         break;\r
86                 case 'desc':\r
87                         $sort_order_text = 'Descending Order';\r
88                         $sort_order_sql = 'desc';\r
89                         break;\r
90         }\r
91 }\r
92 \r
93 ## Get URLs Count for current filter, total links in DB & total clicks\r
94 $total_items = $db->get_var("SELECT COUNT(id) FROM url WHERE 1=1 $where");\r
95 $totals = $db->get_row("SELECT COUNT(id) as c, SUM(clicks) as s FROM url WHERE 1=1");\r
96 \r
97 ### Checking $page, $offset, $perpage\r
98 if(empty($page) || $page == 0) { $page = 1; }\r
99 if(empty($offset)) { $offset = 0; }\r
100 if(empty($perpage) || $perpage == 0) { $perpage = 50; }\r
101 \r
102 ### Determine $offset\r
103 $offset = ($page-1) * $perpage;\r
104 \r
105 ### Determine Max Number Of Items To Display On Page\r
106 if(($offset + $perpage) > $total_items) { \r
107         $max_on_page = $total_items; \r
108 } else { \r
109         $max_on_page = ($offset + $perpage); \r
110 }\r
111 \r
112 ### Determine Number Of Items To Display On Page\r
113 if (($offset + 1) > ($total_items)) { \r
114         $display_on_page = $total_items; \r
115 } else { \r
116         $display_on_page = ($offset + 1); \r
117 }\r
118 \r
119 ### Determing Total Amount Of Pages\r
120 $total_pages = ceil($total_items / $perpage);\r
121 ?>\r
122 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
123 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\r
124 <head>\r
125         <title>Insert URL &laquo; YOURLS &raquo; Your Own URL Shortener | <?php echo YOURLS_SITE; ?></title>\r
126         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
127         <meta name="copyright" content="Copyright &copy; 2008-<?php echo date('Y'); ?> YOURS" />\r
128         <meta name="author" content="Richard Ozh, Lester Chan" />\r
129         <meta name="description" content="Insert URL &laquo; YOURLS &raquo; Your Own URL Shortener' | <?php echo YOURLS_SITE; ?>" />\r
130         <link rel="stylesheet" href="<?php echo YOURLS_SITE; ?>/css/style.css" type="text/css" media="screen" />\r
131         <link rel="stylesheet" href="<?php echo YOURLS_SITE; ?>/css/tablesorter.css" type="text/css" media="screen" />\r
132         <script src="<?php echo YOURLS_SITE; ?>/js/jquery-1.3.1.min.js" type="text/javascript"></script>\r
133         <script src="<?php echo YOURLS_SITE; ?>/js/insert.js" type="text/javascript"></script>\r
134         <script src="<?php echo YOURLS_SITE; ?>/js/jquery.tablesorter.min.js" type="text/javascript"></script>\r
135 </head>\r
136 <body>\r
137         <h1>\r
138                 <a href="<?php echo YOURLS_SITE; ?>/<?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
139                 <img src="<?php echo YOURLS_SITE; ?>/images/yourls-logo.png" alt="YOURLS" title="YOURLS" style="border: 0px;" /></a>\r
140         </h1>\r
141         <?php if ( defined('YOURLS_PRIVATE') && YOURLS_PRIVATE == true ) { ?>\r
142                 <p>Your are logged in as: <strong><?php echo YOURLS_USER; ?></strong>. <a href="?mode=logout" title="Logout">Logout</a></p>\r
143         <?php } ?>\r
144         <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.\r
145            <?php echo $search_display; ?>\r
146            Overall, tracking <strong class='increment'><?php echo number_format($totals->c); ?></strong> links, <strong><?php echo number_format($totals->s); ?></strong> clicks, and counting!\r
147         </p>\r
148 \r
149         <div id="new_url">\r
150                 <div>\r
151                         <form id="new_url_form" action="" method="get">\r
152                                 <strong>Enter the URL</strong>:<input type="text" id="add-url" name="url" value="http://" class="text" size="90" />\r
153                                 Optional: <strong>Custom short URL</strong>:<input type="text" id="add-keyword" name="keyword" value="" maxlength="12" class="text" size="8" />\r
154                                 <input type="button" id="add-button" name="add-button" value="Shorten The URL" class="button" onclick="add();" />\r
155                         </form>\r
156                         <div id="feedback" style="display:none"></div>\r
157                 </div>\r
158         </div>\r
159         \r
160         <table id="tblUrl" class="tblSorter" cellpadding="0" cellspacing="1">\r
161                 <thead>\r
162                         <tr>\r
163                                 <th>Link&nbsp;ID&nbsp;&nbsp;</th>\r
164                                 <th>Original URL</th>\r
165                                 <th>Short URL</th>\r
166                                 <th>Date</th>\r
167                                 <th>IP</th>\r
168                                 <th>Clicks&nbsp;&nbsp;</th>\r
169                                 <th>Actions</th>\r
170                         </tr>\r
171                 </thead>\r
172                 <tfoot>\r
173                         <tr>\r
174                                 <th colspan="4" style="text-align: left;">\r
175                                         <form action="" method="get">\r
176                                                 <div>\r
177                                                         <div style="float:right;">\r
178                                                                 <input type="submit" id="submit-sort" value="Filter" class="button primary" />\r
179                                                                 &nbsp;\r
180                                                                 <input type="button" id="submit-clear-filter" value="Clear Filter" class="button" onclick="window.parent.location.href = 'admin.php'" />\r
181                                                         </div>\r
182 \r
183                                                         Search&nbsp;for&nbsp;\r
184                                                         <input type="text" name="s_search" class="text" size="20" value="<?php echo $search_text; ?>" />\r
185                                                         &nbsp;in&nbsp;\r
186                                                         <select name="s_in" size="1">\r
187                                                                 <!-- <option value="id"<?php if($search_in_sql == 'id') { echo ' selected="selected"'; } ?>>ID</option> -->\r
188                                                                 <option value="url"<?php if($search_in_sql == 'url') { echo ' selected="selected"'; } ?>>URL</option>\r
189                                                                 <option value="ip"<?php if($search_in_sql == 'ip') { echo ' selected="selected"'; } ?>>IP</option>\r
190                                                         </select>\r
191                                                         &ndash;&nbsp;Order&nbsp;by&nbsp;\r
192                                                         <select name="s_by" size="1">\r
193                                                                 <option value="id"<?php if($sort_by_sql == 'id') { echo ' selected="selected"'; } ?>>ID</option>\r
194                                                                 <option value="url"<?php if($sort_by_sql == 'url') { echo ' selected="selected"'; } ?>>URL</option>\r
195                                                                 <option value="timestamp"<?php if($sort_by_sql == 'timestamp') { echo ' selected="selected"'; } ?>>Date</option>\r
196                                                                 <option value="ip"<?php if($sort_by_sql == 'ip') { echo ' selected="selected"'; } ?>>IP</option>\r
197                                                                 <option value="clicks"<?php if($sort_by_sql == 'clicks') { echo ' selected="selected"'; } ?>>Clicks</option>\r
198                                                         </select>\r
199                                                         <select name="s_order" size="1">\r
200                                                                 <option value="asc"<?php if($sort_order_sql == 'asc') { echo ' selected="selected"'; } ?>>Ascending</option>\r
201                                                                 <option value="desc"<?php if($sort_order_sql == 'desc') { echo ' selected="selected"'; } ?>>Descending</option>\r
202                                                         </select>\r
203                                                         &ndash;&nbsp;Show&nbsp;\r
204                                                         <input type="text" name="perpage" class="text" size="2" value="<?php echo $perpage; ?>" />&nbsp;rows<br/>\r
205                                                         \r
206                                                         Show links with\r
207                                                         <select name="link_filter" size="1">\r
208                                                                 <option value="more"<?php if($link_filter === 'more') { echo ' selected="selected"'; } ?>>more</option>\r
209                                                                 <option value="less"<?php if($link_filter === 'less') { echo ' selected="selected"'; } ?>>less</option>\r
210                                                         </select>\r
211                                                         than\r
212                                                         <input type="text" name="link_limit" class="text" size="4" value="<?php echo $link_limit; ?>" />clicks\r
213 \r
214                                                         \r
215                                                 </div>\r
216                                         </form>\r
217                                 </th>\r
218                                 <th colspan="3" style="text-align: right;">\r
219                                         Pages (<?php echo $total_pages; ?>):\r
220                                         <?php\r
221                                                 if ($page >= 4) {\r
222                                                         echo '<b><a href="'.$base_page.'?s_by='.$sort_by_sql.'&amp;s_order='.$sort_order_sql.$search_url.'&amp;page=1'.'" title="Go to First Page">&laquo; First</a></b> ... ';\r
223                                                 }\r
224                                                 if($page > 1) {\r
225                                                         echo ' <b><a href="'.$base_page.'?s_by='.$sort_by_sql.'&amp;s_order='.$sort_order_sql.$search_url.'&amp;page='.($page-1).'" title="&laquo; Go to Page '.($page-1).'">&laquo;</a></b> ';\r
226                                                 }\r
227                                                 for($i = $page - 2 ; $i  <= $page +2; $i++) {\r
228                                                         if ($i >= 1 && $i <= $total_pages) {\r
229                                                                 if($i == $page) {\r
230                                                                         echo "<strong>[$i]</strong> ";\r
231                                                                 } else {\r
232                                                                         echo '<a href="'.$base_page.'?s_by='.$sort_by_sql.'&amp;s_order='.$sort_order_sql.$search_url.'&amp;page='.($i).'" title="Page '.$i.'">'.$i.'</a> ';\r
233                                                                 }\r
234                                                         }\r
235                                                 }\r
236                                                 if($page < $total_pages) {\r
237                                                         echo ' <b><a href="'.$base_page.'?s_by='.$sort_by_sql.'&amp;s_order='.$sort_order_sql.$search_url.'&amp;page='.($page+1).'" title="Go to Page '.($page+1).' &raquo;">&raquo;</a></b> ';\r
238                                                 }\r
239                                                 if (($page+2) < $total_pages) {\r
240                                                         echo ' ... <b><a href="'.$base_page.'s_by='.$sort_by_sql.'&amp;s_order='.$sort_order_sql.$search_url.'&amp;?page='.($total_pages).'" title="Go to Last Page">Last &raquo;</a></b>';\r
241                                                 }\r
242                                         ?>\r
243                                 </th>\r
244                         </tr>\r
245                 </tfoot>\r
246                 <tbody>\r
247                         <?php\r
248                         ### Main Query\r
249                         $url_results = $db->get_results("SELECT * FROM url WHERE 1=1 $where ORDER BY $sort_by_sql $sort_order_sql LIMIT $offset, $perpage;");\r
250                         if($url_results) {\r
251                                 foreach( $url_results as $url_result ) {\r
252                                         $base36 = yourls_int2string($url_result->id);\r
253                                         $timestamp = strtotime($url_result->timestamp);\r
254                                         $id = ($url_result->id);\r
255                                         $url = stripslashes($url_result->url);\r
256                                         $ip = $url_result->ip;\r
257                                         $clicks = $url_result->clicks;\r
258 \r
259                                         echo yourls_table_add_row($id, $base36, $url, $ip, $clicks, $timestamp );\r
260                                 }\r
261                         } else {\r
262                                 echo '<tr class="nourl_found"><td colspan="7">No URL Found</td></tr>';\r
263                         }\r
264                         ?>\r
265                 </tbody>\r
266         </table>\r
267         <div id="footer">Powered by <a href="http://yourls.org/" title="YOURLS">YOURLS</a> v<?php echo YOURLS_VERSION; ?></div>\r
268 </body>\r
269 </html>