]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - admin/plugins.php
Translation API! zomigod. First pass. See Issue 52.
[Github/YOURLS.git] / admin / plugins.php
1 <?php\r
2 define( 'YOURLS_ADMIN', true );\r
3 require_once( dirname( dirname( __FILE__ ) ).'/includes/load-yourls.php' );\r
4 yourls_maybe_require_auth();\r
5 \r
6 // Handle plugin administration pages\r
7 if( isset( $_GET['page'] ) && !empty( $_GET['page'] ) ) {\r
8         yourls_plugin_admin_page( $_GET['page'] );\r
9 }\r
10 \r
11 // Handle activation/deactivation of plugins\r
12 if( isset( $_GET['action'] ) ) {\r
13 \r
14         // Check nonce\r
15         yourls_verify_nonce( 'manage_plugins', $_REQUEST['nonce'] );\r
16 \r
17         // Check plugin file is valid\r
18         if( isset( $_GET['plugin'] ) && yourls_validate_plugin_file( YOURLS_PLUGINDIR.'/'.$_GET['plugin'].'/plugin.php') ) {\r
19                 \r
20                 global $ydb;\r
21                 // Activate / Deactive\r
22                 switch( $_GET['action'] ) {\r
23                         case 'activate':\r
24                                 $result = yourls_activate_plugin( $_GET['plugin'].'/plugin.php' );\r
25                                 if( $result === true )\r
26                                         yourls_redirect( yourls_admin_url( 'plugins.php?success=activated' ), 302 );\r
27 \r
28                                 break;\r
29                 \r
30                         case 'deactivate':\r
31                                 $result = yourls_deactivate_plugin( $_GET['plugin'].'/plugin.php' );\r
32                                 if( $result === true )\r
33                                         yourls_redirect( yourls_admin_url( 'plugins.php?success=deactivated' ), 302 );\r
34 \r
35                                 break;\r
36                                 \r
37                         default:\r
38                                 $result = 'Unsupported action';\r
39                                 break;\r
40                 }\r
41         } else {\r
42                 $result = 'No plugin specified, or not a valid plugin';\r
43         }\r
44         \r
45         yourls_add_notice( $result );\r
46 }\r
47 \r
48 // Handle message upon succesfull (de)activation\r
49 if( isset( $_GET['success'] ) ) {\r
50         if( $_GET['success'] == 'activated' OR $_GET['success'] == 'deactivated' ) {\r
51                 yourls_add_notice( 'Plugin '.__($_GET['success']) );\r
52         }\r
53 }\r
54 \r
55 yourls_html_head( 'plugins', 'Manage Plugins' );\r
56 yourls_html_logo();\r
57 yourls_html_menu();\r
58 ?>\r
59 \r
60         <h2><?php _e("Plugins"); ?></h2>\r
61         \r
62         <?php\r
63         $plugins = (array)yourls_get_plugins();\r
64         uasort( $plugins, 'yourls_plugins_sort_callback' );\r
65         \r
66         $count = count( $plugins );\r
67         $count_active = yourls_has_active_plugins();\r
68     $plugins_count = $count.' '.yourls_plural( __('plugin'), $count );\r
69         ?>\r
70         \r
71         <p id="plugin_summary"><?php printf(__('You currently have <strong>%d</strong> installed, and <strong>%d</strong> activated'), $plugins_count, $count_active ); ?></p>\r
72 \r
73         <table id="main_table" class="tblSorter" cellpadding="0" cellspacing="1">\r
74         <thead>\r
75                 <tr>\r
76                         <th><?php _e('Plugin Name'); ?></th>\r
77                         <th><?php _e('Version'); ?></th>\r
78                         <th><?php _e('Description'); ?></th>\r
79                         <th><?php _e('Author'); ?></th>\r
80                         <th><?php _e('Action'); ?></th>\r
81                 </tr>\r
82         </thead>\r
83         <tbody>\r
84         <?php\r
85         \r
86         $nonce = yourls_create_nonce( 'manage_plugins' );\r
87         \r
88         foreach( $plugins as $file=>$plugin ) {\r
89                 \r
90                 // default fields to read from the plugin header\r
91                 $fields = array(\r
92                         'name'       => 'Plugin Name',\r
93                         'uri'        => 'Plugin URI',\r
94                         'desc'       => 'Description',\r
95                         'version'    => 'Version',\r
96                         'author'     => 'Author',\r
97                         'author_uri' => 'Author URI'\r
98                 );\r
99                 \r
100                 // Loop through all default fields, get value if any and reset it\r
101                 foreach( $fields as $field=>$value ) {\r
102                         if( isset( $plugin[ $value ] ) ) {\r
103                                 $data[ $field ] = $plugin[ $value ];\r
104                         } else {\r
105                                 $data[ $field ] = '(no info)';\r
106                         }\r
107                         unset( $plugin[$value] );\r
108                 }\r
109                 \r
110                 $plugindir = trim( dirname( $file ), '/' );\r
111                 \r
112                 if( yourls_is_active_plugin( $file ) ) {\r
113                         $class = 'active';\r
114                         $action_url = yourls_nonce_url( 'manage_plugins', yourls_add_query_arg( array('action' => 'deactivate', 'plugin' => $plugindir ) ) );\r
115                         $action_anchor = __('Deactivate');\r
116                 } else {\r
117                         $class = 'inactive';\r
118                         $action_url = yourls_nonce_url( 'manage_plugins', yourls_add_query_arg( array('action' => 'activate', 'plugin' => $plugindir ) ) );\r
119                         $action_anchor = __('Activate');\r
120                 }\r
121                         \r
122                 // Other "Fields: Value" in the header? Get them too\r
123                 if( $plugin ) {\r
124                         foreach( $plugin as $extra_field=>$extra_value ) {\r
125                                 $data['desc'] .= "<br/>\n<em>$extra_field</em>: $extra_value";\r
126                                 unset( $plugin[$extra_value] );\r
127                         }\r
128                 }\r
129                 \r
130                 $data['desc'] .= "<br/><small>plugin file location: $file</small>";\r
131                 \r
132                 printf( "<tr class='plugin %s'><td class='plugin_name'><a href='%s'>%s</a></td><td class='plugin_version'>%s</td><td class='plugin_desc'>%s</td><td class='plugin_author'><a href='%s'>%s</a></td><td class='plugin_actions actions'><a href='%s'>%s</a></td></tr>",\r
133                         $class, $data['uri'], $data['name'], $data['version'], $data['desc'], $data['author_uri'], $data['author'], $action_url, $action_anchor\r
134                         );\r
135                 \r
136         }\r
137         ?>\r
138         </tbody>\r
139         </table>\r
140         \r
141         <script type="text/javascript">\r
142         yourls_defaultsort = 0;\r
143         yourls_defaultorder = 0;\r
144         <?php if ($count_active) { ?>\r
145         $('#plugin_summary').append('<span id="toggle_plugins">filter</span>');\r
146         $('#toggle_plugins').css({'background':'transparent url("../images/filter.gif") top left no-repeat','display':'inline-block','text-indent':'-9999px','width':'16px','height':'16px','margin-left':'3px','cursor':'pointer'})\r
147                 .attr('title', 'Toggle active/inactive plugins')\r
148                 .click(function(){\r
149                         $('#main_table tr.inactive').toggle();\r
150                 });\r
151         <?php } ?>\r
152         </script>\r
153         \r
154         <p><?php _e('If something goes wrong after you activate a plugin and you cannot use YOURLS or access this page, simply rename or delete its directory, or rename the plugin file to something different than <code>plugin.php</code>.'); ?></p>\r
155         \r
156         <h3><?php _e('More plugins'); ?></h3>\r
157         \r
158         <p><?php _e('For more plugins, head to the official <a href="http://yourls.org/pluginlist">Plugin list</a>.'); ?></p>\r
159 \r
160         \r
161 <?php yourls_html_footer(); ?>\r