/** * Count total pending event invitations. * * */ public function countPending($id) { $db = $this->getDBO(); $query = 'SELECT b.id FROM ' . $db->quoteName('#__community_events_members') . ' AS a ' . ' INNER JOIN ' . $db->quoteName('#__community_events') . ' AS b ' . ' ON b.' . $db->quoteName('id') . '=a.' . $db->quoteName('eventid') . ' AND b.' . $db->quoteName('published') . '=' . $db->Quote(1) . ' WHERE a.' . $db->quoteName('memberid') . '=' . $db->Quote($id) . ' AND a.' . $db->quoteName('status') . '=' . $db->Quote(COMMUNITY_EVENT_STATUS_INVITED) . ' ' . ' AND b.' . $db->quoteName('enddate') . '>= NOW()' . ' ORDER BY a.' . $db->quoteName('id') . ' DESC'; $db->setQuery($query); $results = $db->loadObjectList(); $exclude = array(); // this event will be excluded because the seats is not available if (count($results)) { foreach ($results as $result) { $event = JTable::getInstance('Event', 'CTable'); $event->load($result->id); if (!CEventHelper::seatsAvailable($event)) { $exclude[] = $event->id; } } } $extraSQL = ''; if (count($exclude) > 0) { $exclude = implode(',', $exclude); $extraSQL .= ' AND b.id NOT IN (' . $exclude . ')'; } $query = 'SELECT COUNT(*) FROM ' . $db->quoteName('#__community_events_members') . ' AS a ' . ' INNER JOIN ' . $db->quoteName('#__community_events') . ' AS b ' . ' ON b.' . $db->quoteName('id') . '=a.' . $db->quoteName('eventid') . $extraSQL . ' AND b.' . $db->quoteName('published') . '=' . $db->Quote(1) . ' WHERE a.' . $db->quoteName('memberid') . '=' . $db->Quote($id) . ' AND a.' . $db->quoteName('status') . '=' . $db->Quote(COMMUNITY_EVENT_STATUS_INVITED) . ' ' . ' AND b.' . $db->quoteName('enddate') . '>= NOW()' . ' ORDER BY a.' . $db->quoteName('id') . ' DESC'; $db->setQuery($query); if ($db->getErrorNum()) { JError::raiseError(500, $db->stderr()); } return $db->loadResult(); }
/** * To determine if the button for going, not going, waiting response should be shown * @param $event */ public static function showAttendButton($event) { $my = CFactory::getUser(); if (!CEventHelper::seatsAvailable($event) && $event->getMemberStatus($my->id) == COMMUNITY_EVENT_STATUS_ATTEND) { return true; } elseif (!CEventHelper::seatsAvailable($event)) { return false; } //always show for public event if ($event->permission == COMMUNITY_PUBLIC_EVENT) { return true; } //else anything below this is public event $allowShow = array(1, 2); //show if i am the member of the group if (in_array($event->getMemberStatus($my->id), $allowShow)) { return true; } }
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'); $notiTotal = 0; //getting pending event request $pendingEvent = $eventModel->getPending($my->id); $eventHtml = ''; $event = JTable::getInstance('Event', 'CTable'); if (!empty($pendingEvent)) { $notiTotal += count($pendingEvent); for ($i = 0; $i < count($pendingEvent); $i++) { $row = $pendingEvent[$i]; $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($pendingEvent[$i]); continue; } $row->eventAvatar = $event->getThumbAvatar(); $row->url = CRoute::_('index.php?option=com_community&view=events&task=viewevent&eventid=' . $row->eventid . false); $row->isGroupEvent = $event->contentid ? true : false; if ($row->isGroupEvent) { $group = JTable::getInstance('Group', 'CTable'); $group->load($event->contentid); $row->groupname = $group->name; $row->grouplink = CUrlHelper::groupLink($group->id); } } $tmpl = new CTemplate(); $tmpl->set('rows', $pendingEvent); $tmpl->setRef('my', $my); $eventHtml = $tmpl->fetch('notification.event.invitations'); } //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, 0, 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)) { 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', ''); } $tmpl = new CTemplate(); $tmpl->set('iRows', $notifications); $tmpl->setRef('my', $my); $itemHtml = $tmpl->fetch('notification.item'); } $notiHtml = $eventHtml . $groupHtml . $groupMemberApproveHTML . $itemHtml; if (empty($notiHtml)) { $notiHtml .= '<li>'; $notiHtml .= JText::_('COM_COMMUNITY_NO_NOTIFICATION'); $notiHtml .= '</li>'; } $date = JFactory::getDate(); $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">' . JText::_('COM_COMMUNITY_VIEW_ALL') . '</a>'; $notiHtml .= '</div>'; $json['title'] = JText::_('COM_COMMUNITY_NOTIFICATIONS'); $json['html'] = $notiHtml; die(json_encode($json)); }
<!-- Event Approval --> <?php if ($waitingApproval == COMMUNITY_EVENT_STATUS_REQUESTINVITE) { ?> <div class="joms-alert--info"> <span><?php echo JText::_('COM_COMMUNITY_EVENTS_APPROVEL_WAITING'); ?> </span> </div> <?php } ?> <?php if ($isInvited && CEventHelper::seatsAvailable($event)) { ?> <div id="events-invite-<?php echo $event->id; ?> " class="cInvite cAlert alert-info clearfix"> <div class="cInvite-Content"> <div class="cInvite-Message"> <?php echo JText::sprintf('COM_COMMUNITY_EVENTS_YOUR_INVITED', $join); $test = 1; ?> </div> <?php if ($friendsCount) { ?>
?> </a> <?php } elseif ($waitingApproval) { ?> <a href="javascript:" class="joms-button--primary joms-button--small"> <?php echo JText::_('COM_COMMUNITY_EVENTS_PENDING_INVITATIONS'); ?> </a> <?php } ?> <?php if (!$isPastEvent && CEventHelper::seatsAvailable($event) && ($event->allowinvite || $event->isAdmin($my->id) || $canInvite)) { ?> <a href="javascript:" class="joms-button--secondary joms-button--small" onclick="joms.api.eventInvite('<?php echo $event->id; ?> ', '<?php echo $isGroupEvent ? "group" : ""; ?> ')"> <?php echo JText::_($isGroupEvent ? 'COM_COMMUNITY_EVENT_INVITE_GROUP_MEMBERS' : 'COM_COMMUNITY_TAB_INVITE'); ?> </a> <?php } ?>
echo CRoute::getURI(); ?> #joms-icon-arrow-down"/> </svg> <?php } } } ?> </a> <?php } ?> <?php if (!$isPastEvent && CEventHelper::seatsAvailable($event) && ($event->allowinvite || $event->isAdmin($my->id) || COwnerHelper::isCommunityAdmin())) { ?> <a href="javascript:" class="joms-focus__button--add joms-button--secondary" onclick="joms.api.eventInvite('<?php echo $event->id; ?> ', '<?php echo $isGroupEvent ? "group" : ""; ?> ')"> <?php echo JText::_($isGroupEvent ? 'COM_COMMUNITY_EVENT_INVITE_GROUP_MEMBERS' : 'COM_COMMUNITY_TAB_INVITE'); ?> </a> <?php } ?>
/** * Ajax function to join an event invitation * * */ public function ajaxJoinInvitation($eventId) { if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $json = array(); $my = CFactory::getUser(); $filter = JFilterInput::getInstance(); $eventId = $filter->clean($eventId, 'int'); // Get events model $model = CFactory::getModel('events'); $event = JTable::getInstance('Event', 'CTable'); // Check the event availability if ($event->load($eventId)) { $guest = JTable::getInstance('EventMembers', 'CTable'); $keys = array('eventId' => $event->id, 'memberId' => $my->id); $guest->load($keys); //we must make sure the seats are available before letting user join if (!CEventHelper::seatsAvailable($event)) { return false; } // Set status to "CONFIRMED" $guest->status = COMMUNITY_EVENT_STATUS_ATTEND; $guest->store(); // Update event stats count $event->updateGuestStats(); $event->store(); $handler = CEventHelper::getHandler($event); // Activity stream purpose if the event is a public event if ($handler->isPublic()) { $actor = $my->id; $target = 0; $content = ''; $cid = $event->id; $app = 'events'; $act = $handler->getActivity('events.join', $actor, $target, $content, $cid, $app); $act->eventid = $event->id; $params = new CParameter(''); $action_str = 'events.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::add($act, $params->toString()); } $url = $handler->getFormattedLink('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id); $json['success'] = true; $json['message'] = JText::sprintf('COM_COMMUNITY_EVENTS_ACCEPTED', $event->title, $url); } else { $json['error'] = JText::_('COM_COMMUNITY_EVENTS_DELETED_ERROR'); } $this->cacheClean(array(COMMUNITY_CACHE_TAG_EVENTS, COMMUNITY_CACHE_TAG_ACTIVITIES)); die(json_encode($json)); }