tbl_poll にある dt_xxx field (datetime) について解説する。 以下の4つがある。 ------------------------------------- 1. dt_end 2. dt_user 3. dt_acnt 4. dt_sort ------------------------------------- これらは最後のupdateした日時を記録する。 テストのために、update を強制的に起こしたい場合は、 そのフィールドにnullを設定する。 これらの field は web/lib/app/CDDriver.class.php で処理される。 ============================================================================ dt_end ---------------------------------------------------------------------------- 設定ファイルにある $cfg["end-date"] を過ぎたら、 時刻を記録して stop 状態になる。 しかし、$cfg["end-date"] を変更することで restart することもできる。 これらのロジックは、CDDriver::getPollState()内で行われる。 $cfg["end-date"] と $rs["dt_end"] の関係で、 以下の4つのstateに分類される。 ---------------------------------------------------------------------------- 1 inactive 2 active 3 stop 4 restart ---------------------------------------------------------------------------- これらのstateに対して、以下のコードで、どう対処するか決める。 ---------------------------------------------------------------------------- switch ( $pstate ) { case "inactive": $state = 0; return; case "active": $state = 1; $force_update = false; break; case "stop": $state = 0; $force_update = true; break; case "restart": $state = 1; $force_update = true; break; } ---------------------------------------------------------------------------- ============================================================================ dt_user ---------------------------------------------------------------------------- ユーザーにresetは毎日行われる。これは設定ファイルではなく ハードコードされている。 ---------------------------------------------------------------------------- private static function needUpdateUser() { if ( !isset(self::$cfg["user-period"]) ) { self::$cfg["user-period"] = "ed"; } return self::needFunc("user"); } ---------------------------------------------------------------------------- ============================================================================ dt_acnt ---------------------------------------------------------------------------- dt_acnt のアップデートは v4 で disable された。 累積という考え方は、もはやない。 vcntがキャンセルされたことはない。 設定ファイルにある $cfg["acnt-days"] は、もうどこにも参照されていない。 ============================================================================ dt_sort ---------------------------------------------------------------------------- ソートは、総数を使って並べる。アップデートする際は、設定ファイルの $cfg["vbtypes"] を 用いて、総数を計算する。 ---------------------------------------------------------------------------- $cfg["vbtypes"] = array( "suki"=>100, "futsuu"=>0, "kirai"=>-100, ); ---------------------------------------------------------------------------- ソート終了後、以下のフォーマットで、poll のレコードの lst field に text として保存する。 ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- inu:14 neko:45 hiyoko:130 ---------------------------------------------------------------------------- CDDrive::setupScoreAndLstx($lst) はこのテキストを array に変換する。 実際のソートは、CDDrive::rearrange( &$items ) で行われる。 ============================================================================