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