Advanced Poll

ページにアンケートボックスを追加するPHPライブラリの日本語対応、およびインストールのメモ。仕様書がきちんと書かれていないので、仕様メモも。

ダウンロード

http://proxy2.de/の Free Scripts より Advanced Poll の最新版をダウンロード。

インストール

  1. ダウンロードしたzipファイルを解凍すると、dbとtextfileというディレクトリが作成される。dbの下にはMySQLまたはPostgreSQLを使用するバージョンが、textfileの下にはDBにテキストファイルを使用するバージョンが置かれている。
    今回はテキスト版を使用。textfile以下のファイルを、ディレクトリ構成そのまますべてサーバ上に転送する。
    DB版はインストールしたことがないので、詳細不明。基本的には、readme.txtファイルに書かれた手順どおりで失敗しないはず。

     

  2. ファイルパーミッションを次のように変更。

    • polldata – 777
    • polldata配下の全ファイル – 666
    • templates – 777
    • templates配下の全ディレクトリ – 777
    • templates配下の全ファイル – 666
    • graphic – 777
    • graphic配下の全ファイル – 777
    • include – 755
    • include/config.inc.php – 666
  3. Web経由で、インストールしたディレクトリの下にあるadminディレクトリを開き(例: http://www.yourdomain.com/poll/admin/)ユーザ名に「admin」、パスワードに「poll」を指定してログインし、ユーザ名とパスワードを変更。
  4. General Settings の Language に japanese_euc を指定して Submit Settings をクリックすると、管理画面が日本語化される。
  5. ヘルプのページに、アンケートをWebページに組み込むためのPHPコードが書かれているので、それをコピーして利用する。
  6. その他、必要に応じて一般設定のページでタイトルやボタンの日本語化をしたり、テンプレートで表示時のHTMLタグを編集したりする。

日本語対応

テキスト版でコメント機能を使用すると、データベース格納時のセパレータに0xA1を使用しているため、コメントが日本語のような2バイトコードのときにテキストを破壊してしまう。これを防ぐため、セパレータに “<>” を使用するよう変更。

DB版を使用する場合には、たぶんそのままで日本語が使えると思う(でも、未確認)。

  • admin/admin_comment.phpの80行目を次のように変更。

    if (ereg("^[0-9]+<>.+<>.*<>.+<>.*<>.+",$comment_array[$i])) {
    
  • include/class_pollcomment.phpの70行目を次のように変更。

    $strg = str_replace("<>","",$strg);
    
  • include/class_pollcomment.phpの104行目を次のように変更。

    list($time,$host,$browser,$name,$email,$message) = spllit("<>",$this->comment_array[$poll_id][$i]);
    
  • include/class_pollcomment.phpの103行目を次のように変更。

    if ereg("^[0-9]+<>.+<>.*<>.+<>.*<>.+",$this->comment_array[$poll_id][$i])) {
    
  • include/class_pollcomment.phpの316行目を次のように変更。
    $entry = "$this_time"."<>"."$host"."<>"."$agent"."<>"."$name"."<>"."$email"."<>"."$message¥n";
    

ポップアップの結果ウィンドウにコメント表示

結果をポップアップウィンドウで表示するテンプレートがあるが、ポップアップウィンドウ内にコメントを表示する機能がない。コメント表示のためには、プログラムに手を入れる必要あり。

  1. booth.phpの30行目に次の行を追加。

    require $include_path."/include/class_pollcomment.php";
    
  2. booth.phpの31行目にある “new poll();” の行を次のように変更。

    $php_poll = new pollcomment();
    
  3. popup.phpの22行目に次の行を追加。

    $php_poll->comment_process($poll_ident);
    $php_poll->set_template("poll_comment");
    $php_poll->set_comments_per_page(5);
    $php_poll->set_date_format("Y/m/d(D) H:i");
    $php_poll->data_order_by("time","desc");
    echo $php_poll->view_poll_comments($poll_ident);
    echo $php_poll->get_comment_pages($poll_ident);
    

バー種類の追加

アンケート結果をバー表示することができるが、標準のバーだとちょっと色がきつくて個人的には好みでない。このため、MA-FAからiMac風のバーを拾って組み込んで利用。

  1. プログラムに手を入れずに画像のみ入れ替えるには、imageディレクトリの下の次のファイルを好みのものに差し替える。

    • aqua.gif
    • blue.gif
    • brown.gif
    • darkgreen.gif
    • gold.gif
    • orange.gif
    • pink.gif
    • purple.gif
    • red.gif
    • yellow.gif
  2. 画像を追加する場合には、プログラムを改造する必要がある。今回は次の7色を追加。このファイルをimageディレクトリの下にコピー(MA-FAからダウンロードしたものを、自分でファイル名変更)。

    • mac_aqua.gif
    • mac_blue.gif
    • mac_gold.gif
    • mac_gray.gif
    • mac_green.gif
    • mac_purple.gif
    • mac_red.gif

    次のファイルを編集。

    • language/japanese_euc.phpの176行目に次の行を追加。

      $color_array[12] = "mac_gray";
      $color_array[13] = "mac_gold";
      $color_array[14] = "mac_red";
      $color_array[15] = "mac_purple";
      $color_array[16] = "mac_blue";
      $color_array[17] = "mac_aqua";
      $color_array[18] = "mac_green";
      
    • admin/index.phpの118行目に次の行を追加。

      ,"mac_gray", "mac_gold", "mac_red", "mac_purple", "mac_blue", "mac_aqua", "mac_green
      
    • admin/admin_edit.phpの17行目に次の行を追加。

      ,"mac_gray", "mac_gold", "mac_red", "mac_purple", "mac_blue", "mac_aqua", "mac_green
      

コメント入力まわりのメッセージ日本語化

コメント入力フォーム自体の日本語化は、管理者パネルのテンプレート編集でCommentを編集して行う。

入力後のメッセージは、Advanced Pollをインストールしたディレクトリにあるcomment.php内のprint_message()関数の引数を書き換えて変更。

pollクラス仕様

内部的にのみ使用してそうな関数は省略して列挙。

set_template_set([$template_set])
使用するテンプレート名を設定。引数を省略した場合には、defaultが設定される。
set_display_order([$display_order])

結果表示順を指定。

  • “asc” : 昇順
  • “desc” : 降順
  • 省略 : 項目名設定順
set_display_result($result)

結果を投票数で表示するか、パーセント表示するかを設定。

  • “votes” : 投票数
  • “percent” : パーセント
set_max_bar_length($max_bar_length)
結果バーの最大幅
set_max_bar_height($max_bar_height)
結果バーの最大の高さ
get_poll_stat($poll_id)

$poll_idで指定したアンケートの状態を連想配列で返す。配列のキーは下記。

  • question : アンケートの質問内容
  • timestamp : アンケート作成日時
  • exp_time : 期限切れとなる日時
  • expire : 期限付きかどうか (0: 無期限、1: 期限あり)
  • status : 現在状態 (0: 期限切れ、1: 有効)
  • comments : コメント許可しているか (0: 禁止、1: 許可)
get_poll_list()
現在定義されているアンケートのIDを配列で返す。
get_poll_question($poll_id)
$poll_idで指定されたアンケートの質問内容をテキストで返す。
view_poll_result($poll_id [, $vote_stat])
$poll_idで指定されたアンケートの結果表示のためのテキストを返す。$vote_statは、投票ボタンのHTMLを$VOTEに設定するかどうかを0または1で指定する。1のとき設定する。
get_random_poll_id()
現在有効なアンケートの中から、ランダムにIDを選んで返す。
get_latest_poll_id()
最新(もっとも最近定義した)アンケートのIDを返す。
is_valid_poll_id($poll_id)
$poll_idが有効なアンケートIDかどうかをチェック。アンケートが存在する場合にtrueが返される。
has_voted($poll_id)
クッキーに投票済みと設定されているかどうかをチェック。
is_active_poll_id($poll_id)
$poll_idが有効なアンケートIDかどうかをチェック。アンケートが存在し、かつ期限が切れていない(期限なし、または期限内)場合にtrueが返される。
poll_process($poll_id)
$poll_idで指定したアンケートの内容を表示するためのテキストを返す。アンケートが期限切れかどうかをチェックし、期限切れなら結果を、期限なしまたは期限内ならアンケート内容。$poll_idにはIDの他に “newest” または “random” を指定可。”newest” が指定された場合には最新アンケート、”random” が指定された場合には利用可能なアンケートの中からランダムで表示。

pollcommentクラス仕様

pollクラスを継承。pollクラスの関数に加え、下記の関数が使用可能。

set_comments_per_page($records)
1ページに表示するコメント数を$recordsで指定された数に設定。
set_form_error($error_msg_arr)

エラーメッセージを連想配列$error_msg_arrで指定されたものに設定する。指定可能な配列キーは下記。

  • “name” : 名前欄が空欄のときのエラーメッセージ
  • “email” : e-mail欄が空欄のときのエラーメッセージ
  • “message” : コメント欄が空欄のときのエラーメッセージ
data_order_by($by, $order)
コメント表示の並べ替え方を指定。$byには並べ替えのキーを “time”、”name”、”email”、”host”、”browser”、”message” のいずれかで指定。$orderには並べ替え順を “asc” (昇順)、”desc” (降順)のいずれかで指定。
get_total_comments($poll_id)
コメント総数を数字で返す。
get_comment_pages($poll_id [, $max_pages [, $separate]])
1ページにコメントを表示しきれなかった場合の、ページ移動用のナビゲーション表示のためのテキストを返す。$max_pagesで指定したページ数を上限とし、それ以上のページがあれば「more..」と表示。$max_pagesを省略した場合は、10ページが上限。$separateで別ページへのリンク間のセパレータを指定可能。省略時は「|」。
set_date_format($date_strg)
コメント日時表示の形式をテキストで指定。ここで指定したテキストをdate()関数に渡して整形するため、指定形式はdate()関数に準ずる。
view_poll_comments($poll_id)
$poll_idで指定されたアンケートのコメント表示のためのテキストを返す。set_comments_per_page()で設定されたコメント数のみ表示される。
set_template($title)
$titleで指定したテンプレートに設定する。

plistクラス仕様

pollcommentクラスを継承。pollクラス、pollcommentクラスの関数に加え、下記の関数が使用可能。

view_poll_list()
アンケート一覧を表示するためのテキストを返す。
set_polls_per_page($records)
1ページに表示するアンケート数を$recordsで指定した数に設定。
get_total_polls()
アンケート総数を数字で返す。
get_list_pages([$max_pages [, $separate]])
1ページにアンケートを表示しきれなかった場合の、ページ移動用のナビゲーション表示のためのテキストを返す。$max_pagesで指定したページ数を上限とし、それ以上のページがあれば「more..」と表示。$max_pagesを省略した場合は、10ページが上限。$separateで別ページへのリンク間のセパレータを指定可能。省略時は「|」。

関連リンク

タイトルとURLをコピーしました