mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-05-17 08:18:18 +03:00
доработка инвайтов, введено ограничение на число приглашений и отображение в профиле кто кого пригласил
This commit is contained in:
parent
16b2f600bd
commit
2367a27ff6
|
@ -132,6 +132,19 @@ class ActionProfile extends Action {
|
|||
* Получаем список тех у кого в друзьях
|
||||
*/
|
||||
$aUsersSelfFrend=$this->User_GetUsersSelfFrend($this->oUserProfile->getId());
|
||||
|
||||
if (USER_USE_INVITE) {
|
||||
/**
|
||||
* Получаем список тех кого пригласил юзер
|
||||
*/
|
||||
$aUsersInvite=$this->User_GetUsersInvite($this->oUserProfile->getId());
|
||||
$this->Viewer_Assign('aUsersInvite',$aUsersInvite);
|
||||
/**
|
||||
* Получаем того юзера, кто пригласил текущего
|
||||
*/
|
||||
$oUserInviteFrom=$this->User_GetUserInviteFrom($this->oUserProfile->getId());
|
||||
$this->Viewer_Assign('oUserInviteFrom',$oUserInviteFrom);
|
||||
}
|
||||
/**
|
||||
* Получаем список блогов в которых состоит юзер
|
||||
*/
|
||||
|
@ -145,7 +158,7 @@ class ActionProfile extends Action {
|
|||
*/
|
||||
$this->Viewer_Assign('aBlogsUser',$aBlogsUser);
|
||||
$this->Viewer_Assign('aBlogsOwner',$aBlogsOwner);
|
||||
$this->Viewer_Assign('aUsersFrend',$aUsersFrend);
|
||||
$this->Viewer_Assign('aUsersFrend',$aUsersFrend);
|
||||
$this->Viewer_Assign('aUsersSelfFrend',$aUsersSelfFrend);
|
||||
$this->Viewer_AddHtmlTitle('Профиль '.$this->oUserProfile->getLogin());
|
||||
$this->Viewer_AddHtmlTitle('Whois');
|
||||
|
|
|
@ -97,21 +97,28 @@ class ActionSettings extends Action {
|
|||
*
|
||||
* @return unknown
|
||||
*/
|
||||
protected function EventInvite() {
|
||||
$this->sMenuItemSelect='invite';
|
||||
$this->sMenuSubItemSelect='';
|
||||
|
||||
$this->Viewer_AddHtmlTitle('Инвайты');
|
||||
|
||||
protected function EventInvite() {
|
||||
if (!USER_USE_INVITE) {
|
||||
$this->Message_AddErrorSingle('Приглашения не доступны','Ошибка');
|
||||
return Router::Action('error');
|
||||
}
|
||||
|
||||
$this->sMenuItemSelect='invite';
|
||||
$this->sMenuSubItemSelect='';
|
||||
$this->Viewer_AddHtmlTitle('Инвайты');
|
||||
|
||||
$this->Viewer_Assign('iCountInviteAvailable',$this->User_GetCountInviteAvailable($this->oUserCurrent));
|
||||
$this->Viewer_Assign('iCountInviteUsed',$this->User_GetCountInviteUsed($this->oUserCurrent->getId()));
|
||||
|
||||
if (!isset($_REQUEST['submit_invite'])) {
|
||||
return ;
|
||||
}
|
||||
|
||||
if (!$this->ACL_CanSendInvite($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
||||
$this->Message_AddError('У вас пока нет доступных инвайтов','Ошибка');
|
||||
return ;
|
||||
}
|
||||
|
||||
if (!func_check(getRequest('invite_mail'),'mail')) {
|
||||
$this->Message_AddError('Неверный формат e-mail','Ошибка');
|
||||
return ;
|
||||
|
|
|
@ -154,5 +154,17 @@ class ACL extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Проверяет можно ли юзеру слать инвайты
|
||||
*
|
||||
* @param UserEntity_User $oUser
|
||||
* @return unknown
|
||||
*/
|
||||
public function CanSendInvite(UserEntity_User $oUser) {
|
||||
if ($this->User_GetCountInviteAvailable($oUser)==0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -431,6 +431,8 @@ class User extends Module {
|
|||
* @return unknown
|
||||
*/
|
||||
public function UpdateInvite(UserEntity_Invite $oInvite) {
|
||||
//чистим зависимые кеши
|
||||
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("invate_new_to_{$oInvite->getUserToId()}","invate_new_from_{$oInvite->getUserFromId()}"));
|
||||
return $this->oMapper->UpdateInvite($oInvite);
|
||||
}
|
||||
/**
|
||||
|
@ -446,5 +448,65 @@ class User extends Module {
|
|||
$oInvite->setUserFromId($oUser->getId());
|
||||
return $this->AddInvite($oInvite);
|
||||
}
|
||||
/**
|
||||
* Получает число использованых приглашений юзером за определенную дату
|
||||
*
|
||||
* @param unknown_type $sUserIdFrom
|
||||
* @param unknown_type $sDate
|
||||
* @return unknown
|
||||
*/
|
||||
public function GetCountInviteUsedByDate($sUserIdFrom,$sDate) {
|
||||
return $this->oMapper->GetCountInviteUsedByDate($sUserIdFrom,$sDate);
|
||||
}
|
||||
/**
|
||||
* Получает полное число использованных приглашений юзера
|
||||
*
|
||||
* @param unknown_type $sUserIdFrom
|
||||
* @return unknown
|
||||
*/
|
||||
public function GetCountInviteUsed($sUserIdFrom) {
|
||||
return $this->oMapper->GetCountInviteUsed($sUserIdFrom);
|
||||
}
|
||||
/**
|
||||
* Получаем число доступных приглашений для юзера
|
||||
*
|
||||
* @param unknown_type $oUserFrom
|
||||
* @return unknown
|
||||
*/
|
||||
public function GetCountInviteAvailable(UserEntity_User $oUserFrom) {
|
||||
$sDay=7;
|
||||
$iCountUsed=$this->GetCountInviteUsedByDate($oUserFrom->getId(),date("Y-m-d 00:00:00",mktime(0,0,0,date("m"),date("d")-$sDay,date("Y"))));
|
||||
$iCountAllAvailable=round($oUserFrom->getRating()+$oUserFrom->getSkill());
|
||||
$iCountAllAvailable = $iCountAllAvailable<0 ? 0 : $iCountAllAvailable;
|
||||
$iCountAvailable=$iCountAllAvailable-$iCountUsed;
|
||||
$iCountAvailable = $iCountAvailable<0 ? 0 : $iCountAvailable;
|
||||
return $iCountAvailable;
|
||||
}
|
||||
/**
|
||||
* Получает список приглашенных юзеров
|
||||
*
|
||||
* @param unknown_type $sUserId
|
||||
* @return unknown
|
||||
*/
|
||||
public function GetUsersInvite($sUserId) {
|
||||
if (false === ($data = $this->Cache_Get("users_invite_{$sUserId}"))) {
|
||||
$data = $this->oMapper->GetUsersInvite($sUserId);
|
||||
$this->Cache_Set($data, "users_invite_{$sUserId}", array("user_update","invate_new_from_{$sUserId}"), 60*5);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Получает юзера который пригласил
|
||||
*
|
||||
* @param unknown_type $sUserIdTo
|
||||
* @return unknown
|
||||
*/
|
||||
public function GetUserInviteFrom($sUserIdTo) {
|
||||
if (false === ($data = $this->Cache_Get("user_invite_from_{$sUserIdTo}"))) {
|
||||
$data = $this->oMapper->GetUserInviteFrom($sUserIdTo);
|
||||
$this->Cache_Set($data, "user_invite_from_{$sUserIdTo}", array("user_update","invate_new_to_{$sUserIdTo}"), 60*5);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -441,5 +441,64 @@ class Mapper_User extends Mapper {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function GetCountInviteUsedByDate($sUserIdFrom,$sDate) {
|
||||
$sql = "SELECT count(invite_id) as count FROM ".DB_TABLE_INVITE." WHERE user_from_id = ?d and invite_date_add >= ? ";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sUserIdFrom,$sDate)) {
|
||||
return $aRow['count'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function GetCountInviteUsed($sUserIdFrom) {
|
||||
$sql = "SELECT count(invite_id) as count FROM ".DB_TABLE_INVITE." WHERE user_from_id = ?d";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sUserIdFrom)) {
|
||||
return $aRow['count'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function GetUsersInvite($sUserId) {
|
||||
$sql = "SELECT
|
||||
u.*
|
||||
FROM
|
||||
".DB_TABLE_INVITE." as i,
|
||||
".DB_TABLE_USER." as u
|
||||
WHERE
|
||||
i.user_from_id = ?d
|
||||
AND
|
||||
i.user_to_id = u.user_id
|
||||
AND
|
||||
u.user_activate = 1
|
||||
ORDER BY u.user_login;
|
||||
";
|
||||
$aUsers=array();
|
||||
if ($aRows=$this->oDb->select($sql,$sUserId)) {
|
||||
foreach ($aRows as $aUser) {
|
||||
$aUsers[]=new UserEntity_User($aUser);
|
||||
}
|
||||
}
|
||||
return $aUsers;
|
||||
}
|
||||
|
||||
public function GetUserInviteFrom($sUserIdTo) {
|
||||
$sql = "SELECT
|
||||
u.*
|
||||
FROM
|
||||
".DB_TABLE_INVITE." as i,
|
||||
".DB_TABLE_USER." as u
|
||||
WHERE
|
||||
i.user_to_id = ?d
|
||||
AND
|
||||
i.user_from_id = u.user_id
|
||||
AND
|
||||
u.user_activate = 1
|
||||
LIMIT 0,1;
|
||||
";
|
||||
if ($aRow=$this->oDb->selectRow($sql,$sUserIdTo)) {
|
||||
return new UserEntity_User($aRow);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -129,7 +129,7 @@ ALTER TABLE `prefix_invite`
|
|||
ADD CONSTRAINT `prefix_invite_fk` FOREIGN KEY (`user_from_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT `prefix_invite_fk1` FOREIGN KEY (`user_to_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
|
||||
ALTER TABLE `prefix_invite` ADD INDEX ( `invite_date_add` )
|
||||
|
||||
|
||||
-- Дополнительные поля настройки у юзера
|
||||
|
|
|
@ -120,6 +120,33 @@
|
|||
</div>
|
||||
{/if}
|
||||
|
||||
{if $USER_USE_INVITE and $oUserInviteFrom}
|
||||
<div class="logicgroup_menu">
|
||||
<div class="userinfo_line">
|
||||
<div class="left">
|
||||
Пригласил:
|
||||
</div>
|
||||
<div class="right">
|
||||
<span class="nowrap"><a href="{$DIR_WEB_ROOT}/profile/{$oUserInviteFrom->getLogin()}/"><img src="{$DIR_STATIC_SKIN}/img/user.gif" border="0" alt="посмотреть профиль" title="посмотреть профиль"></a><a href="{$DIR_WEB_ROOT}/profile/{$oUserInviteFrom->getLogin()}/" class="userinfo_nickname_normal">{$oUserInviteFrom->getLogin()}</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $USER_USE_INVITE and $aUsersInvite}
|
||||
<div class="logicgroup_menu">
|
||||
<div class="userinfo_line">
|
||||
<div class="left">
|
||||
Приглашенные:
|
||||
</div>
|
||||
<div class="right">
|
||||
{foreach from=$aUsersInvite item=oUserInvite}
|
||||
<span class="nowrap"><a href="{$DIR_WEB_ROOT}/profile/{$oUserInvite->getLogin()}/"><img src="{$DIR_STATIC_SKIN}/img/user.gif" border="0" alt="посмотреть профиль" title="посмотреть профиль"></a><a href="{$DIR_WEB_ROOT}/profile/{$oUserInvite->getLogin()}/" class="userinfo_nickname_normal">{$oUserInvite->getLogin()}</a></span>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $aBlogsOwner}
|
||||
<div class="logicgroup">
|
||||
|
|
|
@ -13,7 +13,11 @@
|
|||
|
||||
|
||||
<p><span class="header">Управление приглашениями</span>
|
||||
|
||||
<BR>
|
||||
<BR>Доступно: {if $oUserCurrent->isAdministrator()}много{else}{$iCountInviteAvailable}{/if}
|
||||
<BR>Использовано: {$iCountInviteUsed}
|
||||
<BR>
|
||||
<BR>
|
||||
<form action="{$DIR_WEB_ROOT}/settings/invite/" method="POST" enctype="multipart/form-data">
|
||||
|
||||
<label for="invite_mail"><span class="form">Пригласить по e-mail адресу:</span></label><br />
|
||||
|
|
Loading…
Reference in a new issue