From d604951300a40148521685612a64c42eb7a6ca35 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Sun, 5 Aug 2012 15:54:48 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B5?= =?UTF-8?q?=20=D0=BB=D1=8E=D0=B4=D0=B5=D0=B9=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BB=D0=B8=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=82=20=D1=82=D0=B5=D0=BA=D1=83=D1=89?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20=D0=BE=20=D1=8E=D0=B7=D0=B5?= =?UTF-8?q?=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/actions/ActionProfile.class.php | 2 +- classes/modules/comment/Comment.class.php | 2 +- classes/modules/user/User.class.php | 45 ++++++++++++++++++- .../modules/user/entity/User.entity.class.php | 13 ++++++ .../modules/user/mapper/User.mapper.class.php | 27 +++++++++++ templates/skin/synio/user_list.tpl | 4 ++ 6 files changed, 90 insertions(+), 3 deletions(-) diff --git a/classes/actions/ActionProfile.class.php b/classes/actions/ActionProfile.class.php index 4e19d79f..67309438 100644 --- a/classes/actions/ActionProfile.class.php +++ b/classes/actions/ActionProfile.class.php @@ -1285,7 +1285,7 @@ class ActionProfile extends Action { * Заметка текущего пользователя о юзере */ if ($this->oUserCurrent) { - $this->Viewer_Assign('oUserNote',$this->User_GetUserNote($this->oUserProfile->getId(),$this->oUserCurrent->getId())); + $this->Viewer_Assign('oUserNote',$this->oUserProfile->getUserNote()); } $this->Viewer_Assign('iCountFriendsUser',$this->User_GetCountUsersFriend($this->oUserProfile->getId())); diff --git a/classes/modules/comment/Comment.class.php b/classes/modules/comment/Comment.class.php index 4628a71d..86275242 100644 --- a/classes/modules/comment/Comment.class.php +++ b/classes/modules/comment/Comment.class.php @@ -133,7 +133,7 @@ class ModuleComment extends Module { */ $aTargets=array(); //$aTargets['topic']=isset($aAllowData['target']) && is_array($aAllowData['target']) ? $this->Topic_GetTopicsAdditionalData($aTargetId['topic'],$aAllowData['target']) : $this->Topic_GetTopicsAdditionalData($aTargetId['topic']); - $aTargets['topic']=$this->Topic_GetTopicsAdditionalData($aTargetId['topic'],array('blog'=>array('owner'=>array()))); + $aTargets['topic']=$this->Topic_GetTopicsAdditionalData($aTargetId['topic'],array('blog'=>array('owner'=>array()),'user'=>array())); $aVote=array(); if (isset($aAllowData['vote']) and $this->oUserCurrent) { $aVote=$this->Vote_GetVoteByArray($aCommentId,'comment',$this->oUserCurrent->getId()); diff --git a/classes/modules/user/User.class.php b/classes/modules/user/User.class.php index a012ca13..3d60d41f 100644 --- a/classes/modules/user/User.class.php +++ b/classes/modules/user/User.class.php @@ -117,7 +117,7 @@ class ModuleUser extends Module { */ public function GetUsersAdditionalData($aUserId,$aAllowData=null) { if (is_null($aAllowData)) { - $aAllowData=array('vote','session','friend','geo_target'); + $aAllowData=array('vote','session','friend','geo_target','note'); } func_array_simpleflip($aAllowData); if (!is_array($aUserId)) { @@ -134,6 +134,7 @@ class ModuleUser extends Module { $aFriends=array(); $aVote=array(); $aGeoTargets=array(); + $aNotes=array(); if (isset($aAllowData['session'])) { $aSessions=$this->GetSessionsByArrayId($aUserId); } @@ -147,6 +148,9 @@ class ModuleUser extends Module { if (isset($aAllowData['geo_target'])) { $aGeoTargets=$this->Geo_GetTargetsByTargetArray('user',$aUserId); } + if (isset($aAllowData['note']) and $this->oUserCurrent) { + $aNotes=$this->GetUserNotesByArray($aUserId,$this->oUserCurrent->getId()); + } /** * Добавляем данные к результату */ @@ -173,6 +177,13 @@ class ModuleUser extends Module { } else { $oUser->setGeoTarget(null); } + if (isset($aAllowData['note'])) { + if (isset($aNotes[$oUser->getId()])) { + $oUser->setUserNote($aNotes[$oUser->getId()]); + } else { + $oUser->setUserNote(false); + } + } } return $aUsers; @@ -1391,6 +1402,34 @@ class ModuleUser extends Module { public function GetUserNoteById($iId) { return $this->oMapper->GetUserNoteById($iId); } + /** + * Возвращает список заметок пользователя по ID целевых юзеров + * + * @param array $aUserId Список ID целевых пользователей + * @param int $sUserId ID пользователя, кто оставлял заметки + * @return array + */ + public function GetUserNotesByArray($aUserId,$sUserId) { + if (!$aUserId) { + return array(); + } + if (!is_array($aUserId)) { + $aUserId=array($aUserId); + } + $aUserId=array_unique($aUserId); + $aNotes=array(); + $s=join(',',$aUserId); + if (false === ($data = $this->Cache_Get("user_notes_{$sUserId}_id_{$s}"))) { + $data = $this->oMapper->GetUserNotesByArrayUserId($aUserId,$sUserId); + foreach ($data as $oNote) { + $aNotes[$oNote->getTargetUserId()]=$oNote; + } + + $this->Cache_Set($aNotes, "user_notes_{$sUserId}_id_{$s}", array("user_note_change_by_user_{$sUserId}"), 60*60*24*1); + return $aNotes; + } + return $data; + } /** * Удаляет заметку по ID * @@ -1398,6 +1437,9 @@ class ModuleUser extends Module { * @return bool */ public function DeleteUserNoteById($iId) { + if ($oNote=$this->GetUserNoteById($iId)) { + $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("user_note_change_by_user_{$oNote->getUserId()}")); + } return $this->oMapper->DeleteUserNoteById($iId); } /** @@ -1411,6 +1453,7 @@ class ModuleUser extends Module { $oNote->setDateAdd(date("Y-m-d H:i:s")); } + $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("user_note_change_by_user_{$oNote->getUserId()}")); if ($oNoteOld=$this->GetUserNote($oNote->getTargetUserId(),$oNote->getUserId()) ) { $oNoteOld->setText($oNote->getText()); $this->oMapper->UpdateUserNote($oNoteOld); diff --git a/classes/modules/user/entity/User.entity.class.php b/classes/modules/user/entity/User.entity.class.php index 84597abc..4d061df7 100644 --- a/classes/modules/user/entity/User.entity.class.php +++ b/classes/modules/user/entity/User.entity.class.php @@ -426,6 +426,19 @@ class ModuleUser_EntityUser extends Entity { return $this->Stream_IsSubscribe($oUserCurrent->getId(),$this->getId()); } } + /** + * Возвращает объект заметки о подльзователе, которую оставил текущий пользователй + * + * @return ModuleUser_EntityNote|null + */ + public function getUserNote() { + $oUserCurrent=$this->User_GetUserCurrent(); + if ($this->_getDataOne('user_note')===null and $oUserCurrent) { + $this->_aData['user_note']=$this->User_GetUserNote($this->getId(),$oUserCurrent->getId()); + } + return $this->_getDataOne('user_note'); + } + /** * Устанавливает ID пользователя diff --git a/classes/modules/user/mapper/User.mapper.class.php b/classes/modules/user/mapper/User.mapper.class.php index a63a88bf..9b7d56a3 100644 --- a/classes/modules/user/mapper/User.mapper.class.php +++ b/classes/modules/user/mapper/User.mapper.class.php @@ -1038,6 +1038,33 @@ class ModuleUser_MapperUser extends Mapper { } return null; } + /** + * Возвращает список заметок пользователя по ID целевых юзеров + * + * @param array $aArrayId Список ID целевых пользователей + * @param int $sUserId ID пользователя, кто оставлял заметки + * @return array + */ + public function GetUserNotesByArrayUserId($aArrayId,$sUserId) { + if (!is_array($aArrayId) or count($aArrayId)==0) { + return array(); + } + + $sql = "SELECT + * + FROM + ".Config::Get('db.table.user_note')." + WHERE target_user_id IN (?a) and user_id = ?d + "; + $aRows=$this->oDb->select($sql,$aArrayId,$sUserId); + $aRes=array(); + if ($aRows) { + foreach ($aRows as $aRow) { + $aRes[]=Engine::GetEntity('ModuleUser_EntityNote',$aRow); + } + } + return $aRes; + } /** * Удаляет заметку по ID * diff --git a/templates/skin/synio/user_list.tpl b/templates/skin/synio/user_list.tpl index b89de1eb..9694b6a4 100644 --- a/templates/skin/synio/user_list.tpl +++ b/templates/skin/synio/user_list.tpl @@ -31,6 +31,7 @@ {if $aUsersList} {foreach from=$aUsersList item=oUserList} {assign var="oSession" value=$oUserList->getSession()} + {assign var="oUserNote" value=$oUserList->getUserNote()} avatar @@ -41,6 +42,9 @@ {if $oUserCurrent} + {if $oUserNote} + + {/if} {/if}