Pz-LinkCard - Version 2.4.3.3

Version Description

  • URLThanks @tannpura00 Modified: Deleted "URL correction" setting from "Advanced" tab of the setting screen. (It wasn't the cause of the problem.)
  • URL % %25 Thanks @tannpura00 Fixed: Fixed a bug that the correct page was not linked when "%" in the URL was encoded as "%25".
Download this release

Release Info

Developer poporon
Plugin Icon 128x128 Pz-LinkCard
Version 2.4.3.3
Comparing to
See all releases

Code changes from version 2.4.3.2 to 2.4.3.3

Files changed (3) hide show
  1. lib/pz-linkcard-settings.php +0 -8
  2. pz-linkcard.php +25 -53
  3. readme.txt +13 -4
lib/pz-linkcard-settings.php CHANGED
@@ -1080,14 +1080,6 @@
1080
  <td><label><input name="properties[flg-amp-url]" type="checkbox" value="1" <?php checked($this->options['flg-amp-url'] ); ?> /><?php echo __('If the URL is AMP, display simple.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
1081
  </tr>
1082
 
1083
- <tr>
1084
- <th scope="row"><?php _e('URL Correction', $this->text_domain ); ?></th>
1085
- <td>
1086
- <label><input name="properties[flg-nocorrect]" type="checkbox" value="1" <?php checked($this->options['flg-nocorrect'] ); ?> /><?php echo __('Disable both sanitize and correction for URL.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label><br>
1087
- <span><?php echo __('*', $this->text_domain ).' '.__('If many link cards suddenly break, it may be resolved.', $this->text_domain ); ?></span>
1088
- </td>
1089
- </tr>
1090
-
1091
  <tr>
1092
  <th scope="row"><?php _e('Hide URL Error', $this->text_domain ); ?></th>
1093
  <td><label><input name="properties[flg-invalid-hide]" type="checkbox" value="1" <?php checked($this->options['flg-invalid-hide'] ); ?> /><?php echo __('Do not display an error on the admin page.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
1080
  <td><label><input name="properties[flg-amp-url]" type="checkbox" value="1" <?php checked($this->options['flg-amp-url'] ); ?> /><?php echo __('If the URL is AMP, display simple.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
1081
  </tr>
1082
 
 
 
 
 
 
 
 
 
1083
  <tr>
1084
  <th scope="row"><?php _e('Hide URL Error', $this->text_domain ); ?></th>
1085
  <td><label><input name="properties[flg-invalid-hide]" type="checkbox" value="1" <?php checked($this->options['flg-invalid-hide'] ); ?> /><?php echo __('Do not display an error on the admin page.', $this->text_domain ).__('(Deprecated)', $this->text_domain ); ?></label></td>
pz-linkcard.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
- Version: 2.4.3.2
7
  Author: Poporon
8
  Author URI: http://poporon.poponet.jp
9
  Text Domain: pz-linkcard
@@ -17,7 +17,7 @@ class Pz_LinkCard {
17
  protected $defaults = array(
18
  'plugin-abbreviation' => 'Pz-LkC',
19
  'plugin-name' => 'Pz-LinkCard',
20
- 'plugin-version' => '2.4.3.2',
21
  'plugin-path' => '/pz-linkcard',
22
  'author-url' => 'https://popozure.info',
23
  'author-name' => 'Poporon',
@@ -170,7 +170,6 @@ class Pz_LinkCard {
170
  'flg-initialize' => null,
171
  'flg-compress' => 1,
172
  'flg-amp-url' => null,
173
- 'flg-nocorrect' => null,
174
  'flg-invalid-hide' => null,
175
  'saved-date' => null,
176
  'admin-mode' => null,
@@ -919,24 +918,16 @@ class Pz_LinkCard {
919
 
920
  // URLのエンコード(DB格納用のURL作成)
921
  private function pz_EncodeURL($url = null, $sanitize = false ) {
 
 
 
 
 
922
  // URL指定なし
923
  if (!$url ) {
924
  return null;
925
  }
926
 
927
- // URLのサニタイズ
928
- if ($sanitize ) {
929
- if (!$this->options['flg-nocorrect'] ) {
930
- $url = $this->pz_SanitizeURL($url );
931
- if (!$url ) {
932
- return null;
933
- }
934
- } else {
935
- echo '<!-- [Pz-LkC] E-1-S-U="'.esc_html($url ).'" -->'.PHP_EOL;
936
- echo '<!-- [Pz-LkC] E-2-S-U="'.esc_html($this->pz_SanitizeURL($url ) ).'" -->'.PHP_EOL;
937
- }
938
- }
939
-
940
  // 日本語がある
941
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
942
  // 国際ドメイン対応(日本語ドメイン対応)
@@ -949,38 +940,26 @@ class Pz_LinkCard {
949
 
950
  // 日本語がある
951
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
952
- if (!$this->options['flg-nocorrect'] ) {
953
- $url = $this->pz_EncodeURI($url ); // エンティティ化
954
- } else {
955
- echo '<!-- [Pz-LkC] E-3-E-U="'.esc_html($url ).'" -->'.PHP_EOL;
956
- echo '<!-- [Pz-LkC] E-4-E-U="'.esc_html($this->pz_EncodeURI($url ) ).'" -->'.PHP_EOL;
957
- }
958
  }
959
  }
960
 
 
961
  return $url;
962
  }
963
 
964
  // URLのデコード(表示用URL作成)
965
  private function pz_DecodeURL($url = null, $sanitize = false ) {
 
 
 
 
 
966
  // URL指定なし
967
  if (!$url ) {
968
  return null;
969
  }
970
 
971
- // URLのサニタイズ
972
- if ($sanitize ) {
973
- if (!$this->options['flg-nocorrect'] ) {
974
- $url = $this->pz_SanitizeURL($url );
975
- if (!$url ) {
976
- return null;
977
- }
978
- } else {
979
- echo '<!-- [Pz-LkC] D-1-S-U="'.esc_html($url ).'" -->'.PHP_EOL;
980
- echo '<!-- [Pz-LkC] D-2-S-U="'.esc_html($this->pz_SanitizeURL($url ) ).'" -->'.PHP_EOL;
981
- }
982
- }
983
-
984
  // 国際ドメイン対応(日本語ドメイン対応)
985
  $url_info = $this->pz_GetURLInfo($url );
986
  if (function_exists('idn_to_utf8' ) && substr($url_info['domain'], 0, 4 ) == 'xn--' ) {
@@ -990,24 +969,19 @@ class Pz_LinkCard {
990
  }
991
 
992
  // エンティティ文字のデコード
993
- if (!$this->options['flg-nocorrect'] ) {
 
 
 
994
  $url = rawurldecode($url );
995
- } else {
996
- echo '<!-- [Pz-LkC] D-1-D-U="'.esc_html($url ).'" -->'.PHP_EOL;
997
- echo '<!-- [Pz-LkC] D-2-D-U="'.esc_html(rawurldecode($url ) ).'" -->'.PHP_EOL;
998
  }
999
 
 
1000
  return $url;
1001
  }
1002
 
1003
  // URLのサニタイズ
1004
  private function pz_SanitizeURL($url = null ) {
1005
- if ($this->options['debug-mode'] ) {
1006
- echo '<!-- Pz-LkC [pz_SanitizeURL]'.PHP_EOL;
1007
- echo '$url='.html_entity_decode($url ).PHP_EOL;
1008
- echo '/-->'.PHP_EOL;
1009
- }
1010
-
1011
  // URL指定なし
1012
  if (!$url ) {
1013
  return null;
@@ -1017,12 +991,14 @@ class Pz_LinkCard {
1017
  $url = preg_replace('/\A[  \'\"‘’“”″]+|[  \'\"‘’“”″]+\z/', '', $url );
1018
  $url = str_replace('&#8221;', '', $url );
1019
 
 
 
 
 
 
1020
  // 日本語がある
1021
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
1022
- $multibyte = true;
1023
  $url = $this->pz_EncodeURL($url, false);
1024
- } else {
1025
- $multibyte = false;
1026
  }
1027
 
1028
  // Aタグがあったら最初にあるAタグのhrefを持ってくる
@@ -1051,11 +1027,7 @@ class Pz_LinkCard {
1051
  break;
1052
  }
1053
 
1054
- // 日本語がある
1055
- if ($multibyte ) {
1056
- $url = $this->pz_DecodeURL($url, false);
1057
- }
1058
-
1059
  return $url;
1060
  }
1061
 
3
  Plugin Name: Pz-LinkCard
4
  Plugin URI: http://poporon.poponet.jp/pz-linkcard
5
  Description: リンクをカード形式で表示します。
6
+ Version: 2.4.3.3
7
  Author: Poporon
8
  Author URI: http://poporon.poponet.jp
9
  Text Domain: pz-linkcard
17
  protected $defaults = array(
18
  'plugin-abbreviation' => 'Pz-LkC',
19
  'plugin-name' => 'Pz-LinkCard',
20
+ 'plugin-version' => '2.4.3.3',
21
  'plugin-path' => '/pz-linkcard',
22
  'author-url' => 'https://popozure.info',
23
  'author-name' => 'Poporon',
170
  'flg-initialize' => null,
171
  'flg-compress' => 1,
172
  'flg-amp-url' => null,
 
173
  'flg-invalid-hide' => null,
174
  'saved-date' => null,
175
  'admin-mode' => null,
918
 
919
  // URLのエンコード(DB格納用のURL作成)
920
  private function pz_EncodeURL($url = null, $sanitize = false ) {
921
+ // URLのサニタイズ
922
+ if ($sanitize ) {
923
+ $url = $this->pz_SanitizeURL($url );
924
+ }
925
+
926
  // URL指定なし
927
  if (!$url ) {
928
  return null;
929
  }
930
 
 
 
 
 
 
 
 
 
 
 
 
 
 
931
  // 日本語がある
932
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
933
  // 国際ドメイン対応(日本語ドメイン対応)
940
 
941
  // 日本語がある
942
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
943
+ $url = $this->pz_EncodeURI($url ); // エンティティ化
 
 
 
 
 
944
  }
945
  }
946
 
947
+ // エンコードしたURLを返却
948
  return $url;
949
  }
950
 
951
  // URLのデコード(表示用URL作成)
952
  private function pz_DecodeURL($url = null, $sanitize = false ) {
953
+ // URLのサニタイズ
954
+ if ($sanitize ) {
955
+ $url = $this->pz_SanitizeURL($url );
956
+ }
957
+
958
  // URL指定なし
959
  if (!$url ) {
960
  return null;
961
  }
962
 
 
 
 
 
 
 
 
 
 
 
 
 
 
963
  // 国際ドメイン対応(日本語ドメイン対応)
964
  $url_info = $this->pz_GetURLInfo($url );
965
  if (function_exists('idn_to_utf8' ) && substr($url_info['domain'], 0, 4 ) == 'xn--' ) {
969
  }
970
 
971
  // エンティティ文字のデコード
972
+ $url = rawurldecode($url );
973
+
974
+ // % が %25 だったらもう一度デコード
975
+ if (mb_strpos($url, '%' ) !== false) {
976
  $url = rawurldecode($url );
 
 
 
977
  }
978
 
979
+ // デコードしたURLを返却
980
  return $url;
981
  }
982
 
983
  // URLのサニタイズ
984
  private function pz_SanitizeURL($url = null ) {
 
 
 
 
 
 
985
  // URL指定なし
986
  if (!$url ) {
987
  return null;
991
  $url = preg_replace('/\A[  \'\"‘’“”″]+|[  \'\"‘’“”″]+\z/', '', $url );
992
  $url = str_replace('&#8221;', '', $url );
993
 
994
+ // エンティティ文字がある
995
+ if (mb_strpos($url, '%' ) !== false) {
996
+ $url = $this->pz_DecodeURL($url ,false );
997
+ }
998
+
999
  // 日本語がある
1000
  if (!preg_match("/^[\x20-\x7E]+$/", $url ) ) {
 
1001
  $url = $this->pz_EncodeURL($url, false);
 
 
1002
  }
1003
 
1004
  // Aタグがあったら最初にあるAタグのhrefを持ってくる
1027
  break;
1028
  }
1029
 
1030
+ // サニタイズしたURLを返却する(エンティティ化済)
 
 
 
 
1031
  return $url;
1032
  }
1033
 
readme.txt CHANGED
@@ -151,8 +151,15 @@ Ver.2.1.2から200px四方に変更、Ver.2.4.1から自由に指定できるよ
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
 
154
  = 2.4.3.2 =
155
- * 設定画面の「上級者向け」タブに「URLの補正」の設定を追加しました。パスに日本語を使用している場合等にリンクが大量にリンク切れになる不具合に対応。(Thanks @tannpura00)
 
156
 
157
  = 2.4.3.1 =
158
  * 設定画面で「変更を保存」を実行した際、一部の設定値が正常に保存されていなかった不具合を修正。
@@ -197,8 +204,8 @@ Ver.2.1.2から200px四方に変更、Ver.2.4.1から自由に指定できるよ
197
  Modified: Moved the setting item of "Relative URL" on the setting screen from the "Advanced" tab to the "Link Check" tab.
198
  * 設定画面の「基本」タブに、「更新履歴」の表示を追加。
199
  Added: Added the display of "Changelog" to the "Basic" tab of the setting screen.
200
- * 設定画面の「リンク先の検査」タブに「相対指定URL」を追加。
201
- Added: Added "Relative URL" to the "Link Check" tab of the setting screen.
202
  * 設定画面の「Web API」タブ、「画像」タブ、「CSS」タブを削除。
203
  Modified: Removed "Web API" tab, "Image" tab, and "CSS" tab on the setting screen.
204
  * 設定画面に「その他」タブを追加。(「Web API」「画像」「CSS」の内容を統合)
@@ -211,12 +218,14 @@ Ver.2.1.2から200px四方に変更、Ver.2.4.1から自由に指定できるよ
211
  Modified: Modified the initial selection of "Relative URL" on the "Link Check" tab of the setting screen to Checked.
212
  * 設定画面に「マルチサイト」タブを追加。(マルチサイト設定時のみ表示されます)
213
  Added: Added "Multi Site" tab to the setting screen. (Displayed only when multi-site is set)
 
 
214
  * 設定画面の「上級者向け」タブに「ファイルメニュー」の設定を追加。
215
  Added: Added settings of "File Menu" to the "Advanced" tab of the setting screen.
216
  * 設定画面の「上級者向け」タブに「初期化タブ」を表示する設定を追加。
217
  Added: Added a setting to display the "Initialization Tab" in the "Advanced" tab of the setting screen.
218
  * 設定画面の「上級者向け」タブから「実行時間の表示」の設定を削除。
219
- Modified: Deleted the setting of "Display execution time" from the "Advanced" tab of the setting screen.
220
  * 設定画面の「上級者向け」タブに「調査モード」の設定を追加。(通常は使用しないでください)
221
  Added a setting to display the "Survey Mode" in the "Advanced" tab of the setting screen. (Do not use normally)
222
  * 設定画面の「上級者向け」タブに「管理者モード」の設定を追加。(動作無能に陥る設定が可能なため、通常は使用しないでください。)
151
 
152
  == Changelog ==
153
 
154
+ = 2.4.3.3 =
155
+ * 設定画面の「上級者向け」タブに「URLの補正」の設定を削除。(不具合が解消されなかったため。)(Thanks @tannpura00)
156
+ Modified: Deleted "URL correction" setting from "Advanced" tab of the setting screen. (It wasn't the cause of the problem.)
157
+ * URL内の % が %25 とエンコードされていた際に正しいページにリンクがされなかった不具合を修正。(Thanks @tannpura00)
158
+ Fixed: Fixed a bug that the correct page was not linked when "%" in the URL was encoded as "%25".
159
+
160
  = 2.4.3.2 =
161
+ * 設定画面の「上級者向け」タブに「URLの補正」の設定を追加。パスに日本語を使用している場合等にリンクが大量にリンク切れになる不具合に対応。(Thanks @tannpura00)
162
+ Added: Added "URL correction" setting to "Advanced" tab of the setting screen.
163
 
164
  = 2.4.3.1 =
165
  * 設定画面で「変更を保存」を実行した際、一部の設定値が正常に保存されていなかった不具合を修正。
204
  Modified: Moved the setting item of "Relative URL" on the setting screen from the "Advanced" tab to the "Link Check" tab.
205
  * 設定画面の「基本」タブに、「更新履歴」の表示を追加。
206
  Added: Added the display of "Changelog" to the "Basic" tab of the setting screen.
207
+ * 設定画面の「リンク先の検査」タブに「相対指定URL」の設定を追加。
208
+ Added: Added "Relative URL" setting to "Link Check" tab of the setting screen.
209
  * 設定画面の「Web API」タブ、「画像」タブ、「CSS」タブを削除。
210
  Modified: Removed "Web API" tab, "Image" tab, and "CSS" tab on the setting screen.
211
  * 設定画面に「その他」タブを追加。(「Web API」「画像」「CSS」の内容を統合)
218
  Modified: Modified the initial selection of "Relative URL" on the "Link Check" tab of the setting screen to Checked.
219
  * 設定画面に「マルチサイト」タブを追加。(マルチサイト設定時のみ表示されます)
220
  Added: Added "Multi Site" tab to the setting screen. (Displayed only when multi-site is set)
221
+ * 設定画面の「上級者向け」タブに「圧縮」の設定を追加。
222
+ Added: Added settings of "Compress" to the "Advanced" tab of the setting screen.
223
  * 設定画面の「上級者向け」タブに「ファイルメニュー」の設定を追加。
224
  Added: Added settings of "File Menu" to the "Advanced" tab of the setting screen.
225
  * 設定画面の「上級者向け」タブに「初期化タブ」を表示する設定を追加。
226
  Added: Added a setting to display the "Initialization Tab" in the "Advanced" tab of the setting screen.
227
  * 設定画面の「上級者向け」タブから「実行時間の表示」の設定を削除。
228
+ Modified: Deleted "Display Execution Time" setting from "Advanced" tab of the setting screen.
229
  * 設定画面の「上級者向け」タブに「調査モード」の設定を追加。(通常は使用しないでください)
230
  Added a setting to display the "Survey Mode" in the "Advanced" tab of the setting screen. (Do not use normally)
231
  * 設定画面の「上級者向け」タブに「管理者モード」の設定を追加。(動作無能に陥る設定が可能なため、通常は使用しないでください。)