Nginx Helper - Version 1.8.6

Version Description

  • Removed wercker.yml from plugin zip/svn.
  • Updated readme
Download this release

Release Info

Developer rtcamp
Plugin Icon 128x128 Nginx Helper
Version 1.8.6
Comparing to
See all releases

Code changes from version 1.8.5 to 1.8.6

nginx-helper.php CHANGED
@@ -2,13 +2,13 @@
2
  /*
3
  Plugin Name: Nginx Helper
4
  Plugin URI: http://rtcamp.com/nginx-helper/
5
- Description: An nginx helper that serves various functions.
6
- Version: 1.8.5
7
  Author: rtCamp
8
  Author URI: http://rtcamp.com
9
  Text Domain: nginx-helper
10
  Requires at least: 3.0
11
- Tested up to: 4.0
12
  */
13
 
14
  namespace rtCamp\WP\Nginx {
2
  /*
3
  Plugin Name: Nginx Helper
4
  Plugin URI: http://rtcamp.com/nginx-helper/
5
+ Description: Cleans nginx's fastcgi/proxy cache whenever a post is edited/published. Also does few more things.
6
+ Version: 1.8.6
7
  Author: rtCamp
8
  Author URI: http://rtcamp.com
9
  Text Domain: nginx-helper
10
  Requires at least: 3.0
11
+ Tested up to: 4.1
12
  */
13
 
14
  namespace rtCamp\WP\Nginx {
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
- === Nginx ===
2
- Contributors: rtcamp, rahul286, saurabhshukla, faishal, desaiuditd, rittesh.patel, Darren Slatten, jk3us, daankortenbach, telofy, pjv, llonchj, manishsongirkar36,jinnko,weskoop
3
  Tags: nginx, cache, purge, nginx map, nginx cache, maps, fastcgi, proxy, rewrite, permalinks
4
  Requires at least: 3.0
5
  Tested up to: 4.0
6
- Stable tag: 1.8.5
7
  License: GPLv2 or later (of-course)
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Donate Link: http://rtcamp.com/donate/
10
 
11
- Helps WordPress-Nginx work together nicely using fastcgi/proxy cache purging, nginx map{}, rewrite support for permalinks & more
12
 
13
  == Description ==
14
 
@@ -101,14 +101,12 @@ Definitely. `WPMU_ACCEL_REDIRECT` reduces the load on PHP, but it still ask Word
101
 
102
  **Q. I am using X plugin. Will it work on Nginx?**
103
 
104
- Most likely yes. A wordpress plugin, if not using explictly any Apache-only mod, should work on Nginx. Some plugin may need some extra work.
105
 
106
 
107
  = Still need help! =
108
 
109
- Post your problem in [our free support forum](http://rtcamp.com/support/forum/wordpress-nginx/) or wordpress.org forum here. We answer questions everywhere. Including Nginx official forum, serverfault, stackoverflow, etc.
110
- Its just that we are hyperactive on our own forum!
111
-
112
 
113
  == Screenshots ==
114
  1. Nginx plugin settings
@@ -116,6 +114,10 @@ Its just that we are hyperactive on our own forum!
116
 
117
  == Changelog ==
118
 
 
 
 
 
119
  = 1.8.5 =
120
  * Added WP_CLI support - by [Udit Desai](https://profiles.wordpress.org/desaiuditd/)
121
 
1
+ === Nginx Helper ===
2
+ Contributors: rtcamp, rahul286, saurabhshukla, manishsongirkar36, faishal, desaiuditd, Darren Slatten, jk3us, daankortenbach, telofy, pjv, llonchj, jinnko,weskoop
3
  Tags: nginx, cache, purge, nginx map, nginx cache, maps, fastcgi, proxy, rewrite, permalinks
4
  Requires at least: 3.0
5
  Tested up to: 4.0
6
+ Stable tag: 1.8.6
7
  License: GPLv2 or later (of-course)
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Donate Link: http://rtcamp.com/donate/
10
 
11
+ Cleans nginx's fastcgi/proxy cache whenever a post is edited/published. Also does few more things.
12
 
13
  == Description ==
14
 
101
 
102
  **Q. I am using X plugin. Will it work on Nginx?**
103
 
104
+ Most likely yes. A wordpress plugin, if not using explicitly any Apache-only mod, should work on Nginx. Some plugin may need some extra work.
105
 
106
 
107
  = Still need help! =
108
 
109
+ Please post your problem in [our free support forum](http://community.rtcamp.com/c/wordpress-nginx).
 
 
110
 
111
  == Screenshots ==
112
  1. Nginx plugin settings
114
 
115
  == Changelog ==
116
 
117
+ = 1.8.6 =
118
+ * Removed wercker.yml from plugin zip/svn.
119
+ * Updated readme
120
+
121
  = 1.8.5 =
122
  * Added WP_CLI support - by [Udit Desai](https://profiles.wordpress.org/desaiuditd/)
123
 
trunk/admin/admin.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace rtCamp\WP\Nginx {
4
+
5
+ class Admin {
6
+
7
+ /**
8
+ * Holds the values to be used in the fields callbacks
9
+ */
10
+ private $nginx_helper_tabs;
11
+
12
+ function __construct() {
13
+ if ( is_multisite() ) {
14
+ add_action( 'network_admin_menu', array( &$this, 'add_network_menu' ) );
15
+ } else {
16
+ add_action( 'admin_menu', array( &$this, 'add_menu' ) );
17
+ }
18
+
19
+ add_action( 'admin_init', array( $this, 'nginx_admin_page_init' ) );
20
+
21
+ /**
22
+ * Define Tabs
23
+ */
24
+ $this->nginx_helper_tabs = apply_filters( 'rt_nginx_helper_tabs', array(
25
+ 'general' => array(
26
+ 'menu_title' => __( 'General', 'nginx-helper' ),
27
+ 'menu_slug' => 'general'
28
+ ),
29
+ 'support' => array(
30
+ 'menu_title' => __( 'Support', 'nginx-helper' ),
31
+ 'menu_slug' => 'support'
32
+ ) )
33
+ );
34
+ }
35
+
36
+ /**
37
+ * Add setting sub-menu for single site
38
+ */
39
+ function add_menu() {
40
+ add_submenu_page( 'options-general.php', __( 'Nginx Helper', 'nginx-helper' ), __( 'Nginx Helper', 'nginx-helper' ), 'manage_options', 'nginx', array( &$this, 'nginx_create_admin_page' ) );
41
+ }
42
+
43
+ /**
44
+ * Add setting sub-menu for multi site
45
+ */
46
+ function add_network_menu() {
47
+ add_submenu_page( 'settings.php', __( 'Nginx Helper', 'nginx-helper' ), __( 'Nginx Helper', 'nginx-helper' ), 'manage_options', 'nginx', array( &$this, 'nginx_create_admin_page' ) );
48
+ }
49
+
50
+ /**
51
+ * Create tab with links
52
+ *
53
+ * @param type $current current tab
54
+ */
55
+ function nginx_admin_page_tabs( $current = 'general' ) {
56
+ echo '<h2 class="nav-tab-wrapper">';
57
+ foreach ( $this->nginx_helper_tabs as $tab => $name ) {
58
+ $class = ( $tab == $current ) ? ' nav-tab-active' : '';
59
+ echo '<a class="nav-tab' . $class . '" href="?page=nginx&tab=' . $name['menu_slug'] . '">' . $name['menu_title'] . '</a>';
60
+ }
61
+ echo '</h2>';
62
+ }
63
+
64
+ /**
65
+ * Options page callback
66
+ */
67
+ function nginx_create_admin_page() {
68
+ global $pagenow;
69
+
70
+ /**
71
+ * Includes PHP files located in 'admin/lib/' folder
72
+ */
73
+ foreach (glob(plugin_dir_path(__FILE__) . "lib/*.php") as $lib_filename) {
74
+ require_once( $lib_filename );
75
+ } ?>
76
+
77
+ <div class="wrap rt-nginx-wrapper">
78
+ <h2 class="rt_option_title"><?php _e( 'Nginx Settings', 'nginx-helper' ); ?></h2>
79
+ <div id="poststuff">
80
+ <div id="post-body" class="metabox-holder columns-2">
81
+ <div id="post-body-content"><?php
82
+
83
+ /* Show Tabs */
84
+ if ( ( 'options-general.php' == $pagenow || 'settings.php' == $pagenow ) && isset( $_GET['tab'] ) ) {
85
+ $this->nginx_admin_page_tabs( $_GET['tab'] );
86
+ } else {
87
+ $this->nginx_admin_page_tabs( 'general' );
88
+ }
89
+
90
+ /* Fetch Page Content */
91
+ $current = isset( $_GET['tab'] ) ? $_GET['tab'] : 'general';
92
+ if ( ( 'options-general.php' == $pagenow || 'settings.php' == $pagenow ) && isset( $_GET['page'] ) ) {
93
+ switch ( $current ) {
94
+ case 'general' :
95
+ nginx_general_options_page();
96
+ break;
97
+ case 'support' :
98
+ nginx_support_options_page();
99
+ break;
100
+ }
101
+ } ?>
102
+ </div> <!-- End of #post-body-content -->
103
+ <div id="postbox-container-1" class="postbox-container"><?php
104
+ default_admin_sidebar(); ?>
105
+ </div> <!-- End of #postbox-container-1 -->
106
+ </div> <!-- End of #post-body -->
107
+ </div> <!-- End of #poststuff -->
108
+ </div> <!-- End of .wrap .rt-nginx-wrapper -->
109
+ <?php
110
+ }
111
+
112
+ function nginx_admin_page_init() {
113
+ add_action( 'admin_enqueue_scripts', array( $this, 'nginx_admin_enqueue_assets' ), 999 );
114
+ add_action( 'admin_bar_menu', array( &$this, 'nginx_toolbar_purge_item' ), 100 );
115
+ }
116
+
117
+ function nginx_toolbar_purge_item( $admin_bar ) {
118
+ if ( !current_user_can( 'manage_options' ) ) {
119
+ return;
120
+ }
121
+ $purge_url = add_query_arg( array( 'nginx_helper_action' => 'purge', 'nginx_helper_urls' => 'all' ) );
122
+ $nonced_url = wp_nonce_url( $purge_url, 'nginx_helper-purge_all' );
123
+ $admin_bar->add_menu( array( 'id' => 'nginx-helper-purge-all', 'title' => __( 'Purge Cache', 'nginx-helper' ), 'href' => $nonced_url, 'meta' => array( 'title' => __( 'Purge Cache', 'nginx-helper' ), ), ) );
124
+ }
125
+
126
+ function nginx_admin_enqueue_assets($hook) {
127
+ if ( 'settings_page_nginx' != $hook ) {
128
+ return;
129
+ }
130
+
131
+ /* Load Plugin CSS */
132
+ wp_enqueue_style('rt-nginx-admin-icon', plugin_dir_url(__FILE__) . 'assets/nginx-helper-icons/css/nginx-fontello.css');
133
+ wp_enqueue_style('rt-nginx-admin-css', plugin_dir_url(__FILE__) . 'assets/style.css');
134
+
135
+ /* Load Plugin Scripts */
136
+ $admin_js = trailingslashit( site_url() ) . '?get_feeds=1';
137
+ wp_enqueue_script( 'nginx-js', plugin_dir_url( __FILE__ ) . 'assets/nginx.js', '', '', true );
138
+ wp_localize_script( 'nginx-js', 'news_url', $admin_js );
139
+ }
140
+ }
141
+ }
trunk/admin/assets/logo.png ADDED
Binary file
trunk/admin/assets/nginx-helper-icons/config.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "nginx-fontello",
3
+ "css_prefix_text": "nginx-helper-",
4
+ "css_use_suffix": false,
5
+ "hinting": true,
6
+ "units_per_em": 1000,
7
+ "ascent": 850,
8
+ "glyphs": [
9
+ {
10
+ "uid": "72b1277834cba5b7944b0a6cac7ddb0d",
11
+ "css": "rss",
12
+ "code": 59395,
13
+ "src": "fontawesome"
14
+ },
15
+ {
16
+ "uid": "627abcdb627cb1789e009c08e2678ef9",
17
+ "css": "twitter",
18
+ "code": 59394,
19
+ "src": "fontawesome"
20
+ },
21
+ {
22
+ "uid": "bc50457410acf467b8b5721240768742",
23
+ "css": "facebook",
24
+ "code": 59393,
25
+ "src": "entypo"
26
+ },
27
+ {
28
+ "uid": "b945f4ac2439565661e8e4878e35d379",
29
+ "css": "gplus",
30
+ "code": 59392,
31
+ "src": "entypo"
32
+ }
33
+ ]
34
+ }
trunk/admin/assets/nginx-helper-icons/css/nginx-fontello.css ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'nginx-fontello';
3
+ src: url('../font/nginx-fontello.eot?7388141');
4
+ src: url('../font/nginx-fontello.eot?7388141#iefix') format('embedded-opentype'),
5
+ url('../font/nginx-fontello.woff?7388141') format('woff'),
6
+ url('../font/nginx-fontello.ttf?7388141') format('truetype'),
7
+ url('../font/nginx-fontello.svg?7388141#nginx-fontello') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+ /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
12
+ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
13
+ /*
14
+ @media screen and (-webkit-min-device-pixel-ratio:0) {
15
+ @font-face {
16
+ font-family: 'nginx-fontello';
17
+ src: url('../font/nginx-fontello.svg?7388141#nginx-fontello') format('svg');
18
+ }
19
+ }
20
+ */
21
+
22
+ [class^="nginx-helper-"]:before, [class*=" nginx-helper-"]:before {
23
+ font-family: "nginx-fontello";
24
+ font-style: normal;
25
+ font-weight: normal;
26
+ speak: none;
27
+
28
+ display: inline-block;
29
+ text-decoration: inherit;
30
+ width: 1em;
31
+ margin-right: .2em;
32
+ text-align: center;
33
+ /* opacity: .8; */
34
+
35
+ /* For safety - reset parent styles, that can break glyph codes*/
36
+ font-variant: normal;
37
+ text-transform: none;
38
+
39
+ /* fix buttons height, for twitter bootstrap */
40
+ line-height: 1em;
41
+
42
+ /* Animation center compensation - margins should be symmetric */
43
+ /* remove if not needed */
44
+ margin-left: .2em;
45
+
46
+ /* you can be more comfortable with increased icons size */
47
+ /* font-size: 120%; */
48
+
49
+ /* Uncomment for 3D effect */
50
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
51
+ }
52
+
53
+ .nginx-helper-rss:before { content: '\e803'; } /* '' */
54
+ .nginx-helper-twitter:before { content: '\e802'; } /* '' */
55
+ .nginx-helper-facebook:before { content: '\e801'; } /* '' */
56
+ .nginx-helper-gplus:before { content: '\e800'; } /* '' */
trunk/admin/assets/nginx-helper-icons/font/nginx-fontello.eot ADDED
Binary file
trunk/admin/assets/nginx-helper-icons/font/nginx-fontello.svg ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Copyright (C) 2013 by original authors @ fontello.com</metadata>
5
+ <defs>
6
+ <font id="nginx-fontello" horiz-adv-x="1000" >
7
+ <font-face font-family="nginx-fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
8
+ <missing-glyph horiz-adv-x="1000" />
9
+ <glyph glyph-name="rss" unicode="&#xe803;" d="m214 100q0-45-31-76t-76-31t-76 31t-31 76t31 76t76 31t76-31t31-76z m286-69q1-15-9-26q-11-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26q9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26q-10-11-26-11h-80q-14 0-25 10t-11 23q-6 120-56 228t-129 188t-188 129t-227 57q-14 0-24 11t-10 24v80q0 15 11 26q10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
10
+ <glyph glyph-name="twitter" unicode="&#xe802;" d="m904 622q-37-54-90-93q0-8 0-23q0-73-21-145t-64-139t-103-117t-144-82t-181-30q-151 0-276 81q19-3 43-3q126 0 224 77q-59 2-105 36t-64 89q19-2 34-2q24 0 48 6q-63 13-104 62t-41 115v2q38-21 82-23q-37 25-59 64t-22 86q0 49 25 91q68-83 164-133t208-55q-5 21-5 41q0 75 53 127t127 53q79 0 132-57q61 12 114 44q-20-64-79-100q52 6 104 28z" horiz-adv-x="928.6" />
11
+ <glyph glyph-name="facebook" unicode="&#xe801;" d="m500 644l-142 0q-14 0-25-15t-11-37l0-102l178 0l0-148l-178 0l0-442l-170 0l0 442l-152 0l0 148l152 0l0 86q0 94 59 159t147 65l142 0l0-156z" horiz-adv-x="500" />
12
+ <glyph glyph-name="gplus" unicode="&#xe800;" d="m48 572q0 58 25 102t56 65t69 34t56 15t26 2l230 0l0-4q0-22-78-36q-28 0-38-6q40-20 54-56t14-96q0-102-68-158q-38-38-38-54q0-18 50-64q104-90 104-178q0-140-116-194q-68-34-150-34l-4 0l-4 2q-2-2-4-2q-24 0-54 5t-75 21t-74 57t-29 103q0 60 32 101t83 57t88 22t71 6l2 0q-16 22-24 47t-8 39l2 14l-14 0q-64 0-110 30q-74 44-74 160z m370-452q-4 52-43 84t-103 32l-16 0q-64-2-114-46q-46-42-42-94t53-80t119-24q68 4 109 40t37 88z m-60 500q-30 108-122 108q-12 0-20-2q-40-12-58-62q-16-50-2-106q14-52 47-85t71-33q12 0 18 2q42 12 63 65t3 113z m388-174l150 0l0-94l-150 0l0-150l-94 0l0 150l-150 0l0 94l150 0l0 150l94 0l0-150z" horiz-adv-x="896" />
13
+ </font>
14
+ </defs>
15
+ </svg>
trunk/admin/assets/nginx-helper-icons/font/nginx-fontello.ttf ADDED
Binary file
trunk/admin/assets/nginx-helper-icons/font/nginx-fontello.woff ADDED
Binary file
trunk/admin/assets/nginx-icon-32x32.png ADDED
Binary file
trunk/admin/assets/nginx.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function() {
2
+ var news_section = jQuery('#latest_news');
3
+ if (news_section.length > 0) {
4
+ jQuery.get(news_url, function(data) {
5
+ news_section.find('.inside').html(data);
6
+ });
7
+ }
8
+
9
+ /**
10
+ * Show OR Hide options on option checkbox
11
+ * @param {type} selector Selector of Checkbox and PostBox
12
+ */
13
+ function nginx_show_option( selector ) {
14
+ jQuery( '#'+selector ).on( 'change', function (){
15
+ if ( jQuery(this).is( ':checked' ) ) {
16
+ jQuery( '.'+selector ).show();
17
+ } else {
18
+ jQuery( '.'+selector ).hide();
19
+ }
20
+ } );
21
+ }
22
+ /* Function call with parameter */
23
+ nginx_show_option( 'enable_purge' );
24
+ nginx_show_option( 'enable_map' );
25
+ nginx_show_option( 'enable_log' );
26
+ });
trunk/admin/assets/rtp-social-icons-32-32.png ADDED
Binary file
trunk/admin/assets/style.css ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .clearfix { *zoom: 1; }
2
+ .clearfix:before, .clearfix:after { content: " "; display: table; }
3
+ .clearfix:after { clear: both; }
4
+ h4 { margin: 0; }
5
+ .form-table th, .form-wrap label { vertical-align: middle; }
6
+ table.rtnginx-table { border-bottom: 1px solid #EEE; }
7
+ table.rtnginx-table:last-child { border-bottom: 0; }
8
+ .rtnginx-table p.error { color: red; }
9
+ pre#map { background: #e5e5e5 none; border-radius: 10px; padding: 10px; }
10
+ .wrap h2.rt_option_title { background: url(nginx-icon-32x32.png) 0 6px no-repeat rgba(0, 0, 0, 0); padding-left: 40px; }
11
+ #poststuff h2 { padding: 0 0 0 10px; margin-top: 0; }
12
+ form#purgeall .button-primary { box-shadow: inset 0 -2px rgba(0, 0, 0, 0.14);padding: 15px 30px;font-size: 1rem;border: 0;border-radius: 5px;color: #FFF;background: #DD3D36; height: auto; }
13
+ form#purgeall .button-primary:hover, form#purgeall .button-primary:focus { background: #d52c24; }
14
+ .nh-aligncenter { display: block; text-align: center; line-height: 2; }
15
+ #latest_news .inside ul, #useful-links .inside ul { margin: 0 0 0 12px }
16
+ #latest_news .inside ul li, #useful-links .inside ul li { list-style: square; padding: 0 0 7px; }
17
+ #social .inside a { background-color: #666;color: #FFF;display: inline-block;height: 30px;font-size: 1.25rem;line-height: 30px;margin: 10px 20px 0 0;overflow: hidden;padding: 0;text-align: center;text-decoration: none;width: 30px;-webkit-border-radius: 1000px;-moz-border-radius: 1000px;border-radius: 1000px; }
18
+ #social .inside .nginx-helper-rss:hover { background-color: #FAA33D; }
19
+ #social .inside .nginx-helper-facebook:hover { background-color: #537BBD; }
20
+ #social .inside .nginx-helper-twitter:hover { background-color: #40BFF5; }
21
+ #social .inside .nginx-helper-gplus:hover { background-color: #DD4B39; }
trunk/admin/install.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author: Saurabh Shukla <saurabh.shukla@rtcamp.com>
4
+ *
5
+ * Parts of code based off http://wordpress.org/extend/plugins/nginx-manager/ by http://profiles.wordpress.org/hpatoio/ and http://profiles.wordpress.org/rukbat/
6
+ */
7
+ namespace rtCamp\WP\Nginx {
8
+ if ( preg_match( '#' . basename( __FILE__ ) . '#', $_SERVER[ 'PHP_SELF' ] ) ) {
9
+ die( 'You are not allowed to call this page directly.' );
10
+ }
11
+
12
+ function rt_wp_nginx_helper_install() {
13
+ global $wp_roles, $rt_wp_nginx_helper;
14
+
15
+ if ( ! current_user_can( 'activate_plugins' ) ) {
16
+ return;
17
+ }
18
+
19
+ $role = get_role( 'administrator' );
20
+
21
+ if ( empty( $role ) ) {
22
+ update_site_option( "rt_wp_nginx_helper_init_check", __( 'Sorry, you need to be an administrator to use Nginx Helper', 'nginx-helper' ) );
23
+ return;
24
+ }
25
+
26
+ $role->add_cap( 'Nginx Helper | Config' );
27
+ $role->add_cap( 'Nginx Helper | Purge cache' );
28
+
29
+ $rt_wp_nginx_helper_get_options = get_site_option( 'rt_wp_nginx_helper_global_options' );
30
+
31
+ if ( empty( $rt_wp_nginx_helper_get_options ) ) {
32
+ $rt_wp_nginx_helper_get_options = rt_wp_nginx_helper_get_options();
33
+ update_site_option( "rt_wp_nginx_helper_global_options", $rt_wp_nginx_helper_get_options );
34
+ }
35
+
36
+ if ( is_multisite() ) {
37
+ $blogs = get_blogs_of_user( true );
38
+ foreach ( $blogs as $b ) {
39
+ $rt_wp_nginx_helper_options = get_blog_option( $b->userblog_id, 'rt_wp_nginx_helper_options' );
40
+ if ( empty( $rt_wp_nginx_helper_options ) ) {
41
+ $rt_wp_nginx_helper_options = rt_wp_nginx_helper_get_options();
42
+ update_blog_option( $b->userblog_id, "rt_wp_nginx_helper_options", $rt_wp_nginx_helper_options );
43
+ }
44
+ }
45
+ } else {
46
+ $rt_wp_nginx_helper_options = get_option( 'rt_wp_nginx_helper_options' );
47
+ if ( empty( $rt_wp_nginx_helper_options ) ) {
48
+ $rt_wp_nginx_helper_options = rt_wp_nginx_helper_get_options();
49
+ update_option( "rt_wp_nginx_helper_options", $rt_wp_nginx_helper_options );
50
+ }
51
+ }
52
+ wp_schedule_event( time(), 'daily', 'rt_wp_nginx_helper_check_log_file_size_daily' );
53
+ }
54
+
55
+ function rt_wp_nginx_helper_uninstall() {
56
+ wp_clear_scheduled_hook( 'rt_wp_nginx_helper_check_log_file_size_daily' );
57
+ delete_site_option( 'rt_wp_nginx_helper_options' );
58
+ rt_wp_nginx_helper_remove_capability( 'Nginx Helper | Config' );
59
+ rt_wp_nginx_helper_remove_capability( 'Nginx Helper | Purge cache' );
60
+ }
61
+
62
+ function rt_wp_nginx_helper_remove_capability( $capability ) {
63
+ $check_order = array( "subscriber", "contributor", "author", "editor", "administrator" );
64
+
65
+ foreach ( $check_order as $role ) {
66
+ $role = get_role( $role );
67
+ $role->remove_cap( $capability );
68
+ }
69
+ }
70
+
71
+ function rt_wp_nginx_helper_get_options() {
72
+ $rt_wp_nginx_helper_get_options = array( );
73
+ $rt_wp_nginx_helper_get_options[ 'log_level' ] = 'INFO';
74
+ $rt_wp_nginx_helper_get_options[ 'log_filesize' ] = 5;
75
+
76
+ $rt_wp_nginx_helper_get_options[ 'enable_purge' ] = 0;
77
+ $rt_wp_nginx_helper_get_options[ 'enable_map' ] = 0;
78
+ $rt_wp_nginx_helper_get_options[ 'enable_log' ] = 0;
79
+ $rt_wp_nginx_helper_get_options[ 'enable_stamp' ] = 0;
80
+
81
+ $rt_wp_nginx_helper_get_options[ 'purge_homepage_on_new' ] = 1;
82
+ $rt_wp_nginx_helper_get_options[ 'purge_homepage_on_edit' ] = 1;
83
+ $rt_wp_nginx_helper_get_options[ 'purge_homepage_on_del' ] = 1;
84
+
85
+ $rt_wp_nginx_helper_get_options[ 'purge_archive_on_new' ] = 1;
86
+ $rt_wp_nginx_helper_get_options[ 'purge_archive_on_edit' ] = 1;
87
+ $rt_wp_nginx_helper_get_options[ 'purge_archive_on_del' ] = 1;
88
+
89
+ $rt_wp_nginx_helper_get_options[ 'purge_archive_on_new_comment' ] = 0;
90
+ $rt_wp_nginx_helper_get_options[ 'purge_archive_on_deleted_comment' ] = 0;
91
+
92
+ $rt_wp_nginx_helper_get_options[ 'purge_page_on_mod' ] = 1;
93
+ $rt_wp_nginx_helper_get_options[ 'purge_page_on_new_comment' ] = 1;
94
+ $rt_wp_nginx_helper_get_options[ 'purge_page_on_deleted_comment' ] = 1;
95
+
96
+ return $rt_wp_nginx_helper_get_options;
97
+ }
98
+ }
trunk/admin/lib/nginx-general.php ADDED
@@ -0,0 +1,346 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace rtCamp\WP\Nginx {
4
+
5
+ function nginx_general_options_page() {
6
+ global $rt_wp_nginx_helper, $rt_wp_nginx_purger;
7
+
8
+ $update = 0;
9
+ $error_time = false;
10
+ $error_log_filesize = false;
11
+ $rt_wp_nginx_helper->options['enable_purge'] = (isset($_POST['enable_purge']) and ($_POST['enable_purge'] == 1) ) ? 1 : 0;
12
+ $rt_wp_nginx_helper->options['enable_map'] = (isset($_POST['enable_map']) and ($_POST['enable_map'] == 1) ) ? 1 : 0;
13
+ $rt_wp_nginx_helper->options['enable_log'] = (isset($_POST['enable_log']) and ($_POST['enable_log'] == 1) ) ? 1 : 0;
14
+ $rt_wp_nginx_helper->options['enable_stamp'] = (isset($_POST['enable_stamp']) and ($_POST['enable_stamp'] == 1) ) ? 1 : 0;
15
+
16
+ if ( isset( $_POST['is_submit'] ) && ( $_POST['is_submit'] == 1 ) ) {
17
+ if ( !( !is_network_admin() && is_multisite() ) ) {
18
+ if ( $rt_wp_nginx_helper->options['enable_log'] ) {
19
+ if ( isset( $_POST['log_level'] ) && !empty( $_POST['log_level'] ) && $_POST['log_level'] != '' ) {
20
+ $rt_wp_nginx_helper->options['log_level'] = $_POST['log_level'];
21
+ } else {
22
+ $rt_wp_nginx_helper->options['log_level'] = 'INFO';
23
+ }
24
+ if ( isset( $_POST['log_filesize'] ) && !empty( $_POST['log_filesize'] ) && $_POST['log_filesize'] != '' ) {
25
+ if ( ( !is_numeric( $_POST['log_filesize'] ) ) || ( empty( $_POST['log_filesize'] ) ) ) {
26
+ $error_log_filesize = __( 'Log file size must be a number', 'nginx-helper' );
27
+ } else {
28
+ $rt_wp_nginx_helper->options['log_filesize'] = $_POST['log_filesize'];
29
+ }
30
+ } else {
31
+ $rt_wp_nginx_helper->options['log_filesize'] = 5;
32
+ }
33
+ }
34
+ if ( $rt_wp_nginx_helper->options['enable_map'] ) {
35
+ $rt_wp_nginx_helper->update_map();
36
+ }
37
+ }
38
+ if ( isset( $_POST['enable_purge'] ) ) {
39
+ $rt_wp_nginx_helper->options['purge_homepage_on_edit'] = ( isset($_POST['purge_homepage_on_edit'] ) and ( $_POST['purge_homepage_on_edit'] == 1 ) ) ? 1 : 0;
40
+ $rt_wp_nginx_helper->options['purge_homepage_on_del'] = ( isset($_POST['purge_homepage_on_del'] ) and ( $_POST['purge_homepage_on_del'] == 1 ) ) ? 1 : 0;
41
+
42
+ $rt_wp_nginx_helper->options['purge_archive_on_edit'] = ( isset($_POST['purge_archive_on_edit'] ) and ( $_POST['purge_archive_on_edit'] == 1 ) ) ? 1 : 0;
43
+ $rt_wp_nginx_helper->options['purge_archive_on_del'] = ( isset($_POST['purge_archive_on_del'] ) and ( $_POST['purge_archive_on_del'] == 1 ) ) ? 1 : 0;
44
+
45
+ $rt_wp_nginx_helper->options['purge_archive_on_new_comment'] = ( isset( $_POST['purge_archive_on_new_comment'] ) and ( $_POST['purge_archive_on_new_comment'] == 1 ) ) ? 1 : 0;
46
+ $rt_wp_nginx_helper->options['purge_archive_on_deleted_comment'] = ( isset( $_POST['purge_archive_on_deleted_comment'] ) and ( $_POST['purge_archive_on_deleted_comment'] == 1 ) ) ? 1 : 0;
47
+
48
+ $rt_wp_nginx_helper->options['purge_page_on_mod'] = ( isset( $_POST['purge_page_on_mod'] ) and ( $_POST['purge_page_on_mod'] == 1 ) ) ? 1 : 0;
49
+ $rt_wp_nginx_helper->options['purge_page_on_new_comment'] = ( isset( $_POST['purge_page_on_new_comment'] ) and ( $_POST['purge_page_on_new_comment'] == 1 ) ) ? 1 : 0;
50
+ $rt_wp_nginx_helper->options['purge_page_on_deleted_comment'] = ( isset( $_POST['purge_page_on_deleted_comment'] ) and ( $_POST['purge_page_on_deleted_comment'] == 1 ) ) ? 1 : 0;
51
+ }
52
+ update_site_option( 'rt_wp_nginx_helper_options', $rt_wp_nginx_helper->options );
53
+ $update = 1;
54
+ }
55
+ $rt_wp_nginx_helper->options = get_site_option( 'rt_wp_nginx_helper_options' );
56
+
57
+ /**
58
+ * Show Update Message
59
+ */
60
+ if ( isset( $_POST['smart_http_expire_save'] ) ) {
61
+ echo '<div class="updated"><p>' . __( 'Settings saved.', 'nginx-helper' ) . '</p></div>';
62
+ }
63
+
64
+ /**
65
+ * Check for single multiple with subdomain OR multiple with subdirectory site
66
+ */
67
+ $nginx_setting_link = '#';
68
+ if ( is_multisite() ) {
69
+ if ( SUBDOMAIN_INSTALL == false ) {
70
+ $nginx_setting_link = 'https://rtcamp.com/wordpress-nginx/tutorials/multisite/subdirectories/fastcgi-cache-with-purging/';
71
+ } else {
72
+ $nginx_setting_link = 'https://rtcamp.com/wordpress-nginx/tutorials/multisite/subdomains/fastcgi-cache-with-purging/';
73
+ }
74
+ } else {
75
+ $nginx_setting_link = 'https://rtcamp.com/wordpress-nginx/tutorials/single-site/fastcgi-cache-with-purging/';
76
+ } ?>
77
+ <div class="postbox">
78
+ <h3 class="hndle">
79
+ <span><?php _e( 'Purge Cache', 'nginx-helper' ); ?></span>
80
+ </h3>
81
+ <form id="purgeall" action="" method="post" class="clearfix">
82
+ <div class="inside">
83
+ <?php $purge_url = add_query_arg( array( 'nginx_helper_action' => 'purge', 'nginx_helper_urls' => 'all' ) ); ?>
84
+ <?php $nonced_url = wp_nonce_url( $purge_url, 'nginx_helper-purge_all' ); ?>
85
+ <table class="form-table">
86
+ <tr valign="top">
87
+ <th><?php _e( 'Purge All Cache', 'nginx-helper' ); ?></th>
88
+ <td>
89
+ <a href="<?php echo $nonced_url; ?>" class="button-primary"><?php _e( 'Purge Cache', 'nginx-helper' ); ?></a>
90
+ </td>
91
+ </tr>
92
+ </table>
93
+ </div>
94
+ </form>
95
+ </div> <!-- End of .postbox -->
96
+ <form id="post_form" method="post" action="#" name="smart_http_expire_form" class="clearfix">
97
+ <div class="postbox">
98
+ <h3 class="hndle">
99
+ <span><?php _e('Plugin Options', 'nginx-helper'); ?></span>
100
+ </h3>
101
+ <?php if ( !( !is_network_admin() && is_multisite() ) ) { ?>
102
+ <div class="inside">
103
+ <input type="hidden" name="is_submit" value="1" />
104
+ <table class="form-table">
105
+ <tr valign="top">
106
+ <td>
107
+ <input type="checkbox" value="1" id="enable_purge" name="enable_purge" <?php checked($rt_wp_nginx_helper->options['enable_purge'], 1); ?> />
108
+ <label for="enable_purge">
109
+ <?php printf( __( 'Enable Cache Purge (<a target="_blank" href="%s" title="External settings for nginx">requires external settings for nginx</a>)', 'nginx-helper' ), $nginx_setting_link ); ?>
110
+ </label>
111
+ </td>
112
+ </tr>
113
+ <?php if ( is_network_admin() ) { ?>
114
+ <tr valign="top">
115
+ <td>
116
+ <input type="checkbox" value="1" id="enable_map" name="enable_map"<?php checked($rt_wp_nginx_helper->options['enable_map'], 1); ?> />
117
+ <label for="enable_map"><?php _e('Enable Nginx Map.', 'nginx-helper'); ?></label>
118
+ </td>
119
+ </tr>
120
+ <?php } ?>
121
+ <tr valign="top">
122
+ <td>
123
+ <input type="checkbox" value="1" id="enable_log" name="enable_log"<?php checked($rt_wp_nginx_helper->options['enable_log'], 1); ?> />
124
+ <label for="enable_log"><?php _e('Enable Logging', 'nginx-helper'); ?></label>
125
+ </td>
126
+ </tr>
127
+ <tr valign="top">
128
+ <td>
129
+ <input type="checkbox" value="1" id="enable_stamp" name="enable_stamp"<?php checked($rt_wp_nginx_helper->options['enable_stamp'], 1); ?> />
130
+ <label for="enable_stamp"><?php _e('Enable Nginx Timestamp in HTML', 'nginx-helper'); ?></label>
131
+ </td>
132
+ </tr>
133
+ </table>
134
+ </div> <!-- End of .inside -->
135
+ </div>
136
+
137
+ <div class="postbox enable_purge"<?php echo ( $rt_wp_nginx_helper->options['enable_purge'] == false ) ? ' style="display: none;"' : ''; ?>>
138
+ <h3 class="hndle">
139
+ <span><?php _e('Purging Options', 'nginx-helper'); ?></span>
140
+ </h3>
141
+ <div class="inside">
142
+
143
+ <table class="form-table rtnginx-table">
144
+ <tr valign="top">
145
+ <th scope="row"><h4><?php _e('Purge Homepage:', 'nginx-helper'); ?></h4></th>
146
+ <td>
147
+ <fieldset>
148
+ <legend class="screen-reader-text">
149
+ <span>&nbsp;<?php _e('when a post/page/custom post is modified or added.', 'nginx-helper'); ?></span>
150
+ </legend>
151
+ <label for="purge_homepage_on_edit">
152
+ <input type="checkbox" value="1" id="purge_homepage_on_edit" name="purge_homepage_on_edit"<?php checked($rt_wp_nginx_helper->options['purge_homepage_on_edit'], 1); ?> />
153
+ &nbsp;<?php _e('when a <strong>post</strong> (or page/custom post) is <strong>modified</strong> or <strong>added</strong>.', 'nginx-helper'); ?>
154
+ </label><br />
155
+ </fieldset>
156
+ <fieldset>
157
+ <legend class="screen-reader-text">
158
+ <span>&nbsp;<?php _e('when an existing post/page/custom post is modified.', 'nginx-helper'); ?></span>
159
+ </legend>
160
+ <label for="purge_homepage_on_del">
161
+ <input type="checkbox" value="1" id="purge_homepage_on_del" name="purge_homepage_on_del"<?php checked($rt_wp_nginx_helper->options['purge_homepage_on_del'], 1); ?> />
162
+ &nbsp;<?php _e('when a <strong>published post</strong> (or page/custom post) is <strong>trashed</strong>.', 'nginx-helper'); ?></label><br />
163
+ </fieldset>
164
+ </td>
165
+ </tr>
166
+ </table>
167
+ <table class="form-table rtnginx-table">
168
+ <tr valign="top">
169
+ <th scope="row">
170
+ <h4><?php _e('Purge Post/Page/Custom Post Type:', 'nginx-helper'); ?></h4>
171
+ </th>
172
+ <td>
173
+ <fieldset>
174
+ <legend class="screen-reader-text">
175
+ <span>&nbsp;<?php _e('when a post/page/custom post is published.', 'nginx-helper'); ?></span>
176
+ </legend>
177
+ <label for="purge_page_on_mod">
178
+ <input type="checkbox" value="1" id="purge_page_on_mod" name="purge_page_on_mod"<?php checked($rt_wp_nginx_helper->options['purge_page_on_mod'], 1); ?>>
179
+ &nbsp;<?php _e('when a <strong>post</strong> is <strong>published</strong>.', 'nginx-helper'); ?>
180
+ </label><br />
181
+ </fieldset>
182
+ <fieldset>
183
+ <legend class="screen-reader-text">
184
+ <span>&nbsp;<?php _e('when a comment is approved/published.', 'nginx-helper'); ?></span>
185
+ </legend>
186
+ <label for="purge_page_on_new_comment">
187
+ <input type="checkbox" value="1" id="purge_page_on_new_comment" name="purge_page_on_new_comment"<?php checked($rt_wp_nginx_helper->options['purge_page_on_new_comment'], 1); ?>>
188
+ &nbsp;<?php _e('when a <strong>comment</strong> is <strong>approved/published</strong>.', 'nginx-helper'); ?>
189
+ </label><br />
190
+ </fieldset>
191
+ <fieldset>
192
+ <legend class="screen-reader-text">
193
+ <span>&nbsp;<?php _e('when a comment is unapproved/deleted.', 'nginx-helper'); ?></span>
194
+ </legend>
195
+ <label for="purge_page_on_deleted_comment">
196
+ <input type="checkbox" value="1" id="purge_page_on_deleted_comment" name="purge_page_on_deleted_comment"<?php checked($rt_wp_nginx_helper->options['purge_page_on_deleted_comment'], 1); ?>>
197
+ &nbsp;<?php _e('when a <strong>comment</strong> is <strong>unapproved/deleted</strong>.', 'nginx-helper'); ?>
198
+ </label><br />
199
+ </fieldset>
200
+ </td>
201
+ </tr>
202
+ </table>
203
+ <table class="form-table rtnginx-table">
204
+ <tr valign="top">
205
+ <th scope="row">
206
+ <h4><?php _e('Purge Archives:', 'nginx-helper'); ?></h4>
207
+ <small><?php _e('(date, category, tag, author, custom taxonomies)', 'nginx-helper'); ?></small>
208
+ </th>
209
+ <td>
210
+ <fieldset>
211
+ <legend class="screen-reader-text">
212
+ <span>&nbsp;<?php _e('when an post/page/custom post is modified or added.</span>', 'nginx-helper'); ?>
213
+ </legend>
214
+ <label for="purge_archive_on_edit">
215
+ <input type="checkbox" value="1" id="purge_archive_on_edit" name="purge_archive_on_edit"<?php checked($rt_wp_nginx_helper->options['purge_archive_on_edit'], 1); ?> />
216
+ &nbsp;<?php _e('when a <strong>post</strong> (or page/custom post) is <strong>modified</strong> or <strong>added</strong>.', 'nginx-helper'); ?>
217
+ </label><br />
218
+ </fieldset>
219
+ <fieldset>
220
+ <legend class="screen-reader-text">
221
+ <span>&nbsp;<?php _e('when an existing post/page/custom post is trashed.</span>', 'nginx-helper'); ?>
222
+ </legend>
223
+ <label for="purge_archive_on_del">
224
+ <input type="checkbox" value="1" id="purge_archive_on_del" name="purge_archive_on_del"<?php checked($rt_wp_nginx_helper->options['purge_archive_on_del'], 1); ?> />
225
+ &nbsp;<?php _e('when a <strong>published post</strong> (or page/custom post) is <strong>trashed</strong>.', 'nginx-helper'); ?>
226
+ </label><br />
227
+ </fieldset>
228
+ <br />
229
+ <fieldset>
230
+ <legend class="screen-reader-text">
231
+ <span>&nbsp;<?php _e('when a comment is approved/published.</span>', 'nginx-helper'); ?>
232
+ </legend>
233
+ <label for="purge_archive_on_new_comment">
234
+ <input type="checkbox" value="1" id="purge_archive_on_new_comment" name="purge_archive_on_new_comment"<?php checked($rt_wp_nginx_helper->options['purge_archive_on_new_comment'], 1); ?> />
235
+ &nbsp;<?php _e('when a <strong>comment</strong> is <strong>approved/published</strong>.', 'nginx-helper'); ?>
236
+ </label><br />
237
+ </fieldset>
238
+ <fieldset>
239
+ <legend class="screen-reader-text">
240
+ <span>&nbsp;<?php _e('when a comment is unapproved/deleted.</span>', 'nginx-helper'); ?>
241
+ </legend>
242
+ <label for="purge_archive_on_deleted_comment">
243
+ <input type="checkbox" value="1" id="purge_archive_on_deleted_comment" name="purge_archive_on_deleted_comment"<?php checked($rt_wp_nginx_helper->options['purge_archive_on_deleted_comment'], 1); ?> />
244
+ &nbsp;<?php _e('when a <strong>comment</strong> is <strong>unapproved/deleted</strong>.', 'nginx-helper'); ?>
245
+ </label><br />
246
+ </fieldset>
247
+
248
+ </td>
249
+ </tr>
250
+ </table>
251
+ </div> <!-- End of .inside -->
252
+ </div><?php
253
+ } // End of if ( !( !is_network_admin() && is_multisite() ) )
254
+
255
+
256
+ if ( is_network_admin() ) { ?>
257
+ <div class="postbox enable_map"<?php echo ( $rt_wp_nginx_helper->options['enable_map'] == false ) ? ' style="display: none;"' : ''; ?>>
258
+ <h3 class="hndle">
259
+ <span><?php _e('Nginx Map', 'nginx-helper'); ?></span>
260
+ </h3>
261
+ <div class="inside"><?php
262
+ if ( !is_writable( $rt_wp_nginx_helper->functional_asset_path() . 'map.conf' ) ) { ?>
263
+ <span class="error fade" style="display: block"><p><?php printf(__('Can\'t write on map file.<br /><br />Check you have write permission on <strong>%s</strong>', 'nginx-helper'), $rt_wp_nginx_helper->functional_asset_path() . 'map.conf'); ?></p></span><?php
264
+ } ?>
265
+
266
+ <table class="form-table rtnginx-table">
267
+ <tr>
268
+ <th><?php _e('Nginx Map path to include in nginx settings<br /><small>(recommended)</small>', 'nginx-helper'); ?></th>
269
+ <td>
270
+ <pre><?php echo $rt_wp_nginx_helper->functional_asset_path() . 'map.conf'; ?></pre>
271
+ </td>
272
+ </tr>
273
+ <tr>
274
+ <th><?php _e('Or,<br />Text to manually copy and paste in nginx settings<br /><small>(if your network is small and new sites are not added frequently)</small>', 'nginx-helper'); ?></th>
275
+ <td>
276
+ <pre id="map"><?php echo $rt_wp_nginx_helper->get_map() ?></pre>
277
+ </td>
278
+ </tr>
279
+ </table>
280
+ </div> <!-- End of .inside -->
281
+ </div>
282
+ <?php } ?>
283
+
284
+ <div class="postbox enable_log"<?php echo ( $rt_wp_nginx_helper->options['enable_log'] == false ) ? ' style="display: none;"' : ''; ?>>
285
+ <h3 class="hndle">
286
+ <span><?php _e('Logging Options', 'nginx-helper'); ?></span>
287
+ </h3>
288
+ <div class="inside">
289
+ <?php
290
+ $path = $rt_wp_nginx_helper->functional_asset_path();
291
+ if (!is_dir($path)) {
292
+ mkdir($path);
293
+ }
294
+ if (!file_exists($path . 'nginx.log')) {
295
+ $log = fopen($path . 'nginx.log', 'w');
296
+ fclose($log);
297
+ }
298
+ if (is_writable($path . 'nginx.log')) {
299
+ $rt_wp_nginx_purger->log("+++++++++");
300
+ $rt_wp_nginx_purger->log("+Log Test");
301
+ $rt_wp_nginx_purger->log("+++++++++");
302
+ }
303
+ if (!is_writable($path . 'nginx.log')) { ?>
304
+ <span class="error fade" style="display : block"><p><?php printf(__('Can\'t write on log file.<br /><br />Check you have write permission on <strong>%s</strong>', 'nginx-helper'), $rt_wp_nginx_helper->functional_asset_path() . 'nginx.log'); ?></p></span><?php
305
+ } ?>
306
+
307
+ <table class="form-table rtnginx-table">
308
+ <tbody>
309
+ <tr>
310
+ <th><label for="rt_wp_nginx_helper_logs_path"><?php _e('Logs path', 'nginx-helper'); ?></label></th>
311
+ <td><pre><?php echo $rt_wp_nginx_helper->functional_asset_path(); ?>nginx.log</pre></td>
312
+ </tr>
313
+ <tr>
314
+ <th><label for="rt_wp_nginx_helper_logs_link"><?php _e('View Log', 'nginx-helper'); ?></label></th>
315
+ <td><a target="_blank" href="<?php echo $rt_wp_nginx_helper->functional_asset_url(); ?>nginx.log"><?php _e('Log', 'nginx-helper'); ?></a></td>
316
+ </tr>
317
+ <tr>
318
+ <th><label for="rt_wp_nginx_helper_log_level"><?php _e('Log level', 'nginx-helper'); ?></label></th>
319
+ <td>
320
+ <select name="log_level">
321
+ <option value="NONE"<?php selected($rt_wp_nginx_helper->options['log_level'], 'NONE'); ?>><?php _e('None', 'nginx-helper'); ?></option>
322
+ <option value="INFO"<?php selected($rt_wp_nginx_helper->options['log_level'], 'INFO'); ?>><?php _e('Info', 'nginx-helper'); ?></option>
323
+ <option value="WARNING"<?php selected($rt_wp_nginx_helper->options['log_level'], 'WARNING'); ?>><?php _e('Warning', 'nginx-helper'); ?></option>
324
+ <option value="ERROR"<?php selected($rt_wp_nginx_helper->options['log_level'], 'ERROR'); ?>><?php _e('Error', 'nginx-helper'); ?></option>
325
+ </select>
326
+ </td>
327
+ </tr>
328
+ <tr>
329
+ <th><label for="log_filesize"><?php _e('Max log file size', 'nginx-helper'); ?></label></th>
330
+ <td>
331
+ <input id="log_filesize" class="small-text" type="text" name="log_filesize" value="<?php echo $rt_wp_nginx_helper->options['log_filesize'] ?>" /> <?php _e( 'Mb', 'nginx-helper' );
332
+ if ( $error_log_filesize ) { ?>
333
+ <p class="error fade" style="display: block;"><?php echo $error_log_filesize; ?></p><?php
334
+ } ?>
335
+ </td>
336
+ </tr>
337
+ </tbody>
338
+ </table>
339
+ </div> <!-- End of .inside -->
340
+ </div><?php
341
+
342
+ submit_button( __( 'Save All Changes', 'nginx-helper' ), 'primary large', 'smart_http_expire_save', true ); ?>
343
+ </form><!-- End of #post_form --><?php
344
+ }
345
+
346
+ }
trunk/admin/lib/nginx-sidebar.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace rtCamp\WP\Nginx {
4
+
5
+ function default_admin_sidebar() { ?>
6
+ <div class="postbox" id="support">
7
+ <h3 class="hndle">
8
+ <span><?php _e( 'Need Help?', 'nginx-helper' ); ?></span>
9
+ </h3>
10
+ <div class="inside">
11
+ <p><?php printf( __( 'Please use our <a href="%s">free support forum</a>.', 'nginx-helper' ), 'http://rtcamp.com/support/forum/wordpress-nginx/' ); ?></p>
12
+ </div>
13
+ </div>
14
+
15
+ <div class="postbox" id="social">
16
+ <h3 class="hndle">
17
+ <span><?php _e( 'Getting Social is Good', 'nginx-helper' ); ?></span>
18
+ </h3>
19
+ <div style="text-align:center;" class="inside">
20
+ <a class="nginx-helper-facebook" title="<?php _e( 'Become a fan on Facebook', 'nginx-helper' ); ?>" target="_blank" href="http://www.facebook.com/rtCamp.solutions/"></a>
21
+ <a class="nginx-helper-twitter" title="<?php _e( 'Follow us on Twitter', 'nginx-helper' ); ?>" target="_blank" href="https://twitter.com/rtcamp/"></a>
22
+ <a class="nginx-helper-gplus" title="<?php _e( 'Add to Circle', 'nginx-helper' ); ?>" target="_blank" href="https://plus.google.com/110214156830549460974/posts"></a>
23
+ <a class="nginx-helper-rss" title="<?php _e( 'Subscribe to our feeds', 'nginx-helper' ); ?>" target="_blank" href="http://feeds.feedburner.com/rtcamp/"></a>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="postbox" id="useful-links">
28
+ <h3 class="hndle">
29
+ <span><?php _e( 'Useful Links', 'nginx-helper' ); ?></span>
30
+ </h3>
31
+ <div class="inside">
32
+ <ul role="list">
33
+ <li role="listitem">
34
+ <a href="https://rtcamp.com/wordpress-nginx/" title="<?php _e( 'WordPress-Nginx Solutions', 'nginx-helper' ); ?>"><?php _e( 'WordPress-Nginx Solutions', 'nginx-helper' ); ?></a>
35
+ </li>
36
+ <li role="listitem">
37
+ <a href="https://rtcamp.com/services/wordPress-themes-design-development/" title="<?php _e( 'WordPress Theme Devleopment', 'nginx-helper' ); ?>"><?php _e( 'WordPress Theme Devleopment', 'nginx-helper' ); ?></a>
38
+ </li>
39
+ <li role="listitem">
40
+ <a href="http://rtcamp.com/services/wordpress-plugins/" title="<?php _e( 'WordPress Plugin Development', 'nginx-helper' ); ?>"><?php _e( 'WordPress Plugin Development', 'nginx-helper' ); ?></a>
41
+ </li>
42
+ <li role="listitem">
43
+ <a href="http://rtcamp.com/services/custom-wordpress-solutions/" title="<?php _e( 'WordPress Consultancy', 'nginx-helper' ); ?>"><?php _e( 'WordPress Consultancy', 'nginx-helper' ); ?></a>
44
+ </li>
45
+ <li role="listitem">
46
+ <a href="https://rtcamp.com/easyengine/" title="<?php _e( 'easyengine (ee)', 'nginx-helper' ); ?>"><?php _e( 'easyengine (ee)', 'nginx-helper' ); ?></a>
47
+ </li>
48
+ </ul>
49
+ </div>
50
+ </div>
51
+
52
+ <div class="postbox" id="latest_news">
53
+ <div title="<?php _e( 'Click to toggle', 'nginx-helper' ); ?>" class="handlediv"><br /></div>
54
+ <h3 class="hndle"><span><?php _e( 'Latest News', 'nginx-helper' ); ?></span></h3>
55
+ <div class="inside"><img src ="<?php echo admin_url(); ?>/images/wpspin_light.gif" /><?php _e( 'Loading...', 'nginx-helper' ); ?></div>
56
+ </div><?php
57
+ } // End of default_admin_sidebar()
58
+ }
trunk/admin/lib/nginx-support.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace rtCamp\WP\Nginx {
4
+ function nginx_support_options_page() { ?>
5
+ <form id="support" action="" method="post" class="clearfix">
6
+ <div class="postbox">
7
+ <h3 class="hndle">
8
+ <span><?php _e( 'Support Forums', 'nginx-helper' ); ?></span>
9
+ </h3>
10
+ <div class="inside">
11
+ <table class="form-table">
12
+ <tr valign="top">
13
+ <th><?php _e( 'Free Support', 'nginx-helper' ); ?></th>
14
+ <td>
15
+ <a href="https://rtcamp.com/support/forum/wordpress-nginx/" title="<?php _e( 'Free Support Forum', 'nginx-helper' ); ?>" target="_blank"><?php _e( 'Link to forum', 'nginx-helper' ); ?></a>
16
+ </td>
17
+ </tr>
18
+ <tr valign="top">
19
+ <th><?php _e( 'Premium Support', 'nginx-helper' ); ?></th>
20
+ <td>
21
+ <a href="https://rtcamp.com/wordpress-nginx/pricing/" title="<?php _e( 'Premium Support Forum', 'nginx-helper' ); ?>" target="_blank"><?php _e( 'Link to forum', 'nginx-helper' ); ?></a>
22
+ </td>
23
+ </tr>
24
+ </table>
25
+ </div>
26
+ </div>
27
+ </form><?php
28
+ }
29
+ }
trunk/compatibility.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace rtCamp\WP\Nginx {
4
+
5
+ class Compatibility {
6
+
7
+ protected $have_nginx;
8
+
9
+ public static function instance() {
10
+ static $self = false;
11
+ if (!$self) {
12
+ $self = new Compatibility();
13
+ }
14
+ return $self;
15
+ }
16
+
17
+ private function __construct() {
18
+ $this->have_nginx = ('nginx' == substr($_SERVER['SERVER_SOFTWARE'], 0, 5));
19
+ if ($this->have_nginx) {
20
+ add_filter('got_rewrite', array($this, 'got_rewrite'), 999);
21
+
22
+ // For compatibility with several plugins and nginx HTTPS proxying schemes
23
+ if (empty($_SERVER['HTTPS']) || 'off' == $_SERVER['HTTPS']) {
24
+ unset($_SERVER['HTTPS']);
25
+ }
26
+ }
27
+ }
28
+
29
+ public function got_rewrite($got) {
30
+ return true;
31
+ }
32
+
33
+ public function haveNginx() {
34
+ return $this->have_nginx;
35
+ }
36
+ }
37
+ }
trunk/languages/nginx-helper.mo ADDED
Binary file
trunk/languages/nginx-helper.po ADDED
@@ -0,0 +1,501 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Nginx Helper 1.7.6\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2014-01-02 17:41+0530\n"
6
+ "PO-Revision-Date: 2014-01-02 17:41+0530\n"
7
+ "Last-Translator: rtCamp <support@rtcamp.com>\n"
8
+ "Language-Team: rtCampers <support@rtcamp.com>\n"
9
+ "Language: en\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
14
+ "X-Poedit-Basepath: .\n"
15
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
16
+ "X-Generator: Poedit 1.5.4\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+
19
+ #: ../nginx-helper.php:254
20
+ msgid "Purge initiated"
21
+ msgstr ""
22
+
23
+ #: ../nginx-helper.php:340
24
+ msgid "Settings"
25
+ msgstr ""
26
+
27
+ #: ../nginx-helper.php:367
28
+ msgid "No items"
29
+ msgstr ""
30
+
31
+ #: ../nginx-helper.php:372
32
+ msgid "Posted "
33
+ msgstr ""
34
+
35
+ #: ../purger.php:366
36
+ #, php-format
37
+ msgid "Purging homepage '%s'"
38
+ msgstr ""
39
+
40
+ #: ../purger.php:376
41
+ msgid "Purging personal urls"
42
+ msgstr ""
43
+
44
+ #: ../purger.php:384
45
+ msgid "No personal urls available"
46
+ msgstr ""
47
+
48
+ #: ../purger.php:392
49
+ msgid "Purging category archives"
50
+ msgstr ""
51
+
52
+ #: ../purger.php:396
53
+ #, php-format
54
+ msgid "Purging category '%d'"
55
+ msgstr ""
56
+
57
+ #: ../purger.php:406
58
+ msgid "Purging tags archives"
59
+ msgstr ""
60
+
61
+ #: ../purger.php:410 ../purger.php:468
62
+ #, php-format
63
+ msgid "Purging tag '%s' (id %d)"
64
+ msgstr ""
65
+
66
+ #: ../purger.php:420
67
+ msgid "Purging post custom taxonomies related"
68
+ msgstr ""
69
+
70
+ #: ../purger.php:424 ../purger.php:485
71
+ #, php-format
72
+ msgid "Purging custom taxonomy '%s'"
73
+ msgstr ""
74
+
75
+ #: ../purger.php:434 ../purger.php:495
76
+ #, php-format
77
+ msgid "Your built-in taxonomy '%s' has param '_builtin' set to false."
78
+ msgstr ""
79
+
80
+ #: ../purger.php:438 ../purger.php:499
81
+ msgid "No custom taxonomies"
82
+ msgstr ""
83
+
84
+ #: ../purger.php:446
85
+ msgid "Purging all categories"
86
+ msgstr ""
87
+
88
+ #: ../purger.php:451
89
+ #, php-format
90
+ msgid "Purging category '%s' (id %d)"
91
+ msgstr ""
92
+
93
+ #: ../purger.php:455
94
+ msgid "No categories archives"
95
+ msgstr ""
96
+
97
+ #: ../purger.php:463
98
+ msgid "Purging all tags"
99
+ msgstr ""
100
+
101
+ #: ../purger.php:472
102
+ msgid "No tags archives"
103
+ msgstr ""
104
+
105
+ #: ../purger.php:480
106
+ msgid "Purging all custom taxonomies"
107
+ msgstr ""
108
+
109
+ #: ../purger.php:516
110
+ msgid "Purging all posts, pages and custom post types."
111
+ msgstr ""
112
+
113
+ #: ../purger.php:526
114
+ #, php-format
115
+ msgid "Purging post id '%d' (post type '%s')"
116
+ msgstr ""
117
+
118
+ #: ../purger.php:530
119
+ msgid "No posts"
120
+ msgstr ""
121
+
122
+ #: ../purger.php:538
123
+ msgid "Purging all date-based archives."
124
+ msgstr ""
125
+
126
+ #: ../purger.php:553
127
+ msgid "Purging all daily archives."
128
+ msgstr ""
129
+
130
+ #: ../purger.php:566
131
+ #, php-format
132
+ msgid "Purging daily archive '%s/%s/%s'"
133
+ msgstr ""
134
+
135
+ #: ../purger.php:570
136
+ msgid "No daily archives"
137
+ msgstr ""
138
+
139
+ #: ../purger.php:578
140
+ msgid "Purging all monthly archives."
141
+ msgstr ""
142
+
143
+ #: ../purger.php:591
144
+ #, php-format
145
+ msgid "Purging monthly archive '%s/%s'"
146
+ msgstr ""
147
+
148
+ #: ../purger.php:595
149
+ msgid "No monthly archives"
150
+ msgstr ""
151
+
152
+ #: ../purger.php:603
153
+ msgid "Purging all yearly archives."
154
+ msgstr ""
155
+
156
+ #: ../purger.php:616
157
+ #, php-format
158
+ msgid "Purging yearly archive '%s'"
159
+ msgstr ""
160
+
161
+ #: ../purger.php:620
162
+ msgid "No yearly archives"
163
+ msgstr ""
164
+
165
+ #: ../purger.php:626
166
+ msgid "Let's purge everything!"
167
+ msgstr ""
168
+
169
+ #: ../purger.php:638
170
+ msgid "Everthing purged!"
171
+ msgstr ""
172
+
173
+ #: ../purger.php:645
174
+ msgid "Term taxonomy edited or deleted"
175
+ msgstr ""
176
+
177
+ #: ../purger.php:648
178
+ #, php-format
179
+ msgid "Term taxonomy '%s' edited, (tt_id '%d', term_id '%d', taxonomy '%s')"
180
+ msgstr ""
181
+
182
+ #: ../purger.php:650
183
+ #, php-format
184
+ msgid ""
185
+ "A term taxonomy has been deleted from taxonomy '%s', (tt_id '%d', term_id "
186
+ "'%d')"
187
+ msgstr ""
188
+
189
+ #: ../purger.php:663
190
+ msgid "Widget saved, moved or removed in a sidebar"
191
+ msgstr ""
192
+
193
+ #: ../admin/admin.php:26
194
+ msgid "General"
195
+ msgstr ""
196
+
197
+ #: ../admin/admin.php:30
198
+ msgid "Support"
199
+ msgstr ""
200
+
201
+ #: ../admin/admin.php:40 ../admin/admin.php:47
202
+ msgid "Nginx Helper"
203
+ msgstr ""
204
+
205
+ #: ../admin/admin.php:78
206
+ msgid "Nginx Settings"
207
+ msgstr ""
208
+
209
+ #: ../admin/admin.php:123 ../admin/lib/nginx-general.php:79
210
+ #: ../admin/lib/nginx-general.php:89
211
+ msgid "Purge Cache"
212
+ msgstr ""
213
+
214
+ #: ../admin/install.php:22
215
+ msgid "Sorry, you need to be an administrator to use Nginx Helper"
216
+ msgstr ""
217
+
218
+ #: ../admin/lib/nginx-general.php:26
219
+ msgid "Log file size must be a number"
220
+ msgstr ""
221
+
222
+ #: ../admin/lib/nginx-general.php:61
223
+ msgid "Settings saved."
224
+ msgstr ""
225
+
226
+ #: ../admin/lib/nginx-general.php:87
227
+ msgid "Purge All Cache"
228
+ msgstr ""
229
+
230
+ #: ../admin/lib/nginx-general.php:99
231
+ msgid "Plugin Options"
232
+ msgstr ""
233
+
234
+ #: ../admin/lib/nginx-general.php:109
235
+ #, php-format
236
+ msgid ""
237
+ "Enable Cache Purge (<a target=\"_blank\" href=\"%s\" title=\"External "
238
+ "settings for nginx\">requires external settings for nginx</a>)"
239
+ msgstr ""
240
+
241
+ #: ../admin/lib/nginx-general.php:117
242
+ msgid "Enable Nginx Map."
243
+ msgstr ""
244
+
245
+ #: ../admin/lib/nginx-general.php:124
246
+ msgid "Enable Logging"
247
+ msgstr ""
248