/** * Like an item. Update ajax count * @param string $element Can either be core object (photos/videos) or a plugins (plugins,plugin_name) * @param mixed $itemId Unique id to identify object item * */ public function ajaxLike($element, $itemId) { $filter = JFilterInput::getInstance(); $element = $filter->clean($element, 'string'); $itemId = $filter->clean($itemId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $like = new CLike(); if (!$like->enabled($element)) { // @todo: return proper ajax error return; } $my = CFactory::getUser(); $objResponse = new JAXResponse(); $like->addLike($element, $itemId); $likeCount = $like->getLikeCount($element, $itemId); $html = $like->getHTML($element, $itemId, $my->id); $act = new stdClass(); $act->cmd = $element . '.like'; $act->actor = $my->id; $act->target = 0; $act->title = ''; $act->content = ''; $act->app = $element . '.like'; $act->cid = $itemId; if ($element == 'album') { $album = JTable::getInstance('Album', 'CTable'); $album->load($itemId); if ($album->type == 'event') { $act->eventid = $album->eventid; } } elseif ($element == 'photo') { $photo = JTable::getInstance('Photo', 'CTable'); $photo->load($itemId); $album = JTable::getInstance('Album', 'CTable'); $album->load($photo->albumid); if ($album->type == 'event') { $act->eventid = $album->eventid; } } elseif ($element == 'videos') { $video = JTable::getInstance('Video', 'CTable'); $video->load($itemId); $act->eventid = $video->eventid; $act->groupid = $video->groupid; } // load item-specific privacy settings, if available $table = JTable::getInstance($element, 'CTable'); if (is_object($table)) { $table->load($itemId); if (isset($table->permissions)) { $act->access = $table->permissions; } } $params = new CParameter(''); switch ($element) { case 'groups': $act->groupid = $itemId; //@since 4.1 when a group is liked, dump the data into photo stats $statsModel = CFactory::getModel('stats'); $statsModel->addGroupStats($itemId, 'like'); break; case 'events': $act->eventid = $itemId; //@since 4.1 when an event is liked, dump the data into event stats $statsModel = CFactory::getModel('stats'); $statsModel->addEventStats($itemId, 'like'); break; } $params->set('action', $element . '.like'); // Add logging CActivityStream::addActor($act, $params->toString()); $json = array('success' => true, 'likeCount' => $likeCount); die(json_encode($json)); }
/** * Add an application for the user * * @param $name string Application name / element */ public function ajaxAdd($name) { // Check permissions $my = CFactory::getUser(); $filter = JFilterInput::getInstance(); $name = $filter->clean($name, 'string'); if ($my->id == 0) { return $this->ajaxBlockUnregister(); } $objResponse = new JAXResponse(); $appModel = CFactory::getModel('apps'); // Get List of added apps $apps = $appModel->getAvailableApps(); $addedApps = array(); for ($i = 0; $i < count($apps); $i++) { $app = $apps[$i]; if ($appModel->isAppUsed($my->id, $app->name)) { $addedApps[] = $app; } } $appModel->addApp($my->id, $name); $theApp = $appModel->getAppInfo($name); $appId = $appModel->getUserApplicationId($name, $my->id); $act = new stdClass(); $act->cmd = 'application.add'; $act->actor = $my->id; $act->target = 0; $act->title = ''; //JText::_('COM_COMMUNITY_ACTIVITIES_APPLICATIONS_ADDED'); $act->content = ''; $act->app = 'app.install.' . $name; $act->cid = 0; $params = new JRegistry(''); $params->set('app', $name); CActivityStream::addActor($act, $params->toString()); //CFactory::load( 'libraries' , 'userpoints' ); CUserPoints::assignPoint('application.add'); // Change cWindow title $objResponse->addAssign('cwin_logo', 'innerHTML', JText::_('COM_COMMUNITY_ADD_APPLICATION_TITLE')); $formAction = CRoute::_('index.php?option=com_community&view=friends&task=deleteSent', false); $action = '<form name="cancelRequest" action="" method="POST">'; $action .= '<input type="button" class="input button" name="save" onclick="joms.apps.showSettingsWindow(\'' . $appId . '\',\'' . $name . '\');" value="' . JText::_('COM_COMMUNITY_VIDEOS_SETTINGS_BUTTON') . '" /> '; $action .= '<input type="button" class="input button" onclick="cWindowHide();return false;" name="cancel" value="' . JText::_('COM_COMMUNITY_BUTTON_CLOSE_BUTTON') . '" />'; $action .= '</form>'; $html = '<div class="ajax-notice-apps-added">' . JText::_('COM_COMMUNITY_APPS_AJAX_ADDED') . '</div>'; $objResponse->addScriptCall('cWindowAddContent', $html, $action); $objResponse->addScriptCall("joms.jQuery('." . $name . " .added-button').remove();"); $objResponse->addScriptCall("joms.jQuery('." . $name . "').append('<span class=\"added-ribbon\">" . JText::_('COM_COMMUNITY_APPS_LIST_ADDED') . "</span>');"); return $objResponse->sendResponse(); }
/** * */ public static function joinApproved($groupId, $userid) { $group = JTable::getInstance('Group', 'CTable'); $member = JTable::getInstance('GroupMembers', 'CTable'); $group->load($groupId); $act = new stdClass(); $act->cmd = 'group.join'; $act->actor = $userid; $act->target = 0; $act->title = ''; //JText::sprintf('COM_COMMUNITY_GROUPS_GROUP_JOIN' , '{group_url}' , $group->name ); $act->content = ''; $act->app = 'groups.join'; $act->cid = $group->id; $act->groupid = $group->id; $params = new CParameter(''); $params->set('group_url', 'index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id); $params->set('action', 'group.join'); // Add logging if (CUserPoints::assignPoint('group.join')) { CActivityStream::addActor($act, $params->toString()); } // Store the group and update stats $group->updateStats(); $group->store(); }
/** * Ajax function to accept Private Group Request * **/ public function ajaxGroupJoinRequest($memberId, $groupId) { $filter = JFilterInput::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(JText::_('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("' . JText::_('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, JText::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 = ''; //JText::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(JText::sprintf('COM_COMMUNITY_EVENTS_ACCEPTED', $group->name, $url)) . '");'); $objResponse->addScriptCall('joms.notifications.updateNotifyCount();'); $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(); }
public function ajaxUpdateStatus($eventId, $status) { $filter = JFilterInput::getInstance(); $eventId = $filter->clean($eventId, 'int'); $status = $filter->clean($status, 'int'); $target = null; if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $my = CFactory::getUser(); $json = array(); $memberId = $my->id; $modal = $this->getModel('events'); $event = JTable::getInstance('Event', 'CTable'); $event->load($eventId); //CFactory::load( 'helpers' , 'event' ); $handler = CEventHelper::getHandler($event); if (!$handler->isAllowed()) { $json['error'] = JText::_('COM_COMMUNITY_ACCESS_FORBIDDEN'); die(json_encode($json)); } if ($event->ticket && ($status == COMMUNITY_EVENT_STATUS_ATTEND && $event->confirmedcount + 1 > $event->ticket)) { $json['error'] = JText::_('COM_COMMUNITY_EVENTS_TICKET_FULL'); die(json_encode($json)); } $eventMember = JTable::getInstance('EventMembers', 'CTable'); $keys = array('eventId' => $eventId, 'memberId' => $memberId); $eventMember->load($keys); if ($eventMember->permission != 1 && $eventMember->permission != 2) { $eventMember->permission = 3; } $date = JFactory::getDate(); $eventMember->created = $date->toSql(); $eventMember->status = $status; $eventMember->store(); $event->updateGuestStats(); $event->store(); // trigger on event join. $this->triggerEvents('onEventJoin', $event); //activities stream goes here. $url = $handler->getFormattedLink('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id, false); // We update the activity only if a user attend an event and the event was set to public event if ($status == COMMUNITY_EVENT_STATUS_ATTEND && $handler->isPublic()) { $command = 'events.attendence.attend'; $actor = $my->id; $target = 0; $content = ''; $cid = $event->id; $app = 'events.attend'; $act = $handler->getActivity($command, $actor, $target, $content, $cid, $app); $act->eventid = $event->id; $params = new CParameter(''); $action_str = 'events.attendence.attend'; $params->set('eventid', $event->id); $params->set('action', $action_str); $params->set('event_url', $url); // Add activity logging CActivityStream::addActor($act, $params->toString()); } if ($status == COMMUNITY_EVENT_STATUS_WONTATTEND) { $command = 'events.attendence.attend'; $actor = $my->id; $target = 0; $content = ''; $cid = $event->id; $app = 'events.attend'; $act = $handler->getActivity($command, $actor, $target, $content, $cid, $app); $act->eventid = $event->id; $params = new CParameter(''); $action_str = 'events.attendence.attend'; $params->set('eventid', $event->id); $params->set('action', $action_str); $params->set('event_url', $url); CActivityStream::removeActor($act, $params->toString()); } //trigger goes here. $appsLib = CAppPlugins::getInstance(); $appsLib->loadApplications(); $params = array(); $params[] = $event; $params[] = $my->id; $params[] = $status; if (!is_null($target)) { $params[] = $target; } $this->cacheClean(array(COMMUNITY_CACHE_TAG_EVENTS, COMMUNITY_CACHE_TAG_ACTIVITIES)); $html = CEvents::getEventMemberHTML($event->id); if ($status == COMMUNITY_EVENT_STATUS_ATTEND) { $RSVPmessage = JText::_('COM_COMMUNITY_EVENTS_ATTENDING_EVENT_MESSAGE'); } else { if ($status == COMMUNITY_EVENT_STATUS_MAYBE) { $RSVPmessage = JText::_('COM_COMMUNITY_EVENTS_MAYBE_ATTENDING_EVENT_MESSAGE'); } else { $RSVPmessage = JText::_('COM_COMMUNITY_EVENTS_NOT_ATTENDING_EVENT_MESSAGE'); } } $json['success'] = true; $json['html'] = $html; if (isset($RSVPmessage)) { $json['message'] = $RSVPmessage; } die(json_encode($json)); }
/** * Like an item. Update ajax count * @param string $element Can either be core object (photos/videos) or a plugins (plugins,plugin_name) * @param mixed $itemId Unique id to identify object item * */ public function ajaxLike($element, $itemId) { $filter = JFilterInput::getInstance(); $element = $filter->clean($element, 'string'); $itemId = $filter->clean($itemId, 'int'); if (!COwnerHelper::isRegisteredUser()) { return $this->ajaxBlockUnregister(); } $like = new CLike(); if (!$like->enabled($element)) { // @todo: return proper ajax error return; } $my = CFactory::getUser(); $objResponse = new JAXResponse(); $like->addLike($element, $itemId); $likeCount = $like->getLikeCount($element, $itemId); $html = $like->getHTML($element, $itemId, $my->id); $act = new stdClass(); $act->cmd = $element . '.like'; $act->actor = $my->id; $act->target = 0; $act->title = ''; $act->content = ''; $act->app = $element . '.like'; $act->cid = $itemId; // load item-specific privacy settings, if available $table = JTable::getInstance($element, 'CTable'); if (is_object($table)) { $table->load($itemId); if (isset($table->permissions)) { $act->access = $table->permissions; } } $params = new CParameter(''); switch ($element) { case 'groups': $act->groupid = $itemId; break; case 'events': $act->eventid = $itemId; break; } $params->set('action', $element . '.like'); // Add logging CActivityStream::addActor($act, $params->toString()); $json = array('success' => true, 'likeCount' => $likeCount); die(json_encode($json)); }