Файловый менеджер - Редактировать - /var/www/html/components/com_community/controllers/notification.php
Ðазад
<?php /** * @copyright (C) 2013 iJoomla, Inc. - All rights reserved. * @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html) * @author iJoomla.com <webmaster@ijoomla.com> * @url https://www.jomsocial.com/license-agreement * The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0 * More info at https://www.jomsocial.com/license-agreement */ use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Language\Text; // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); class CommunityNotificationController extends CommunityBaseController { public function ajaxGetNotification() { if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); //$inboxModel = CFactory::getModel( 'inbox' ); $friendModel = CFactory::getModel( 'friends' ); $eventModel = CFactory::getModel( 'events' ); $groupModel = CFactory::getModel( 'groups' ); $pageModel = CFactory::getModel( 'pages' ); $notiTotal = 0; //getting pending event request $pendingEvents = $eventModel->getPending($my->id); $eventHtml = ''; $event = JTable::getInstance( 'Event' , 'CTable' ); if(!empty($pendingEvents)) { foreach ($pendingEvents as $key => $pendingEvent) { $row = $pendingEvent; $row->invitor = CFactory::getUser($row->invited_by); $event->load( $row->eventid ); // remove the notification if there is no longer seats available if(!CEventHelper::seatsAvailable($event)){ unset($pendingEvents[$key]); continue; } $row->eventAvatar = $event->getThumbAvatar(); $row->url = CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid=' . $row->eventid. false); $row->isGroupEvent = ($event->type == 'group') ? true : false ; $row->isPageEvent = ($event->type == 'page') ? true : false ; if($row->isGroupEvent){ $group = JTable::getInstance('Group', 'CTable'); $group->load($event->contentid); $row->groupname = $group->name; $row->grouplink = CUrlHelper::groupLink($group->id); } if($row->isPageEvent){ $page = JTable::getInstance('Page', 'CTable'); $page->load($event->contentid); $row->pagename = $page->name; $row->pagelink = CUrlHelper::pageLink($page->id); } } $notiTotal += count($pendingEvents); $tmpl = new CTemplate(); $tmpl->set( 'rows' , $pendingEvents ); $tmpl->setRef( 'my' , $my ); $eventHtml = $tmpl->fetch( 'notification.event.invitations' ); } //getting pending page request $pendingPage = $pageModel->getPageInvites($my->id); $pageHtml = ''; $page = JTable::getInstance( 'Page' , 'CTable' ); $pageNotiTotal =0; if(!empty($pendingPage)) { $pageNotiTotal +=count($pendingPage); for($i=0; $i< count($pendingPage); $i++) { $gRow = $pendingPage[$i]; $gRow->invitor = CFactory::getUser($gRow->creator); $page->load( $gRow->pageid ); $gRow->name = $page->name; $gRow->groupAvatar = $page->getThumbAvatar(); $gRow->url = CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $gRow->pageid . false); } $tmpl = new CTemplate(); $tmpl->set( 'gRows' , $pendingPage ); $tmpl->setRef( 'my' , $my ); $pageHtml = $tmpl->fetch( 'notification.page.invitations' ); } //geting pending private page join request //Find Users Pages Admin $allPages = $pageModel->getAdminPages( $my->id , COMMUNITY_PRIVATE_PAGE); $pageMemberApproveHTML = ''; //Get unApproved member if(!empty($allPages)) { foreach($allPages as $pages) { $member = $groupModel->getMembers( $pages->id , null, false ); if(!empty($member)) { for($i=0; $i< count($member); $i++){ $oRow = $member[$i]; $page->load($pages->id); $oRow->pageId = $pages->id; $oRow->pageName = $pages->name; $oRow->pageAvatar = $page->getThumbAvatar(); $oRow->url = CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $page->id . false); $members[]=$member[$i]; } } } } //getting pending group request $pendingGroup = $groupModel->getGroupInvites($my->id); $groupHtml = ''; $group = JTable::getInstance( 'Group' , 'CTable' ); $groupNotiTotal =0; if(!empty($pendingGroup)) { $groupNotiTotal +=count($pendingGroup); for($i=0; $i< count($pendingGroup); $i++) { $gRow = $pendingGroup[$i]; $gRow->invitor = CFactory::getUser($gRow->creator); $group->load( $gRow->groupid ); $gRow->name = $group->name; $gRow->groupAvatar = $group->getThumbAvatar(); $gRow->url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $gRow->groupid . false); } $tmpl = new CTemplate(); $tmpl->set( 'gRows' , $pendingGroup ); $tmpl->setRef( 'my' , $my ); $groupHtml = $tmpl->fetch( 'notification.group.invitations' ); } //geting pending private group join request //Find Users Groups Admin $allGroups = $groupModel->getAdminGroups( $my->id , COMMUNITY_PRIVATE_GROUP); $groupMemberApproveHTML = ''; //Get unApproved member if(!empty($allGroups)) { foreach($allGroups as $groups) { $member = $groupModel->getMembers( $groups->id , null, false ); if(!empty($member)) { for($i=0; $i< count($member); $i++){ $oRow = $member[$i]; $group->load($groups->id); $oRow->groupId = $groups->id; $oRow->groupName = $groups->name; $oRow->groupAvatar = $group->getThumbAvatar(); $oRow->url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id . false); $members[]=$member[$i]; } } } } if(!empty($members)) { $tmpl = new CTemplate(); $tmpl->set( 'oRows' , $members ); $tmpl->set( 'my' , $my ); $groupMemberApproveHTML = $tmpl->fetch('notification.group.request'); } //non require action notification $itemHtml = ''; $notifCount = 10; $notificationModel = CFactory::getModel( 'notification' ); $myParams = $my->getParams(); $notifications = $notificationModel->getNotification($my->id,'0',$notifCount,$myParams->get('lastnotificationlist','')); if(!empty($notifications)){ //there are some notification that cannot be skipped even if the actor is 0 $systemNotifications = array( 'notif_videos_convert_success' ); for($i=0; $i< count($notifications); $i++){ $iRow = $notifications[$i]; $iRow->actorUser = CFactory::getUser($iRow->actor); $iRow->actorAvatar = $iRow->actorUser->getThumbAvatar(); $iRow->actorName = $iRow->actorUser->getDisplayName(); $iRow->timeDiff = CTimeHelper::timeLapse(CTimeHelper::getDate($iRow->created)); $iRow->contentHtml = CContentHelper::injectTags($iRow->content,$iRow->params,true); $params = new CParameter( $iRow->params ); $iRow->url = $params->get('url',''); if(in_array($notifications[$i],$systemNotifications)){ $iRow->systemMessage = true; // this is to prevent the message to be skipped in notification item } } $tmpl = new CTemplate(); $tmpl->set( 'iRows' , $notifications ); $tmpl->setRef( 'my' , $my ); $itemHtml = $tmpl->fetch( 'notification.item' ); } $notiHtml = $pageHtml . $eventHtml . $groupHtml . $groupMemberApproveHTML . $itemHtml; if (empty($notiHtml)) { $notiHtml .= '<li>'; $notiHtml .= Text::_('COM_COMMUNITY_NO_NOTIFICATION'); $notiHtml .= '</li>'; } $date = JDate::getInstance(); $myParams->set('lastnotificationlist', $date->toSql()); $my->save('params'); $url = CRoute::_('index.php?option=com_community&view=profile&task=notifications'); $notiHtml .= '<div>'; $notiHtml .= '<a href="' . $url . '" class="joms-button--neutral joms-button--full">' . Text::_('COM_COMMUNITY_VIEW_ALL') . '</a>'; $notiHtml .= '</div>'; $json['title'] = Text::_('COM_COMMUNITY_NOTIFICATIONS'); $json['html'] = $notiHtml; die( json_encode($json) ); } private function _getTimeDiffString($created,$daydiff=''){ $timeDiff = ''; if($daydiff== 0) { $date = CTimeHelper::getDate($created); $timeDiff = CTimeHelper::timeLapse($date); } else if($daydiff == 1) { $timeDiff = Text::_('COM_COMMUNITY_ACTIVITIES_YESTERDAY'); } else if($daydiff< 7) { $timeDiff = Text::sprintf('COM_COMMUNITY_ACTIVITIES_DAYS_AGO', $daydiff); } else if(($daydiff >= 7) && ($daydiff < 30)) { $dayinterval = ACTIVITY_INTERVAL_WEEK; $timeDiff = (intval($daydiff/$dayinterval) == 1 ? Text::_('COM_COMMUNITY_ACTIVITIES_WEEK_AGO') : Text::sprintf('COM_COMMUNITY_ACTIVITIES_WEEK_AGO_MANY', intval($daydiff/$dayinterval))); } else if(($daydiff >= 30)) { $dayinterval = ACTIVITY_INTERVAL_MONTH; $timeDiff = (intval($daydiff/$dayinterval) == 1 ? Text::_('COM_COMMUNITY_ACTIVITIES_MONTH_AGO') : Text::sprintf('COM_COMMUNITY_ACTIVITIES_MONTH_AGO_MANY', intval($daydiff/$dayinterval))); } return $timeDiff; } /** * Ajax function to reject a friend request **/ public function ajaxRejectRequest( $requestId ) { $filter = InputFilter::getInstance(); $requestId = $filter->clean($requestId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $objResponse = new JAXResponse(); $my = CFactory::getUser(); $friendsModel = CFactory::getModel('friends'); if( $friendsModel->isMyRequest( $requestId , $my->id) ) { $pendingInfo = $friendsModel->getPendingUserId($requestId); if( $friendsModel->rejectRequest( $requestId ) ) { //add user points - friends.request.reject removed @ 20090313 $objResponse->addScriptCall( 'joms.jQuery("#msg-pending-' . $requestId . '").html("'.Text::_('COM_COMMUNITY_FRIENDS_REQUEST_REJECTED').'");'); $objResponse->addScriptCall( 'joms.jQuery("#noti-pending-' . $requestId . '").fadeOut(1000, function() { joms.jQuery("#noti-pending-' . $requestId . '").remove();} );'); $objResponse->addScriptCall('update_counter("#jsMenuNotif > .notifcount", -1);'); $objResponse->addScriptCall('update_counter("#jsMenuFriend > .notifcount", -1);'); //trigger for onFriendReject require_once(JPATH_ROOT .'/components/com_community/controllers/friends.php'); $eventObject = new stdClass(); $eventObject->profileOwnerId = $my->id; $eventObject->friendId = $pendingInfo->connect_from; CommunityFriendsController::triggerFriendEvents( 'onFriendReject' , $eventObject); unset($eventObject); } else { $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").html("' . Text::sprintf('COM_COMMUNITY_FRIEND_REQUEST_REJECT_FAILED', $requestId ) . '");' ); $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").attr("class", "error");'); } } else { $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").html("' . Text::_('COM_COMMUNITY_FRIENDS_NOT_YOUR_REQUEST') . '");' ); $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").attr("class", "error");'); } return $objResponse->sendResponse(); } /** * Ajax function to approve a friend request **/ public function ajaxApproveRequest( $requestId ) { $filter = InputFilter::getInstance(); $requestId = $filter->clean($requestId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $objResponse = new JAXResponse(); $my = CFactory::getUser(); $friendsModel = CFactory::getModel( 'friends' ); if( $friendsModel->isMyRequest( $requestId , $my->id) ) { $connected = $friendsModel->approveRequest( $requestId ); if( $connected ) { $act = new stdClass(); $act->cmd = 'friends.request.approve'; $act->actor = $connected[0]; $act->target = $connected[1]; $act->title = '';//Text::_('COM_COMMUNITY_ACTIVITY_FRIENDS_NOW'); $act->content = ''; $act->app = 'friends.connect'; $act->cid = 0; $friendId = ( $connected[0] == $my->id ) ? $connected[1] : $connected[0]; $friend = CFactory::getUser( $friendId ); //generate the activity if enabled $userPointModel = CFactory::getModel('Userpoints'); $point = $userPointModel->getPointData('friends.request.approve'); if($point->published){ CActivityStream::add($act); //add user points - give points to both party //CFactory::load( 'libraries' , 'userpoints' ); CUserPoints::assignPoint('friends.request.approve'); CUserPoints::assignPoint('friends.request.approve', $friendId); } // Add the friend count for the current user and the connected user $friendsModel->addFriendCount( $connected[0] ); $friendsModel->addFriendCount( $connected[1] ); // Add notification //CFactory::load( 'libraries' , 'notification' ); $params = new CParameter( '' ); $params->set( 'url' , 'index.php?option=com_community&view=profile&userid='.$my->id ); $params->set( 'friend' , $my->getDisplayName() ); $params->set( 'friend_url' , 'index.php?option=com_community&view=profile&userid='.$my->id ); CNotificationLibrary::add( 'friends_create_connection' , $my->id , $friend->id , Text::sprintf('COM_COMMUNITY_FRIEND_REQUEST_APPROVED' ) , '' , 'friends.approve' , $params ); $objResponse->addScriptCall( 'joms.jQuery("#msg-pending-' . $requestId . '").html("'.addslashes(Text::sprintf('COM_COMMUNITY_FRIENDS_NOW', $friend->getDisplayName())).'");'); $objResponse->addScriptCall( 'joms.jQuery("#noti-pending-' . $requestId . '").fadeOut(1000, function() { joms.jQuery("#noti-pending-' . $requestId . '").remove();} );'); $objResponse->addScriptCall('update_counter("#jsMenuNotif > .notifcount", -1);'); $objResponse->addScriptCall('update_counter("#jsMenuFriend > .notifcount", -1);'); //trigger for onFriendApprove require_once(JPATH_ROOT .'/components/com_community/controllers/friends.php'); $eventObject = new stdClass(); $eventObject->profileOwnerId = $my->id; $eventObject->friendId = $friendId; CommunityFriendsController::triggerFriendEvents( 'onFriendApprove' , $eventObject); unset($eventObject); } } else { $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").html("' . Text::_('COM_COMMUNITY_FRIENDS_NOT_YOUR_REQUEST') . '");' ); $objResponse->addScriptCall( 'joms.jQuery("#error-pending-' . $requestId . '").attr("class", "error");'); } return $objResponse->sendResponse(); } /** * Popup all friend request */ public function ajaxGetRequest() { $objResponse = new JAXResponse(); $my = CFactory::getUser(); $friendModel = CFactory::getModel('friends'); $rows = $friendModel->getPending($my->id); // format for template $data = array(); $friendIdList = array(); foreach( $rows as $row ) { if(!in_array($row->id,$friendIdList)){ $user = CFactory::getUser($row->id); $obj = new stdClass(); $obj->user = $user; $obj->msg = $row->msg; $obj->connection_id = $row->connection_id; $data[] = $obj; } $friendIdList[] = $row->id; } $template = new CTemplate(); $html = $template ->set('rows', $data) ->fetch('notification/friend-request'); $json = array( 'title' => Text::_('COM_COMMUNITY_NOTI_NEW_FRIEND_REQUEST'), 'html' => $html ); die( json_encode($json) ); } /** * @since 3.3 * ajax response to dropdown box to see friend request */ public function ajaxGetFriendRequest() { $my = CFactory::getUser(); $friendModel = CFactory::getModel('friends'); $rows = $friendModel->getPending($my->id); // format for response $data = array(); $friendIdList = array(); if (!$rows || count($rows) == 0) { die(json_encode(array('error' => true, 'message' => Text::_('COM_COMMUNITY_PENDING_APPROVAL_EMPTY')))); } foreach ($rows as $row) { if (!in_array($row->id, $friendIdList)) { $user = CFactory::getUser($row->id); $data[] = array( 'name' => $user->getDisplayName(), 'avatar' => $user->getThumbAvatar(), 'connection_id' => $row->connection_id, 'approve_lang' => Text::_('COM_COMMUNITY_PENDING_ACTION_APPROVE'), 'reject_lang' => Text::_('COM_COMMUNITY_FRIENDS_PENDING_ACTION_REJECT') ); } } die(json_encode($data)); } /** * Popup message notification */ public function ajaxGetInbox() { $inboxModel = CFactory::getModel('inbox'); //$messages = $inboxModel->getInbox(false); $messages = $inboxModel->getUnReadInbox(); // format for template $data = array(); foreach( $messages as $row ) { $user = CFactory::getUser($row->from); $obj = new stdClass(); $obj->user = $user; $obj->subject = $row->subject; $obj->link = CRoute::_('index.php?option=com_community&view=inbox&task=read&msgid=' . $row->parent); $obj->created = CTimeHelper::timeLapse(CTimeHelper::getDate($row->posted_on)); $data[] = $obj; } $template = new CTemplate(); $html = $template ->set('rows', $data) ->fetch('notification/inbox'); $json = array( 'title' => Text::_('COM_COMMUNITY_MESSAGE'), 'html' => $html ); die( json_encode($json) ); } /** * Ajax function to join an event invitation * **/ public function ajaxJoinInvitation( $invitationId, $eventId){ $filter = InputFilter::getInstance(); $invitationId = $filter->clean($invitationId, 'int'); $eventId = $filter->clean($eventId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); // Get events model $model = CFactory::getModel('events'); if( $model->isInvitedMe( $invitationId , $my->id) ){ $event = JTable::getInstance( 'Event' , 'CTable' ); $event->load( $eventId ); $this->_updateInviteStatus($invitationId, $eventId, COMMUNITY_EVENT_STATUS_ATTEND); // Activity stream purpose $act = new stdClass(); $act->cmd = 'event.join'; $act->actor = $my->id; $act->target = 0; $act->title = '';//Text::sprintf('COM_COMMUNITY_ACTIVITIES_EVENT_ATTEND' , $event->title); $act->content = ''; $act->app = 'events'; $act->cid = $event->id; $params = new CParameter(''); $action_str = 'event.join'; $params->set( 'eventid' , $event->id); $params->set( 'action', $action_str ); $params->set( 'event_url', 'index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id); // Add activity logging. CActivityStream::addActor( $act, $params->toString() ); $url = CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_EVENTS_ACCEPTED', $event->title, $url); } else { $json['error'] = Text::_('COM_COMMUNITY_EVENTS_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } /** * Ajax function to reject an event invitation * **/ public function ajaxRejectInvitation( $invitationId, $eventId){ $filter = InputFilter::getInstance(); $invitationId = $filter->clean($invitationId, 'int'); $eventId = $filter->clean($eventId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); // Get events model $model = CFactory::getModel('events'); if( $model->isInvitedMe( $invitationId , $my->id) ){ $event = JTable::getInstance( 'Event' , 'CTable' ); $event->load( $eventId ); $this->_updateInviteStatus($invitationId, $eventId, COMMUNITY_EVENT_STATUS_WONTATTEND); $url = CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_EVENTS_REJECTED', $event->title, $url); } else { $json['error'] = Text::_('COM_COMMUNITY_EVENTS_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } /** * Update invitation status */ private function _updateInviteStatus($inviteId, $eventId, $status) { $my = CFactory::getUser(); $event = JTable::getInstance( 'Event' , 'CTable' ); $event->load( $eventId ); $guest = JTable::getInstance( 'EventMembers' , 'CTable' ); $key['eventId'] = $eventId; $key['memberId'] = $my->id; $guest->load($key); // Set status to $guest->status = $status; $guest->store(); // Update event stats count $event->updateGuestStats(); $event->store(); } /** * Ajax function to join an group invitation * **/ public function ajaxGroupJoinInvitation( $groupId ) { $filter = InputFilter::getInstance(); $groupId = $filter->clean( $groupId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); // Get groups table $table = JTable::getInstance( 'GroupInvite' , 'CTable' ); $keys = array('groupid'=>$groupId, 'userid'=>$my->id); $table->load($keys); if( $table->isOwner() ){ $group = JTable::getInstance( 'Group' , 'CTable' ); $member = JTable::getInstance( 'GroupMembers' , 'CTable' ); $group->load( $groupId ); $params = $group->getParams(); // Set the properties for the members table $member->groupid = $group->id; $member->memberid = $my->id; // @rule: If approvals is required, set the approved status accordingly. $member->approved = ( $group->approvals == COMMUNITY_PRIVATE_GROUP ) ? '0' : 1; // @rule: Special users should be able to join the group regardless if it requires approval or not $member->approved = COwnerHelper::isCommunityAdmin() ? 1 : $member->approved; $groupModel = CFactory::getModel( 'groups' ); // @rule: If the Invitation is sent by group admin, do not need futher approval if($groupModel->isAdmin($table->creator,$groupId)){ $member->approved = 1; } //@todo: need to set the privileges $member->permissions = '0'; $member->store(); //trigger for onGroupJoin $this->triggerEvents('onGroupJoin' , $group , $my->id); // Update user group list $my->updateGroupList(); // Test if member is approved, then we add logging to the activities. if( $member->approved ) { // remove the notication count $table = JTable::getInstance( 'GroupInvite' , 'CTable' ); $keys = array('groupid'=>$groupId, 'userid'=>$my->id); $table->load( $keys); $table->delete(); CGroups::joinApproved($groupId, $my->id); $url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_GROUPS_ACCEPTED_INVIT', $group->name, $url); } } else { $json['error'] = Text::_('COM_COMMUNITY_GROUPS_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } /** * Ajax function to reject an event invitation * **/ public function ajaxGroupRejectInvitation( $groupId ){ $filter = InputFilter::getInstance(); $groupId = $filter->clean($groupId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); $table = JTable::getInstance( 'GroupInvite' , 'CTable' ); $keys = array('groupid'=>$groupId, 'userid'=>$my->id); $table->load( $keys); if ( $table->isOwner() ) { if ( $table->delete() ) { $group = JTable::getInstance( 'Group' , 'CTable' ); $group->load( $table->groupid ); $url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id ); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_GROUPS_REJECTED_INVIT', $group->name, $url); } } else { // when the user is the owner group we need avoid the invitation $table->delete(); $json['error'] = Text::_('COM_COMMUNITY_GROUPS_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } public function ajaxPageJoinInvitation( $pageId ) { $filter = InputFilter::getInstance(); $pageId = $filter->clean( $pageId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); // Get pages table $table = JTable::getInstance( 'PageInvite' , 'CTable' ); $keys = array('pageid'=>$pageId, 'userid'=>$my->id); $table->load($keys); if( $table->isOwner() ){ $page = JTable::getInstance( 'Page' , 'CTable' ); $member = JTable::getInstance( 'PageMembers' , 'CTable' ); $page->load( $pageId ); $params = $page->getParams(); // Set the properties for the members table $member->pageid = $page->id; $member->memberid = $my->id; // @rule: If approvals is required, set the approved status accordingly. $member->approved = ( $page->approvals == COMMUNITY_PRIVATE_PAGE ) ? '0' : 1; // @rule: Special users should be able to join the page regardless if it requires approval or not $member->approved = COwnerHelper::isCommunityAdmin() ? 1 : $member->approved; $pageModel = CFactory::getModel( 'pages' ); // @rule: If the Invitation is sent by page admin, do not need futher approval if($pageModel->isAdmin($table->creator,$pageId)){ $member->approved = 1; } //@todo: need to set the privileges $member->permissions = '0'; $member->store(); //trigger for onPageJoin $this->triggerEvents('onPageJoin' , $page , $my->id); // Update user page list $my->updatePageList(); // Test if member is approved, then we add logging to the activities. if( $member->approved ) { // remove the notication count $table = JTable::getInstance( 'PageInvite' , 'CTable' ); $keys = array('pageid'=>$pageId, 'userid'=>$my->id); $table->load( $keys); $table->delete(); CPages::joinApproved($pageId, $my->id); $url = CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $page->id); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_PAGES_ACCEPTED_INVIT', $page->name, $url); } } else { $json['error'] = Text::_('COM_COMMUNITY_PAGES_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } /** * Ajax function to reject an event invitation * **/ public function ajaxPageRejectInvitation( $pageId ){ $filter = InputFilter::getInstance(); $pageId = $filter->clean($pageId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); $table = JTable::getInstance( 'PageInvite' , 'CTable' ); $keys = array('pageid'=>$pageId, 'userid'=>$my->id); $table->load( $keys); if ( $table->isOwner() ) { if ( $table->delete() ) { $page = JTable::getInstance( 'Page' , 'CTable' ); $page->load( $table->pageid ); $url = CRoute::_('index.php?option=com_community&view=pages&task=viewpage&pageid=' . $page->id ); $json['success'] = true; $json['message'] = Text::sprintf('COM_COMMUNITY_PAGES_REJECTED_INVIT', $page->name, $url); } } else { // when the user is the owner page we need avoid the invitation $table->delete(); $json['error'] = Text::_('COM_COMMUNITY_PAGES_NOT_INVITED_NOTIFICATION'); } die( json_encode($json) ); } public function triggerEvents( $eventName, &$args, $target = null) { CError::assert( $args , 'object', 'istype', __FILE__ , __LINE__ ); require_once( COMMUNITY_COM_PATH.'/libraries/apps.php' ); $appsLib = CAppPlugins::getInstance(); $appsLib->loadApplications(); $params = array(); $params[] = $args; if(!is_null($target)) $params[] = $target; $appsLib->triggerEvent( $eventName , $params); return true; } /** * Ajax function to accept Private Group Request * **/ public function ajaxGroupJoinRequest($memberId, $groupId) { $filter = InputFilter::getInstance(); $groupId = $filter->clean($groupId, 'int'); $memberId = $filter->clean($memberId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $objResponse = new JAXResponse(); $my = CFactory::getUser(); $model = $this->getModel('groups'); //CFactory::load( 'helpers' , 'owner' ); if (!$model->isAdmin($my->id, $groupId) && !COwnerHelper::isCommunityAdmin()) { $objResponse->addScriptCall(Text::_('COM_COMMUNITY_NOT_ALLOWED_TO_ACCESS_SECTION')); } else { //Load Necessary Table $member = JTable::getInstance('GroupMembers', 'CTable'); $group = JTable::getInstance('Group', 'CTable'); // Load the group and the members table $group->load($groupId); $keys = array('groupId' => $groupId, 'memberId' => $memberId); $member->load($keys); // Only approve members that is really not approved yet. if ($member->approved) { $objResponse->addScriptCall( 'joms.jQuery(".error-request-' . $group->id . '").html("' . Text::_( 'COM_COMMUNITY_EVENTS_NOT_INVITED_NOTIFICATION' ) . '");' ); $objResponse->addScriptCall('joms.jQuery(".error-request-' . $group->id . '").attr("class", "error");'); } else { $member->approve(); $user = CFactory::getUser($memberId); $user->updateGroupList(true); // Add notification //CFactory::load( 'libraries' , 'notification' ); $params = new CParameter(''); $params->set( 'url', CRoute::getExternalURL( 'index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id ) ); $params->set('group', $group->name); $params->set( 'group_url', 'index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id ); CNotificationLibrary::add( 'groups_member_approved', $group->ownerid, $user->id, Text::sprintf('COM_COMMUNITY_GROUP_MEMBER_APPROVED_EMAIL_SUBJECT'), '', 'groups.memberapproved', $params ); $act = new stdClass(); $act->cmd = 'group.join'; $act->actor = $memberId; $act->target = 0; $act->title = ''; //Text::sprintf('COM_COMMUNITY_GROUPS_ACTIVITIES_MEMBER_JOIN_GROUP' , '{group_url}' , $group->name ); $act->content = ''; $act->app = 'groups.join'; $act->cid = $group->id; $params = new CParameter(''); $params->set('action', 'group.join'); $params->set( 'group_url', 'index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id ); // Add activity logging if(CUserPoints::assignPoint('group.join', $memberId)){ CActivityStream::addActor($act, $params->toString() ); } //trigger for onGroupJoinApproved $this->triggerEvents('onGroupJoinApproved', $group, $memberId); $this->triggerEvents('onGroupJoin', $group, $memberId); // UPdate group stats(); $group->updateStats(); $group->store(); $url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id); $objResponse->addScriptCall( 'joms.jQuery(".msg-request-' . $memberId . '").html("' . addslashes( Text::sprintf('COM_COMMUNITY_EVENTS_ACCEPTED', $group->name, $url) ) . '");' ); $objResponse->addScriptCall('joms.fn.notification.updateCounter("general", '.$memberId.', -1);'); $objResponse->addScriptCall( 'joms.jQuery(".noti-request-group-' . $memberId . '").fadeOut(1000, function() { joms.jQuery(".noti-request-group-' . $memberId . '").remove();} );' ); $objResponse->addScriptCall( 'aspan = joms.jQuery(".cMenu-Icon b"); aspan.html(parseInt(aspan.html())-1);' ); } } return $objResponse->sendResponse(); } /** * Ajax function to decline Private Group Request * **/ public function ajaxGroupRejectRequest( $memberId , $groupId ) { $filter = InputFilter::getInstance(); $groupId = $filter->clean($groupId, 'int'); $memberId = $filter->clean($memberId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $objResponse = new JAXResponse(); $my = CFactory::getUser(); $model = $this->getModel( 'groups' ); $group = JTable::getInstance( 'Group' , 'CTable' ); $group->load( $groupId ); //CFactory::load( 'helpers' , 'owner' ); if( !$group->isAdmin( $my->id , $groupId ) && !COwnerHelper::isCommunityAdmin() ) { $objResponse->addScriptCall( Text::_('COM_COMMUNITY_NOT_ALLOWED_TO_ACCESS_SECTION') ); } else { //Load Necessary Table $groupMember = JTable::getInstance( 'GroupMembers' , 'CTable' ); $data = new stdClass(); $data->groupid = $groupId; $data->memberid = $memberId; $model->removeMember($data); //add user points //CFactory::load( 'libraries' , 'userpoints' ); CUserPoints::assignPoint('group.member.remove', $memberId); //trigger for onGroupLeave $this->triggerEvents( 'onGroupLeave' , $group , $memberId); $group->updateStats(); $group->store(); $url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id); $objResponse->addScriptCall( 'joms.jQuery(".msg-request-' . $memberId . '").html("'.addslashes(Text::sprintf('COM_COMMUNITY_EVENTS_REJECTED', $group->name , $url )).'");'); $objResponse->addScriptCall('joms.fn.notification.updateCounter("general", '.$memberId.', -1);'); $objResponse->addScriptCall( 'joms.jQuery(".noti-request-group-' . $memberId . '").fadeOut(1000, function() { joms.jQuery(".noti-request-group-' . $memberId . '").remove();} );'); $objResponse->addScriptCall( 'aspan = joms.jQuery("#jsMenu .jsMenuIcon span"); aspan.html(parseInt(aspan.html())-1);'); } return $objResponse->sendResponse(); } }
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка