81 $this->model = $this->_loadModel();
84 if ($this->model->content_id > 0) {
86 $this->likesQty = $this->model->likesQty;
89 $this->likes = $this->model->likes;
92 if (!Yii::app()->user->isGuest) {
93 if (!empty($this->model->likes)) {
94 $likes = $this->model->likes;
95 for ($i = 0; $i < count(
$likes); $i++) {
96 if (
$likes[$i]->user_id == Yii::app()->user->id) {
97 $this->hasLiked =
true;
104 $this->model->likes =
$likes;
108 $this->render(
'LikeWidget', array(
'model' => $this->model,
'hasLiked' => $this->hasLiked));
117 private function _loadModel()
119 $cacheId =
'likeLike_' . $this->contentId;
121 if (($model = Yii::app()->cache->get($cacheId)) ===
false) {
122 Yii::trace($this->contentId.
' IS NOT CACHED',
'Like cache');
126 $model->lastLikesQty = Yii::app()->getModule(
'like')->lastLikesQty;
127 $model->topLikesQty = Yii::app()->getModule(
'like')->topLikesQty;
128 $model->content_id = $this->contentId;
131 $model->getLikesQty();
133 $limit = intval($model->lastLikesQty + $model->topLikesQty);
136 if (Yii::app()->db->getDriverName() ==
'mysql') {
138 $dependency =
new CDbCacheDependency(
'SELECT group_concat(id, "-" ,user_id) FROM ' .
Like::model()->tableName() .
' WHERE content_id=:content_id ORDER BY createdate DESC LIMIT '.$limit);
139 $dependency->params[
'content_id'] = $this->contentId;
142 $dependency =
new CExpressionDependency(
143 'Yii::app()->db->createCommand()->select("id, user_id")->from(Like::model()->tableName())->where("content_id=:content_id", array("content_id" => "' . $this->contentId .
'"))->order("createdate DESC")->limit('.$limit.
')->queryAll()'
147 Yii::app()->cache->set($cacheId, $model, Yii::app()->getModule(
'like')->cacheTime, $dependency);
149 Yii::trace($this->contentId.
' WAS CACHED',
'Like cache');