@@ -28,21 +28,63 @@ protected static function get_prefixed_name($name) {
2828 private $ sizes ;
2929 private $ tinify_sizes ;
3030
31+ public function __construct () {
32+ parent ::__construct ();
33+ if (is_multisite ()) {
34+ add_action ('network_admin_menu ' , $ this ->get_method ('register_multisite_settings ' ));
35+ add_action ('network_admin_edit_save_tinypng_multisite_settings ' , $ this ->get_method ('save_multisite_settings ' ), 10 , 0 );
36+ }
37+ }
38+
3139 public function admin_init () {
3240 $ section = self ::get_prefixed_name ('settings ' );
3341 add_settings_section ($ section , self ::translate ('PNG and JPEG compression ' ), $ this ->get_method ('render_section ' ), 'media ' );
3442
35- $ field = self ::get_prefixed_name ('api_key ' );
36- register_setting ('media ' , $ field );
37- add_settings_field ($ field , self ::translate ('TinyPNG API key ' ), $ this ->get_method ('render_api_key ' ), 'media ' , $ section , array ('label_for ' => $ field ));
43+ if (tiny_is_network_activated ()) {
44+ $ field = self ::get_prefixed_name ('api_key ' );
45+ register_setting ('media ' , $ field );
46+ add_settings_field ($ field , self ::translate ('Multisite API key ' ), $ this ->get_method ('render_api_key ' ), 'media ' , $ section , array ('label_for ' => $ field ));
47+ } else {
48+ $ field = self ::get_prefixed_name ('api_key ' );
49+ register_setting ('media ' , $ field );
50+ add_settings_field ($ field , self ::translate ('TinyPNG API key ' ), $ this ->get_method ('render_api_key ' ), 'media ' , $ section , array ('label_for ' => $ field ));
51+ }
3852
3953 $ field = self ::get_prefixed_name ('sizes ' );
4054 register_setting ('media ' , $ field );
4155 add_settings_field ($ field , self ::translate ('File compression ' ), $ this ->get_method ('render_sizes ' ), 'media ' , $ section );
4256 }
4357
58+ public function register_multisite_settings () {
59+ add_submenu_page ('settings.php ' , self ::translate ('Multisite PNG and JPEG compression ' ),
60+ self ::translate ('PNG and JPEG compression ' ), 'manage_network_plugins ' ,
61+ self ::get_prefixed_name ('multisite_settings ' ), $ this ->get_method ('render_multisite_settings ' ));
62+ }
63+
4464 public function get_api_key () {
45- return get_option (self ::get_prefixed_name ('api_key ' ));
65+ $ key = $ this ->get_multisite_api_key ();
66+ if (empty ($ key )) {
67+ return get_option (self ::get_prefixed_name ('api_key ' ));
68+ } else {
69+ return $ key ;
70+ }
71+ }
72+
73+ public function get_multisite_api_key () {
74+ if (tiny_is_network_activated ()) {
75+ if (defined ('TINY_API_KEY ' )) {
76+ return TINY_API_KEY ;
77+ } else {
78+ $ key = get_site_option (self ::get_prefixed_name ('api_key ' ));
79+ if (!empty ($ key )) {
80+ return $ key ;
81+ } else {
82+ return NULL ;
83+ }
84+ }
85+ } else {
86+ return NULL ;
87+ }
4688 }
4789
4890 protected static function get_intermediate_size ($ size ) {
@@ -102,13 +144,82 @@ public function get_tinify_sizes() {
102144 public function render_section () {
103145 }
104146
147+ public function render_multisite_settings () {
148+ echo '<h2> ' . self ::translate ('PNG and JPEG compression ' ) . '</h2> ' ;
149+
150+ echo '<div class="wrap"> ' ;
151+
152+ $ section = self ::get_prefixed_name ('multisite_settings ' );
153+ add_settings_section ($ section , '' , $ this ->get_method ('render_section ' ), self ::get_prefixed_name ('multisite_settings ' ));
154+
155+ if ( isset ( $ _GET ['updated ' ] ) ) {
156+ ?> <div id="message" class="updated"><p><?php _e ( 'Options saved. ' ) ?> </p></div><?php
157+ }
158+
159+ echo '<form method="post" action="edit.php?action=save_tinypng_multisite_settings"> ' ;
160+ settings_fields (self ::get_prefixed_name ('multisite_settings ' ));
161+
162+ $ field = self ::get_prefixed_name ('multisite_api_key ' );
163+ add_settings_field ($ field , self ::translate ('Multisite API key ' ), $ this ->get_method ('render_multisite_api_key ' ), self ::get_prefixed_name ('multisite_settings ' ), $ section , array ('label_for ' => $ field ));
164+
165+ do_settings_sections (self ::get_prefixed_name ('multisite_settings ' ));
166+
167+ if (!defined ('TINY_API_KEY ' )) {
168+ submit_button ();
169+ }
170+ echo '</form> ' ;
171+ echo '</div> ' ;
172+ }
173+
174+ public function save_multisite_settings () {
175+ $ options = array ('page ' => self ::get_prefixed_name ('multisite_settings ' ));
176+ if (array_key_exists (self ::get_prefixed_name ('api_key ' ), $ _POST )) {
177+ $ key = filter_var ($ _POST [self ::get_prefixed_name ('api_key ' )], FILTER_SANITIZE_STRING );
178+ update_site_option (self ::get_prefixed_name ('api_key ' ), $ key );
179+ $ options ['updated ' ] = 'true ' ;
180+ }
181+ wp_redirect (add_query_arg ($ options , network_admin_url ('settings.php ' )));
182+ exit ();
183+ }
184+
185+ public function render_multisite_api_key () {
186+ $ field = self ::get_prefixed_name ('api_key ' );
187+ $ value = $ this ->get_multisite_api_key ();
188+ echo '<input type="text" id=" ' . $ field . '" name=" ' . $ field . '" value=" ' . htmlspecialchars ($ value ) . '" size="40" ' ;
189+ if (defined ('TINY_API_KEY ' )) { echo 'readonly = "readonly" ' ; }
190+ echo '/> ' ;
191+ echo '<p> ' ;
192+ if (defined ('TINY_API_KEY ' )) {
193+ echo self ::translate ('The API key has been configured in wp-config.php. ' );
194+ } else {
195+ $ link = '<a href="https://tinypng.com/developers"> ' . self ::translate_escape ('TinyPNG Developer section ' ) . '</a> ' ;
196+ printf (self ::translate_escape ('Visit %s to get an API key ' ) . '. ' , $ link );
197+ }
198+ echo '</p> ' ;
199+ }
200+
105201 public function render_api_key () {
106202 $ field = self ::get_prefixed_name ('api_key ' );
107- $ value = get_option ($ field , '' );
108- $ link = '<a href="https://tinypng.com/developers"> ' . self ::translate_escape ('TinyPNG Developer section ' ) . '</a> ' ;
109- ?>
110- <input type="text" id="<?php echo $ field ; ?> " name="<?php echo $ field ; ?> " value="<?php echo htmlspecialchars ($ value ); ?> " size="40"/>
111- <p><?php printf (self ::translate_escape ('Visit %s to get an API key ' ) . '. ' , $ link );?> </p><?php
203+ $ value = $ this ->get_api_key ();
204+ if (tiny_is_network_activated ()) {
205+ if (empty ($ this ->get_multisite_api_key ())) {
206+ if (empty ($ value )) {
207+ echo '<p> ' . self ::translate ('Your Network Admin has not configured an API key yet. ' ) . '</p> ' ;
208+ } else {
209+ echo '<p> ' . self ::translate ('You have an API key configured. Your Network Admin can change the key. ' ) . '</p> ' ;
210+ }
211+ } else {
212+ echo '<p> ' . self ::translate ('The API key has been installed by the Network Admin. ' ) . '</p> ' ;
213+ }
214+ } else {
215+ echo '<input type="text" id=" ' . $ field . '" name=" ' . $ field . '" value=" ' . htmlspecialchars ($ value ) . '" size="40" /> ' ;
216+ if (empty ($ value )) {
217+ echo '<p> ' ;
218+ $ link = '<a href="https://tinypng.com/developers"> ' . self ::translate_escape ('TinyPNG Developer section ' ) . '</a> ' ;
219+ printf (self ::translate_escape ('Visit %s to get an API key ' ) . '. ' , $ link );
220+ echo '</p> ' ;
221+ }
222+ }
112223 }
113224
114225 public function render_sizes () {
0 commit comments