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