Petit Note v0.72.8リリース
Petit Noteとは
- 1スレッド1ログファイル形式のスレッド式の画像掲示板です。
PaintBBS NEO,ChickenPaint,Klecksが使えるお絵かき掲示板です。
ダウンロード
- このページの一番下のソースコードリンクからダウンロードできます。
English version is here
Petit Note v0.72.8 リリース
23/05/15 v0.72.8
- jQueryをjQuery3.7.0に更新しました。
追加されたファイル
- lib/jquery-3.7.0.min.js
変更があったファイル
- index.php
index.phpを更新するだけでlib/jquery-3.7.0.min.js
がテンプレートで使用できるようになります。
テンプレートの個別修正の必要はありません。
まとめて更新する方へ
ここ一ヶ月でかなりの数のファイルを更新しました。
テンプレートをカスタマイズしていない方は
template/
ディレクトリを上書きapp/
ディレクトリを上書きlib/
ディレクトリを上書き
そして、index.php
と
functions.php
を更新すれば一連の更新を反映させる事ができますので、よろしくお願いします。
非同期通信でエラーメッセージを出す処理のJavaScriptは、template/basic/js/
にはいっていますので、template/
ディレクトリを上書きアップデートすれば更新が反映されます。
23/05/15 v0.72.7
ChickenPaintが起動しなくなっていたバグを修正
- このバグはv0.67で発生し、v0.72.7で修正されました。
- 2023年の4月29日以後のバージョンのChickenPaintの起動のためのテンプレートにバグがありました。
template/basic/paint_chi.html
の上書きアップデートをお願いします。
改善
非推奨になったjQueryの構文を修正
- 非推奨になった機能を使った構文が残っていたため、修正しました。
- 検索画面のテンプレートに共通箇所のjQueryの構文がインラインで残っていたため外部化してまとめました。
二重投稿チェックの動作の変更
- 同一ホストからの投稿で本文の内容が同じ場合は5スレッド分さかのぼって重複チェックをしています。
- この時の管理者の投稿を重複チェックから除外します。
- 例えば管理者が、「いらっしゃい」というコメントを繰り返し使った時に「同じコメントがありました。」というエラーになっていましたが、今回の更新でエラーにならなくなりました。
- 記事の編集時に本文の重複チェックが行われていなかったのを修正しました。
- お絵かき画像の時にも、画像重複チェックのための画像をもとにしたmd5のハッシュ値を記録するようにしました。
- お絵かき投稿のあと、同じ画像をアップロードすると「同じ画像がありました。」というエラーを出すようになります。
- ただし、管理者が管理者投稿モードにログインしている時には、同じ画像チェックを行いません。
- これは、例えば、不適切画像を別の画像に差し替えて本文だけを残す編集を行う時に使用する画像は同じ画像の場合があるからです。
コード整理
- 複数回出現するコードを関数化して行数を削減し保守性を高めました。
変更があったファイル
- index.php
- functions.php
変更があったテンプレート
- template/basic/paint_chi.html
- template/basic/search.html
変更があったテンプレートのJavaScript
- template/basic/js/common.js
23/05/13 v0.71.6
処理の高速化
- 全体ログを1行ずつタブ区切りで分割して、該当記事No.を探していた箇所を、分割なしのstrpos()===0による判定に置き換えて高速化しました。
変更があったファイル
index.php
23/05/10 v0.71.1
コード整理
変更があったファイル
index.php
functions.php
klecksがレイヤー2枚で起動するようになりました
v0.68.8.1から、klecksがレイヤー2枚で起動するようになりました。
真っ白な背景レイヤーと透明なレイヤー1の2枚で起動します。
透明なレイヤー1が選択された状態で起動します。
線画を描いて気がついたら不透明な白いレイヤーに描いていたという事故を減らす事ができます。
23/05/08 v0.70.8
処理の高速化
- 一連の各モードでの省メモリ・低負荷化に加え、検索画面で画像のみを表示する時にもコメントのテキスト処理を省略し、さらに省メモリ・低負荷に。
変更があったファイル
- index.php
23/05/08 v0.70.6
処理の高速化
この間の更新で、読み込む必要がなかったり、処理を行う必要がない箇所を切り分けて省メモリ化と高速・低負荷化をすすめてきました。
今回の更新では、検索モードとカタログモードの処理を振りわけてカタログモードでは使用しない本文の処理を省略しています。
レス返信画面下の前後のスレッドの画像も該当箇所です。レス返信画面の処理もごくわずかですが高速化されています。
お絵描き画像の投稿処理で描いた人を判定する箇所の厳格化
ユーザーコードやリプレイスコードを発行して、本人の投稿かどうかをチェックする処理に、変数が存在するかどうかを確認する処理を追加しました。
チェックする変数の内容がどちらも空白の時に一致した事になるため、空白ではない事を確認するようにしました。
変更があったファイル
- index.php
- functions.php
23/05/06 v0.70.1.1
- klecks更新
23/05/06 v0.70.1
機能追加
- PaintBBS NEO、ChickenPaint、Klecksすべてのペイントアプリを使わない時は、未投稿画像のリンクを表示しないようにしました。
- スレッドの題名を必須にするしないをconfig.phpで設定できるようになりました。
- 上段のメニューに、検索画面へのリンクを表示するしないをconfig.phpで設定できるようになりました。
これらは、上記設置サポート掲示板などで利用する時に必要な設定項目でした。
Petit Noteは画像掲示板として、あるいは画像アップロード機能もないただのテキスト掲示板として使う事もできます。
パフォーマンス
この間の一連の省メモリ化で、メイン画面、カタログ画面の省メモリ化を実現しました。
それに加え、v0.70.1では、レス画面(スレッド表示)の省メモリ化を実現し、2500スレッドが存在する運用中の掲示板の実測値で、メモリ消費量を35%削減する事に成功しました。
(しかしながら、これは比較的新しいスレッドの場合でもっとも古いスレッドを表示する時のメモリ消費量はほとんど変わりません。それでも最新の記事を表示する機会のほうが多い筈ですからそれなりの効果はあります。)
非推奨のjQueryの構文を修正
テンプレート内のJavaScript、jQueryをチェックして、非推奨の構文を修正しました。
残念ながら、ペイントアプリの中には非推奨のjQueryの構文が残っていますが、基本的にはそれぞれのアプリでの修正作業になります。
投稿に合言葉が必須の時の表示を調整
- 投稿に合言葉が必要と設定している時に表示されていなかったカタログモードを表示し、合言葉が入力されていない時は投稿に関連する項目のみが非表示になるように調整しなおしました
- 掲示板の閲覧に合言葉が必要と設定している時の動作は従来と同じです。
変更があったファイル
- index.php
- functions.php
- config.php (新規設定項目が必要ない場合は更新する必要はありません)
変更があったテンプレート
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/continue.html
- template/basic/main.html
- template/basic/res.html
- template/basic/index.css (検索バーの上下位置の調整。気にならない場合は更新する必要はありません。)
変更があったテンプレートのJavaScript
- template/basic/js/common.js
非推奨になったjQueryの構文を修正しています。
23/05/04 v0.68.8.1
- klecksの起動時のレイヤーの枚数を2枚に変更。
(白い背景レイヤーと透明なレイヤー1)
描きはじめの時点で透明なレイヤー1が選択されるので、白い背景に線画を描いてしまったという事故を減らせると思います。
変更があったテンプレート
- template/basic/paint_klecks.html
23/05/03 v0.68.8
省メモリ化
- カタログモードのコードを最適化しました。
非推奨のJavaScriptを修正
- 推奨されなくなったjQuery、JavaScriptのコードを修正しました。
変更があったファイル
- index.php
変更があったテンプレート
- template/basic/js/common.js
- template/basic/paint_com.html
23/05/03 v0.68.5.1
klecks更新
ブラウザsafariのバグを回避するための修正作業が行われています。
bitbof/klecks#68
- /app/klecks/ ディレクトリを上書きアップデート
23/05/02 v0.68.5
改善
- 通常表示画面と、カタログ画面のメモリ消費量を27%削減。(実際に運営している掲示板のログを使った実測値)
変更があったファイル
- index.php
23/05/01 v0.68.2
Klecks更新
- Klecksをブラウザsafariのバグ回避処理など細かな修正が施された最新版に更新しました。
変更があったディレクトリ
- app/klecks/ ディレクトリを上書きアップデート
変更があったファイル
- index.php
23/04/30 v0.68.1
バグ修正
- 編集画面でアップロード画像の差し換えを行った時に、編集画面に戻れなくなり「記事がありません」というエラーになっていました。
このバグはv0.67.3で発生し、v0.68.0で修正されました。 - 編集画面で画像差し換えを行った時にエラーチェックのためにアップロードしたファイルがテンポラリに残ってしまうバグを修正しました。
変更があったファイル
- index.php
23/04/29 v0.67.9
エラーメッセージの非同期通信化をさらに拡大
-
エラーメッセージを画面を切り替えることなく表示することができるようになりました。コメントの入力欄だけでなく、お絵かきボタン、続きを描く、ダウンロード、編集、削除、管理者ログイン各フォームで非同期通信を使ったエラーメッセージの表示ができるうようになりました。
これにより、エラー画面が表示され、戻るリンクをタップして前の画面に戻るという一連の煩わしい操作から解放されます。
またエラーメッセージの表示をより安全なinnerTextに変更することができました。
お手数をおかけしますが、ぜひバージョンアップをお願いします。 -
Klecksのエラー処理がよりいっそう確実になるようにfetch APIの処理を書き直しました。
response.ok
以外の時はエラーメッセージを表示して描画画面から移動しないようになりました。
変更があったファイル
- index.php
- functions.php
変更があったテンプレート
変更があったCSS
- template/basic/index.css
/* エラーメッセージ */
div#error_message , div#error_message_imgrep , div#error_message_paintform , div#error_message_download , div#error_message_beforedelete {
line-height: initial;
background-color: hsl(60 100% 88% / 1);
font-size: 20px;
padding: 1px 4px 1px;
margin: 5px 0 5px;
}
div#error_message:empty , div#error_message_imgrep:empty , div#error_message_paintform:empty , div#error_message_download:empty , div#error_message_beforedelete:empty {
display: none;
}
エラーメッセージとして出力されていたタグが除去され、エラーメッセージが表示される箇所のタグが空欄の時は非表示にする処理が追加されています。
お手数ですが、CSSのファイルの一番下の箇所にエラーメッセージのCSSを追加してご利用ください。
CSSを変更していない場合は、上書きアップデートをお願いします。
変更があったテンプレートのJavaScript
- template/basic/ js/common.js
各フォームのエラーメッセージを処理するためJavaScriptも更新されています。
上書きアップデートをお願いします。
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/continue.html
- template/basic/main.html
- template/basic/res.html
- template/basic/paint_chi.html
- template/basic/paint_klecks.html
- template/basic/paint_neo.html
特にテンプレートをカスタマイズしていない方は、
template/
ディレクトリを上書きアップデートしてください。
23/04/25 v0.66.6.1 リリース
23/04/25 v0.66.6.1
chickenpaint更新
chickenpaintをiPadのフルスクリーンモード、あるいはiPhoneで使用した時に、パレットメニューが画面外に出る、描画領域の縦横比が縦に伸びる、横に伸びるなどの問題が発生していました。
フルスクリーンモードの時のスタイルシートが原因でした。ただしこれは、iPad、iPhoneの時にのみ発生する問題です。
逆にいうと、PC+Chromeで問題が発生していなくても、iPadユーザーがChickenPaintを使用する時にはトラブルが発生していたということです。
v0.66.6と、控えめなバージョン番号の差ですが、chickenpaint/
ディレクトリの上書きアップデートのみでも構いませんので、更新をご検討ください。
現時点では開発元での修正はまだ行われておらず、これは独自修正版です。
プルリクエストして、開発元にこれを統合するかどうかの判断をお願いしているところです。
thenickdude/chickenpaint#52
変更があったディレクトリ
- app/chickenpaint/ ディレクトリを上書きアップデート
変更があったファイル
- index.php
変更があったテンプレート
- template/basic/paint_chi.html
(問題が解決したためChickenPaintが全画面表示で起動する設定に戻しました)
変更があったテンプレートのJavaScript
- template/basic/js/common.js
23/04/21 v0.66.3
エラメッセージの2行目が表示されないバグを修正
エラメッセージの1行目がerror\nで始まる事を確認して2行目をエラメッセージとして表示する書き方になっていたため、エラメッセージの3行目以後が表示されなくなっていました。
common.js
のJavaScriptの修正のみでも大丈夫なのですが、キャッシュを読み込む可能性があるため、index.php
のバージョン情報も更新しています。
変更があったフィル
- index.php
変更があったテンプレートのJavaScript
- template/basic/js/common.js
23/04/21 v0.66.2
- 編集画面→画像差し換えの時のエラメッセージも非同期通信で取得します。エラーメッセージは、同じ画面に表示されます。
変更があったフィル
- index.php
- functions.php
変更があったテンプレート
- template/basic/edit_form.html
変更があったテンプレートのJavaScript
- template/basic/js/common.js
変更があったテンプレートのCSS
- template/basic/index.css
/* エラーメッセージ */
div#error_message , div#error_message_imgrep {
margin: 0;
}
div#error_message div , div#error_message_imgrep div {
background-color: hsl(60 100% 88% / 1);
font-size: 20px;
padding: 1px 4px 1px;
margin: 2px 0 2px;
}
上記の箇所が追加あるいは更新されています。
従来は
ID error_message
にのみエラメッセージの背景色などを追加していましたが、
編集画面→画像差し換え時のエラメッセージの装飾も必要になった事による変更です。
画像差し換え時のエラメッセージのIDは
ID error_message_imgrep
です。
CSSをカスタマイズしている方は、フィアルの末尾に上記エラメッセージのCSSのを追加してご利用ください。
また、この間の更新との差分をエディタの内容比較機能などで確認する事をおすすめします。
カスタマイズしていない方は
- index.php
- functions.php
と、 - template/ ディレクトリ
を上書きアップデートするだけで更新できます。
23/04/20 v0.65.8
- エラメッセージが表示されるはずの箇所に、掲示板の本体部分が表示されるケースがあったため、エラメッセージは、error\nではじまるもののみを表示する形に変更しました。
変更があったファイル
- index.php
- functions.php
- template/basic/js/common.js
23/04/20 v0.65.5
新しく導入したフォームの入力欄の上に表示するエラメッセージの改善
- サーバからのレスポンスをエラメッセージとして表示できるようになりました。
サーバ混雑時の502 bad gatewayや503 Service Unavailable、ファイルが存在しない時に表示される404 Not Found等。
入力したテキストがWAFによって誤検知された時には、403 Forbiddenとなります。
サーバのWAFが有効でかつコメントの入力欄にJavaScriptやPHP等のコードが記入された時にセキュリティ上のリスクを回避するために403 Forbiddenとなる場合があります。
その場合はテキストを短く分割してみる。コードを書かない。WAFを解除するなどの検討をお願いします。
通常の会話の内容であれば誤検出される事はないと思います。
###変更があったファイル
- template/basic/js/common.js
v0.65.2 のリリース内容もあわせてご確認ください。
23/04/19 v0.65.2
エラーメッセージをフォーム入力欄に直接表示する事ができるようになりました
- 従来のエラー画面
- 新しいエラー表示
サーバーに通信する時にブラウザの画面を切り替える必要がない、非同期通信を採用し、エラーが発生した時のエラーメッセージをフォームの入力欄の上に表示します。
これによりエラー画面からもどって修正する必要がなくなります。
- CSRFトークンが一致しませんについて
「CSRFトークンが一致しません。」というエラーメッセージがでた時には入力欄でリロードする必要があります。
エラーメッセージは別画面に表示されるためエラーメッセージが表示されている画面でリロードしてもエラーはなくなりません。
さらに、エラーメッセージの表示の「もどる」のリンクで前の画面にブラウザバックすると古いトークンがキャッシュされた画面が表示されるため、トークン不一致のエラーから抜け出せなくなる事がありました。
今回の更新でエラーメッセージのテキストの内容も修正し「CSRFトークンが一致しません。リロードしてください。」というエラーメッセージをフォームの入力欄の画面に表示する形に変更する事ができました。
エラーメッセージにしたがってリロードすればトークン不一致のエラーから抜け出せます。
ひとつ前のバージョンv0.63.10に投稿者のIPアドレスが表示されてしまう大きなバグがありました。
- 管理者のみが閲覧可能なはずのIPアドレスが、表示されてしまうバグが見つかりました。
これは、v0.63.10の以下の機能追加の時に発生した作業ミスによるものです。
「この記事は存在しません」という投稿を管理者編集モードで表示したときに、投稿者にホスト名を表示できるようにしました。
「この記事は存在しません。」という表示になった時は誰でもIPアドレスを閲覧可能になっていました。
公開からあまり時間が経過していない事からv0.63.10を使っている方は少数とは思いますが、もしもv0.63.10をご利用の場合は、ただちに最新版へのアップデートをお願いします。
テンプレートの、main.html
とres.hrml
の更新が必要です。
変更があったファイル
- index.php
- functions.php
追加されたディレクトリ
- template/basic/js/common.js
今回追加したJavaScriptによる非同期通信と、Luminousや上に戻るリンクのJavaScriptをひとつのファイルにまとめて外部化しました。
このディレクトリのアップロードを忘れると、非同期通信や画像のポップアップ表示などが機能しなくなります。
変更があったテンプレートのうち更新が必要なもの
- template/basic/edit_form.html
- template/basic/main.html
- template/basic/paint_com.html
- template/basic/res.html
変更はあったものの更新が必須ではないもの
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/catalog.html
(JavaScriptの外部化によるコード整理のため、従来のままでも動作は変わりません)
変更があったスタイルシート
- template/basic/index.css
ファイルの一番下の箇所に追加した新しいエラーメッセージのためのCSS。
/* エラーメッセージ */
div#error_message , div#error_message_imgrep {
margin: 0;
}
div#error_message div , div#error_message_imgrep div {
background-color: hsl(60 100% 88% / 1);
font-size: 20px;
padding: 1px 4px 1px;
margin: 2px 0 2px;
}
この箇所が無いと、エラーメッセージの背景色に色がつかなくなってしまうため、エラーメッセージが視認しにくくなります。
お手数ですが、スタイルシートをカスタマイズしている方は、ファイルの最後に上記コードを追加して対応してください。
カスタマイズした古いテンプレートのまま使いたい方もいらっしゃると思います。
その場合は、テンプレート側で非同期通信の処理をするJavaScriptを実行しなければ従来と同じ動作をします。
古いテンプレートの場合はエラーメッセージが別画面になるだけです。
23/04/12 v0.63.10
直面している問題への対応
iPad使用時にChickenPaintの描画領域のアスペクト比が正しく設定されない問題に暫定的に対応
- iPad使用時にデバイスの向きを横から縦に縦から横に傾けると、描画領域のアスペクト比をただしく取得できなくなり、画像の縦横比の表示が変わり、ペンの座標が一致しなくなる問題が確認されました。
- この問題はChickenPaintをフルスクリーンモードで起動している時にのみ発生します。
- そのため、ChickenPaintのフルスクリーンモードでの起動オプションを外し、起動時にはミニスクリーンモードになるようにしました。
フルスクリーンモードで起動するとミニスクリーンに切り替える事ができなくなるからです。
ミニスクリーンからフルスクリーンモードへの切り替えは可能です。またフルスクリーンモードからミニスクリーンへの切り替えも可能です。 - ChickenPaintのコードを一部修正しました。ブラウザの表示領域の高さの取得がiPadの時と、PCでは異なる場合があるためです。
しかしながら、その箇所が本当に今回の問題に関連する事なのかどうかはわかりません。
Aspect ratio is broken when iPad is turned from landscape to portrait in full screen mode · Issue #51 · thenickdude/chickenpaint
ChickenPaintの作者の方のリポジトリでIssueを開いてこの問題を報告しています。
作者の方による修正があった場合は、その最新版のChickenPaintに再度入れ替える予定です。
したがって今回同梱したChickenPaintは暫定独自修正版となります。
バグ修正
削除ずみの記事が検索画面に表示されるバグを修正しました
- すでに複数の投稿が存在するスレッドの親の投稿を削除した時は、「この記事はありません」という表示に切り替わりスレッド全体は削除されなくなりました。
しかし、その中身が空白の削除ずみの記事が検索画面に表示されていました。
記事の中身が空白の時は検索画面に表示されないようにしました。
1ページ中にすでに閉じたスレッドがある時にそのスレッドより下のスレッドが閉じている事になるバグを修正
- 投稿件数が上限を超えていたり、スレッドの最初の投稿が古くてスレッドが閉じる事があります。
閉じたスレッドの時は、「このスレッドに投稿」から「このスレッドを表示」にボタンの表記が切り替わります。
しかし、1ページ中の途中に閉じたスレッドが存在すると、その位置から下のスレッドのボタンが「このスレッドを表示」になってしまうバグが見つかりました。
テンプレートのmain.html
に処理を追加してこの問題を修正しました。
改善
「この記事は存在しません」に表示が切り替わった記事を管理者編集モードで表示した時の表示を変更
- 「この記事は存在しません」という投稿を管理者編集モードで表示したときに、投稿者にホスト名を表示できるようにしました。
仮にこれらの「この記事は存在しません」の投稿が掲示板を荒らすためのものだった時は対応しなければならないからです。
「この記事はありません」の時はTweetにbyを含めない
- 記事が削除ずみで「この記事はありません」になったスレッドのTweetの時に名前+byのTweetが作成されてしまうため、親の記事が削除ずみの時にはbyが含まれないように調整しました。
NEOの動的パレットの非推奨になったJavaScriptを修正
- WCS動的パレットスクリプトのsubstr()をsubstring()に書き直しました。
String.prototype.substr() - JavaScript | MDN MDN
変更があったファイル
変更があったアプリ
ChickenPaint更新
- app/chickenpaint/ ディレクトリを上書きアップデート
変更があったファイル
- functions.php
- index.php
変更があったテンプレート
- template/basic/main.html
- template/basic/res.html
- template/basic/paint_chi.html
- template/basic/paint_neo.html
23/03/27 v0.63.5
スレッドが削除される条件が変わりました
- 管理者が「スレッドを削除する」にチェックを入れて削除した時はスレッドが削除されます。
管理者はいつでもスレッド全体を削除できます。 - スレッドに残っている記事が1つの時は、その記事を削除すればスレッドが削除されます。
スレッドを立てた人が最初の投稿を削除するとスレッド全体が削除されるてしまう問題を修正しました。
スレッドの最初の投稿のみを削除できるようになりました。
管理者編集モードでログインしている管理者は、「スレッドを削除」を選択する事ができます。
スレッドの最初の投稿を削除しても、スレッド削除を選択していない場合は、「この記事はありません。」に表示が置き換わり、スレッドは削除されません。
そのほか
- urlを判定する正規表現を新しいものに置き換えました。
- PHP5.6環境下で、作成されるwepb形式の画像が不正な画像形式になる場合があったため、PHP7.0以上である事をPHPスクリプトで判定してから処理を行うようになりました。
- アクセス制限がかかっている時にコンティニュー画面から新規投稿を選択できる問題を修正しました。
投稿出来ないのであれば最初から描ける状態にしないほうが良いからです。 - ユーザーidをセッションに格納し、同一セッションの時はIPアドレスが変わっても同じユーザーidになるようにしました。
変更があったファイル
- index.php
- functions.php
- thumbnail_gd.php
変更があったテンプレート
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/continue.html
- template/basic/main.html
- template/basic/res.html
変更があったCSS
- template/basic/index.css
特に細かな修正をしていない方の場合は上書きアップデートしてもいいのですが、CSSを細かく修正している方は現状のままでも大丈夫だと思います。
気になる場合は、エディタの内容比較機能等を利用してご確認ください。
23/03/07 v0.61.9
改善
続きを描く→新規投稿の時に同じスレッドに投稿するかどうかを選択可能に
古いバージョンでは、続きを描く→新規投稿を選択すると新しいスレッドへの投稿になっていました。
たとえば1枚の線画の塗り絵を10名が行う時に10スレッド必要でした。
これを1つのスレッドにまとめる事ができるようになります。
また返信として投稿されたお絵かき画像からの続きを描く時には、同じスレッドへの投稿になるようにしていましたが、こちらも返信からの新規投稿を新しいスレッドに投稿したい場合があり、自由に選択できるようにするべきという結論に達しました。
その選択のために「同じスレッドに投稿する」というチェックボックスを追加しました。
しかし「画像差し換え」の場合は同じスレッドに投稿するより他ないためこの選択肢は不要です。
そこで、JavaScriptを使って、新規投稿を選択した時のみ「同じスレッドに投稿する」というチェックボックスを表示するようにしました。
また、「新規投稿ならパスワードがなくても続きを描く事ができます。」という説明を表示しているものの、これまでのバージョンではパスワードの入力欄が表示されたままだったため、新規投稿を選択してもパスワードが必要であるかのように見えていました。
そこで、新規投稿を選択すると、パスワードの入力欄が表示されないようにしました。
しかしながら、新規投稿の場合でもパスワードがなければ続きを描けないようにして欲しいという方もいらっしゃるかもしれません。
そこで、config.phpに新規設定項目を追加しました。
//続きを描く時は新規投稿でもパスワードを必須にする
// する: true しない: false
// しない: false に設定すると、元の画像を上書きしない新規投稿なら誰でも続きを描く事ができるようになります。
// 合作の時にパスワードを公開する必要はありません。// $password_require_to_continue = true;
$password_require_to_continue = false;
新規投稿の時にもパスワードが必要な時は、新規投稿を選択してもパスワードの入力欄は非表示になりません。
「返信」ボタンを「このスレッドに投稿する」に変更
1スレッドに1枚のイラストの場合、100枚のイラストのために100スレッド必要になります。
Petit Noteのような1スレッド1ログファイル形式の掲示板の場合は、1スレッドに複数枚のイラストを掲載したほうが全体ログのファイルの肥大化の進行を遅らせる事ができるため掲示板の寿命を延ばす事ができます。
これまで、「返信」のところからイラストを投稿して欲しいとお願いする事が多々ありました。
しかし、自分で描いたイラストに「返信」から別のイラストを投稿するのは、「返信」ではないため、「このスレッドに投稿する」にボタンの名称を変更しました。
カタログ画像にマウスカーソルを乗せた時に投稿日時を表示
カタログ画像にオンマウスカーソルした時に投稿日時を表示できるように修正しました。
ホスト名が逆引きできずIPアドレスになる時の拒絶処理を修正
ホスト名で拒絶する時の一般的な例は後方一致です。
example.com
のように後ろの方が一致する部分を拒絶します。
しかし、IPアドレスの場合は前方一致で拒絶する必要があります。
ホスト名が取得出来ないIPアドレスからの投稿の時はホスト名にIPアドレスが表示されますが、従来は、このIPアドレスが後方一致による拒絶処理になってしまい拒絶不能になっていました。
そこで、ホスト名とIPアドレスが同じユーザーの時は、ホスト名として表示されているIPアドレスの前から数文字分を指定して前方一致で拒絶できるようにしました。
$badhost =["example.com","100.100.200"];
このように設定した場合、
"example.com"は後方一致で拒絶処理が行われ、"100.100.200"は前方一致で拒絶処理が行われます。
禁止ホストで拒絶している時はフォームの入力欄を表示しない
これまでは禁止ホストで拒絶していても、ペイントボタンやコメントの入力欄は依然表示されたままでした。
仮に禁止ホスト指定が巻き込みになってしまった時は、ペイントボタンが表示されている事で絵を描いてしまうかもしれません。
絵を何時間もかけて描いて投稿する時に、「拒絶されました」と表示されてしまう事になります。
禁止ホストで拒絶指定した時は、ペイントボタンやコメントの入力欄を閉じる事で投稿を最初から制限するようにしました。
拒絶する文字列が存在している場合でも管理者は投稿可。使用できない名前に管理者名を指定する事が可能に。
//拒絶する文字列 正規表現
//拒絶するurl
//使用できない名前 正規表現
//AとBが両方あったら拒絶 正規表現
これらのスパム対策のための禁止語句を管理者は制限なく投稿できるようになりました。
これにより、○○○という用語は使わないでくださいという説明をする時に、○○○を禁止語句に指定していても管理者はその語句を使用できるようになります。
また、「使用できない名前」に「管理人」や管理者のハンドル名を登録する事ができるようになりました。
管理者名が「使用できない名前」に指定されていれば、管理者以外のユーザーが管理者名を名乗って投稿するなりすまし投稿ができなくなります。
変更があったファイル
- index.php
- functions.php
- config.php
新しく追加された設定項目が必要な場合のみ更新。更新しない場合は従来と同じ設定で動作します。
変更があったテンプレート
- template/basic/catalog.html
- template/basic/main.html
- template/basic/res.html
- template/basic/continue.html
変更があったCSS
- template/basic/index.css
一応変更してありますが変更が必要なテンプレートにインラインのCSSでの記述を行っているため必ずしも変更する必要はありません。
CSSをカスタマイズしている場合はそのまま使うか、エディタの内容比較機能で差分をご確認ください。
23/02/26 v0.60.10
Klecksを最新版にアップデート
- ダークテーマが選択可能になりました。
- フランス語に対応しました。
- iPhone、iPadのタッチジェスチャーでフリーズする問題が修正されました。
カタログ画面の表示が検索画面と同じ表示になりました。
- 大き目のディスプレイを使用時3列、スマホ2列だった表示を5列、スマホ4列に変更しました。
- 検索画面と共通のCSSを使用する形に変更になりました。
<div class="catalog_desc_wrap">
が、<div class="catalog_wrap">
に変更されていたり、divがspanに変更になっていたりします。
また検索画面のテンプレートは大幅に変更になりました。
index.css
とsearch.css
とcatalog.html
とsearch.html
をセットで更新して頂く形になります。
従来通りの表示のほうが良い場合は、CSSと上記テンプレートのHTML部分を変更しないようにしてください。
スタイルシートが確実に適用されるようにするため、cssファイルのurlにロット番号のクエリを追加しました。
<link rel="stylesheet" href="template/basic/index.css?lot.230225">
?lot.230225
の部分が今回追加されたクエリです。
CSSを変更してもブラウザのキャッシュのCSSが読み込まれてしまい画面が変更されない問題を解消するため、Petit Noteのロット番号をクエリに追加しました。
Petit Noteを更新すれば新しいCSSをブラウザが読み込みます。
変更があったファイル
- functions.php
- index.php
- config.php
カタログの表示件数を24件から60件に変更しています。
推奨される値が20の倍数に変更になりました。
5列表示でも4列表示でも画面にぴったり収まる値が20の倍数だからです。
Klecks更新
- app/klecks/
ディレクトリを上書きアップデート。
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/aikotoba.html
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/catalog.html
- template/basic/continue.html
- template/basic/edit_form.html
- template/basic/error.html
- template/basic/main.html
- template/basic/paint_com.html
- template/basic/paint_neo.html
- template/basic/pch_view.html
- template/basic/res.html
- template/basic/search.html
変更があったスタイルシート
- template/basic/search.css
- template/basic/index.css
テンプレートのほぼすべて。
template/ ディレクトリを上書きアップデートして更新する形でも大丈夫です。
23/02/20 v0.60.9 リリース
23/02/20 v0.60.9
バグ修正
検索画面の日付が10桁のユニックス秒になるバグを修正しました。
サムネイル画像のありなしのifの分岐が間違っていたのを修正しました。
元のサイズよりも幅と高さが大きな拡大されたwebサムネイルが作成されるケースがあったのを修正しました。
変更があったファイル
- thumbnail_gd.php
変更があったテンプレート
- template/basic/search.html
23/02/19 v0.60.8の変更内容もあわせて確認をお願いします。
検索機能を追加
23/02/19 v0.60.8 リリース
23/02/19 v0.60.8
検索機能を追加
POTI-boardで使っている外部PHPスクリプト、search.phpのコードをベースにした、記事検索機能を追加しました。
上記スクリプトを作成した当時と今では出力時のテンプレートでのエスケープの徹底化などの考え方に違いがあります。
そのままでは、Petit Noteのその他の処理と異なったコードになってしまうため、コードの整理と再構築を行いました。
この作業だけでまる一週間を費やしましたが、できる事はPOTI-boardの検索機能とほとんど同じです。
ページ送り機能はPetit Noteのほうが高機能です。
Petit Noteには日本語と英語の自動切り替え機能があります。
ブラウザの言語が日本語以外の時にはUIを英語表示します。
検索画面のUIもブラウザの言語が日本語以外の時には英語で表示されます。
検索画面の設定項目が追加されました。
/検索機能/
//検索可能最大数
//この値を大きくすれば検索可能件数が増えますが、サーバの負荷が大きくなります。
$max_search= 300;//画像検索の時の1ページあたりの表示件数
$search_images_pagedef = 60;//通常検索の時の1ページあたりの表示件数
$search_comments_pagedef = 30;
細かく設定したい方のみ、この設定項目を追加して調整してください。
この設定項目がconfig.phpに存在しない場合は上記の設定値が自動的に適用されます。
webpサムネイル機能を追加
ファイルサイズの圧縮率が高いwebp形式のサムネイル機能を追加しました。
ただし、webpサムネイルは従来のJPEGサムネイルの代わりに使うためのものではありません。
検索画面や、カタログ画面のように画像をたくさん表示する画面で使います。
<picture> ~ </picture>
タグを使用して振り分けて、webpに対応していない旧バージョンのApple製品ではPNGやJPEGを表示します。
対応ブラウザの時はwebpを表示します。
v0.60.8以後は、お絵かき画像もアップロード画像の場合でも、投稿時にwebp画像が別途生成されwebp/
ディレクトリに保存されます。
表示する時に、webp画像の存在確認を行ってあればwebpの表示を試みてブラウザが対応していればwebp画像を表示します。
カタログ画面、検索画面、レス画面の下段の前後の投稿記事でwebpを使用します。
これにより1ページに60枚の画像を表示する場合でも、モバイル端末の通信費の負担が軽減されます。
また、固定回線の場合であっても画像が表示されるまでの待ち時間を短縮できます。
PNGやJPEGで投稿されたスレッドの画像は従来どおりの表示です。
webp画像は使用しているサーバの対応も必要です。
webp画像生成機能が存在してるかどうかを確認して、機能が存在していない時はwebp画像を生成しません。
ホームページへ戻るリンク
ホームページを持っていない人が掲示板だけ設置する事を想定して、上段メニューのホームページへ戻るためのリンクを表示しない形にしていましたが、ホームページを持っていてそこから掲示板を利用する方が一定数存在しているため、初期設定状態でホームページへ戻るリンクを表示する事にしました。
上段メニューにはホームページに戻るリンクは必要ない方は設定をお願いします。
/使用目的別設定/
// ホームページへ戻るリンクを上段のメニューに表示する
// ホームページへのリンクが必要ない場合は 表示しない:false
// 表示する:true 表示しない:false
$display_link_back_to_home = true;
// $display_link_back_to_home = false;
初期設定では、表示するになっています。
またこの設定項目がconfig.phpに存在しない場合も、表示するになります。
バグ修正
編集→アップロード画像の差し換えの処理の時に、動画ファイル関連の変数が未定義エラーになっていました。
この問題はv0.52.6で発生しv0.58.5で修正されました。
変更があったファイル
- index.php
- functions.php
- thumbnail_gd.php
- config.php
config.php を細かく設定している方は必ずしも変更する必要はなく、追加された設置項目が必要な場合だけ更新してください。
また、更新される場合は、エディタの差分比較機能などをご利用ください。
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/catalog.html
- template/basic/main.html
- template/basic/res.html
- template/basic/search.html
追加されたテンプレート
- template/basic/search.html
変更があったCSS
- template/basic/index.css
追加されたCSS
- template/basic/search.css
index.cssにも若干の変更がありますが、ほとんどの場合、更新しなくても表示が大きく変わる事はありません。
検索画面固有のCSSはsearch.cssに分離しました。
また検索画面の共通箇所は、index.cssの設定を使います。
配色を変更している場合でも、従来のCSSの設定が適用されるようになっています。
23/02/11 v0.57.5.2
バグ修正
サーバのステータスが「502 Bad Gateway」の時に描いていた絵が消えてしまうバグを修正しました。
サーバのステータスが200以外の時には「投稿に失敗時間を置いて再度投稿してください」というアラートを表示するのみで、画面を推移しないようにしました。 画面を推移しないので、スクショを取る事が可能になります。また、ほとんどの場合、再度投稿ボタン押せば投稿に成功します。
変更があったテンプレート
- template/basic/paint_klecks.html
23/02/09 v0.57.5.1
klecksのヘルプファイルを入れ忘れていたのを追加しました。
- app/klecks ディレクトリを上書きアップデート。
または、klecksフォルダの中のhelp.html
をアップロード。
23/01/31 v0.57.5
バグ修正
- 記事の編集時に変数
$pchext
が未定義エラーになる場合があったのを修正しました。
この問題は、v0.56.3で発生し、v0.57.5で修正されました。
変更があったファイル
- index.php
23/01/31 v0.57.3
スレッドを閉じる前に事前に知らせる機能を追加しました
- 古いスレッドが閉じられる60日前に残り日数を表示する機能を追加しました。
- 返信可能な残り件数が20件以下になった時に返信可能件数を表示する機能を追加しました。
たとえば漫画などの連載ものの投稿時に途中でスレッドが閉じて、複数のスレッドに分割されてしまう事がありました。
スレッドがもうすぐ閉じられる事を事前に表示する事でそれらの問題を回避できるようにしました。
テンプレートの著作リンクを外部化
著作リンクを外部化しました。
parts/copyright.html
が著作リンクです。
そのHTML部分を著作リンクを表示するその他のテンプレートで読み込みます。
またPetit Noteの著作リンクのリンク先を、https://paintbbs.sakura.ne.jp/ に変更しています。
これは、作者のサイト「お絵かき掲示板Petit Note」のSEO対策のための変更です。
ご理解いただければ幸いです。
負荷削減
掲示板のトップページの時には必要がない、返信画面のための計算を他の画面でも行っていました。
各モードで必要な処理を振り分ける事で表示時の負荷を削減しました。
バグ修正
閉じたスレッドには返信できませんが、お絵かきでレスを描いているうちにスレッドが閉じてしまう事もあります。
その場合はスレッドが閉じていても新しいスレッドへの投稿として投稿を受け付けます。
この時に、ファイルロックがかかったレス先のログファイルを二重に開こうとしてパーミッションエラーが発生する事があったのを修正しました。
変更があったファイル
- index.php
- functions.php
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/catalog.html
- template/basic/edit_form.html
- template/basic/index.css
- template/basic/main.html
- template/basic/res.html
追加されたテンプレート
外部化された著作リンク
- template/basic/parts/copyright.html
このファイルのアップロードを忘れると、著作リンクを表示するテンプレートでエラーが発生しますのでご注意ください。
外部化するメリット
このファイルを変更するだけで他のテンプレートにも著作リンクの変更が反映されるようになります。
23/01/20 v0.56.3.1
変更があったテンプレート
- template/basic/paint_neo.html
JavaScriptのセミコロンが抜けていたのを修正しました。
23/01/25 v0.56.3 リリース
23/01/20 v0.56.3
PNG形式で投稿できるファイルサイズの上限をconfig.phpで設定できるようになりました。
これまでは、アップロード画像は800kb、お絵かきアプレットからの投稿は1MB以上の時はJPEGへの変換を試行して、
JPEGに変換したあとの画像のほうが小さくなる時だけ、JPEGに変換していました。
しかしながら、比較的ファイルサイズが大きな場合でもPNG形式で保存したい。
逆にJPEGで保存したいという要望に応えるため、PNG形式のまま投稿可能なファイルサイズの上限を設定できるようにしました。
//アップロード時にpng形式で保存する最大ファイルサイズ
// このファイルサイズを超える時はJPEGに変換(単位kb)
$max_file_size_in_png_format_upload = 800;// ペイント時にpng形式で保存する最大ファイルサイズ
// このファイルサイズを超える時はJPEGに変換(単位kb)
$max_file_size_in_png_format_paint = 1024;
この設定項目の数値が小さいほどPNG画像がJPEGに変換されやすくなります。
この設定項目の数値が大きければPNG画像がJPEGに変換されなくなります。
PaintBBS NEOの動画ファイルを表示するしないを投稿者が選択できるようになりました
↑
お絵かきコメントの時に「動画を表示しない」を選択すると、動画のリンクがでません。
また動画のURLを呼び出してもエラーになります。
↑
編集画面で、「動画を表示しない」のチェックを外すと、動画が表示されるようになります。
編集画面で、「動画を表示しない」にチェックをいれると、動画が表示されなくなります。
↑
「続きを描く」画面で「動画を表示しない」を選択すると、「差し換え」でも「新規投稿でも」動画のリンクがでなくなります。
PaintBBS NEOの動画は描いた手順を記録しているだけでなく、レイヤー情報も保存しているため続きを描く時に必要になります。
そのため、「動画を保存しない」というオプションはPetit Noteでは採用していません。
しかし、どうしても動画を完全にサーバから消してしまいたい時もあるかもしれません。
その場合は、「動画から続きを描く」となっている箇所を「画像から続きを描く」に変更して描くと、これまで記録されていた動画ファイルが削除されます。
PaintBBS NEOでコピー、レイヤー結合などキャンバス周辺を含む操作で画面が上下に動かないようにする工夫
コピーやレイヤー結合などの時にキャンバス周辺の紫の網目のところをスワイプしても画面が上下に動かなくする工夫を行っていましたが、その事が原因でモバイル端末で操作不能になるケースもありました。
今回の更新で、開いたキャンバスサイズの幅に対して端末の横幅に余裕がある時だけ、NEOのキャンバスの周囲の網目のところでスワイプしない形に変更になりました。
NEOの網目のところをつかんでスクロールできるようにしておかなければ操作不能になるからです。
キャンバスサイズと比較して、端末の横幅に余裕がある時は、NEOの網目のところをつかんでもスクロールしなくなります。
コピーやレイヤー結合、Bz曲線の操作の時に画面が上下に動いてしまうからです。
また、ピンチズームで拡大している時も網目のところをつかんでスクロールできるようになりました。
操作不能になるのを回避するためです。
これらは、NEOのペイント画面のインラインのJavaScriptで実装していますので、ペイント画面のテンプレートの更新が必要です。
Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true
Chromeに上記の警告が表示されるようになったため、PaintBBS NEOを独自に修正しました。
HTMLCanvasElement.getContext() - Web APIs | MDN
willReadFrequently
多くのリードバック操作が計画されているかどうかを示すブール値。getImageData() これにより、(ハードウェア アクセラレーションではなく) ソフトウェア 2D キャンバスの使用が強制され、頻繁 に呼び出すときにメモリを節約できます。
PaintBBS NEO更新
- app/neo/neo.js
変更があったファイル
- index.php
- functions.php
- save.php
- saveklecks.php
- saveneo.php
- config.php
config.phpは追加された新しい設定項目が必要な場合のみ更新します。
追加された設定項目が存在しない場合は従来と同じ動作になります。
変更があったテンプレート
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/continue.html
- template/basic/edit_form.html
- template/basic/paint_com.html
- template/basic/paint_neo.html
- template/basic/index.css
テンプレートを更新しないと、今回追加された動画を表示しない機能や、PaintBBS NEOのピンチズーム時の動作の制御などの追加機能を使う事ができませんが、機能の追加が必要無い場合は従来のテンプレートのままでも問題ありません。
テンプレートをカスタマイズしていない方は、template/
フォルダをフォルダごとアップロードすれば、簡単に更新できます。
23/01/20 v0.55.2.1
バグ修正
- 新方式のPaintBBS NEOのデータを受信する
saveneo.php
に大きなバグが見つかりました。
PHP5.6、PHP7.2、などPHP8より古いバージョンのPHPで、saveneo.phpの致命的エラーが発生するバグを修正しました。
PHP8.1、PHP8.2では何もエラーを出さずに動作するためこのバグを見落としてしまっていました。
v0.55.2で追加された機能が必要ない方も、saveneo.php
の更新をお願いします。
機能の追加
- 合言葉のログイン状態を維持するオプションを追加しました。
config.phpに新規設定項目を追加しました。
config.phpのどこでもいいので、下記設定項目を追加すると、この設定が有効になります。
設定項目が存在しない時は、これまでのバージョンと同じ動作になります。
//合言葉のログイン状態を維持する
// する: true しない: false
// する: true に設定すると合言葉のログイン状態を30日間維持します。// $keep_aikotoba_login_status=true;
$keep_aikotoba_login_status=false;
変更があったファイル
- index.php
- functions.php
- save.php
- saveklecks.php
- saveneo.php (PHP5.6-PHP7.x環境で致命的エラーが発生していたのを修正しています)
- config.php
config.phpの更新は新規設定項目が必要な方だけ更新する形になっています。
すでにいろいろと設定している場合は、そのままでも大丈夫です。
23/01/14 v0.55.0.2
//お絵かきアプリで投稿する時の必要最低限の描画時間
//(単位:秒)。この設定が不要な時は : 0
// 指定した秒数に達しない場合は、描画に必要な秒数を知らせるアラートが開きます。$security_timer = 0;
// $security_timer = 60;
この設定項目で、投稿に必要な最低限の描画時間が設定されている時に、エラーメッセージが、すべて「あと0秒」になるバグを修正しました。
このバグが残っている状態でも必要最低秒数が60秒で60秒を超えていれば、エラーメッセージは表示されず問題なく投稿できます。
また、投稿に必要な最低限の描画時間が設定されていない場合も、エラーメッセージは表示されず問題なく投稿できます。
今回の修正で、60秒以下の時は「あと50秒」のように表示されるようになります。
このバグはv0.55.0で発生し、v0.55.0.2で修正されました。
変更があったファイル
- picpost.php
- save.php
- saveklecks.php
- saveneo.php
23/01/14 v0.55.0.1
バグ修正
saveneo.php
のバグを修正しました。
新しく追加したPaintBBS NEOの新しい受信ファイルsaveneo.php
にバグが見つかりました。
非対応ブラウザの時にエラーのアラートが開かず画面を推移して投稿画像が消えてしまうバグを修正しました。
saveneo.phpを最新版に差し替えてください。
23/01/14 v0.55.0
WAFによる誤検知のエラーを回避するためPaintBBS NEOの送信を生データからformDataに変更しました。
- 従来のお絵かき掲示板に投稿できるようにするために、生データを送信していたNEOを改造して、formDataでヘッダ、画像、動画データを送信できるようにしました。
この変更によって、WAFがNEOの送信データを攻撃と判断して遮断する確率が低くなり投稿が成功する確率が飛躍的に高くなります。
ここ数年セキュリティを確保するためにWAFを導入しているレンタルサーバが増えています。
しかしながら、攻撃ではない通常の投稿もWAFによって遮断される事があります。
NEOはこれまで生データを古い掲示板との互換性を確保するために送信してきました。今回の独自拡張でによってそれが、formDataに変わります。
現時点では独自規格ですが規格が乱立するのはよくない事ですので、開発元にプルリクエストを出しています。
予定では3月頃のようですが、formData対応版の正式版がNEOの開発元から出た時点で、再度、掲示板側の対応を行います。
WAFに攻撃と判断されないようにするため、formDataで個別にデータを送信するオプションを追加。 by satopian · Pull Request #94 · funige/neo
そのため、WAFの影響で投稿できなくて困っている人のための緊急アップデートのような形になりました。
これは暫定措置ですので、仕様が今後変更になる可能性があります。
重要な変更点
- これまではNEOのデータの受信を
picpost.php
で行っていました。
このバージョン以後は新しく追加した、saveneo.php
でNEOのデータを受信します。
このファイルのアップロードを忘れると、NEOからの投稿ができなくなりますので、必ずアップデートしてください。
potiboard.phpと同じディレクトリに転送します。 - Paint画面のテンプレートの更新
paint_neo.html
の更新をお願いします。
formDataで送信するモードに切り替えるためのパラメータが追加されています。
最低限必要な描画時間の設定ができるようになりました。
//お絵かきアプリで投稿する時の必要最低限の描画時間
//(単位:秒)。この設定が不要な時は : 0
// 指定した秒数に達しない場合は、描画に必要な秒数を知らせるアラートが開きます。$security_timer = 0;
// $security_timer = 60;
描画時間が指定秒数より短い時はPaintBBS NEO、ChickenPaint、Klecksすべてのアプリで、「"描画時間が短すぎます。あと30秒。」というアラートが開きます。
お絵かきデータ送信エラーの時のエラーメッセージを細かく表示できるようになりました
"投稿に失敗。時間をおいて再度投稿してみてください。"
"お使いのブラウザはサポートされていません。"
"ユーザーコードが一致しません。"
エラーはできるだけ出ないほうがいいのですが、エラーになってしまった時の詳細なエラー内容が日本語のアラートで開くようになりました。
アラートは開きますが描いている絵の画面は切り替わらずにそのままの状態になりますので、スクリーンショットをとってあとでアップロードする事ができます。
Klecksのデータ送信方式を、XMLHttpRequest
からfetch
に書き換えました
動作上の差はほぼありませんが、コードが整理された事により上記のようなエラーメッセージの表示が可能になりました。
合言葉機能を改良
従来の「投稿する時に合言葉が必要」に加え、「掲示板の閲覧に合言葉が必要」という設定項目が追加されました。
/合言葉設定/
// 投稿に合言葉を必須にする
// する: trueで投稿に合言葉が必要になります。
// する: true しない: false// $use_aikotoba = true;
$use_aikotoba=false;// 掲示板の閲覧に合言葉を必須にする
// する: true しない: false
// する: trueで掲示板のすべてのコンテンツの閲覧に合言葉が必要になります。// $aikotoba_required_to_view=true;
$aikotoba_required_to_view=false;//合言葉
//上記の合言葉機能のどちらか、あいるは両方が true の時に入力する秘密の答え。
// 必要に応じて変更してください。
$aikotoba = "ひみつ";
config.phpの合言葉設定の箇所を整理して合言葉の項目を新たに追加しました。
しかし、これらの新規設定項目が必要ない方はすでに設定ずみのconfig.phpをそのままご利用ください。
すでに設定ずみの場合は、また設定しなおす事になってしまうので、面倒な作業になるからです。
差分エディタによる内容比較で変更点を確認してそこだけ追加するのがベターだと思います。
無料のVScode(プログラムエディタ)で内容比較機能が使えます。
サクラエディタや秀丸エディタにも内容比較機能があります。
5回連続して管理パスを間違った時はロック→手動解除に加え3日経過すればログインできるように。
5回連続してパスワードを間違えた時は管理者ログインをロックしてログインできなくする機能を実装しましたが、ftp接続による手動での解除は面倒なため、ログインがロックされてもそこから3日経過すれば再度ログインできるようにしました。
編集・削除ボタンの位置がくずれていたのを修正
記事のまわりこみ方によっては、編集・削除のボタンの位置が本文と離れた場所に表示されてしまう事がありました。
更新するテンプレートの数が多くなってしまいお手数をおかけしますが細かく修正しました。
変更があったファイル
- app/neo/neo.js
- functions.php
- index.php
- save.php
- saveklecks.php
- config.php
追加されたファイル
- saveneo.php
追加されたテンプレート
- template/basic/aikotoba.html
変更があったテンプレート
- template/basic/before_del.html
- template/basic/before_edit.html
- template/basic/catalog.html
- template/basic/continue.html
- template/basic/edit_form.html
- template/basic/main.html
- template/basic/paint_klecks.html
- template/basic/paint_neo.html
- template/basic/res.html
テンプレートをカスタマイズしていない場合は、template
ディレクトリをまるごと上書きアップロードしたほうが早いと思います。
また、GitHubからダウンロードしたファイルには、ログファイルやユーザーが投稿した画像は入っていないので、config.php以外の全ファイルを上書きアップデートするだけ更新可能です。
ただし、普段からバックアップを取っているかたの場合は、間違って古いログファイルで上書きしないようにご注意ください。
22/01/05 v0.53.2
PaintBBS NEO、ChickenPaint、Klecksそれぞれのお絵かきアプリを「使う」「使わない」を設定できるようになりました。
PaintBBS NEOだけ使う設定にしたり、ChickenPaintだけ、Klecksだけ使用する設定もできます。
PaintBBS NEOも、ChickenPaintも、Klecksも使わない設定にすると、お絵かき機能がなくなり普通の画像掲示板になります。
アップロード機能を使わない設定にする事もできますので、テキスト掲示板として使う事もできます。
config.phpのどこでもいいので以下の設定項目を追加すると、設定できるようになります。
// PaintBBS NEOを使う
// 使う: true 使わない: false
$use_paintbbs_neo= true;
// $use_paintbbs_neo= false;// ChickenPaintを使う
// 使う: true 使わない: false
$use_chickenpaint= true;
// $use_chickenpaint= false;// Klecksを使う
// 使う: true 使わない: false
$use_klecs= true;
// $use_klecs= false;
従来のままで問題ないのであれば、config.phpを変更する必要はりません。
上記設定項目が存在しない時は、すべて使うになります。
変更があったファイル
- index.php
- functions.php
- config.php
(今回追加された設定項目が必要な人は更新してください。必要ない人はそのままで。)
変更があったテンプレート
- template/basic/main.html
- template/basic/res.html
- template/basic/continue.html
追加されたテンプレートのパーツ
- template/basic/parts/select_apps.html
(アプリの選択メニューの共通箇所を外部化しました。このファイルがないとアプリの選択メニューがでません。必ず追加してください。)
今回追加された設定項目を有効にするためのテンプレートの更新ですので、従来のテンプレートをそのまま使いたいという方は
- index.php
- functions.php
の2つを更新するだけで構いません。
もし、エラーメッセージが出て、○○というファイルが無いと表示される時はエラーメッセージに従って追加していただければ動作すると思います。
23/01/02 v0.52.10.2
-
閉じたスレッドの返信ボタンは「表示」になりますが、管理者投稿モードでログインしている時には返信可能なので、ボタンの「表示」が「返信」になるように修正しました。
-
数字以外入らない箇所ではありますが、出力するすべての変数に対してHTMLのエスケープ処理を行うという原則にしたがい、キャンバスサイズのプルダウンメニューを生成しているループの箇所のエスケープ漏れを修正しました。
変更があったテンプレート
- template/main.html
- template/res.html
変更があったテンプレート
- template/main.html
- template/res.html
23/01/02 v0.52.10
バグ修正
古いスレッドを自動的に閉じる日数の指定が無効になってしまうバグを修正しました。
記事の管理に使っている投稿管理時刻の16桁化の時に、該当箇所へのマイクロタイム3桁と6桁を振り分ける機能の追加を忘れていました。
一時的に古いスレッドを閉じなくなっていただけですので、ログファイルその他への影響はありません。
config.phpの以下の設定項目が、管理時刻の16桁化以降無効になっていました。
//古いスレッドを自動的に閉じる日数 単位 日
//古いスレッドへのスパム防止
//初期設定の180で、半年前に立てられたスレッドに返信できなくなります。
//日数による制限をしない時は 0 。
//管理者投稿はこの制限を受けません。$elapsed_days=180;
変更があったファイル
- index.php
- functions.php
22/12/27 v0.52.8
セキュリティ対策
.pch
データや.psd
データのmime typeのチェックを追加しました。
コード整理
mime typeのチェックのコードが煩雑にならないようにするため、pchファイルかどうかをチェックしているcheck_pch_ext()
関数のコードを整理してforeach化しました。
変更があったファイル
- index.php
- functions.php
- saveklecks.php
22/12/27 v0.52.1
PaintBBS NEOのPCH形式の動画ファイルの幅と高さを自動的に取得できるようになりました。
これまでも、続きを描く→動画からを選択した時は、動画から画像と同じ幅と高さのキャンバスを開いて続きを描く事ができました。
しかしそれは、PNG形式やJPEG形式の画像の幅と高さをキャンバスに反映したものでした。
したがって、動画ファイルをアップロードする時には、その動画の幅と高さを手動で設定する必要がありました。
今回のアップデートにより、すべてのアプリの固有ファイルのアップロード時に、幅と高さを入力しなくてもよくなりました。
どのお絵かきアプリのファイルなのかはアップロードしたファイルのファイル名から取得します。
拡張子.pch、.chi、.psdなどの各ファイルをアップロードする時は、ファイルを選択してペイントボタンを押すだけになりました。
↑
pchファイルとキャンバスサイズは手入力で一致させる必要がありました。
この例では、サイズが一致せず余白ができてしまっています。
↑
v0.52で、pchファイルアップロードペイント時のキャンバスサイズの入力は不要になりました。
pchファイルのバイナリデータを解析して幅と高さの情報を取り出しています。
変更があったファイル
- functions.php
- index.php
(22/12/21 v0.51.2で変更されたファイルもご確認ください。)
22/12/21 v0.51.2
セキュリティ強化
config.phpに新規設定項目追加。管理者パスワードを5回連続して間違えた時は拒絶する。
config.phpに新規設定項目を追加しました。
管理者パスワードを5回連続して間違えた時はログインページをロックします。
config.phpのどこでもいいので、以下の設定を追加すれば、設定が有効になります。
この設定項目が存在しない場合は、従来と同じ動作でなにも変わりません。
// 管理者パスワードを5回連続して間違えた時は拒絶する
// する: true しない: false
// trueにするとセキュリティは高まりますが、ログインページがロックされた時の解除に手間がかかります。// $check_password_input_error_count = true;
$check_password_input_error_count = false;//ftp等でアクセスして、
//template/errorlog/error.log
// を削除すると、再度ログインできるようになります。
//このファイルには、間違った管理者パスワードを入力したクライアントのIPアドレスが保存されています。
ディレクトリトラバーサルの脆弱性を修正
本来意図しない階層にあるファイルを開いてしまうディレクトリトラバーサルの脆弱性が存在している事がわかりましたので、対策しました。
Petit Noteのログファイルの形式と同じか、ものすごく良く似た構造のあるファイルで、拡張子が.log
のファイルが意図せず開かれる可能性があります。
開いているログファイルの形式が正しいかどうかチェックする処理が入っているため、まったく無関係な機密ファイルを開かる可能性は低いと思います。
しかしながら、別の階層のファイルが読み込めてしまうのは明らかな脆弱性ですので、これを機会にぜひアップデートをお願いします。
ディレクトリトラバーサルの脆弱性を修正するために行った対策の内容
ファイルパスに変数を使用している箇所の変数チェックの徹底化を行いました。
数字が入るべき変数に数字以外の文字列が入っていた時はエラーになるようにしました。
basename()
関数を使用してディレクトリの階層を表す../../
のようなパスを無効化しました。
ファイルパスに変数が存在しているすべての箇所にこれらの対策を行いました。
Same-OrijinチェックとCookieチェックを追加
postの送信元のOrijinヘッダを調べて、ホスト名と同じOrijinでは無い時は拒絶する処理を追加し、さらにブラウザによるアクセスの時にはある筈のCookieが確認できない時は処理を拒絶するようになりました。
効果がどの程度あるのかは不明ですが、それほど大変な処理の追加ではなかったため、実装いたしました。
なお、外部サイトに不正な投稿フォームが設置されて、閲覧するだけで記事が送信されてしまうCSRFはトークンで防止しています。
それに加え、すべてのpostのOrijinヘッダとCookieのチェックを行う形にしました。
これによって、たとえばブラウザを使用しないbotではpostできなくなるかもしれません。
ブラウザ自動化が当たり前になって来ていますので、効果は限定的ですが、なにもしないよりはいいのではないでしょうか。
バグ修正
-
個別スレッドのログファイルの削除処理がPHP7.2で動作していなかったのを修正
削除処理のスッド削除とスレッド数オーバー時のスレッド削除の時に、 個別スレッドのログファイルの削除に失敗する事があったのを修正しました。
たとえば、PHP8.1では開発者の意図通りにログファイルの削除が行われ、PHP7.2では削除される筈のファイルが削除されていませんでした。 -
削除処理でファイルクローズが二重になって、PHP8環境でエラーが出ていたのを修正しました。
-
画像が存在しない時にgetimagesize()がコールされてerrorが発生していたのを修正しました。
-
続きを描くからの管理者判定に管理者パスワードとの一致の処理が抜けていたのを修正しました。
-
お絵かき投稿のIPアドレスにブランクが入ってしまった時に、ブランクとブランクを比較してIPアドレスの一致になっていたのを修正しました。
-
存在しないツール名がログファイルに記録されないように入力値をチェックするようになりました。
お絵かき投稿時のツール名が['neo','chi','klecks']ではない時は???に。 -
ツール名がアップロードになるのは、明確にアップロード処理を経た画像のみになるように修正しました。
改善
- IPアドレスの取得方法を変更。getenv()から$_SERVERへ。
- ユーザーコードとリプレースコードの作成にuniqid()を使用してマイクロタイム単位に。
- リプレースコードを8桁から12桁に変更。
- メール通知クラス更新。IPアドレスの取得方法をgetenv()から$_SERVERに変更しました。
- 画像差し換えの画像アップロード処理の時にgetで取得したパスワードが入らないようにしました。
独自仕様版のPaintBBS NEOを同梱
WAF誤検知で投稿できなかった時のエラーメッセージを追加したPaintBBS NEOの独自拡張版を同梱しました。
ロリポップやさくらのレンタルサーバに標準で装備されているWAFが、NEOからの投稿をブロックする事があります。
その時、NEOからのデータを受信しているpicpost.phpが403拒絶にWAFによって変更されてしまい投稿が失敗します。
しかし、何か続きを描くとパターンが変わり投稿が可能になる事があります。
WAFをオンにしていないのであれば、何も変わりませんが、セキュリティ対策でWAFをオンにして使う時には、投稿に失敗した原因と対策がエラーメッセージで表示されるので、対応しやすくなります。
NEOの開発者funigeさんにプルリクエストを統合していただきました。
しかし、私の凡ミスで、接続時のエラーの箇所とタイムアウトの処理に問題が残っていたため追加のプルリクエスト中です。
再度同梱したNEOは、その箇所を独自に修正したものになります。
変更があったファイル
- app/neo/neo.js
- thumbnail_gd.php
- config.php
- functions.php
- index.php
- noticemail.inc
- picpost.php
- save.php
- saveklecks.php
(template/basic/paint_klecks.htmlとセットで更新)
config.phpのアップデートは、新規設定項目が必要な方だけが行えばよく、すでに設定している項目が多い時は、エディタの内容比較機能などで比較して必要な項目だけ追加してください。
従来の設定項目のままで問題がなければそのままでかまいません。
(ディレクトリトラバーサルの脆弱性を解消するため、index.phpとfunctions.phpを必ず更新してください。)
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/paint_com.html
- template/basic/paint_klecks.html
(必ず更新してください。Klecksで描いた絵の投稿ができなくなります)
22/11/30 v0.37.2
klecks更新
- ブラシのショートカットキーの動作が修正されています。
バグ修正
- ペイントボタンを押す直前にブラウザのCookieを消去するとお絵かき投稿に失敗するバグを修正しました。
また、お絵かき画面にCookieと照合するユーザーコードが入力されていない時にはエラー画面が表示されるようにしました。
これは、時間をかけて描いた絵が投稿できなくなるのを回避するためです。
今回の更新でいくつかのファイルやディレクトリが更新されていますが、index.php
のアップデートのみでもこの問題に対処できますのでよろしくお願いいたします。
改善
- 続きを描くで画像を差し換える時の処理でエラーが発生した時は、画像差し換えではなく、未投稿画像の投稿画面に切り替わるようになりました。それにより画像の差し換えには失敗しても新規投稿は可能な事がわかるからです。
これまでは、失敗した事を知らせるエラーメッセージが表示され、そのあとどうすればよいのかを知らせるメッセージ等はありませんでした。 - 待機時間がマイナスの時は通す。
連続投稿のチェック処理で前回の投稿時刻に未来の時間が検出された時は、エラーにならず通過するようになりました。
たとえば前回の投稿時刻がなんらかのミスによって100年後になっていたら、100年経過しないと投稿できなくなるからです。 - 投稿時刻の重複回避処理5箇所のコードを統一しました。
- お絵かきコメントの画像の幅と高さ。
お絵かきコメントの記入画面の画像にHTMLの幅と高さを追加しました。これまでは、画像が表示されるにしがたってコメント欄が下に移動していくユーザーが予期しないレイアウト シフトが発生していました。 - klecksとPaintBBS NEOのエラーメッセージの種類が増えました。
- klecksで投稿時にサーバのステータスが200以外の時にはエラーメッセージのアラートが開くようになりました。
ステータスが200以外の場合は投稿に失敗します。しかし、400番以上をエラーとして判定してしまっていたため200番以外の時にエラーメッセージのアラートが表示されないままになっていました。
変更があったディレクトリ
- app/klecks/
変更があったファイル
- functions.php
- index.php
- picpost.php
変更があったテンプレート
- template/basic/edit_form.html
- template/basic/paint_com.html
- template/basic/paint_klecks.html
- template/basic/main.html
- template/basic/res.html
22/10/29 v0.33.6
改善
閉じたスレッドでも、管理人は投稿可に
- 指定日数を経過して閉じたスレッド、レス数が上限に達して閉じたスレッドでも管理者投稿モードでログインすれば投稿が可能になりました。
ログファイルの肥大化防止
- 全体ログに保存されている本文のコメントを読み込んでいる箇所はありません。
そのため全体ログにはコメントを保存しないようにする事もできますが、どんなコメントが入っているスレッドなのか把握できるようにするため、120バイト分だけ保存する形に変更しました。
各スレッドの個別ログから実際のコメントの読み込みは行われるため、実際の画面ではコメントの全文が表示されます。
これによりログファイルの肥大化の進行を遅らせる事ができます。
すべてのログを1つのファイルにすべて保存するPOTI-boardでは動作が重くなる数の書き込み数でも比較的軽快に動作します。
負荷削減
- 負荷削減策として、数字の0と文字列の0の時、そして、ブランク''の時はhtmlspecialchars()関数に文字列が入る前に'0'や'ブランク''をreturnするようになりました。
組み込み関数は高速に動作しますが、回避できる不要な関数の処理は回避したほうがより高速に処理できるからです。
ただし、あえていうほとの高速化には至りません。
やらなくていい処理はやらないほうがいいという事です。
HTMLの文法関連
- 自己終了タグを除去。 w3c Validation チェックで非推奨のエラーが発生するため自己終了タグを整理しました。
- NEO描画画面のHTMLの文法ミスを修正しました。
- 長い英文の改行時に英文が読みにくくなっていたため、英語圏での利用を考慮して改行方法の指定を変更しました。
SNS関連
- tweet→Tweet 頭文字は大文字と公式に掲載されていたため修正しました。
Tool
- TOOLとすべて大文字で記載していましたが、統一感がないため、Toolに変更しました。
ファイルの存在チェックの追加
- 動画再生時に画像ファイルが存在しない時はエラーにして動画の再生を止めるようにしました。
画像が存在しない時に画像の幅と高さを取得しようとしてエラーになっていたため対処しました。
お絵かきデータの受信
- PaintBBS NEO、klecks、ChickenPaintの各アプリのデータ受信ファイルの設定を変更し、画像ファイルサイズの上限設定を8MBに増やしました。
しかしながら、さくらのレンタルサーバ等ではサーバ側の設定で初期値で5MBまでに制限している事が多いため、それ以上の容量のファイルのアップロードが必要な場合はサーバの設定も必要になります。
.psdファイルや.chiファイルは20MBあたりまで肥大化する事があります。
その時にサーバのphp.iniで上限が5MBになっていると動画ファイル、.chiファイル、.psdファイルを切り捨てて画像だけ投稿される形になります。
投稿可能な容量サイズの設定を20MB程度まで大きくしておく事をおすすめします。
ここのファイルサイズの設定が5MBのままでも、画像は受信できると思いますが、.psdや.chiは受信できない場合があります。
運営しているお絵かき掲示板では、
upload_max_filesize = 20M
post_max_size = 20M
に設定を変更しています。
php.iniの変更は各自でお願いします。
不明な場合は、各レンタルサーバ運営会社等にお問い合わせください。
さくらのレンタルサーバであればブラウザ上の管理画面からでもphp.iniの設定ができます。
そのほか
- 動的パレットのパレットファイルが存在しない時はファイルが存在しない事を知らせるエラーを出すようになりました。
- ブラウザの言語が日本語以外の時に表示される英語翻訳版の動的パレットのtypoを修正しました。
- config.phpの文字列のシングルクオートをダブルクオートに変更しました。
config.phpの再設定は面倒なので設定項目を追加するのでなければ更新しなくても大丈夫です。
英語圏では、let's
のように、単語の省略型にシングルクオートの文字を使用する事があるため、文字列の区切りにシングルクオートが適さない例があるため更新しただけです。
英語圏での使用を想定した変更点になります。
klecks更新
- ゆがみを使用したあとに白く塗りつぶした箇所にゆがみの形にそった線が入る問題が修正されています。
- ヘルプページに使い方の動画リンクが追加され、グラデーションのショートカットキーの項目が追加されました。
変更があったディレクトリ
- app/klecks/
変更があったファイル
- index.php
- functions.php
- picpost.php
- save.php
- saveklecks.php
- palette_en.txt
(英語表記のredのtypoを修正しています。ブラウザの言語が日本語の時にはこの変更はわかりません)
変更があったテンプレート
- template/basic/ ほぼすべて。
閉じたスレッドでも管理者は投稿可とする場合は、res.html
の更新が必須になります。
paint_com.html
は、sageのラベルが他の箇所と異なる見た目になっていたのを修正しているだけですが、更新しないと統一感がでないかもしれません。
その他は、TOOLがToolになったり、tweetがTweetに変更になったりした関係で更新になりました。
必要に応じてアップデートをお願いします。
22/10/03 v0.30.10
ChickenPaintを最新版に更新
Chromeのバグを回避
- ChickenPaintのカラーピッカーで色を選択する操作をすると、表示されていた色が消え、真っ白になる問題がChromeのバグによって発生しました。
このGoogle Chromeのバグを回避して動作するChickenPaintの最新版に更新しました。
klecksを最新版に更新
- グラデーションツールにグラデーションを消しゴム化して使うオプションが追加されました。
- 集中線を描写する機能が追加されました。
改善
- luminousの実行に必要なファイルが存在しない時はエラーメッセージでファイルが存在しない事を知らせるようになりました。
変更があったディレクトリ
- app/chickenpaint/
- app/klecks/
変更があったファイル
- index.php
v0.23.3.1からアップデートする場合
ご注意ください。22/08/17 v0.23.3.1からアップデートする場合は、以下のファイルの更新も必要です。
変更点は
22/09/26 v0.30.8
をご確認ください。
変更があったファイル
- functions.php
- noticemail.inc
- picpost.php
設定ファイル
- config.php
(閲覧注意機能と、返信を管理者に限定する機能を使う時は更新。それ以外は更新の必要はありません。)
変更があったテンプレート
- template/basic/ (テンプレートのすべて)
テンプレートがすべて変更になっているのは、Luminousによるポップアップ表示機能への対応のためです。
と書いてしまいましたが、template/res.html
のレスフォームが開く条件が変更になっているため、新しく追加された設定項目で「返信は管理者のみ」に設定して使う場合は、template/res.html
の更新が必須になります。
変更していない場合は、レスフォームが開いたままになります。
閲覧注意機能を使う場合も、テンプレートの更新が必要になりますので、よろしくお願いします。
22/09/26 v0.30.8
更新
- Klecksを最新版に更新しました。
グラデーションツールとパターンフィルタが追加されました。
改善
Luminous で画像をポップアップ表示
- Luminous
サムネイル画像をクリックした時の動作を変更しました。同じ画面内で画像をポップアップ表示します。
LuminousのデフォルトのCSSにはスマホ表示時に画像を拡大してスワイプしながら閲覧する拡大機能がありますが、スマホの縦横の幅の範囲に画像が収まるように調整しました。
Luminousでポップアップ表示すると、画像の周囲が暗くなるため、掲示板の背景色が白でも透過PNGの透明部分がきっちり透過した状態で閲覧できます。
ChickenPaintとKlecksは透過PNG画像の作成に対応していますので、ぜひお試しください。
管理者ログイン
- 日記モードを改善。
日記モードで絵を描いて投稿する時に管理者ログインのセッションが終了してログアウトしてしまうと投稿できなくなる問題に対応するため、管理者投稿の判定条件を変更しました。
仮に管理者投稿モードのログインのセッションが切れてしまっても管理者パスワードで投稿すれば管理者の投稿として受理されるようになりました。
日記モードに設定すると新規スレッドの作成は管理者のみになりますが、スレッドへの返信は誰でもできる状態でした。
スレッドへの返信を管理者に限定する機能を追加しました。
config.phpのどこでもいいので下記設定項目を追加することでこの機能を有効にできます。
設定項目が存在しない時は、従来どおりの動作になります。
//返信を管理者のみに限定する
//する: true で管理者以外返信ができなくなります。
//日記モードと併用すれば、すべての書き込みが管理者のみになります。
$only_admin_can_reply = true;
// $only_admin_can_reply = false;
閲覧注意機能を追加
- 閲覧注意の設定ができるようになりました。
投稿画面で、閲覧注意にするにチェックを入れると、画像にぼかしが入ります。
編集画面で、閲覧注意のオン、オフを切り替える事もできます。
config.phpのどこでもいいので下記設定項目を追加することでこの機能を有効にできます。
設定項目が存在しない時や、閲覧注意を設定しない場合は従来どおりの動作になります。
従来通りの設定の時は閲覧注意のチェックボックスも表示されません。
// 閲覧注意を設定する
//する: trueに設定すると閲覧注意の設定ができるようになります。閲覧注意画像にぼかしが入ります。
// する: true しない: false
$mark_sensitive_image = true;
// $mark_sensitive_image = false;
細かな仕様の変更
-
Java版のpchの時は、対応フォーマットではない事を知らせるエラーメッセージを表示。
管理者投稿モードでログインしている時はPaintBBS NEOの.pch
、ChickenPaintの.chi
、Klecksの.psd
ファイルをアップロードする事ができます。
しかし、Java版の.pch
とPaintBBS NEOの.pch
は拡張子は同じでも、中身が違うためPetit Noteでは扱えません。
Java版の.pch
とNEOの.pch
を判定する処理を追加して、Java版の.pchの時にはエラーメッセージを出すようにしました。 -
PNGファイルをjpegに変換する関数
png2jpg()
の処理の最後にjpeg画像の作成に成功したかどうかをチェックする処理を追加しました。 -
.pch
、.psd
、.chi
ファイルのダウンロード時のパス確認処理を他の箇所と同じになるようにしました。
パスワード入力欄が空欄の時はCookieに記録されているパスワードを使って照合します。 -
投稿処理で個別スレッドのログファイルを2回開いていたのを1回にまとめ、ファイルのopenと同時にファイルをロック。
連続投稿や投稿時刻、画像重複のチェックをファイルロックがかかった状態できるようになりました。
より確実に内容をチェックできるようになりました。
同じスレッドに同じ投稿時刻の重複が発生する可能性を排除する事ができました。
(投稿時刻=UNIXタイム10桁+マイクロ秒6桁の16桁の数字) -
サムネイル画像が存在する時は、コンティニュー前画面に軽量なサムネイル画像を表示するようにしました。
バグ修正
-
ファイルの存在確認の結果がまったく表示されないバグを修正しました。
必要なファイルが存在しなかった時は、そのファイルのパスを表示できるようにしました。 -
メール送信時のエンコードが多国語対応になっていなかったのを修正しました。
変更があったディレクトリ
- app/klecks/
(Klecksディレクトリを上書きアップデート) - lib/luminous/
(Luminousディレクトリを上書きアップデート)
変更があったファイル
- index.php
- functions.php
- noticemail.inc
- picpost.php
設定ファイル
- config.php
(閲覧注意機能と、返信を管理者に限定する機能を使う時は更新。それ以外は更新の必要はありません。)
変更があったテンプレート
- template/basic/
テンプレートがすべて変更になっているのは、Luminousによるポップアップ表示機能への対応のためです。
テンプレートをカスタマイズしている方で新機能は特に必要ない方は従来のテンプレートのままでも大丈夫です。
22/08/17 v0.23.3.1
更新
- jQueryをv3.6.0に更新しました。
- Klecksを最新版に更新しました。
ノイズフィルタが追加されました。
- v0.23.3.1で、v0.23.3の透明化フィルタの輝度反転が動作しない問題を修正しています。
(app/klecks
ディレクトリを上書きアップデート)
改善
//禁止ホスト
$badhost =['example.com','example.org'];
config.phpに上記設定項目を追加する事で、指定したホストからの書き込みを拒絶できます。
- クリックジャッキングの脆弱性を修正しました。
フレーム内に掲示板を表示しないのであれば下記設定項目の追加は必要ありません。
フレーム内で表示したい方のみ、下記設定項目をconfig.phpのどこでもいいので貼り付けて設定してください。
//iframe内での表示を 拒否する:true 許可する:false
//セキュリティリスクを回避するため "拒否する:true" を強く推奨。
$x_frame_options_deny=true;
// $x_frame_options_deny=false;
-
スマホ操作に適した表示に。
-
表示高速化。JavaScriptを先読みして、クリティカルチェーンを少なく。
-
ページーングのループを削減。コードを短縮。
-
jQueryのバージョンをindex.phpの設定から読み込んで、テンプレートに自動的に反映できるようにしました。
これまではjQueryのバージョンを変更するにはテンプレートを直接書き直して設定を変更する必要がありました。 -
見えている範囲にloading="lazy"を指定しない。
すでに表示されているところにloading="lazy"が入っていると表示が遅くなるため、スレッドの上のほうの画像にはloading="lazy"
が追加されないようにしました。 -
PaintBBS NEO起動画面の時計のJavaScriptを修正しました。
コンテンツセキュリティポリシーを設定したらPOTI-boardのお絵かき画面の時計が動かなくなりました。|さとぴあ|note
バグ修正
更新されたディレクトリ
- app/klecks/
追加されたファイル
- lib/jquery-3.6.0.min.js
変更があったファイル
- index.php
- config.php
- functions.php
- thumbnail_gd.php
変更があったテンプレート
- template/basic/index.css
- template/basic/catalog.html
- template/basic/edit_form.html
- template/basic/main.html
- template/basic/res.html
- template/basic/paint_com.html
- template/basic/paint_chi.html
- template/basic/paint_neo.html
テンプレートを変更しなくても動きます。
カスタマイズしている方は変更するのが大変だと思いますので、従来のテンプレートのままでも構いません。
ただし、その場合はjQueryのバージョンが、v3.5.1のままになりますのでご留意ください。
22/07/11 v0.22.5
改善
- 記事の管理のための時刻を13桁から16桁へ。
マイクロ秒の下3桁を6桁に増やしました。
この変更はまったく同じ投稿時刻になる可能性を1/1000に下げるためです。
また、仮に重複しても1秒分ずらして対応できるように処理を書き直しました。 - お絵かきの投稿を管理している時刻も16桁に増やしました。
- お絵かきの投稿時にすでに同じファイル名の画像が存在している時は秒数を1秒ずらして重複を回避します。
更新
- Klecksを最新版に更新しました。
編集メニューにグリッドを描画するフィルタが追加されています。
変更があったファイル
- index.php
- functions.php
- picpost.php
- save.php
- saveklecks.php
変更があったディレクトリ
- app/klecks/
22/06/30 v0.22.0
改善
- PaintBBS NEOのデータを受信している
picpost.php
に、画像とユーザーデータのファイルの存在確認処理を追加しました。
受信したはずのデータが存在しない時はお絵かき画面から推移せず、アラートでエラメッセージを表示します。
受信に失敗しても画面を推移しないので、お絵かき画面のスクリーンショットを撮って画像を保存する事ができます。 - 古い32bit環境のPHP5.6に対応。
古い32bit環境で発生する問題を修正しました。
連続投稿ではないにも関わらず「少し待ってください。」というエラメッセージが表示されたままになるケースに対応しました。
続きを描くや編集・削除の時に「パスワードが違います」と表示されるケースに対応しました。
32bit環境のサーバでは13桁の数字を整数として扱う事ができないため、10桁に減らして計算する事で回避しました。
また編集対象の記事かどうかの確認のために13桁の数字を使用する時は文字列の比較とする事でこの問題を回避しました。
Petit Noteの動作環境をPHP5.6-PHP8.1としました。
対応可能なPHPのバージョンの幅を広げ、PHP5.6-PHP8.1で動作確認できるように開発環境も整えました。
バグ修正
- スクロールするとでてくる上に戻るリンクが壊れていたのを修正しました。
v0.21.6でテンプレートを壊してしまっていた事がわかりましたので、修正しました。
変更があったファイル
- index.php
- functions.php
- picpost.php
変更があったテンプレート
- template/basic/main.html
(スクロールすると出てくる上に戻るリンクが壊れていたのを修正しています。)
22/06/19 v0.21.6
バグ修正
- 名前クリック時の作者検索が正しく動作しなくなっていたのを修正しました。
v0.18.10、lot.220522で発生したバグです。
改善
- ChickenPaintが全画面表示で起動するようになりました。
- メインページとカタログページのページ番号が番号の途中で改行されないようにしました。
- 現在ページの番号を太字で表示するようになりました。
- 管理者ログイン時の確認処理に使用している第2パスワードの存在チェックを処理に追加しました。
- 指定経過日数を超えた古い投稿でも管理者は続きを描けるようになりました。
指定経過日数を超えた古い投稿はユーザーによる編集、続きを描くができなくなるようにしてあります。
管理者は編集が可能でしたが、続きを描くはできなくなっていました。
管理者は編集、削除、続きを描く、画像差し換えすべての機能を制限なく使えるようになりました。
変更があったファイル
- index.php
- thumbnail_gd.php
- functions.php
変更があったテンプレート
-
template/basic/index.css
ページ番号の数字が意図しない形で改行される問題を修正しました。
表示がもとのままでも気にならなければ更新する必要はりません。 -
template/basic/catalog.html
現在ページを太字で表示するためのタグを追加しました。
ページ番号の数字が意図しない形で改行される問題を修正しました。
表示がもとのままでも気にならなければ更新する必要はりません。 -
template/basic/main.html
現在ページを太字で表示するためのタグを追加しました。
ページ番号の数字が意図しない形で改行される問題を修正しました。
表示がもとのままでも気にならなければ更新する必要はりません。 -
template/basic/paint_chi.html
ChickenPaintが全画面表示で起動するようになりました。
もとのままでも構わければ更新する必要はありません。
22/06/02 v0.20.0
バグ修正
- トップの入力フォームを使用しない設定にすると管理者ログインの時にもトップのフォーム、そして画像アップロードのフォームが表示されなくなるバグを修正しました。
管理者のみアップロード可にしたいときに、アップロードができなくなっていました。
管理者投稿モード(日記モード)でログインしているときは、トップの入力フォームと画像アップロードのフォームが表示され、コメントのみの投稿も画像アップロードもできるようになりました。
改善
- 動画を表示する画面からの戻り先のリンクを掲示板のトップページから、個別スレッドに変更しました。
動画再生画面から掲示板の該当スレッドに戻れるようになりました。
変更があったファイル
- index.php
- saveklecks.php
変更があったテンプレート
- template/basic/main.html
動画リンクに記事番号が追加されました。
管理者でログインしているのにトップの入力フォームが表示されないバグが修正されました。 - template/basic/res.html
動画リンクに記事番号が追加されました。 - template/basic/pch_view.html
戻り先のリンクに記事番号と13桁の時刻が追加されました。
22/05/31 v0.19.6 リリース
22/05/31 v0.19.6
- レス先のスレッドの番号が1000を超えている時にレスでお絵かきできなくなるバグを修正しました。
レス先の番号が1000以上の時にレスでお絵かきすると「問題が発生しました」というエラーメッセージが表示されて投稿できなくなるバグを修正ました。
変更があったファイル
- index.php
22/05/29 v0.19.5
- v0.18で発生した指定サイズ以上の実体データの縮小処理が効かなくなるバグを修正しました。
- 画像差し換え時の指定サイズ以上の実体データの縮小処理が抜けていたを修正しました。
22/05/28 v0.19.2
画像差し換え機能を追加
アップロードした画像を差し換える事ができるようになりました。
修正した画像と差し換えたい時などにご利用いただけます。
スクロールすると出てくる上に戻るボタンを追加
多くのウェブサイトに実装されている上に戻るボタンを実装しました。
ログファイルが壊れないようにするための多くの変更
- スレッドの親が1行目にある事を厳密に確認してから、スレッドのレスを作成するようになりました。
ファイルロックがかかった状態で、1行目が親である事を確認してから処理を行うようになりました。
一瞬の隙をついたタイミングで問題が発生する可能性がゼロではないため対策を行いました。
拒絶するURLが設定可能になりました
config.phpに新規設定項目を追加しました。
その設定が特に必要ない方は従来のconfig.phpをそのままご利用ください。
バグ修正
- スパムの拒絶処理で、拒絶する文字列の指定に
/
(スラッシュ)が含まれる時に処理が失敗するバグを修正しました。 - お絵かき画像投稿時のコメント欄でURLを入力しても反映されないバグを修正しました。
- アップロード画像の作業ファイルのゴミが残るバグを修正しました。
変更があったファイル
- config.php
- functions.php
- index.php
変更があったディレクトリ
- app/klecks/
変更があったテンプレート
上へ戻るリンクのためのフォントが追加されました。
- template/basic/icomoon/
上へ戻るリンクのためのCSSが追加されました。
- template/basic/index.css
上へ戻るリンクのためのJavaScriptが追加されました。
- template/basic/main.html
- template/basic/res.html
- template/basic/catalog.html
サーバーエラーが400番の時にもアラートが開くようになりました。
- template/basic/paint_klecks.html
お絵かきコメント記入時のURLが反映されないバグを修正しました。
- template/basic/paint_com.html
22/05/04 v0.15.3
重大なバグを修正
- 「続きを描く」ができなくなる大きなバグがv0.12で発生していました。
v0.12は使用しないようにしてください。
index.phpの上書きアップデートをお願いします。
klecks更新
- /klecks ディレクトリを上書きアップデート
22/04/28 v0.12.1
Klecks更新
- iPadOSで発生するいくつかの問題が修正されました。
- 使用可能な言語に繁体字中文が追加されました。
改善
-
必要なファイルの存在をチェックする機能を追加しました。
設置や移転の時のための機能です。
必要なファイルが存在しない時は、エラメッセージでファイルの場所とファイル名を表示します。 -
klecksの送信失敗の原因がサーバーエラーの時はエラー番号をアラートで表示します。
例えば、Klecksのデータを受信するsaveklecks.php
が存在しない時は、「エラー404」というアラートを表示します。 -
ファイルサイズが指定サイズよりも大きなときに、PNGからJPEGに変換する処理の作業ディレクトリを
temp/
に変更しました。
処理に失敗して作業ファイルが残ってしまっても、テンポラリの自動削除機能で一定時間経過後に削除されるようになります。
バグ修正
-
全体ログのパスワードが一致しなかった時に処理が停止せず、スレッドのログファイルの画像やログが先に削除されてしまう箇所がありました。
編集、削除、続きを描くの画像差換えの3箇所です。
全体ログのパスワードが一致しない時は、スレッド個別のログファイルにかかわる処理が実行されないように書き直しました。 -
config.phpの設定で、
$deny_all_posts = true;
//全ての投稿を拒否
に設定した時に、返信ボタンに「返信」と表示されていたのを「表示」に修正しました。
古いスレッドを閉じた時、1スレッドあたりの最大投稿数を超過した時と同じ動作になるように調整しました。
変更があったディレクトリ
- app/klecks/ (ディレクトリを上書きアップデート)
変更があったファイル
- functions.php
- index.php
- picpost.php
変更があったテンプレート
- template/basic/main.html
- template/basic/paint_klecks.html
22/03/25 v0.11.8
改善
Klecksの日本語訳
- Klecksを日本語に翻訳しました。
PetitNoteにも、日本語対応版を同梱する事ができました。
この新しいバージョンのKlecksは、ブラウザの言語の優先順位を自動検出して言語を切り替えてくれます。
また、ブラウザの言語の設定にかかわらず使用する言語を指定する事もできます。
英語、ドイツ語、日本語が選択できます。
中文は簡体字のみで細部はまだ英語のままです。
日本語訳リソースは開発元に統合済みです。
透過PNG、透過GIFのサムネイルの透明部分を白に変更
- 透過PNGの透明部分がJPEG化する時に、真っ黒になっていたのを修正しました。
透明色が黒も間違いではないのですが、意図しない結果になる事が多いため、透過GIF、透過PNGからJPEGに変換する時は、透明色を白に変換します。
ファイルサイズチェックの方法を変更
- ファイルサイズの上限のチェックが、アップロード前のファイルサイズだったのを修正しました。
アップロード処理でファイルサイズが減少した後にファイルサイズをチェックする方式になりました。
バグ修正
- 管理者ログイン時に使うアップロードペイントアプリ固有形式、pch、chi、psdなどの不要になったファイルの自動削除機能の動作時に軽微なエラーが発生するケースがあったのを修正しました。
変更があったファイル
変更があったディレクトリ
- app/klecks/ (ディレクトリを上書きアップデート)
変更があったファイル
- index.php
- functions.php
- thumbnail_gd.php
変更があったテンプレート
- template/basic/continue.html
- template/basic/paint_klecks.html
22/03/17 v0.10.8
改善
アプリ固有ファイルのダウンロードボタンができました。
アプリ固有形式一覧
.pch
ファイル(PaintBBS).chi
ファイル(ChickenPaint).psd
ファイル(Klecks)
Klecksのレイヤー情報を含むファイルはPhotoshop形式の.psd
ファイルです。
ダウンロードした.psd
ファイルはクリスタやSAIそのほか多くのアプリで開く事ができます。
.pch
と、.chi
は、それぞれNEOとChickenPaintで開く事ができます。
管理者投稿モードでログイン時に.pch
、.chi
、.psd
を添付してペイントボタンを押せば、キャンバスに読み込んで投稿できます。
klecks更新
klecksディレクトリを上書きアップデート
- app/klecks/
変更があったファイル
- index.php
- template/basic/admin_in.html
- template/basic/continue.html
- template/basic/index.css
22/03/14 v0.10.5.1
バグ修正
- iPad+Apple Pencilでアプリのメニューが操作できなくなっていたのを修正しました。
ペイント画面から問題の発生の原因になっていたJavascriptを削除しました。
Klecks更新
- 新しいブラシが追加されました。左右対称、上下対称のミラーペインティングができるようになりました。
v0.10.5から変更があったファイル
変更があったディレクトリ
- app/klecks/
テンプレートBASIC の2つのファイル
- template/basic/paint_chi.html
- template/basic/paint_klecks.html
v0.10.3および
v0.10.5で変更されたファイルもあわせてご確認ください。
22/03/10 v0.10.5
新しいリリースの確認を簡単にするため、管理者メニューに最新のリリースのバージョンを表示します。
このバージョンの画像をクリックすると、GitHubの最新のリリースのページが開きます。
config.phpに新規設定項目を追加しました。
//管理者ページに最新のリリースのバージョンとリンクを表示する
// する: true しない: false
$latest_var = true;
// $latest_var = false;
設定項目が存在しない古いconfig.phpでは、デフォルトでtrueになります。
管理者メニューに最新のリリースの画像が表示されても構わない方は、config.phpを更新する必要はありません。
v0.10.3から変更があったファイル
- config.php
このリリースの画像を表示したくない方は新しく追加された設定項目の変更が必要ですが、このまま表示しても構わない場合は古いバージョンのconfig.phpをお使いください。 - functions.php
- index.php
テンプレート - template/basic/admin_in.html
DEMO
ダウンロード
- 下記ソースコードリンクからダウンロードできます。