1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114:
<?php
class CommentsDAO
{
private static $comments_cache;
private static $db_querier;
public static function __static()
{
self::$comments_cache = CommentsCache::load();
self::$db_querier = PersistenceContext::get_querier();
}
public static function delete_comments_by_topic($id_topic)
{
$condition = "WHERE id_topic = :id_topic";
$parameters = array('id_topic' => $id_topic);
self::$db_querier->delete(DB_TABLE_COMMENTS, $condition, $parameters);
}
public static function delete_comments_topic_module($module_id, $id_in_module)
{
$condition = "WHERE module_id = :module_id AND id_in_module = :id_in_module";
$parameters = array('module_id' => $module_id, 'id_in_module' => $id_in_module);
self::$db_querier->delete(DB_TABLE_COMMENTS, $condition, $parameters);
}
public static function delete_comments_module($id_topics)
{
if ($id_topics)
{
$condition= 'WHERE id_topic IN (' . implode(',', $id_topics) . ')';
$parameters= array('id_topics'=> $id_topics);
self::$db_querier->delete(DB_TABLE_COMMENTS, $condition, $parameters);
}
}
public static function delete_comment($comment_id)
{
$condition = "WHERE id = :id";
$parameters = array('id' => $comment_id);
self::$db_querier->delete(DB_TABLE_COMMENTS, $condition, $parameters);
}
public static function get_user_id_posted_comment($comment_id)
{
$comment = self::$comments_cache->get_comment($comment_id);
return $comment['user_id'];
}
public static function get_last_comment_added($user_id)
{
if ($user_id !== '-1')
{
return self::$db_querier->get_column_value(DB_TABLE_COMMENTS, 'MAX(timestamp)', 'WHERE user_id=:user_id', array('user_id' => $user_id));
}
else
{
return self::$db_querier->get_column_value(DB_TABLE_COMMENTS, 'MAX(timestamp)', 'WHERE user_ip=:user_ip', array('user_ip' => AppContext::get_request()->get_ip_address()));
}
}
public static function get_number_comments($module_id, $id_in_module, $topic_identifier)
{
$comments = self::$comments_cache->get_comments_by_module($module_id, $id_in_module, $topic_identifier);
if (!empty($comments))
{
return count($comments);
}
return 0;
}
public static function comment_exists($comment_id)
{
return self::$comments_cache->comment_exists($comment_id);
}
public static function add_comment($id_topic, $message, $user_id, $pseudo, $user_ip)
{
$columns = array(
'id_topic' => $id_topic,
'user_id' => $user_id,
'pseudo' => TextHelper::htmlspecialchars($pseudo),
'user_ip' => TextHelper::htmlspecialchars($user_ip),
'timestamp' => time(),
'message' => $message
);
$result = self::$db_querier->insert(DB_TABLE_COMMENTS, $columns);
return $result->get_last_inserted_id();
}
public static function edit_comment($comment_id, $message)
{
$columns = array(
'message' => $message
);
$condition = "WHERE id = :id";
$parameters = array(
'id' => $comment_id
);
self::$db_querier->update(DB_TABLE_COMMENTS, $columns, $condition, $parameters);
}
}
?>