]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - admin.php
- Renamed insert.php to admin.php
[Github/YOURLS.git] / admin.php
1 <?php\r
2 ### Require Files\r
3 require_once 'includes/config.php';\r
4 if (defined('YOURLS_PRIVATE') && YOURLS_PRIVATE == true)\r
5         require_once '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.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; 2002-<?php echo date('Y'); ?> Lester 'GaMerZ' Chan" />\r
128         <meta name="author" content="Lester 'GaMerZ' 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="css/style.css" type="text/css" media="screen" />\r
131         <link rel="stylesheet" href="css/tablesorter.css" type="text/css" media="screen" />\r
132         <script src="js/jquery-1.3.1.min.js" type="text/javascript"></script>\r
133         <script src="js/insert.js" type="text/javascript"></script>\r
134         <script src="js/jquery.tablesorter.min.js" type="text/javascript"></script>\r
135 </head>\r
136 <body>\r
137         <h1><a href="<?php echo $base_page; ?>"><span>YOURLS</span>: <span>Y</span>our <span>O</span>wn <span>URL</span> <span>S</span>hortener</a></h1>\r
138         <p>Your are logged in as: <strong><?php echo $data['username']; ?></strong>. <a href='#' onclick="alert('Not implement yet, that is kind of lame :P\nFor now, just close (quit) your browser.')">Logout</a></p>\r
139         <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
140            <?php echo $search_display; ?>\r
141            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
142         </p>\r
143 \r
144         <div id="new_url">\r
145                 <div>\r
146                         <form id="new_url_form" action="" method="get">\r
147                                 <strong>Enter the URL</strong>:<input type="text" id="add-url" name="url" value="http://" class="text" size="90" />\r
148                                 Optional: <strong>Custom short URL</strong>:<input type="text" id="add-keyword" name="keyword" value="" maxlength="12" class="text" size="8" />\r
149                                 <input type="button" id="add-button" name="add-button" value="Shorten The URL" class="button" onclick="add();" />\r
150                         </form>\r
151                         <div id="feedback" style="display:none"></div>\r
152                 </div>\r
153         </div>\r
154         \r
155         <table id="tblUrl" class="tblSorter" cellpadding="0" cellspacing="1">\r
156                 <thead>\r
157                         <tr>\r
158                                 <th>Link&nbsp;ID&nbsp;&nbsp;</th>\r
159                                 <th>Original URL</th>\r
160                                 <th>Short URL</th>\r
161                                 <th>Date</th>\r
162                                 <th>IP</th>\r
163                                 <th>Clicks&nbsp;&nbsp;</th>\r
164                                 <th>Actions</th>\r
165                         </tr>\r
166                 </thead>\r
167                 <tfoot>\r
168                         <tr>\r
169                                 <th colspan="4" style="text-align: left;">\r
170                                         <form action="" method="get">\r
171                                                 <div>\r
172                                                         <div style="float:right;">\r
173                                                                 <input type="submit" id="submit-sort" value="Filter" class="button primary" />\r
174                                                                 &nbsp;\r
175                                                                 <input type="button" id="submit-clear-filter" value="Clear Filter" class="button" onclick="window.parent.location.href = 'admin.php'" />\r
176                                                         </div>\r
177 \r
178                                                         Search&nbsp;for&nbsp;\r
179                                                         <input type="text" name="s_search" class="text" size="20" value="<?php echo $search_text; ?>" />\r
180                                                         &nbsp;in&nbsp;\r
181                                                         <select name="s_in" size="1">\r
182                                                                 <!-- <option value="id"<?php if($search_in_sql == 'id') { echo ' selected="selected"'; } ?>>ID</option> -->\r
183                                                                 <option value="url"<?php if($search_in_sql == 'url') { echo ' selected="selected"'; } ?>>URL</option>\r
184                                                                 <option value="ip"<?php if($search_in_sql == 'ip') { echo ' selected="selected"'; } ?>>IP</option>\r
185                                                         </select>\r
186                                                         &ndash;&nbsp;Order&nbsp;by&nbsp;\r
187                                                         <select name="s_by" size="1">\r
188                                                                 <option value="id"<?php if($sort_by_sql == 'id') { echo ' selected="selected"'; } ?>>ID</option>\r
189                                                                 <option value="url"<?php if($sort_by_sql == 'url') { echo ' selected="selected"'; } ?>>URL</option>\r
190                                                                 <option value="timestamp"<?php if($sort_by_sql == 'timestamp') { echo ' selected="selected"'; } ?>>Date</option>\r
191                                                                 <option value="ip"<?php if($sort_by_sql == 'ip') { echo ' selected="selected"'; } ?>>IP</option>\r
192                                                                 <option value="clicks"<?php if($sort_by_sql == 'clicks') { echo ' selected="selected"'; } ?>>Clicks</option>\r
193                                                         </select>\r
194                                                         <select name="s_order" size="1">\r
195                                                                 <option value="asc"<?php if($sort_order_sql == 'asc') { echo ' selected="selected"'; } ?>>Ascending</option>\r
196                                                                 <option value="desc"<?php if($sort_order_sql == 'desc') { echo ' selected="selected"'; } ?>>Descending</option>\r
197                                                         </select>\r
198                                                         &ndash;&nbsp;Show&nbsp;\r
199                                                         <input type="text" name="perpage" class="text" size="2" value="<?php echo $perpage; ?>" />&nbsp;rows<br/>\r
200                                                         \r
201                                                         Show links with\r
202                                                         <select name="link_filter" size="1">\r
203                                                                 <option value="more"<?php if($link_filter === 'more') { echo ' selected="selected"'; } ?>>more</option>\r
204                                                                 <option value="less"<?php if($link_filter === 'less') { echo ' selected="selected"'; } ?>>less</option>\r
205                                                         </select>\r
206                                                         than\r
207                                                         <input type="text" name="link_limit" class="text" size="4" value="<?php echo $link_limit; ?>" />clicks\r
208 \r
209                                                         \r
210                                                 </div>\r
211                                         </form>\r
212                                 </th>\r
213                                 <th colspan="3" style="text-align: right;">\r
214                                         Pages (<?php echo $total_pages; ?>):\r
215                                         <?php\r
216                                                 if ($page >= 4) {\r
217                                                         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
218                                                 }\r
219                                                 if($page > 1) {\r
220                                                         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
221                                                 }\r
222                                                 for($i = $page - 2 ; $i  <= $page +2; $i++) {\r
223                                                         if ($i >= 1 && $i <= $total_pages) {\r
224                                                                 if($i == $page) {\r
225                                                                         echo "<strong>[$i]</strong> ";\r
226                                                                 } else {\r
227                                                                         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
228                                                                 }\r
229                                                         }\r
230                                                 }\r
231                                                 if($page < $total_pages) {\r
232                                                         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
233                                                 }\r
234                                                 if (($page+2) < $total_pages) {\r
235                                                         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
236                                                 }\r
237                                         ?>\r
238                                 </th>\r
239                         </tr>\r
240                 </tfoot>\r
241                 <tbody>\r
242                         <?php\r
243                         ### Main Query\r
244                         $url_results = $db->get_results("SELECT * FROM url WHERE 1=1 $where ORDER BY $sort_by_sql $sort_order_sql LIMIT $offset, $perpage;");\r
245                         if($url_results) {\r
246                                 foreach( $url_results as $url_result ) {\r
247                                         $base36 = yourls_int2string($url_result->id);\r
248                                         $timestamp = strtotime($url_result->timestamp);\r
249                                         $id = ($url_result->id);\r
250                                         $url = stripslashes($url_result->url);\r
251                                         $ip = $url_result->ip;\r
252                                         $clicks = $url_result->clicks;\r
253 \r
254                                         echo yourls_table_add_row($id, $base36, $url, $ip, $clicks, $timestamp );\r
255                                 }\r
256                         } else {\r
257                                 echo '<tr class="nourl_found"><td colspan="7">No URL Found</td></tr>';\r
258                         }\r
259                         ?>\r
260                 </tbody>\r
261         </table>\r
262 \r
263 \r
264 </body>\r
265 </html>