POTI-board EVO v5.19.1 リリース v3.09.x以下の古いバージョンには重大なバグがあります。
古いバージョンに存在する重大なバグ
-
v2.26.0以前のPOTI-boardにはXSSの脆弱性があります。
悪意のあるJavaScriptが実行される可能性があります。 -
v3.09.5以前のPOTI-boardのすべてのバージョンには重大な欠陥があります。
すべてのログファイルを失う可能性があります。
また、v3.x系統のPOTI-boardはPHP8.1環境下で非推奨のエラーが発生します。
現時点では警告ですがPHP9で動作が停止します。
そのためのv5.xの開発です。v5.xの利用をおすすめします。
POTI-board EVO v5.19.1 リリース
[2022/05/25] v5.19.1
- PHP7.1では動作しなくなっている事が確認されたため、必要な動作環境をPHP7.2以上に変更しました。
PHP7.1環境では、起動せずPHPのバージョンが低い事を伝えるエラーメッセージを出します。 - 未投稿画像のリンクはコメント未記入で画面から離れてしまったあとでも、再度投稿できるようにするためにあります。
しかしながら、コメントの記入欄や画像のアップロード欄があり、未投稿画像がない時にも送信フォームが表示されていました。
未投稿画像が存在しない時はフォームを表示しないようにしました。 - PaintBBSの画像を受け取り処理している
picpost.php
に画像とユーザーデータのファイルの存在確認を追加しました。
それらの必要なファイルが存在しない時はお絵かき画面から推移せずエラーをアラートで表示します。
画面を推移してしまうと、投稿に失敗したまま投稿画面の画像も消えてしまうためアラートで知らせます。
変更があったファイル
- potiboard.php
- picpost.php
変更があったテンプレート
MONO
- templates/mono/mono_other.blade.php
- templates/mono/css/
(未投稿画像の箇所にフォームが表示されるこれまで通りの画面で構わければ更新の必要はありません)
BASIC
- templates/basic/other.blade.php
(未投稿画像の箇所にフォームが表示されるこれまで通りの画面で構わければ更新の必要はありません)
[2022/05/25] v5.18.25
バグ修正
- レス省略件数の区切りの横線のレイアウトが崩れていたのを修正しました。
(テンプレートMONO使用時)
改善
- ChickenPaintが全画面で起動するようになりました。
- futaba.phpのログファイルを読み込んで表示できるようになりました。
カンマの数が一致しない事が原因で発生していたエラーを修正しました。
変更があったファイル
- potiboard.php
変更があったテンプレート
MONO
- templates/mono/mono_main.blade.php
レス省略件数の表示レイアウトが崩れていたのを修正しました。 - templates/mono/mono_paint.blade.php
ChickenPaintが全画面表示で起動するようになりました。
BASIC
- templates/basic/paint.blade.php
ChickenPaintを全画面表示で起動するようになりました。
[2022/05/25] v5.18.9
Klecks更新
Klecksを最新版にアップデートしました。
CheerpJをv2.3へ
しぃペインター使用時にJavaアプレットをJavaScriptに変換するCheerpJをv2.3に更新しました。
バグ修正
- テキストの編集時に、不要なスペースが入るバグを修正しました。
- スパム対策のための拒絶する文字列や拒絶するurlに、
/
(スラッシュ)が含まれていると正しく処理できなくなるバグを修正しました。 - テンポラリ不要ファイルの削除処理の経過日数の計算時に軽微なエラーが発生していたのを修正しました。
- 指定経過日数でレスフォームを閉じる時の日時の基準が親の投稿日時ではなく最新レスの投稿日時になっていたのを修正しました。
- Paintフォームの「Size」の文字の色指定が他の文字と異なっていたのを修正しました。
コード整理
- forで記述されていた箇所をforeachへ。file()で開いていたログファイルをfopen()に変更しました。
- PCHアップロードペイントの作業ファイルの削除処理を正規表現を使用する重い関数からstrpos()に変更しました。
改善
- トリップ機能を再実装。
隠し機能的な再実装になりますので、テンプレート「MONO」でのみ表示できます。
BASICは非対応。 - 空行が存在するログファイルを処理できるようになりました。
変更があったディレクトリ
- klecks/
変更があったファイル
- potiboard.php
- search.php
変更があったテンプレート
BASIC
- templates/basic/main.blade.php
(見た目上の差異なので、気にならなければそのままでも) - templates/basic/parts/paint_form.blade.php
(見た目上の差異なので、気にならなければそのままでも) - templates/basic/other.blade.php
(記事の編集時に余分な空白が入ってしまう問題を修正しました) - templates/basic/paint_klecks.blade.php
(サーバからのエラーがぴったり400番だった時にもエラーのアラートが開くようになりました)
MONO
- templates/mono/paint_klecks.blade.php
(サーバからのエラーがぴったり400番だった時にもエラーのアラートが開くようになりました)
[2022/04/28] v5.16.8
Klecksを更新しました。
- iPadOSで発生するいくつかの問題が修正されました。
- 使用可能な言語に繁体字中文が追加されました。
テンプレートエンジンBladeOneを更新しました。
- BladeOneをv4.5.3に更新しました。
改善
-
klecksの送信失敗の原因がサーバーエラーの時はエラー番号をアラートで表示します。
例えば、Klecksのデータを受信するsaveklecks.php
が存在しない時は、「エラー404」というアラートを表示します。 -
ファイルサイズが指定サイズよりも大きなときに、PNGからJPEGに変換する処理の作業ディレクトリを
TEMP_DIR
に変更しました。
処理に失敗して作業ファイルが残ってしまっても、テンポラリの自動削除機能で一定時間経過後に削除されるようになります。
バグ修正
- 動画(PCH)保存ディレクトリ
define('PCH_DIR', 'src/');
に、'src/'
以外のディレクトリが指定されている時にディレクトリの自動作成が機能せず、NEOの動画、ChickenPaintの.chi
ファイル、klecksの.psd
ファイルが保存できなくなっていたのを修正しました。ディレクトリが存在しない時は自動的に作成するようになりました。
変更があったディレクトリ
- BladeOne/ (BladeOne/ ディレクトリを上書きアップデート)
- klecks/ (klecks/ ディレクトリを上書きアップデート)
変更があったファイル
- potiboard.php
変更があったテンプレート
BASIC
- templates/basic/paint_klecks.blade.php
MONO
- templates/mono/paint_klecks.blade.php
[2022/04/02] v5.16.5.1
Klecks更新
- レイヤーの最大枚数が8枚から16枚に増えました。
バグ修正
- テンプレートBASICのバグを修正しました。
search画面の画像の一覧のリンクが機能していなかったのを修正しました。
原因はHTMLの文法のミスでした。 - search画面のHTMLの文法エラーを修正しました。
checked="checked"
のクオートがエスケープされて文法エラーになっていたのを修正しました。
変更があったファイル
- search.php
変更があったディレクトリ
- klecks/
ディレクトリ単位で上書きアップデート。
変更があったテンプレート
BASIC
- templates/basic/search.blade.php
MONO
- templates/mono/search.blade.php
[2022/03/25] v5.16.5
改善
Klecksの日本語訳
- Klecksを日本語に翻訳しました。
POTI-boardにも、日本語対応版を同梱する事ができました。
この新しいバージョンのKlecksは、ブラウザの言語の優先順位を自動検出して言語を切り替えてくれます。
また、ブラウザの言語の設定にかかわらず使用する言語を指定する事もできます。
英語、ドイツ語、日本語が選択できます。
中文は簡体字のみで細部はまだ英語のままです。
日本語訳のリソースはすでに開発元に統合されています。
アプリ固有ファイルのダウンロードボタンができました。
アプリ固有形式一覧
.pch
ファイル(PaintBBS).chi
ファイル(ChickenPaint).psd
ファイル(Klecks)
Klecksのレイヤー情報を含むファイルはPhotoshop形式の.psd
ファイルです。
ダウンロードした.psd
ファイルはクリスタやSAIそのほか多くのアプリで開く事ができます。
.pch
と、.chi
は、それぞれNEOとChickenPaintで開く事ができます。
管理者投稿過画面から.pch
、.chi
、.psd
を添付してペイントボタンを押せば、キャンバスに読み込んで投稿できます。
透過PNG、透過GIFのサムネイルの透明部分を白に変更
- 透過PNGの透明部分がJPEG化する時に、真っ黒になっていたのを修正しました。
透明色が黒も間違いではないのですが、意図しない結果になる事が多いため、透過GIF、透過PNGからJPEGに変換する時は、透明色を白に変換します。
バグ修正
- 管理者ログイン時に使うアップロードペイントアプリ固有形式、pch、chi、psdなどの不要になったファイルの自動削除機能の動作時に軽微なエラーが発生するケースがあったのを修正しました。
BladeOne更新
テンプレートエンジンBladeOneをv4.5に更新しました。
変更があったファイル
- potiboard.php
- thumbnail_gd.php
変更があったディレクトリ
- BladeOne/
- klecks/
ディレクトリ単位で上書きアップデート。
変更があったテンプレート
BASIC
- templates/basic/basic.css
- templates/basic/paint.blade.php
- templates/basic/paint_klecks.blade.php
- templates/basic/template_ini.php
MONO
- templates/mono/mono_paint.blade.php
- templates/mono/paint_klecks.blade.php
- templates/mono/template_ini.php
[2022/03/12] v5.12.0
バグ修正
- Apple Pencilでメニューが操作できなくなっていたのを修正しました。
ChickenPaintやKlecksのメニュー操作がで操作できなくなっていたのを修正しました。
v3.19.5でペイント関連のテンプレートに追加したJavascriptが原因でした。
該当のJavascriptを削除して正常に動作することを確認しました。
Klecksを更新
- Klecksを最新版にアップデート。
新しいブラシが追加されました。ミラーペインティングができるようになりました。
変更があったディレクトリ
- klecks/
変更があったファイル
- potiboard.php
テンプレート BASIC
- templates/basic/paint.blade.php
- templates/basic/paint_klecks.blade.php
テンプレート MONO
- templates/mono/mono_paint.blade.php
- templates/mono/paint_klecks.blade.php
POTI-board EVO v5.10.0 もご確認ください。
多くのファイルが更新されています。
[2022/03/8] v5.10.0
機能追加
- 新しいペイントアプリKlecksに対応しました。
わかりやすいUIと強力なブラシが使えるアプリです。
レイヤーは8枚使えます。
数多くのフィルタが使えます。輝度を透明に変換、明るさ/コントラスト、色調補正など。
このアプリの追加にともない、管理画面からアップロードできるファイル形式に「PSD」が追加されました。
PSDファイルを選択してペイントボタンを押すとKlecksのキャンバスにPSD画像が読み込まれます。
改善
- 複数の未投稿画像がある時は、一番新しい画像が選択されるようになりました。
これまでは、コメント欄のすぐ上の画像は投稿されず画面の一番上の画像が選択されていました。
バグ修正
- 強制sageが機能しなくなっていたのを修正しました。
- 未定義エラーを含む多くのマイナーなバグが修正されました。
レガシーなコードを整理
- 古いコードを整理ました。投稿するまえにJPEG/PNGを切り替える機能やペイント画面から新しい設定でお絵かきする機能は削除されました。
- 同梱テンプレートには存在しないものの、機能としては残っているのは文字色の選択機能だけになりました。
上書きアップデートするディレクトリ
BladeOne/
klecks/
テンプレートBASIC
templates/basic/
テンプレートMONO
templates/mono/
上書きアップデートするファイル
potiboard.php
save.php
追加するファイル
saveklecks.php
[2022/02/10] v5.05.0
バグ修正
テンプレートBASIC
- テンプレートBASICで管理者モードの時に「投稿フォーム」という文字列が「投稿フォーム」以外の時にも表示されていたバグを修正しました。
- img.logとtree.logの内容が一致しない時にレス画面に前後の画像を表示する機能で未定義エラーが発生する問題を修正しました。
しかし、img.logとtree.logの内容が一致しないという時点でそのログファイルは壊れています。
ログファイルが壊れるようなテストを行った過程でみつけた問題です。通常の使用ではログファイルは壊れないと思います。
機能追加
拒絶するURL
拒絶する文字列で指定された文字列がURLに存在する時は拒絶するようになりました。
また、拒絶する文字列とは別に使用できないURLの設定項目も追加しました。
//拒絶するurl
$badurl = array("example.com","www.example.com");
これまでは、URLのスパムワードチェックは何も行われていませんでした。
改善
日記モード
日記モードに設定しても、ペイントボタン下に表示される説明文が表示されたままになっていたのを改善しました。
しかし、追加の説明文 $addinfo
は表示する必要があるため、$addinfo
が存在するときは表示するように工夫しました。
古いスレッドでは続きを描くのリンクを表示しない。続きを描くを許可しない。
指定日数を超えた記事の編集をロックするだけでなく、続きを描く(画像の編集)もロックするようにしました。
これらの設定項目を作ったのはパスワードが第三者によって侵害されて記事が改変されるのを防ぐためです。
記事の編集はロックされますがユーザーによる削除はできます。
また管理者は指定日数を過ぎていてもテキストの編集ができます。
しかし、一定の指定日数でロックがかかると困る方もいらっしゃると思います。
define('ELAPSED_DAYS','365');
365
で1年以上経過したスレッドはロックされますが、
define('ELAPSED_DAYS','0');
0
に設定するとロックされません。
- 描いている最中に指定日数を過ぎてしまった時は新規投稿になります。
また描いている最中にスレッドが削除されていた時も新規投稿になるようにしました。
変更があったファイル
-
potiboard.php
-
config.php
新しい設定項目が必要ではない場合はすでに設定ずみの5.0系統のconfig.phpをそのまま使ってください。
テンプレートBASIC
日記モード時の表示の改善と管理画面の表示のバグ修正を行いました。
テンプレートMONO
日記モード時の表示の改善を行いました。
[2022/01/26] v5.01.03
概要
noteにまとめました。
PHP8.1対応作業。テンプレートエンジンに苦しめられる。|さとぴあ|note
テンプレートエンジンをbladeOneに変更
PHP8.1環境でSkinny.phpから非推奨のエラーが発生するため、テンプレートエンジンをbladeOneに変更しました。
しかし、それはテンプレートの互換性がなくなる事を意味します。
拡張子HTML
のテンプレートは、拡張子blade.php
のテンプレートに置き換えられました。
拡張子がHTML
ではないのでカスタマイズが難しそうに感じられるかもしれません。
しかし、中身は従来のテンプレートとほとんど同じです。
同梱したテンプレートは、これまで同梱していたPINKとMONOをBladeOneで使えるように修正したものです。
PINKの背景色を白に変更。名称もBASICに変更しました。
BASICは 黒鋼彗牙さんのCOOL SOLIDをベースにして作成したものです。
著作表記はテンプレートのLICENCEにあります。
テンプレートエンジンの変更で変わった事
PHP7.1
- PHP5.6環境でも動作するように開発していましたが、BladeOneのv4.2はPHP7.1以上の環境でなければ動作しない事がわかりました。
POTI-board EVO v5.xにはPHP7.1以上の環境が必要になりました。
改善
- 日記モードを調整しました。
新規投稿は管理者のみに設定してもペイントボタンは表示されたままで、絵を描き終わって投稿を完了させようと思ったら管理パス以外での投稿はできないというエラーが表示されて投稿できないという問題がありました。
新規投稿には管理パスが必要と設定した時点で新規投稿のためのペイントボタンが非表示になるようにしました。
管理者投稿画面にお絵かき機能を実装して、管理者はそこからお絵かき投稿が可能になるように作り直しました。
テンプレートをカスタマイズして使用している方のための情報。
スレッドの表示処理が大きく変わりました。
これまではスレッドの親の処理があり、それとは別にレスの処理がありました。
v5.xではその1スレッドの配列のループを一回で終わらせます。
そしてループの最初の一回目をスレッドの親として処理します。
具体的に書くと以下のような形です。
@foreach ($ress as $res)
{{-- 親記事ヘッダ --}}
@if ($loop->first)
{{-- 最初のループ --}}
<h2 class="article_title"><a href="{{$self}}?res={{$ress[0]['no']}}">[{{$ress[0]['no']}}]
{{$ress[0]['sub']}}</a></h2>
@else
<hr>
{{-- レス記事ヘッダ --}}
<div class="res_article_wrap">
<div class="res_article_title">[{{$res['no']}}] {{$res['sub']}}</div>
@endif
スレッドの最初のループの時は@if ($loop->first)
がtrueになります。
@if ($loop->first)
がtrueの時はスレッドの親として処理しています。
その箇所にスレッドの親の時だけ表示が異なる表題の<h2>
タグを入れています。
親とレスで別の変数を使う以前の方式では、何度も同じような事を書かなければいけませんでしたが、親とレスで表示が異なる箇所だけ分岐して、そのほかの箇所は共通部分として利用できるようになりました。
VScodeという無料のエディタに、拡張機能laravel-bladeをインストールするとエディタの画面がbladeの構文に最適化された配色に切り替わります。
v5.xのテンプレートが編集しやすくなります。
拡張機能もエディタ本体も無償で利用できます。
変更があったファイル
ChickenPaintの更新もありましたので、細かく列挙するよりもすべて変更と書いたほうがわかりやすいかもしれません。
config.phpは従来のものと大きくは変わっていないのですが最初から設定しなおしたほうが確実です。
気をつけなければならないのは、ログの保存件数です。
新しく設定したもののほうがログの保存件数が少なかった場合は、古いログファイルが意図ぜず保存件数オーバーになって消えてしまう事があるからです。
数年先を見据えて
テンプレートが非互換となったり、config.phpが再設定になってしまったりとお手数をおかけしますが、ご理解をいただけるようでしたら幸いです。
また、新しく1から作り直したお絵かき掲示板PHPスクリプトPetit Noteの使用もぜひご検討ください。
ダウンロード
下記ソースコードリンクからダウンロードできます。