web拍手支援cgi

各種設定変更機能を有効にする

 2008年1月27日公開のweb拍手支援cgiには各種設定変更機能が追加されている。一言メッセージ最大文字数、拍手連投最大回数、お礼メッセージのランダム設定、ログの保存期間を、直接cgiを修正することなしに、web拍手支援cgiから変更することができるようになった。しかし、当然のことながら、これを有効にするためには、web拍手cgiを改造する必要がある。

 本文書では、各種設定変更機能を有効にするための方法について説明する。

はじめに

 以下におこなう改造は、web拍手改造:web拍手支援cgiに各種設定変更機能を追加において説明されたとおりの改造がなされていることを前提としている。

 また、以下の説明で指示される行番号は、無改造のweb拍手cgiのものであることに注意して欲しい。当然のことながら、改造をおこなうことで変動する。適宜読み替えて、目的の行を見付けて欲しい。

設定値を取得する(共通)

 関数getConfig()を呼び出し、設定値を取得する。getConfig()はハッシュ(連想配列)で各種設定値を返す関数である。

clap.cgi

 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};

#---------フォームデコード

変数の説明

$hitokotomax
一言メッセージ最大文字数
$kaisuumax
拍手連投最大回数
$randomon
お礼メッセージのランダム設定値(1でランダム)
$storagelife
ログの保存期間

 変数名はこのとおりである必要はない。各自の改造状況に応じて、適宜変更していただいてかまわない。

 なお、これら変数名は過去のweb拍手改造文書において用いたものに準拠している。そのため、それら改造をしている場合は、それぞれで用いていた変数名を使うことで、改造の手間を大幅に軽減することができる。過去の改造文書は以下の四点である。

一言メッセージ最大文字数

 以下の行を改造する。

clap.cgi : 154行目

変更前
 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の場合、文字数制限は行われない。

拍手連投最大回数及びお礼メッセージのランダム設定

 拍手連投最大回数とお礼メッセージのランダム設定は一度に説明する。

clap.cgi : 138行目

変更前
#------メッセージ
$i = int(rand(5));
変更後
#------メッセージ
if ($randomon) {
    $i = int(rand($#message + 1));
} else {
    $i = $kaisuu % ($#message + 1);
    if ($kaisuumax <= $#message) {
    $kaisuumax = @message;
    }
}

clap.cgi : 146行目

変更前
#====================さらに送るフォーム&メッセージ

if ($kaisuu < 9){

 $kaisuu ++;
変更後
#====================さらに送るフォーム&メッセージ

if ($kaisuu < $kaisuumax - 1){

 $kaisuu ++;

clap.cgi : 159行目

変更前
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) {

ログの保存期間

 以下の行を改造する。

clap.cgi : 60行目

変更前
 $day = 14;
 & dateload;
変更後
 $day = $storagelife;
 & dateload;

kaiseki.cgi : 17行目

行追加。サーバによっては、clapmod.plへのパスを絶対パスに変更する必要があることに注意。

変更前
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require 'jcode.pl';
require 'clapinit.cgi';

#----------パラメータを取得
変更後
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require 'jcode.pl';
require 'clapinit.cgi';
require 'clapmod.pl';
%config = &getConfig();
$storagelife = $config{log_storage_life};

#----------パラメータを取得

kaiseki.cgi : 24行目

変更前
#----------パラメータの日付が遠すぎないかチェック
if ($logday > 13) {$logday = 0;}
if ($logday eq '') {$logday = 0;}
変更後
#----------パラメータの日付が遠すぎないかチェック
if ($logday >= $storagelife) {$logday = 0;}
if ($logday eq '') {$logday = 0;}

kaiseki.cgi : 52行目

変更前
#---------過去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;
}

kaiseki.cgi : 56行目

変更前
for ($i=1 ; $i<=13 ; $i++){
変更後
for ($i=1 ; $i < $storagelife ; $i++){

kaiseki.cgi : 132行目

変更前
#---------------------過去2週間のグラフと別の日へのリンク
print "過去14日間の解析<br>";
print "<table border>¥n";
変更後
#---------------------過去2週間のグラフと別の日へのリンク
print "過去$storagelife日間の解析<br>";
print "<table border>¥n";

kaiseki.cgi : 136行目

変更前
#---------------グラフ
for ($i=0 ; $i<=13 ; $i++){
変更後
#---------------グラフ
for ($i=0 ; $i < $storagelife ; $i++){

kaiseki.cgi : 150行目

変更前
#--------------数値
print "<tr>¥n";

for ($i=0 ; $i<=13 ; $i++){
変更後
#--------------数値
print "<tr>¥n";

for ($i=0 ; $i < $storagelife ; $i++){

kaiseki.cgi : 159行目

変更前
#-------------日にちとリンク
print "<tr>¥n";

for ($i=0 ; $i<=13 ; $i++){
変更後
#-------------日にちとリンク
print "<tr>¥n";

for ($i=0 ; $i < $storagelife ; $i++){

kaiseki.cgi : 298行目

変更前
 $day = 14;
 & dateload; 
変更後
 $day = $storagelife;
 & dateload; 

 $storagelifeの値がログの保存期間となる。この数値より古い日数のログは削除されてしまう。削除されたログを取り戻すことはできないので、くれぐれもご注意いただきたい。

 改造については以上である。各改造が具体的になにをしているかについては、過去に公開されたweb拍手改造文書を参照していただきたい。

一言メッセージ最大文字数
web拍手改造:一言メッセージ文字数を増やす
拍手連投最大回数
web拍手改造:連投規制を緩和する
web拍手改造:これまでのまとめと整理 その二
お礼メッセージのランダム設定
web拍手改造:お礼メッセージを順番通り表示する
web拍手改造:これまでのまとめと整理 その一
ログの保存期間
web拍手改造:ログ保存期間を変更する 解説編
web拍手改造:ログ保存期間を変更する 改造編

<   >

わたしの愛した機械へ トップページに戻る

公開日:2008.01.28
最終更新日:2008.01.31
webmaster@kototone.jp
Creative Commons License
こととねは、クリエイティブ・コモンズ・ライセンス(表示 - 継承 2.1 日本)の下でライセンスされています。