Пример #1
0
 /**
  * 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));
 }
Пример #2
0
 /**
  * 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') . '" />&nbsp;';
     $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();
 }
Пример #3
0
 /**
  *
  */
 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();
 }
Пример #4
0
 /**
  * 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();
 }
Пример #5
0
 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));
 }
Пример #6
0
 /**
  * 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));
 }