POTI-boardのメタタグにリンクのタグが入ると表示されてしまう

POTI-board メタタグにリンクのタグ

上のほうに、https://pbbs.sakura.ne.jp/のURLがでてしまっていますが…。
<meta property="og:description" content="<a href="https://pbbs.sakura.ne.jp/" target="_blank">https://pbbs.sakura.ne.jp/</a>">
のようのように、og:descriptionにリンクのタグが入るとこうなります。
コメントを表示するための変数からタグを除去して、別な変数として設定する事にしました。
//メタタグに使うコメントから
//タグを除去
$descriptioncom=strip_tags($com);

// 親記事格納
$dat['oya'][$oya] = compact('src','srcname','size','painttime','pch','continue','thumb','imgsrc','w','h','no','sub','name','now','com','descriptioncom','limit','skipres','resub','url','email','id','updatemark','trip','tab','fontcolor');
// 変数クリア
unset($src,$srcname,$size,$painttime,$pch,$continue,$thumb,$imgsrc,$w,$h,$no,$sub,$name,$now,$com,$descriptioncom,$limit,$skipres,$resub,$url,$email);
タグを除去したあと、テンプレートで別な変数として使えるようにしないといけないので、変数の一覧も変更しました。
<!--{each oya}-->
<meta property="og:description" content="{$oya/descriptioncom}" />
<!--{/each}-->
のように書けばスレッドの親のコメントからタグを除去したものをテンプレートに使う事ができるようになります。
使用例。
<!--SNS-->
<!--{def sharebutton}-->
<!--{each oya}-->
<meta name="Description" content="{$oya/descriptioncom}">

<meta name="twitter:card" content="summary" />
<meta property="og:title" content="[{$oya/no}] {$oya/sub} by {$oya/name} - {$title}" />
<meta property="og:type" content="article" />
<meta property="og:url" content="{$rooturl}{$self}?res={$oya/no}" />
<!--{def oya/src}-->
<meta property="og:image" content="{$rooturl}{$oya/imgsrc}" />
<!--{/def}-->
<meta property="og:site_name" content="" />
<meta property="og:description" content="{$oya/descriptioncom}" />
<!--{/each}-->
<!--{/def}-->

<!--/SNS-->

POTI-board用テンプレート PINK を配布します。: STP^3

配布しているテンプレートはこの変数に対応しています。
タグを除去した親のコメントをTwitterカードに表示できるようになります。
このSNS用のメタタグは、config.phpでシェアボタンを使う設定しないと出てきません。
積極的にお絵かき掲示板の存在をアピールしたい人もいればひっそりと描きたい人もいる筈なので切り替えられるようにしておきました。

この変更は、POTI-board改v1.45.2 lot.181110に反映されました。

お絵かき掲示板はこちら。

POTI-boardでしぃペインターを使う時の幅と高さを変更

お絵かき掲示板交流サイトは、Googleで「しぃペインター」で検索すると上位に出てきます。
でも、Javaの有償化とか…Macで唯一の頼りだったSafariがJavaの対応を終了したり…。
おそらくもう使う事ができなくなって終わりだろう…と思っていました。
ところが、CheerpJ Applet RunnerというChromeのプラグインを使えば、動作するらしい…。
以下はお絵かき掲示板Art.netのテキスト掲示版のそとさんの書き込みを抜粋したものです。
SetEnvIfNoCase Request_URI \.jar$ no-gzip dont-vary

と、記入した.htaccessファイルを作成して、
relmフォルダに配置することで動きました。(Apache2.2)
<script>
function cheerpJLoad() {
var jEnabled = navigator.javaEnabled();
if(!jEnabled){
var sN = document.createElement("script");
sN.src = "https://cjrtnc.leaningtech.com/latest/loader.js";
var s0 = document.getElementsByTagName("script")[0];
s0.parentNode.insertBefore(sN, s0);
sN.addEventListener("load", function(){ cheerpjInit(); }, false);
}
}
window.addEventListener("load", function() { cheerpJLoad(); }, false);
</script>
今後も必要になるので転載させていただきました。
ということは、今後もJavaアプレットが動くかもしれない…という事ですね。
POTI-boardでしぃペインターを使ってみると…。

CheerpJでしぃペインター

レイヤーやテクスチャなどのパレットがキャンバスを覆ってしまいます。
窓ボタンを押せば全画面表示になりますが動的パレットを使う事ができません。
BBSNoteには、アプレットフィットボタンがあるので横幅をモニターに合わせる事ができるのですが…。

しぃペインターの時の幅と高さをPaintBBSとは違う値に設定して調整する事にしました。
// $w = $picw + 150;
if(!$useneo && $shi){
$w = $picw + 465;//しぃぺの時の幅
$h = $pich + 120;//しぃぺの時の高さ
}
else{
$w = $picw + 150;//PaintBBSの時の幅
$h = $pich + 170;//PaintBBSの時の高さ
}

