PluginProbe
codoc / 0.9.3
codoc v0.9.3
0.9.8.8 0.9.8.9 0.9.9 0.9.9.1 trunk 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.8.1 0.8.2 0.8.3 0.8.4 0.8.6 0.8.7 0.8.8 0.8.9 0.9 0.9.1 0.9.10 0.9.11 All 114 releases
← All changes | class-codoc.php +330 -686 0.9.100.9.3 View file →
@@ -1,35 +1,21 @@
1 1 <?php
2 2 require_once(plugin_dir_path( __FILE__ ) .'class-codoc-util.php');
3 3 final class Codoc {
4 4
5 - public function __construct() {
6 - if (is_admin()) {
7 - // setting
8 - $this->add_settings();
9 - }
10 -
5 + public function __construct() {
6 + if (is_admin()) {
7 + // setting
8 + $this->add_settings();
9 + }
10 +
11 11 // usercode, token はadminページのみDBから取得する
12 - $this->util = new CodocUtil([ 'usercode' => null, 'token' => null, 'codoc_url' => $this->get_codoc_url() ]);
13 -
14 - # the_content フィルタを実行しない状態
15 - $this->do_not_filter_the_content = false;
12 + $this->util = new CodocUtil();
16 13
17 - // paywall用の本文非表示化とcodocタグへの属性追加
18 - $priority = 10;
19 - $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
20 - if (isset($CODOC_SETTINGS["debug_params"])) {
21 - $params_decoded = json_decode($CODOC_SETTINGS["debug_params"],true);
22 - if (isset($params_decoded["the_content_filter_priority"])) {
23 - $priority = $params_decoded["the_content_filter_priority"];
24 - }
25 - }
26 - add_filter('the_content',[$this,'the_content'],$priority);
14 + // paywall用の本文非表示化とcodocタグへの属性追加
15 + add_filter('the_content',[$this,'the_content']);
27 16
28 - // 2020-07-25 excerpt対応
29 - add_filter('excerpt_allowed_blocks',[$this,'excerpt_allowed_blocks']);
30 -
31 - $auth_info = get_option(CODOC_AUTHINFO_OPTION_NAME);
17 + $auth_info = get_option(CODOC_AUTHINFO_OPTION_NAME);
32 18
33 19 if ($auth_info) {
34 20 // データ同期 (save_postはis_adminで実行されないケースがある)
35 21 add_action( 'save_post', [$this,'save_post'], 20, 3 );
@@ -36,9 +22,9 @@
36 22 add_action( 'added_post_meta', [$this,'updated_post_meta'], 10, 3 );
37 23 add_action( 'updated_post_meta',[$this,'updated_post_meta'], 10, 3 );
38 24 add_action( 'deleted_post_meta',[$this,'deleted_post_meta'], 10, 4 );
39 25 }
40 - if (is_admin() and $auth_info) { //管理画面
26 + if (is_admin() and $auth_info) { //管理画面
41 27 // Gutenberg のサポートがない場合は何もしない
42 28 if ( function_exists( 'register_block_type' ) ) {
43 29 // gutenberg
44 30 require_once 'src/init.php';
@@ -43,9 +29,9 @@
43 29 // gutenberg
44 30 require_once 'src/init.php';
45 31 add_action('wp_loaded', function() {
46 32 wp_localize_script('wordpress-cgb-block-js', 'OPTIONS', array(
47 - 'codoc_url' => $this->get_codoc_url(),
33 + 'codoc_url' => CODOC_URL,
48 34 'codoc_usercode' => get_option(CODOC_USERCODE_OPTION_NAME),
49 35 'codoc_plugin_version' => CODOC_PLUGIN_VERSION,
50 36 'codoc_sdk_path' => CODOC_SDK_PATH,
51 37 ));
@@ -50,14 +36,14 @@
50 36 'codoc_sdk_path' => CODOC_SDK_PATH,
51 37 ));
52 38 });
53 39 }
54 - // tinymce
55 - $this->add_mce();
56 - } else { // ブログ画面
40 + // tinymce
41 + $this->add_mce();
42 + } else { // ブログ画面
57 43 // codocのJS登録
58 44 add_action( 'wp_enqueue_scripts', function() {
59 - wp_enqueue_script( 'codoc-injector-js', $this->get_codoc_url() . '/js/cms.js' );
45 + wp_enqueue_script( 'codoc-injector-js', CODOC_URL . '/js/cms.js' );
60 46 });
61 47 // 登録したscriptタグに属性をつける
62 48 add_filter('script_loader_tag', [$this,'modifier_script_tag'],10,2);
63 49 // tinymce用のショートコード
@@ -63,572 +49,293 @@
63 49 // tinymce用のショートコード
64 50 add_shortcode('codoc', [$this, 'injector_shortcode']);
65 51 }
66 52 return $this;
67 - }
68 - public function get_codoc_url() {
69 - $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
70 - if (isset($CODOC_SETTINGS["debug_params"])) {
71 - $params_decoded = json_decode($CODOC_SETTINGS["debug_params"],true);
72 - if (isset($params_decoded["codoc_url"])) {
73 - return $params_decoded["codoc_url"];
74 - }
75 - }
76 - return CODOC_URL;
77 - }
78 - public function modifier_script_tag($tag,$handle) {
79 - if($handle !== 'codoc-injector-js') {
80 - return $tag;
81 - }
82 - $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
83 - $data_css = '';
84 - if ($css_path = $CODOC_SETTINGS['css_path']) {
85 - $data_css = sprintf(' data-css="%s" ',$css_path);
86 - }
87 - // connect用パラメータ
88 - $connect_attributes = '';
89 - if (isset($CODOC_SETTINGS["codoc_connect_code"])) {
90 - $connect_code = $CODOC_SETTINGS["codoc_connect_code"];
91 - $connect_attributes = sprintf(' data-connect-code="%s"',$connect_code);
92 - $tag = preg_replace('/cms\.js/','cms-connect.js',$tag);
93 - }
94 - if (isset($CODOC_SETTINGS["debug_params"])) {
95 - $params_decoded = json_decode($CODOC_SETTINGS["debug_params"],true);
96 - if (isset($params_decoded["connect_registration_mode"])) {
97 - $connect_attributes = $connect_attributes . sprintf(' data-connect-registration-mode="%s"',$params_decoded["connect_registration_mode"]);
98 - }
99 - }
100 -
53 + }
54 +
55 + public function modifier_script_tag($tag,$handle) {
56 + if($handle !== 'codoc-injector-js') {
57 + return $tag;
58 + }
59 + $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
60 + $data_css = '';
61 + if ($css_path = $CODOC_SETTINGS['css_path']) {
62 + $data_css = sprintf(' data-css="%s" ',$css_path);
63 + }
101 64 //return str_replace(' src=', $data_css . ' defer src=', $tag);
102 - return preg_replace('/(src=[^>]+)/',' ${1} ' . $data_css . $connect_attributes . ' defer',$tag);
103 - }
104 - public function injector_shortcode($atts) {
105 - global $post;
106 - ob_start();
107 - require 'views/codoc-injector.php';
108 - return ob_get_clean();
109 - }
110 - # settings / 設定関連
111 - public function add_settings() {
112 - global $CODOC_SETTINGS;
113 - add_action( 'admin_menu' ,function(){
114 - add_options_page(
115 - 'codoc の設定', //ページタイトル
116 - 'codoc', //設定メニューに表示されるメニュータイトル
117 - 'edit_users', //権限
118 - 'codoc', //設定ページのURL。options-general.php?page=codoc
119 - function() {
120 - echo '<div class="codoc-settings">';
121 - echo '<form method="post" action="options.php">';
122 - settings_fields( 'codoc_option_group' );
123 - do_settings_sections( 'codoc' );
124 - submit_button(); // 送信ボタン
125 - echo '</form></div>';
126 - }
127 - );
128 - });
65 + return preg_replace('/(src=[^>]+)/',' ${1} ' . $data_css . ' defer',$tag);
66 + }
67 + public function injector_shortcode($atts) {
68 + global $post;
69 + ob_start();
70 + require 'views/codoc-injector.php';
71 + return ob_get_clean();
72 + }
73 + # settings / 設定関連
74 + public function add_settings() {
75 + global $CODOC_SETTINGS;
76 + add_action( 'admin_menu' ,function(){
77 + add_options_page(
78 + 'codoc の設定', //ページタイトル
79 + 'codoc', //設定メニューに表示されるメニュータイトル
80 + 'edit_users', //権限
81 + 'codoc', //設定ページのURL。options-general.php?page=codoc
82 + function() {
83 + echo '<div clas="wrap">';
84 + echo '<form method="post" action="options.php">';
85 + settings_fields( 'codoc_option_group' );
86 + do_settings_sections( 'codoc' );
87 + submit_button(); // 送信ボタン
88 + echo '</form></div>';
89 + }
90 + );
91 + });
129 92
130 - add_action('admin_print_styles', 'codoc_admin_styles');
131 - function codoc_admin_styles($hook) {
132 - wp_enqueue_style('codoc-options-style', plugins_url( 'codoc/css/codoc-options.css', __DIR__ ));
133 - }
134 -
135 - add_action( "admin_init", function() {
136 - // codocからの認証データ処理
137 - if (isset($_GET['page']) and $_GET['page'] == 'codoc' and isset($_GET['fetch_token_key'])) {
138 - $key = sanitize_text_field($_GET['fetch_token_key']);
139 - $usercode = sanitize_text_field($_GET['usercode']);
140 - update_option(CODOC_USERCODE_OPTION_NAME,$usercode);
141 - //$data = $this->callAPI('GET','/token',[ "fetch_token_key" => $key ]);
93 + add_action( "admin_init", function() {
94 + // codocからの認証データ処理
95 + if (isset($_GET['page']) and $_GET['page'] == 'codoc' and isset($_GET['fetch_token_key'])) {
96 + $key = sanitize_text_field($_GET['fetch_token_key']);
97 + $usercode = sanitize_text_field($_GET['usercode']);
98 + update_option(CODOC_USERCODE_OPTION_NAME,$usercode);
99 + //$data = $this->callAPI('GET','/token',[ "fetch_token_key" => $key ]);
142 100 $data = $this->util->get_token([ "fetch_token_key" => $key ],["usercode" => $usercode, "token" => "1"]);
143 - if ($data->status and $token = $data->token) {
144 - update_option(CODOC_TOKEN_OPTION_NAME,$token);
145 - //$data = $this->callAPI('GET','');
101 + if ($data->status and $token = $data->token) {
102 + update_option(CODOC_TOKEN_OPTION_NAME,$token);
103 + //$data = $this->callAPI('GET','');
146 104 $data = $this->util->get_user_info([],["usercode" => $usercode, "token" => $token]);
147 - if ($data->status and $user = $data->user) {
148 - update_option(CODOC_AUTHINFO_OPTION_NAME,[
149 - 'email' => $user->email,
150 - 'name' => $user->name,
151 - ]);
152 - }
153 - #$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
154 - #$current_url = preg_replace('/(.*)fetch_token_key.*/','${1}&codoc_auth_finished=1',$current_url);
155 - //add_settings_error( 'general', 'settings_updated', __( 'OK' ), 'success' );
156 - $current_url = admin_url('options-general.php') . '?page=codoc&codoc_auth_finished=1';
105 + if ($data->status and $user = $data->user) {
106 + update_option(CODOC_AUTHINFO_OPTION_NAME,[
107 + 'email' => $user->email,
108 + 'name' => $user->name,
109 + ]);
110 + }
111 + #$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
112 + #$current_url = preg_replace('/(.*)fetch_token_key.*/','${1}&codoc_auth_finished=1',$current_url);
113 + //add_settings_error( 'general', 'settings_updated', __( 'OK' ), 'success' );
114 + $current_url = admin_url('options-general.php') . '?page=codoc&codoc_auth_finished=1';
115 +
116 + wp_redirect( $current_url);
117 + exit;
118 + }
119 + }
157 120
158 - wp_redirect( $current_url);
159 - exit;
160 - }
161 - }
162 - global $CODOC_USERCODE;
163 - global $CODOC_SETTINGS;
164 - global $CODOC_TOKEN;
165 - global $CODOC_AUTHINFO;
166 - $CODOC_USERCODE = get_option(CODOC_USERCODE_OPTION_NAME);
167 - $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
168 - $CODOC_TOKEN = get_option(CODOC_TOKEN_OPTION_NAME);
169 - $CODOC_AUTHINFO = get_option(CODOC_AUTHINFO_OPTION_NAME);
170 - if( !$CODOC_SETTINGS ) {
171 - //デフォルト値
172 - $CODOC_SETTINGS = array(
173 - 'css_path' => '',
174 - );
175 - update_option( CODOC_SETTINGS_OPTION_NAME, $CODOC_SETTINGS );
176 - }
177 - if (!isset($CODOC_SETTINGS['str_replace_binded_url_from'])) {
178 - $CODOC_SETTINGS['str_replace_binded_url_from'] = '';
179 - }
180 - if (!isset($CODOC_SETTINGS['str_replace_binded_url_to'])) {
181 - $CODOC_SETTINGS['str_replace_binded_url_to'] = '';
182 - }
183 - if (!isset($CODOC_SETTINGS['str_before_codoc_tag'])) {
184 - $CODOC_SETTINGS['str_before_codoc_tag'] = '';
185 - }
186 - if (!isset($CODOC_SETTINGS['str_after_codoc_tag'])) {
187 - $CODOC_SETTINGS['str_after_codoc_tag'] = '';
188 - }
121 + global $CODOC_USERCODE;
122 + global $CODOC_SETTINGS;
123 + global $CODOC_TOKEN;
124 + global $CODOC_AUTHINFO;
125 + $CODOC_USERCODE = get_option(CODOC_USERCODE_OPTION_NAME);
126 + $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
127 + $CODOC_TOKEN = get_option(CODOC_TOKEN_OPTION_NAME);
128 + $CODOC_AUTHINFO = get_option(CODOC_AUTHINFO_OPTION_NAME);
129 + if( !$CODOC_SETTINGS ) {
130 + //デフォルト値
131 + $CODOC_SETTINGS = array(
132 + 'css_path' => '',
133 + );
134 + update_option( CODOC_SETTINGS_OPTION_NAME, $CODOC_SETTINGS );
135 + }
136 + if (!isset($CODOC_SETTINGS['str_replace_binded_url_from'])) {
137 + $CODOC_SETTINGS['str_replace_binded_url_from'] = '';
138 + }
139 + if (!isset($CODOC_SETTINGS['str_replace_binded_url_to'])) {
140 + $CODOC_SETTINGS['str_replace_binded_url_to'] = '';
141 + }
142 + if (!isset($CODOC_SETTINGS['str_before_codoc_tag'])) {
143 + $CODOC_SETTINGS['str_before_codoc_tag'] = '';
144 + }
145 + if (!isset($CODOC_SETTINGS['str_after_codoc_tag'])) {
146 + $CODOC_SETTINGS['str_after_codoc_tag'] = '';
147 + }
148 +
149 + add_settings_section(
150 + 'setting_section_id', // id
151 + 'codoc 設定ページ', // title
152 + function (){}, // callback
153 + 'codoc' // page
154 + );
155 + // 認証がある場合
156 + if ($CODOC_AUTHINFO) {
157 + register_setting(
158 + 'codoc_option_group', // option group
159 + CODOC_SETTINGS_OPTION_NAME // option name(DB)
160 + );
161 + add_settings_field(
162 + 'css_path', // id
163 + 'カスタマイズ用CSSパス', // title
164 + function() {
165 + global $CODOC_SETTINGS;
166 + echo sprintf('<input type="text" name="%s[css_path]" value="%s">',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['css_path']);
167 + },
168 + 'codoc', //page
169 + 'setting_section_id' //Section
170 + );
171 + add_settings_field(
172 + 'str_replace_binded_url', // id
173 + 'codoc側に登録するパーマリンクを置換', // title
174 + function() {
175 + global $CODOC_SETTINGS;
176 + echo sprintf('<input type="text" name="%s[str_replace_binded_url_from]" value="%s">',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['str_replace_binded_url_from']);
177 + echo ('を');
178 + echo sprintf('<input type="text" name="%s[str_replace_binded_url_to]" value="%s">',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['str_replace_binded_url_to']);
179 + echo ('に変換');
180 + },
181 + 'codoc', //page
182 + 'setting_section_id' //Section
183 + );
189 184
190 - if (!isset($CODOC_SETTINGS['always_show_support'])) {
191 - $CODOC_SETTINGS['always_show_support'] = '0';
192 - }
193 - if (!isset($CODOC_SETTINGS['show_support_message'])) {
194 - $CODOC_SETTINGS['show_support_message'] = '';
195 - }
196 - if (!isset($CODOC_SETTINGS['show_support_categories'])) {
197 - $CODOC_SETTINGS['show_support_categories'] = '';
198 - }
199 - if (!isset($CODOC_SETTINGS['show_support_location'])) {
200 - $CODOC_SETTINGS['show_support_location'] = 'bottom';
201 - }
202 - if (!isset($CODOC_SETTINGS['do_not_filter_the_content'])) {
203 - $CODOC_SETTINGS['do_not_filter_the_content'] = '0';
204 - }
205 -
206 - if (!isset($CODOC_SETTINGS['entry_button_text'])) {
207 - $CODOC_SETTINGS['entry_button_text'] = '';
208 - }
209 - if (!isset($CODOC_SETTINGS['subscription_button_text'])) {
210 - $CODOC_SETTINGS['subscription_button_text'] = '';
211 - }
212 - if (!isset($CODOC_SETTINGS['support_button_text'])) {
213 - $CODOC_SETTINGS['support_button_text'] = '';
214 - }
215 - if (!isset($CODOC_SETTINGS['subscription_message'])) {
216 - $CODOC_SETTINGS['subscription_message'] = '';
217 - }
218 - if (!isset($CODOC_SETTINGS['support_message'])) {
219 - $CODOC_SETTINGS['support_message'] = '';
220 - }
221 - if (!isset($CODOC_SETTINGS['show_like'])) {
222 - $CODOC_SETTINGS['show_like'] = '1';
223 - }
224 - if (!isset($CODOC_SETTINGS['show_about_codoc'])) {
225 - $CODOC_SETTINGS['show_about_codoc'] = '1';
226 - }
227 - if (!isset($CODOC_SETTINGS['show_powered_by'])) {
228 - $CODOC_SETTINGS['show_powered_by'] = '1';
229 - }
230 -
231 - if (!isset($CODOC_SETTINGS['codoc_tag_attributes'])) {
232 - $CODOC_SETTINGS['codoc_tag_attributes'] = '';
233 - }
234 - if (!isset($CODOC_SETTINGS['codoc_connect_code'])) {
235 - $CODOC_SETTINGS['codoc_connect_code'] = '';
236 - }
237 - if (!isset($CODOC_SETTINGS['debug_params'])) {
238 - $CODOC_SETTINGS['debug_params'] = '';
239 - }
240 -
241 - add_settings_section(
242 - 'setting_section_id', // id
243 - 'codoc 設定ページ', // title
244 - function (){}, // callback
245 - 'codoc' // page
246 - );
247 - // 認証がある場合
248 - if ($CODOC_AUTHINFO) {
249 - register_setting(
250 - 'codoc_option_group', // option group
251 - CODOC_SETTINGS_OPTION_NAME // option name(DB)
252 - );
253 - add_settings_field(
254 - 'css_path', // id
255 - 'テーマ', // title
256 - function() {
257 - global $CODOC_SETTINGS;
258 - echo '<div class="excerpt">テーマを指定してペイウォールのデザインを変えることができます。<br>パスを指定を選択することでCSSを直接指定するこもと可能です。</div>';
259 - echo sprintf('<div class="inputGroup"><input type="text" name="%s[css_path]" value="%s" id="codoc_css_path" readonly>',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['css_path']);
260 - echo '' .
261 - '<script type="text/javascript"> ' .
262 - ' function gen_css_path(select) { ' .
263 - ' if (select.value == "dark") { ' .
264 - ' document.getElementById("darkmode-caution").style.display="block";' .
265 - ' } else { ' .
266 - ' document.getElementById("darkmode-caution").style.display="none";' .
267 - ' } ' .
268 - ' if (select.value == "path") { ' .
269 - ' document.getElementById("codoc_css_path").readOnly=false; ' .
270 - ' if (!document.getElementById("codoc_css_path").value.match(/\//g)) {' .
271 - ' document.getElementById("codoc_css_path").value=""; ' .
272 - ' } ' .
273 - ' } else { ' .
274 - ' document.getElementById("codoc_css_path").readOnly=true; ' .
275 - ' document.getElementById("codoc_css_path").value=select.value; ' .
276 - ' } ' .
277 - ' } ' .
278 - '</script> ' ;
279 -
280 - echo sprintf('<select name="theme_name" onChange="gen_css_path(this)" id="codoc_theme_select">');
281 - foreach (["blue","red","green","black","dark","blue-square","red-square","green-square","black-square","dark-square"] as $theme) {
282 - if ($theme == "blue") {
283 - echo sprintf('<option value="%s" %s>青</option>', $theme, ($CODOC_SETTINGS["css_path"] == "blue" ? "selected" : ""));
284 - }
285 - if ($theme == "red") {
286 - echo sprintf('<option value="%s" %s>赤</option>', $theme, ($CODOC_SETTINGS["css_path"] == "red" ? "selected" : ""));
287 - }
288 - if ($theme == "green") {
289 - echo sprintf('<option value="%s" %s>緑</option>', $theme, ($CODOC_SETTINGS["css_path"] == "green" ? "selected" : ""));
290 - }
291 - if ($theme == "black") {
292 - echo sprintf('<option value="%s" %s>黒</option>', $theme, ($CODOC_SETTINGS["css_path"] == "black" ? "selected" : ""));
293 - }
294 - if ($theme == "dark") {
295 - echo sprintf('<option value="%s" %s>ダークモード</option>', $theme, ($CODOC_SETTINGS["css_path"] == "dark" ? "selected" : ""));
296 - }
297 - if ($theme == "blue-square") {
298 - echo sprintf('<option value="%s" %s>青(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "blue-square" ? "selected" : ""));
299 - }
300 - if ($theme == "red-square") {
301 - echo sprintf('<option value="%s" %s>赤(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "red-square" ? "selected" : ""));
302 - }
303 - if ($theme == "green-square") {
304 - echo sprintf('<option value="%s" %s>緑(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "green-square" ? "selected" : ""));
305 - }
306 - if ($theme == "black-square") {
307 - echo sprintf('<option value="%s" %s>黒(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "black-square" ? "selected" : ""));
308 - }
309 - if ($theme == "dark-square") {
310 - echo sprintf('<option value="%s" %s>ダークモード(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "dark-square" ? "selected" : ""));
311 - }
312 - }
313 - echo sprintf('<option value="path" %s>パス指定</option>', (preg_match("/\//",$CODOC_SETTINGS["css_path"]) ? "selected" : ""));
314 - echo '<script type="text/javascript">gen_css_path(document.getElementById(\'codoc_theme_select\'))</script>';
315 - echo sprintf('</select></div>');
316 - echo '<p id="darkmode-caution" style="display:none">ダークモード向けテーマは文字色が白となり、背景色によっては文字が見えない状態となるためご注意ください。</p>';
317 - },
318 - 'codoc', //page
319 - 'setting_section_id' //Section
320 - );
321 - add_settings_field(
322 - 'paywall_text', // id
323 - '各種文言', // title
324 - function() {
325 - global $CODOC_SETTINGS;
326 - echo '<div class="excerpt">ペイウォール内の一部文言を変更できます。</div>';
327 - echo '<table class="innerTable"><tbody>';
328 - echo '<tr><th>いいねの表示</th><td>';
329 - echo sprintf('<input type="radio" value="1" name="%s[show_like]" id="show_like_on" %s><label for="show_like_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_like'] == '1' ? "checked" : ""));
330 - echo sprintf('<input type="radio" value="0" name="%s[show_like]" id="show_like_off" %s><label for="show_like_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_like'] == '0' ? "checked" : ""));
331 - echo '</td></tr>';
332 -
333 - echo '<tr><th>codocについての表示</th><td>';
334 - echo sprintf('<input type="radio" value="1" name="%s[show_about_codoc]" id="show_about_codoc_on" %s><label for="show_about_codoc_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_about_codoc'] == '1' ? "checked" : ""));
335 - echo sprintf('<input type="radio" value="0" name="%s[show_about_codoc]" id="show_about_codoc_off" %s><label for="show_about_codoc_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_about_codoc'] == '0' ? "checked" : ""));
336 - echo '</td></tr>';
337 -
338 - echo '<tr><th>PoweredByの表示</th><td>';
339 - echo sprintf('<input type="radio" value="1" name="%s[show_powered_by]" id="show_powered_by_on" %s><label for="show_powered_by_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_powered_by'] == '1' ? "checked" : ""));
340 - echo sprintf('<input type="radio" value="0" name="%s[show_powered_by]" id="show_powered_by_off" %s><label for="show_powered_by_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_powered_by'] == '0' ? "checked" : ""));
341 - echo '</td></tr>';
342 -
343 - echo '<tr><th>記事購入ボタンのテキスト</th><td>';
344 - echo sprintf('<input type="text" name="%s[entry_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['entry_button_text']));
345 - echo '</td></tr>';
346 -
347 - echo '<tr><th>サブスクリプション購入ボタンのテキスト</th><td>';
348 - echo sprintf('<input type="text" name="%s[subscription_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['subscription_button_text']));
349 - echo '</td></tr>';
350 -
351 - echo '<tr><th>サポートボタンのテキスト</th><td>';
352 - echo sprintf('<input type="text" name="%s[support_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['support_button_text']));
353 - echo '</td></tr>';
354 -
355 - echo '<tr><th>「サブスクリプションに含まれる記事」のテキスト</th><td>';
356 - echo sprintf('<input type="text" name="%s[subscription_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['subscription_message']));
357 - echo '</td></tr>';
358 -
359 - echo '<tr><th>サポート説明のテキスト</th><td>';
360 - echo sprintf('<input type="text" name="%s[support_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['support_message']));
361 - echo '</td></tr>';
362 -
363 - echo '</tbody></table>';
364 - },
365 - 'codoc', //page
366 - 'setting_section_id' //Section
367 - );
185 + add_settings_field(
186 + 'str_around_codoc_tag', // id
187 + 'codocタグの前後にHTMLを挿入', // title
188 + function() {
189 + global $CODOC_SETTINGS;
190 + echo sprintf('<textarea name="%s[str_before_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['str_before_codoc_tag']);
191 + echo ('を前に挿入<br />');
192 + echo sprintf('<textarea name="%s[str_after_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['str_after_codoc_tag']);
193 + echo ('を後に挿入');
194 +
195 + },
196 + 'codoc', //page
197 + 'setting_section_id' //Section
198 + );
368 199
369 - add_settings_field(
370 - 'codoc_tag_attributes', // id
371 - 'codocタグの属性', // title
372 - function() {
373 - global $CODOC_SETTINGS;
374 - echo '<div class="excerpt">codocタグに特定の属性を追加することができます。</div>';
375 - echo sprintf('<input type="text" name="%s[codoc_tag_attributes]" value="%s">',CODOC_SETTINGS_OPTION_NAME,htmlspecialchars($CODOC_SETTINGS['codoc_tag_attributes']));
376 - },
377 - 'codoc', //page
378 - 'setting_section_id' //Section
379 - );
380 - add_settings_field(
381 - 'codoc_connect_code', // id
382 - 'サービス連携コード', // title
383 - function() {
384 - global $CODOC_SETTINGS;
385 - echo '<div class="excerpt">サービス連携ウィジェットを利用するためにはアカウント設定でサービス連携を有効化し、サービス連携コードを指定してください</div>';
386 - echo sprintf('<input type="text" name="%s[codoc_connect_code]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['codoc_connect_code']));
387 - },
388 - 'codoc', //page
389 - 'setting_section_id' //Section
390 - );
391 -
392 - add_settings_field(
393 - 'str_replace_binded_url', // id
394 - 'パーマリンク', // title
395 - function() {
396 - global $CODOC_SETTINGS;
397 - echo '<div class="excerpt">codoc側に登録するパーマリンクを置換することができます。</div>';
398 - echo sprintf('<input type="text" name="%s[str_replace_binded_url_from]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_replace_binded_url_from']));
399 - echo ('<span class="suptext">を</span>');
400 - echo sprintf('<input type="text" name="%s[str_replace_binded_url_to]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_replace_binded_url_to']));
401 - echo ('に変換');
402 - },
403 - 'codoc', //page
404 - 'setting_section_id' //Section
405 - );
200 + register_setting(
201 + 'codoc_option_group', // option group
202 + CODOC_USERCODE_OPTION_NAME
203 + );
204 + register_setting(
205 + 'codoc_option_group', // option group
206 + CODOC_TOKEN_OPTION_NAME
207 + );
208 +
209 + if (isset($_GET['codoc_auth_finished']) and $_GET['codoc_auth_finished']) {
210 + add_settings_error( 'general', 'settings_updated', __( 'codocの認証が完了しました' ), 'success' );
211 + }
212 +
213 + add_settings_field(
214 + 'codoc_auth',
215 + '認証',
216 + function() {
217 + global $CODOC_USERCODE;
218 + global $CODOC_TOKEN;
219 + global $CODOC_AUTHINFO;
220 + $script = "javascript:document.getElementById('codoc-usercode').value='-';document.getElementById('codoc-token').value='-';document.getElementById('codoc-auth-message').innerText='解除を完了するには変更を保存してください';document.getElementById('codoc-auth-message').color='red';";
406 221
407 - add_settings_field(
408 - 'str_around_codoc_tag', // id
409 - 'HTMLの挿入', // title
410 - function() {
411 - global $CODOC_SETTINGS;
412 - echo '<div class="excerpt">codocタグの前後にHTMLを挿入することができます。</div>';
413 - echo sprintf('<div class="inputRow"><textarea name="%s[str_before_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_before_codoc_tag']));
414 - echo ('を前に挿入</div>');
415 - echo sprintf('<div class="inputRow"><textarea name="%s[str_after_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_after_codoc_tag']));
416 - echo ('を後に挿入</div>');
222 + echo sprintf('<p><font color="green" id="codoc-auth-message"><strong>%s</strong> で認証済</font></p>',$CODOC_AUTHINFO['email']);
417 223
418 - },
419 - 'codoc', //page
420 - 'setting_section_id' //Section
421 - );
224 + echo sprintf('<input id="codoc-usercode" type="hidden" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
225 + echo sprintf('<input id="codoc-token" type="hidden" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
226 + echo sprintf('<p>認証を<a href="javascript:void(0);" onClick="' . $script . '">解除する</p>');
227 + },
228 + 'codoc',
229 + 'setting_section_id'
230 + );
231 +
232 + }
422 233
423 - add_settings_field(
424 - 'always_show_support_tag', // id
425 - 'サポートの自動挿入', // title
426 - function() {
427 - global $CODOC_SETTINGS;
428 - echo '<div class="excerpt">codocブロックを挿入することなく投稿にサポート機能を追加します</div>';
429 - echo '<table class="innerTable"><tbody>';
430 - echo '<tr><th>自動挿入</th><td>';
431 - echo sprintf('<input type="radio" value="1" name="%s[always_show_support]" id="always_show_support_on" %s><label for="always_show_support_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['always_show_support'] == '1' ? "checked" : ""));
432 - echo sprintf('<input type="radio" value="0" name="%s[always_show_support]" id="always_show_support_off" %s><label for="always_show_support_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['always_show_support'] == '0' ? "checked" : ""));
433 - echo '</td></tr>';
434 - echo '<tr><th>表示位置</th><td>';
435 - echo sprintf('<input type="radio" value="top" name="%s[show_support_location]" id="show_support_location_top" %s><label for="show_support_location_top">冒頭</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_support_location'] == 'top' ? "checked" : ""));
436 - echo sprintf('<input type="radio" value="bottom" name="%s[show_support_location]" id="show_support_location_bottom" %s><label for="show_support_location_bottom">末尾</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_support_location'] == 'bottom' ? "checked" : ""));
437 - echo '</td></tr>';
438 - echo '<tr><th>説明文</th><td>';
439 - echo sprintf('<input type="text" placeholder="サポートの説明文をカスタマイズできます" size="50%%" name="%s[show_support_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['show_support_message']));
440 - echo '</td></tr>';
441 - echo '<tr><th>対象カテゴリ名</th><td>';
442 - echo sprintf('<input placeholder="&quot;|&quot;区切りで複数指定できます" type="text" size="50%%" name="%s[show_support_categories]" value="%s"><br />',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['show_support_categories']));
443 - echo '</td></tr>';
444 - echo '</tbody></table>';
234 + // ない場合
235 + if (!$CODOC_AUTHINFO and !isset($_GET['auth_by_myself'])) {
236 + add_settings_field(
237 + 'codoc_auth',
238 + '認証',
239 + function() {
240 +
241 + //$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
242 + $current_url = admin_url('options-general.php') . '?page=codoc';
243 + $login_url = sprintf("location.href='%s'",CODOC_URL . '/me/token?from=wp&return_url=' . urlencode($current_url));
244 + $register_url = sprintf("location.href='%s'",CODOC_URL . '/register?from=wp&return_url=' . urlencode($current_url));
245 + // submitを消しておく
246 + echo ('<script type="text/javascript">window.onload=function(){document.getElementById(\'submit\').style.display = \'none\'}</script>');
247 + echo ('codocをWordPressでご利用いただくには認証が必要です。<br />');
248 + echo sprintf('ユーザーコードとAPIトークンを<a href="%s&auth_by_myself=1">直接入力</a>することでも認証できます。<br /><br />',$current_url);
249 + echo sprintf('<input type="button" class="button button-primary" value="ログインして認証" onClick="%s"> <input type="button" class="button button-primary" value="登録して認証" onClick="%s"><br /><br />',$login_url,$register_url);
250 +
445 251
446 - },
447 - 'codoc', //page
448 - 'setting_section_id' //Section
449 - );
450 - add_settings_field(
451 - 'do_not_filter_the_content', // id
452 - '支障が出る処理を無効化', // title
453 - function() {
454 - global $CODOC_SETTINGS;
455 - echo '<div class="excerpt">codocの動作に支障が出る他のプラグインによる<strong>フィルター処理</strong>を無効化できます。codocが上手く動かない場合のみ利用してください。</div>';
456 - echo sprintf('<input type="radio" value="1" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_on" %s><label for="do_not_filter_the_content_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['do_not_filter_the_content'] == '1' ? "checked" : ""));
457 - echo sprintf('<input type="radio" value="0" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_off" %s><label for="do_not_filter_the_content_off">しない</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['do_not_filter_the_content'] == '0' ? "checked" : ""));
458 - },
459 - 'codoc', //page
460 - 'setting_section_id' //Section
461 - );
462 - add_settings_field(
463 - 'debug_params', // id
464 - 'デバック用', // title
465 - function() {
466 - global $CODOC_SETTINGS;
467 - echo '<div class="excerpt">デバック用のパラメーターを指定できます。codocサポートから依頼がある場合のみ利用してください。</div>';
468 - echo sprintf('<input placeholder="" type="text" size="50%%" name="%s[debug_params]" value="%s"><br />',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['debug_params']));
469 - },
470 - 'codoc', //page
471 - 'setting_section_id' //Section
472 - );
473 -
474 -
475 - register_setting(
476 - 'codoc_option_group', // option group
477 - CODOC_USERCODE_OPTION_NAME
478 - );
479 - register_setting(
480 - 'codoc_option_group', // option group
481 - CODOC_TOKEN_OPTION_NAME
482 - );
483 -
484 - if (isset($_GET['codoc_auth_finished']) and $_GET['codoc_auth_finished']) {
485 - add_settings_error( 'general', 'settings_updated', __( 'codocの認証が完了しました' ), 'success' );
486 - }
487 -
488 - add_settings_field(
489 - 'codoc_auth',
490 - '認証',
491 - function() {
492 - global $CODOC_USERCODE;
493 - global $CODOC_TOKEN;
494 - global $CODOC_AUTHINFO;
495 - $script = "javascript:document.getElementById('codoc-usercode').value='-';document.getElementById('codoc-token').value='-';document.getElementById('codoc-auth-message').innerText='解除を完了するには変更を保存してください';document.getElementById('codoc-auth-message').color='red';";
496 -
497 - echo sprintf('<p><font color="green" id="codoc-auth-message"><strong>%s</strong> で認証済</font></p>',$CODOC_AUTHINFO['email']);
498 -
499 - echo sprintf('<input id="codoc-usercode" type="hidden" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
500 - echo sprintf('<input id="codoc-token" type="hidden" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
501 - echo sprintf('<p>認証を<a href="javascript:void(0);" onClick="' . $script . '">解除する</p>');
502 - },
503 - 'codoc',
504 - 'setting_section_id'
505 - );
506 -
507 - }
508 -
509 - // ない場合
510 - if (!$CODOC_AUTHINFO and !isset($_GET['auth_by_myself'])) {
511 - add_settings_field(
512 - 'codoc_auth',
513 - '認証',
514 - function() {
515 -
516 - //$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
517 - $current_url = admin_url('options-general.php') . '?page=codoc';
518 - $login_url = sprintf("location.href='%s'",$this->get_codoc_url() . '/me/token?from=wp&return_url=' . urlencode($current_url));
519 - $register_url = sprintf("location.href='%s'",$this->get_codoc_url() . '/register?from=wp&return_url=' . urlencode($current_url));
520 - // submitを消しておく
521 - echo ('<script type="text/javascript">window.onload=function(){document.getElementById(\'submit\').style.display = \'none\'}</script>');
522 - echo ('codocをWordPressでご利用いただくには認証が必要です。<br />');
523 - echo sprintf('ユーザーコードとAPIトークンを<a href="%s&auth_by_myself=1">直接入力</a>することでも認証できます。<br /><br />',$current_url);
524 - echo sprintf('<input type="button" class="button button-primary" value="ログインして認証" onClick="%s"> <input type="button" class="button button-primary" value="登録して認証" onClick="%s"><br /><br />',$login_url,$register_url);
525 -
526 -
527 - },
528 - 'codoc',
529 - 'setting_section_id'
530 - );
531 - }
532 - // ない場合かつ自分で認証する場合
533 - if (!$CODOC_AUTHINFO and (
252 + },
253 + 'codoc',
254 + 'setting_section_id'
255 + );
256 + }
257 + // ない場合かつ自分で認証する場合
258 + if (!$CODOC_AUTHINFO and (
534 259 (isset($_GET['auth_by_myself']) and $_GET['auth_by_myself']) or
535 260 (isset($_POST['auth_by_myself']) and $_POST['auth_by_myself'])
536 261 )) {
537 - register_setting(
538 - 'codoc_option_group', // option group
539 - CODOC_USERCODE_OPTION_NAME
540 - );
541 - register_setting(
542 - 'codoc_option_group', // option group
543 - CODOC_TOKEN_OPTION_NAME
544 - );
545 - add_settings_field(
546 - 'codoc_usercode',
547 - 'ユーザーコード',
548 - function() {
549 - global $CODOC_USERCODE;
262 + register_setting(
263 + 'codoc_option_group', // option group
264 + CODOC_USERCODE_OPTION_NAME
265 + );
266 + register_setting(
267 + 'codoc_option_group', // option group
268 + CODOC_TOKEN_OPTION_NAME
269 + );
270 + add_settings_field(
271 + 'codoc_usercode',
272 + 'ユーザーコード',
273 + function() {
274 + global $CODOC_USERCODE;
550 275 echo '<input type="hidden" name="auth_by_myself" value="1">';
551 - echo sprintf('<input type="text" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
552 - },
553 - 'codoc',
554 - 'setting_section_id'
555 - );
556 - add_settings_field(
557 - 'codoc_token',
558 - 'APIトークン',
559 - function() {
560 - global $CODOC_TOKEN;
561 - echo sprintf('<input type="text" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
562 - },
563 - 'codoc',
564 - 'setting_section_id'
565 - );
566 - }
567 -
568 - // 認証情報を保存
569 - add_action( 'update_option_' . CODOC_USERCODE_OPTION_NAME, function( $old_value, $new_value ) {
570 - global $CODOC_RE_AUTHORIZE;
571 - $CODOC_RE_AUTHORIZE = 1;
572 - },9,2); // $hook, $function_to_add, $priority, $accepted_args
573 - add_action( 'update_option_' . CODOC_TOKEN_OPTION_NAME, function( $old_value, $new_value ) {
574 - global $CODOC_RE_AUTHORIZE;
575 - $CODOC_RE_AUTHORIZE = 1;
576 - },10,2);
577 -
578 - add_action('update_option_' . CODOC_SETTINGS_OPTION_NAME,function(){
579 - $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
580 - if (isset($CODOC_SETTINGS['always_show_support']) and $CODOC_SETTINGS['always_show_support']) {
581 - $data = $this->util->get_support_entry([],[
582 - "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
583 - "token" => get_option(CODOC_TOKEN_OPTION_NAME),
584 - ]);
585 - if ($data->status and $entry = $data->entry) {
586 - update_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME,$entry->code);
587 - } else {
588 - update_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME,'');
589 - }
590 - } elseif(isset($CODOC_SETTINGS['always_show_support']) and !$CODOC_SETTINGS['always_show_support']) {
591 - update_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME,'');
592 - }
593 - });
594 -
595 - add_action('updated_option',function(){
596 - global $CODOC_RE_AUTHORIZE;
597 - if ($CODOC_RE_AUTHORIZE) {
598 - //$data = $this->callAPI('GET','');
276 + echo sprintf('<input type="text" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
277 + },
278 + 'codoc',
279 + 'setting_section_id'
280 + );
281 + add_settings_field(
282 + 'codoc_token',
283 + 'APIトークン',
284 + function() {
285 + global $CODOC_TOKEN;
286 + echo sprintf('<input type="text" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
287 + },
288 + 'codoc',
289 + 'setting_section_id'
290 + );
291 + }
292 +
293 + // 認証情報を保存
294 + add_action( 'update_option_' . CODOC_USERCODE_OPTION_NAME, function( $old_value, $new_value ) {
295 + global $CODOC_RE_AUTHORIZE;
296 + $CODOC_RE_AUTHORIZE = 1;
297 + },9,2); // $hook, $function_to_add, $priority, $accepted_args
298 + add_action( 'update_option_' . CODOC_TOKEN_OPTION_NAME, function( $old_value, $new_value ) {
299 + global $CODOC_RE_AUTHORIZE;
300 + $CODOC_RE_AUTHORIZE = 1;
301 + },10,2);
302 + add_action('updated_option',function(){
303 + global $CODOC_RE_AUTHORIZE;
304 + if ($CODOC_RE_AUTHORIZE) {
305 + //$data = $this->callAPI('GET','');
599 306 $data = $this->util->get_user_info([],[
600 307 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
601 308 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
602 309 ]);
603 - if ($data->status and $user = $data->user) {
604 - update_option(CODOC_AUTHINFO_OPTION_NAME,[
605 - 'email' => $user->email,
606 - 'name' => $user->name,
607 - ]);
608 - } else {
609 - update_option(CODOC_AUTHINFO_OPTION_NAME,'');
610 - }
611 - }
612 - });
613 -
614 - });
615 - // プラグイン一覧に設定のリンクをいれる
616 - add_filter( 'plugin_action_links_' . plugin_basename( plugin_dir_path( __FILE__ ) . 'codoc' . '.php' ),
617 - function( $links ) {
618 - $setting_link = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'page', 'codoc', admin_url( 'options-general.php' ) ) ), esc_html( '設定' ) );
619 - array_unshift( $links, $setting_link );
620 -
621 - return $links;
622 - }
623 - );
624 -
625 - }
626 - public function add_mce() {
310 + if ($data->status and $user = $data->user) {
311 + update_option(CODOC_AUTHINFO_OPTION_NAME,[
312 + 'email' => $user->email,
313 + 'name' => $user->name,
314 + ]);
315 + } else {
316 + update_option(CODOC_AUTHINFO_OPTION_NAME,'');
317 + }
318 + }
319 + });
320 +
321 + });
322 + // プラグイン一覧に設定のリンクをいれる
323 + add_filter( 'plugin_action_links_' . plugin_basename( plugin_dir_path( __FILE__ ) . 'codoc' . '.php' ),
324 + function( $links ) {
325 + $setting_link = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'page', 'codoc', admin_url( 'options-general.php' ) ) ), esc_html( '設定' ) );
326 + array_unshift( $links, $setting_link );
327 +
328 + return $links;
329 + }
330 + );
331 +
332 + }
333 + public function add_mce() {
627 334 add_action( 'admin_enqueue_scripts', function() {
628 - if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) {
629 - return;
630 - }
335 + if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) {
336 + return;
337 + }
631 338 $current_screen = get_current_screen();
632 339 if ( ( method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor() ) || ( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) ) {
633 340 // Gutenberg Editor
634 341 // なにもしない
@@ -636,18 +343,18 @@
636 343 // tinymce
637 344 if ( get_user_option( 'rich_editing' ) == 'true' ) {
638 345 // プラグイン内で使うCSRF を生成
639 346 $path = plugins_url( 'codoc/src_mce/codoc-editor-onload.js', __DIR__ );
640 - wp_enqueue_script( 'codoc-editor-onload', $path, array('jquery'), '', true );
347 + wp_enqueue_script( 'codoc-editor-onload', $path, array('jquery'), '', true );
641 348 // I just want to insert this global variables but i don't know how i can do it..
642 349 wp_localize_script(
643 350 'codoc-editor-onload',
644 - 'CODOCEDITOR',
351 + 'CODOCEDITOR',
645 352 array(
646 353 'action' => 'codoc_shortcodes',
647 354 'nonce' => wp_create_nonce( 'codoc_shortcodes' ),
648 -
649 - 'codoc_url' => $this->get_codoc_url(),
355 +
356 + 'codoc_url' => CODOC_URL,
650 357 'codoc_usercode' => get_option(CODOC_USERCODE_OPTION_NAME),
651 358 'codoc_plugin_version' => CODOC_PLUGIN_VERSION,
652 359 'codoc_sdk_path' => CODOC_SDK_PATH,
653 360 )
@@ -655,14 +362,14 @@
655 362
656 363 // ここでtinymceのプラグイン追加
657 364 //wp_enqueue_style( 'codoc-admin-style', plugins_url( 'codoc/src_mce/codoc-admin.css', __DIR__ ) );
658 365 //add_editor_style( plugins_url( 'codoc/src_mce/codoc-admin.css', __DIR__ ) );
659 - wp_enqueue_style( 'codoc-admin-style', $this->get_codoc_url() . CODOC_SDK_PATH . '.tinymce.css?c=' . date('Ymd') );
660 - add_editor_style( $this->get_codoc_url() . CODOC_SDK_PATH . '.tinymce.css' );
661 -
366 + wp_enqueue_style( 'codoc-admin-style', CODOC_URL . CODOC_SDK_PATH . '.tinymce.css?c=' . date('Ymd') );
367 + add_editor_style( CODOC_URL . CODOC_SDK_PATH . '.tinymce.css' );
368 +
662 369 add_filter( 'mce_external_plugins', function( $plugin_array ) {
663 370 //$plugin_array['codoc'] = plugins_url( 'codoc/src_mce/codoc-editor.js', __DIR__ );
664 - $plugin_array['codoc'] = $this->get_codoc_url() . CODOC_SDK_PATH . '.tinymce.js?c=' . date('Ymd');
371 + $plugin_array['codoc'] = CODOC_URL . CODOC_SDK_PATH . '.tinymce.js?c=' . date('Ymd');
665 372 return $plugin_array;
666 373 } );
667 374 add_filter( 'mce_buttons', function( $buttons ) {
668 375 array_push( $buttons, "|", "codoc" );
@@ -667,92 +374,45 @@
667 374 add_filter( 'mce_buttons', function( $buttons ) {
668 375 array_push( $buttons, "|", "codoc" );
669 376 return $buttons;
670 377 } );
671 -
378 +
672 379 }
673 380 }
674 - } );
675 - }
676 - public function get_filtered_content($post_emulated) {
677 - // 記事ページであることをエミュレートしてフィルター実行
678 - $post_backuped = null;
679 - if (isset($GLOBALS['post'])) {
680 - $post_backuped = $GLOBALS['post'];
681 - }
682 - $GLOBALS['post'] = $post_emulated;
683 -
684 - $wp_query_backuped = null;
685 - if (isset($GLOBALS['wp_query'])) {
686 - $wp_query_backuped = $GLOBALS['wp_query'];
687 - $wp_query = $GLOBALS['wp_query'];
688 - $is_single_backuped = $wp_query->is_single;
689 - $wp_query->is_single = true;
690 - $wp_query->post = $post_emulated;
691 - $wp_query->queried_object = $post_emulated;
692 - $wp_query->queried_object_id = $post_emulated->id;
693 -
694 - $GLOBALS['wp_query'] = $wp_query;
695 - }
696 - // $this->the_content でオリジナルを返してもらうため
697 - $this->do_not_filter_the_content = true;
698 - $content = preg_replace(
699 - '/ (\/)?wp:codoc\/codoc-block /',' \\1wptmp:codoc/codoc-block ',
700 - $post_emulated->post_content
701 - );
702 - #$content = do_shortcode( $content );
703 - $content_filtered = apply_filters( 'the_content', $content);
704 - $this->do_not_filter_the_content = false;
705 -
706 - $GLOBALS['post'] = $post_backuped;
707 -
708 - if ($wp_query_backuped) {
709 - $GLOBALS['wp_query'] = $wp_query_backuped;
710 - }
711 -
712 - $content_filtered = preg_replace(
713 - '/ (\/)?wptmp:codoc\/codoc-block /',' \\1wp:codoc/codoc-block ',
714 - $content_filtered
715 - );
716 -
717 - return $content_filtered;
718 - }
719 -
720 - public function save_post($post_ID,$post,$update) {
721 - if (preg_match('/^(auto-draft|inherit)$/',$post->post_status)) {
722 - return;
723 - }
724 - $entryCode = get_post_meta($post_ID,'codoc_entry_code',true);
725 - $codoc_settings = get_option(CODOC_SETTINGS_OPTION_NAME);
726 - $post_content = (isset($codoc_settings['do_not_filter_the_content']) and $codoc_settings['do_not_filter_the_content']) ?
727 - $post->post_content : $this->get_filtered_content($post);
728 - $res = $this->util->sync_entry([
381 + } );
382 + }
383 + public function save_post($post_ID,$post,$update) {
384 + if (preg_match('/^(auto-draft|inherit)$/',$post->post_status)) {
385 + return;
386 + }
387 +
388 + $entryCode = get_post_meta($post_ID,'codoc_entry_code',true);
389 + $res = $this->util->sync_entry([
729 390 "post_title" => $post->post_title,
730 - "post_content" => $post_content,
391 + "post_content" => $post->post_content,
731 392 "post_status" => ($post->post_status == 'publish' ? 1 : 0),
732 393 "post_permalink" => get_permalink($post_ID),
733 394 "codoc_entry_code" => $entryCode,
734 - "codoc_settings" => $codoc_settings,
735 395 ],[
736 396 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
737 397 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
738 398 ]);
739 -
740 - if (is_object($res) and $res->status and !$entryCode) {
741 - update_post_meta($post_ID,'codoc_entry_code',$res->entry->code);
742 - }
743 -
744 - return true;
745 - }
746 - function updated_post_meta( $meta_ID, $post_ID, $meta_key ) {
747 - if ($meta_key != '_thumbnail_id') {
748 - return;
749 - }
750 - if ( has_post_thumbnail($post_ID) ) {
751 - $attachment = wp_get_attachment_metadata( get_post_thumbnail_id($post_ID));
752 - $upload_dir = wp_upload_dir();
753 - $file_path = sprintf ('%s/%s',$upload_dir['basedir'],$attachment['file']);
754 -
399 +
400 + if (is_object($res) and $res->status and !$entryCode) {
401 + update_post_meta($post_ID,'codoc_entry_code',$res->entry->code);
402 + }
403 +
404 + return true;
405 + }
406 + function updated_post_meta( $meta_ID, $post_ID, $meta_key ) {
407 + if ($meta_key != '_thumbnail_id') {
408 + return;
409 + }
410 + if ( has_post_thumbnail($post_ID) ) {
411 + $attachment = wp_get_attachment_metadata( get_post_thumbnail_id($post_ID));
412 + $upload_dir = wp_upload_dir();
413 + $file_path = sprintf ('%s/%s',$upload_dir['basedir'],$attachment['file']);
414 +
755 415 return $this->util->post_thumbnail([
756 416 "file_path" => $file_path,
757 417 "boundary" => wp_generate_password(24),
758 418 "codoc_entry_code" => get_post_meta($post_ID,'codoc_entry_code',true),
@@ -759,14 +419,14 @@
759 419 ],[
760 420 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
761 421 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
762 422 ]);
763 - }
764 - }
765 - function deleted_post_meta( $meta_ids, $post_ID, $meta_key,$meta_value ) {
766 - if ($meta_key != '_thumbnail_id') {
767 - return;
768 - }
423 + }
424 + }
425 + function deleted_post_meta( $meta_ids, $post_ID, $meta_key,$meta_value ) {
426 + if ($meta_key != '_thumbnail_id') {
427 + return;
428 + }
769 429 return $this->util->reset_thumbnail(
770 430 ["codoc_entry_code" => get_post_meta($post_ID,'codoc_entry_code',true)],
771 431 [
772 432 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
@@ -772,36 +432,20 @@
772 432 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
773 433 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
774 434 ]
775 435 );
776 - }
777 -
778 - function the_content( $post_content ) {
436 + }
437 +
438 + function the_content( $post_content ) {
779 439 if ( is_single() && in_the_loop() && is_main_query() ) {
780 440 }
781 - // get_filtered_content から do_not_filter_the_contentを有効にされるパターン
782 - // オプションの設定値の意味合い(他のフィルタを無視)とは違うため注意
783 - if ($this->do_not_filter_the_content) {
784 - return $post_content;
785 - }
786 - $post = get_post();
787 - # is_amp で実装しているテンプレート用
788 - $is_amp_endpoint = (function_exists('is_amp_endpoint') && is_amp_endpoint()) ? true :
789 - ((function_exists('is_amp') && is_amp()) ? true : false);
441 + $post = get_post();
790 442 return $this->util->filter_content([
791 443 "post_content" => $post_content,
792 444 "preview" => is_preview(),
793 445 "codoc_entry_code" => get_post_meta($post->ID,'codoc_entry_code',true),
794 - "codoc_settings" => get_option(CODOC_SETTINGS_OPTION_NAME),
795 - "is_amp_endpoint" => $is_amp_endpoint,
796 - "post_permalink" => get_permalink($post->ID),
797 - "codoc_support_entry_code" => get_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME),
446 + "codoc_settings" => get_option(CODOC_SETTINGS_OPTION_NAME),
798 447 ]);
799 - }
448 + }
449 +
450 +}
800 451
801 - function excerpt_allowed_blocks ($allowed_blocks) {
802 - if (is_array($allowed_blocks)) {
803 - array_push($allowed_blocks,'codoc/codoc-block');
804 - }
805 - return $allowed_blocks;
806 - }
807 -}