2008年1月27日公開のweb拍手支援cgiには各種設定変更機能が追加されている。一言メッセージ最大文字数、拍手連投最大回数、お礼メッセージのランダム設定、ログの保存期間を、直接cgiを修正することなしに、web拍手支援cgiから変更することができるようになった。しかし、当然のことながら、これを有効にするためには、web拍手cgiを改造する必要がある。
本文書では、各種設定変更機能を有効にするための方法について説明する。
以下におこなう改造は、web拍手改造:web拍手支援cgiに各種設定変更機能を追加において説明されたとおりの改造がなされていることを前提としている。
また、以下の説明で指示される行番号は、無改造のweb拍手cgiのものであることに注意して欲しい。当然のことながら、改造をおこなうことで変動する。適宜読み替えて、目的の行を見付けて欲しい。
関数getConfig()を呼び出し、設定値を取得する。getConfig()はハッシュ(連想配列)で各種設定値を返す関数である。
17行目あたり、フォームデコードの付近に以下を追加する。
require './clapmod.pl';
@message = &getMessages();
%config = &getConfig();
$hitokotomax = $config{message_max_length};
$kaisuumax = $config{clap_max_number};
$randomon = $config{random_switch};
$storagelife = $config{log_storage_life};
#---------フォームデコード
変数名はこのとおりである必要はない。各自の改造状況に応じて、適宜変更していただいてかまわない。
なお、これら変数名は過去のweb拍手改造文書において用いたものに準拠している。そのため、それら改造をしている場合は、それぞれで用いていた変数名を使うことで、改造の手間を大幅に軽減することができる。過去の改造文書は以下の四点である。
以下の行を改造する。
print '<font size=2>ついでに一言あればどうぞ(拍手だけでも送れます)<br>',"¥n";
print '<input type=text name=hitokoto size=50 maxlength=50><br>',"¥n";
print '</FORM>',"¥n";
print '<font size=2>ついでに一言あればどうぞ(拍手だけでも送れます)<br>',"¥n";
if ($hitokotomax) {
print '<input type=text name=hitokoto size=50 maxlength='.$hitokotomax.'><br>',"¥n";
} else {
print '<input type=text name=hitokoto size=50><br>',"¥n";
}
print '</FORM>',"¥n";
$hitokotomaxの値が一言メッセージの最大文字数となる。$hitokotomaxが0の場合、文字数制限は行われない。
拍手連投最大回数とお礼メッセージのランダム設定は一度に説明する。
#------メッセージ
$i = int(rand(5));
#------メッセージ
if ($randomon) {
$i = int(rand($#message + 1));
} else {
$i = $kaisuu % ($#message + 1);
if ($kaisuumax <= $#message) {
$kaisuumax = @message;
}
}
#====================さらに送るフォーム&メッセージ
if ($kaisuu < 9){
$kaisuu ++;
#====================さらに送るフォーム&メッセージ
if ($kaisuu < $kaisuumax - 1){
$kaisuu ++;
print '<font size=2>いたずら防止のため、10回以上連続で拍手を送れないようになっています。</font>';
print '<font size=2>いたずら防止のため、',$kaisuumax,'回以上連続で拍手を送れないようになっています。</font>';
$kaisuumaxの値が拍手連投最大回数となる。お礼メッセージがランダム表示ではなく、かつ拍手連投最大回数がメッセージ総数に満たない場合には、メッセージ総数が$kaisuumaxに設定される。
$randomonが1の場合(チェックされている場合)、お礼メッセージはランダムで表示され、0の場合(チェックがはずれている場合)には、メッセージは順番に表示される。この挙動は、web拍手改造:これまでのまとめと整理 その一での改造例とは逆になっている。ifの判定条件が変わっており、以前は$randomonが0である場合に真であったものが、今回は0だと偽と判断される。ここは見落としやすい箇所だと思われる。ご注意いただきたい。
if ($randomon eq 0){
if ($randomon) {
以下の行を改造する。
$day = 14;
& dateload;
$day = $storagelife;
& dateload;
行追加。サーバによっては、clapmod.plへのパスを絶対パスに変更する必要があることに注意。
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require 'jcode.pl';
require 'clapinit.cgi';
#----------パラメータを取得
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require 'jcode.pl';
require 'clapinit.cgi';
require 'clapmod.pl';
%config = &getConfig();
$storagelife = $config{log_storage_life};
#----------パラメータを取得
#----------パラメータの日付が遠すぎないかチェック
if ($logday > 13) {$logday = 0;}
if ($logday eq '') {$logday = 0;}
#----------パラメータの日付が遠すぎないかチェック
if ($logday >= $storagelife) {$logday = 0;}
if ($logday eq '') {$logday = 0;}
#---------過去14日分のトータル抽出
@pasttotal = (0,0,0,0,0,0,0,0,0,0,0,0,0,0);
#---------過去14日分のトータル抽出
for ($i = 0; $i < $storagelife; $i++) {
$pasttotal[$i] = 0;
}
for ($i=1 ; $i<=13 ; $i++){
for ($i=1 ; $i < $storagelife ; $i++){
#---------------------過去2週間のグラフと別の日へのリンク
print "過去14日間の解析<br>";
print "<table border>¥n";
#---------------------過去2週間のグラフと別の日へのリンク
print "過去$storagelife日間の解析<br>";
print "<table border>¥n";
#---------------グラフ
for ($i=0 ; $i<=13 ; $i++){
#---------------グラフ
for ($i=0 ; $i < $storagelife ; $i++){
#--------------数値
print "<tr>¥n";
for ($i=0 ; $i<=13 ; $i++){
#--------------数値
print "<tr>¥n";
for ($i=0 ; $i < $storagelife ; $i++){
#-------------日にちとリンク
print "<tr>¥n";
for ($i=0 ; $i<=13 ; $i++){
#-------------日にちとリンク
print "<tr>¥n";
for ($i=0 ; $i < $storagelife ; $i++){
$day = 14;
& dateload;
$day = $storagelife;
& dateload;
$storagelifeの値がログの保存期間となる。この数値より古い日数のログは削除されてしまう。削除されたログを取り戻すことはできないので、くれぐれもご注意いただきたい。
改造については以上である。各改造が具体的になにをしているかについては、過去に公開されたweb拍手改造文書を参照していただきたい。
< web拍手改造:web拍手支援cgiに各種設定変更機能を追加 web拍手支援cgi:各種設定変更機能について >