File indexing completed on 2024-12-22 05:33:23
0001 <?php 0002 0003 /* 0004 * TRT GFX 3.0.1 (beta build) BackToSlash 0005 * 0006 * support: happy.snizzo@gmail.com 0007 * website: http://trt-gfx.googlecode.com 0008 * credits: Claudio Desideri 0009 * 0010 * This software is released under the MIT License. 0011 * http://opensource.org/licenses/mit-license.php 0012 */ 0013 0014 0015 class OCSComment{ 0016 0017 public $id; 0018 public $owner; 0019 public $type; 0020 public $content; 0021 public $content2; 0022 public $parent; 0023 public $votes; 0024 public $score; 0025 public $subject; 0026 public $message; 0027 0028 0029 private $ocs_comment; 0030 private $data; 0031 0032 0033 /* 0034 * Enabling main to be on a global context. 0035 */ 0036 public function __construct(){ 0037 $this->ocs_comment = new EModel("ocs_comment"); 0038 } 0039 0040 /* 0041 * Load into memory a content from table ocs_content 0042 */ 0043 public function load($id){ 0044 if($this->ocs_comment->is_there("id","id=$id")) { 0045 $r = $this->ocs_comment->find("*", "where id=$id LIMIT 1"); 0046 $this->id = $id; 0047 $this->type = $r[0]["type"]; 0048 $this->owner = $r[0]["owner"]; 0049 $this->content = $r[0]["content"]; 0050 $this->content2 = $r[0]["content2"]; 0051 $this->parent = $r[0]["parent"]; 0052 $this->votes = $r[0]["votes"]; 0053 $this->score = $r[0]["score"]; 0054 $this->subject = $r[0]["subject"]; 0055 $this->message = $r[0]["message"]; 0056 $this->date = $r[0]["date"]; 0057 return true; 0058 } else { 0059 return false; 0060 } 0061 } 0062 0063 /* 0064 * Checks if the current loaded comment is owned by $id 0065 */ 0066 public function is_owned($id){ 0067 if($this->owner == $id){ 0068 return true; 0069 } else { 0070 return false; 0071 } 0072 } 0073 0074 /* 0075 * This function returns the associated id for the selected content 0076 */ 0077 public function id(){ 0078 return $this->id; 0079 } 0080 0081 /* 0082 * Return the number of people who has performed a vote action on this object. 0083 */ 0084 public function votes(){ 0085 return $this->votes; 0086 } 0087 0088 /* 0089 * Returns the weighted score for this object. 0090 */ 0091 public function score(){ 0092 return $this->score; 0093 } 0094 0095 /* 0096 * Saving the ram rapresentation into memory (database). 0097 */ 0098 public function save_to_db(){ 0099 //TODO: implement unique name. 0100 0101 //saving 0102 EDatabase::q("INSERT INTO ocs_comment (type,owner,content,content2,parent,votes,score,subject,message) VALUES ('".$this->type."',".$this->owner.",".$this->content.",'".$this->content2."','".$this->parent."','".$this->votes."','".$this->score."','".$this->subject."','".$this->message."')"); 0103 $this->id = $id = EDatabase::last_insert_id(); 0104 return $id; 0105 } 0106 0107 /* 0108 * Setting id of the owner of the content. 0109 */ 0110 public function set_owner($owner){ 0111 $this->owner = $owner; 0112 } 0113 0114 /* 0115 * Manually setting internal data. 0116 */ 0117 public function set_data($data){ 0118 // assuring those are not evil data to be used as SQL injections 0119 EDatabase::safe($data); 0120 //data validations 0121 if(!isset($data['type'])){ $this->type = 1; } else { $this->type = $data['type']; } 0122 if(!isset($data['owner'])){ $this->owner = 0; /* anonymous */ } else { $this->owner = $data['owner']; } 0123 if(!isset($data['content'])){ $this->content = ""; } else { $this->content = $data['content']; } 0124 if(!isset($data['content2'])){ $this->content2 = ""; } else { $this->content2 = $data['content2']; } 0125 if(!isset($data['parent'])){ $this->parent = ""; } else { $this->parent = $data['parent']; } 0126 if(!isset($data['votes'])){ $this->votes = ""; } else { $this->votes = $data['votes']; } 0127 if(!isset($data['score'])){ $this->score = ""; } else { $this->score = $data['score']; } 0128 if(!isset($data['subject'])){ $this->subject = ""; } else { $this->subject = $data['subject']; } 0129 if(!isset($data['message'])){ $this->message = ""; } else { $this->message = $data['message']; } 0130 if(!isset($data['data'])){ $this->data = date(" j/n/Y H:i:s "); } 0131 } 0132 0133 /* 0134 * Set a weighted score to the content. 0135 */ 0136 public function set_score($score){ 0137 //acquiring data 0138 $oldmedia = $this->score; 0139 $newscore = $score; 0140 0141 $oldvotes = $this->votes; 0142 $newvotes = $this->votes + 1; 0143 //calculating new media 0144 $newmedia = ($oldmedia * $oldvotes + $newscore) / ($newvotes); 0145 0146 //setting new infos to local memory object 0147 $this->score = $newmedia; 0148 $this->votes = $newvotes; 0149 0150 //updating db 0151 EDatabase::q("UPDATE ocs_comment SET score=".$this->score.", votes=".$this->votes." WHERE id=".$this->id." LIMIT 1"); 0152 0153 } 0154 0155 } 0156 0157 0158 ?>