2009-09-02 10 views
1

私は、ユーザが任意のタイプのコンテンツを悪いと報告するために使用できるphpレポートライブラリを構築(または検索)したいと思います。実際には、彼らは良い(私は推測システムを意味するだろうと思う)がさらに良いだろうとコンテンツを報告することができれば。だから誰かがこのような図書館を知っているなら、それについて聞いてみたいと思う。ユーザ報告ライブラリ

とにかく、これはデータベースの動作を想像していますが、これが正しいかどうかを知りたいと思います。

  1. ID - 行
  2. USER_IDのID - レポートユーザー投票のID/
  3. ITEM_ID - (ポスト、他のユーザ、リンク、など)報告項目のUNIQUEテーブル行ID
  4. TYPE - これはに関連するテーブルの名前(投稿、ユーザー、リンク、等...)
  5. DATE - レポートの日時
  6. VALUE - 私はこれがUP票またはDOWNの投票
  7. 可能性が推測

[TYPE]列を含めることで、この投票システムを自分のサイトのすべてのコンテンツタイプ(フォーラム投稿のようなもの)ではなく1つだけで使用できます。 user_idを格納することで、1人のユーザーにつき1つの投票/レポートだけがキャストされることが保証されます。

+1

これは、それはおそらくだと、十分なシンプルなものの一つ、十分なアプリケーション固有のものである:ここでは誰にもARは、DBは、CodeIgniterのかMicroMVCのように呼び出すスタイルサポートするMVCでそれを使用したい包みコードがありますあなた自身で簡単に構築できます。一般的なフレームワークやプラットフォームを使用している場合を除き、モジュールが存在する可能性がありますが、使用するフレームワーク/プラットフォームを指定する必要があります –

答えて

1

さて、私は先に進み、私が言ったようにそれを作りました。フランクはそうだった、それほど難しくはなかった。

/* 
* Multi-table user voting model 
*/ 
class votes extends model { 

    public static $table = 'votes'; 


    function cast($user_id = NULL, $item_id = NULL, $type = NULL, $vote = TRUE) { 

     $where = array(
      'user_id' => $user_id, 
      'item_id' => $item_id, 
      'type'  => $type 
     ); 

     //Try to fetch this row 
     $row = $this->db->get_where(self::$table, $where); 

     //Look for an existing vote row 
     if($row && ! empty($row[0])) { 

      //Fetch row 
      $row = $row[0]; 

      //If they already voted this way... then we're done! 
      if($row->vote == $vote) { 
       return; 
      } 

      //Else update the row to the new vote 
      $row->vote = $vote; 
      $row->date = convert_time(time()); 

      $this->db->update(self::$table, $row, array('id' => $row->id)); 

      return; 
     } 

     //Else create a new vote for this item 
     $row = array(
      'user_id' => $user_id, 
      'item_id' => $item_id, 
      'type'  => $type, 
      'date'  => convert_time(time()), 
      'vote'  => $vote, 
     ); 

     $this->db->insert(self::$table, $row); 
    } 
} 
関連する問題