CheerpJでしぃペインター CheerpJでしぃペインター

しぃペインターのパレットを快適に使うには、最低でもこれだけの幅は必要…と判断しました。
また、しぃペインターではアプレットの高さをやや低めに設定しないと、投稿ボタンがキャンバスより上の位置になるためボタンを押しにくくなってしまいます。
そのあたりも考慮しました。

この変更は、POTI-board改v1.45.2 lot.181110に反映されました。

お絵かき掲示板はこちら。

POTI-boardのエラーを減らすためにE_NOTICE削減編

Noticeが投稿時に300行以上発生していたので修正しました。
また、設置時にできる[1]を編集すると、その後の書き込みでWarningが発生するので修正しました。

数値にNULLが入るので、(int)で処理

[1]を編集すると、連続投稿の時間を計算している箇所にNULLが入りWarningが発生するので…。
//文字列を整数に
$ltime = (int)$ltime;
if(RENZOKU && $time - $ltime < RENZOKU){error(MSG020,$dest);}
if(RENZOKU2 && $time - $ltime < RENZOKU2 && $upfile_name){error(MSG021,$dest);}

数値にNULLが入るので、(int)で処理

NULLだったところがint(0)になりました。

画像にWarningが出ていますが、var_dump()で変数を確認すると出る箇所なので仕方がありません。通常の使用では発生しません。

投稿時に大量のNoticeが発生するのを修正投稿時に大量のNoticeが発生するのを修正

投稿時に大量のNoticeが発生。
ログがあまり多くなかった時にはあまり気にならなかったのですが、運営中のレス数が1600件ほどあるPOTI-boardではレスを送信するたびに300行以上のNoticeが発生しました。
// レス記事一括格納
if(isset($rres)){//未定義エラー対策
$dat['oya'][$oya]['res'] = $rres[$oya];
}

レスがついていないスレッドの数だけエラーが出るので、未定義の場合は処理しないように書き直しました。
その他、画像アップロードの時と、お絵かきの投稿の時と、文字だけの投稿の時に、それぞれ未定義になる変数が存在していたので空文字を入れるようにしました。
//未定義エラー対策
if(isset($picfile)){//お絵かきの時
$upfile=$upfile_name="";
if(!isset($resto)){$resto="";}//レスではなかった時
}
elseif(isset($upfile)){//画像アップロードの時
$pictmp=$picfile="";
if(!isset($resto)){$resto="";}
}
else{//文字だけの時
$upfile=$upfile_name=$pictmp=$picfile="";
if(!isset($resto)){$resto="";}
}
regist($name,$email,$sub,$com,$url,$pwd,$upfile,$upfile_name,$resto,$pictmp,$picfile);

htmltemplate.incの79行目で発生するNoticeも投稿時にくりかえし出てきます。
まず、var_dump()で変数の内容を確認。

投稿時に大量のNoticeが発生するのを修正
//未定義エラー対策
if(isset($match[1])){
$ind=$this->getIndex($match[1],$multilabels);
}
else{
$ind=$this->getIndex("",$multilabels);
}
($match[1]))が未定義の時は、代わりに空文字が入るようにしました。
この変更を行っても$indに入る文字列は同じである事を確認しました。

気を使った点…。
変数に空文字を入れて対処した事で動作がおかしくなっていないか?
画像アップロードに必要な変数に空文字が入れば画像がありませんとなるし、お絵かきの投稿の時に必要な変数に空文字が入ればやはり画像がありませんになってしまいます。

新規スレッドに画像アップロード、お絵かき、文字だけの投稿。
レスで画像アップロード、お絵かき、文字だけの投稿。
続きから描く、動画表示。
ひととおりテストして、運営している絵板サイトにも導入してトラブルが起きていない事を確認したので、公開版の候補にする事にしました。
それから…。
salt パラメータは必須ではありませんが、これを省略すると crypt() が作るハッシュが弱いものになってしまいます。 PHP 5.6 以降は、このパラメータを省略した場合に E_NOTICE が発生するようになりました。
time()をsaltに使い差し換え時の動作に問題がないことを確認しました。
//差し換え時の認識コード追加
if($type=='rep'){
// $repcode = substr(crypt(md5($no.getenv("REMOTE_ADDR").$pwd.date("Ymd", time()))),-8);
$repcode = substr(crypt(md5($no.getenv("REMOTE_ADDR").$pwd.date("Ymd", time())),time()),-8);
この変更は、POTI-board改v1.45.2 lot.181110に反映されました。

お絵かき掲示板はこちら。