1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 03:30:48 +03:00

В списке людей отображается есть ли заметка от текущего пользователя о юзере

This commit is contained in:
Mzhelskiy Maxim 2012-08-05 15:54:48 +04:00
parent 7de670d01f
commit d604951300
6 changed files with 90 additions and 3 deletions

View file

@ -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()));

View file

@ -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());

View file

@ -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);

View file

@ -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 пользователя

View file

@ -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
*

View file

@ -31,6 +31,7 @@
{if $aUsersList}
{foreach from=$aUsersList item=oUserList}
{assign var="oSession" value=$oUserList->getSession()}
{assign var="oUserNote" value=$oUserList->getUserNote()}
<tr>
<td class="cell-name">
<a href="{$oUserList->getUserWebPath()}"><img src="{$oUserList->getProfileAvatarPath(48)}" alt="avatar" class="avatar" /></a>
@ -41,6 +42,9 @@
</td>
<td>
{if $oUserCurrent}
{if $oUserNote}
<button type="submit" class="button button-action button-action-send-message" title="{$oUserNote->getText()}"><i class="icon-synio-send-message"></i></button>
{/if}
<a href="{router page='talk'}add/?talk_users={$oUserList->getLogin()}"><button type="submit" class="button button-action button-action-send-message"><i class="icon-synio-send-message"></i><span>{$aLang.user_write_prvmsg}</span></button></a>
{/if}
</td>