';
}
$j++;
}
}
}
echo $friend_html;
break;
case 'toogle_course':
if (api_is_anonymous()) {
echo '';
break;
}
require_once api_get_path(SYS_CODE_PATH).'forum/forumfunction.inc.php';
$user_id = Session::read('social_user_id');
if ($_POST['action']) {
$action = $_POST['action'];
}
switch ($action) {
case 'load_course':
$course_id = intval($_POST['course_code']); // the int course id
$course_info = api_get_course_info_by_id($course_id);
$course_code = $course_info['code'];
if (api_is_user_of_course($course_id, api_get_user_id())) {
//------Forum messages
$forum_result = get_all_post_from_user($user_id, $course_code);
$all_result_data = 0;
if ($forum_result != '') {
echo '';
echo api_xml_http_response_encode(get_lang('Forum'));
echo '
';
echo '';
echo api_xml_http_response_encode($forum_result);
echo '
';
echo '
';
$all_result_data++;
}
//------Blog posts
$result = Blog::getBlogPostFromUser($course_id, $user_id, $course_code);
if (!empty($result)) {
api_display_tool_title(api_xml_http_response_encode(get_lang('Blog')));
echo '';
echo api_xml_http_response_encode($result);
echo '
';
echo '
';
$all_result_data++;
}
//------Blog comments
$result = Blog::getBlogCommentsFromUser($course_id, $user_id, $course_code);
if (!empty($result)) {
echo '';
api_display_tool_title(api_xml_http_response_encode(get_lang('BlogComments')));
echo api_xml_http_response_encode($result);
echo '
';
echo '
';
$all_result_data++;
}
if ($all_result_data == 0) {
echo api_xml_http_response_encode(get_lang('NoDataAvailable'));
}
} else {
echo '
';
api_display_tool_title(api_xml_http_response_encode(get_lang('Details')));
echo '';
echo api_xml_http_response_encode(get_lang('UserNonRegisteredAtTheCourse'));
echo '
';
echo '
';
echo '
';
}
break;
case 'unload_course':
default:
break;
}
break;
case 'send_comment':
if (api_is_anonymous()) {
exit;
}
if (api_get_setting('allow_social_tool') !== 'true') {
exit;
}
$messageId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
if (empty($messageId)) {
exit;
}
$userId = api_get_user_id();
$messageInfo = MessageManager::get_message_by_id($messageId);
if (!empty($messageInfo)) {
$comment = isset($_REQUEST['comment']) ? $_REQUEST['comment'] : '';
if (!empty($comment)) {
$messageId = SocialManager::sendWallMessage(
$userId,
$messageInfo['user_receiver_id'],
$comment,
$messageId,
MESSAGE_STATUS_WALL
);
if ($messageId) {
$messageInfo = MessageManager::get_message_by_id($messageId);
echo SocialManager::processPostComment($messageInfo);
}
}
}
break;
case 'delete_message':
if (api_is_anonymous()) {
exit;
}
if (api_get_setting('allow_social_tool') !== 'true') {
exit;
}
$messageId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
if (empty($messageId)) {
exit;
}
$userId = api_get_user_id();
$messageInfo = MessageManager::get_message_by_id($messageId);
if (!empty($messageInfo)) {
$canDelete = ($messageInfo['user_receiver_id'] == $userId || $messageInfo['user_sender_id'] == $userId) &&
empty($messageInfo['group_id']);
if ($canDelete || api_is_platform_admin()) {
SocialManager::deleteMessage($messageId);
echo Display::return_message(get_lang('MessageDeleted'));
break;
}
}
break;
case 'list_wall_message':
if (api_is_anonymous()) {
break;
}
$start = isset($_REQUEST['start']) ? (int) $_REQUEST['start'] : 0;
$userId = isset($_REQUEST['u']) ? (int) $_REQUEST['u'] : api_get_user_id();
$html = '';
if ($userId == api_get_user_id()) {
$threadList = SocialManager::getThreadList($userId);
$threadIdList = [];
if (!empty($threadList)) {
$threadIdList = array_column($threadList, 'id');
}
$html = SocialManager::getMyWallMessages(
$userId,
$start,
SocialManager::DEFAULT_SCROLL_NEW_POST,
$threadIdList
);
$html = $html['posts'];
} else {
$messages = SocialManager::getWallMessages(
$userId,
null,
0,
0,
'',
$start,
SocialManager::DEFAULT_SCROLL_NEW_POST
);
$messages = SocialManager::formatWallMessages($messages);
if (!empty($messages)) {
ksort($messages);
foreach ($messages as $message) {
$post = $message['html'];
$comments = SocialManager::getWallPostComments($userId, $message);
$html .= SocialManager::wrapPost($message, $post.$comments);
}
}
}
if (!empty($html)) {
$html .= Display::div(
Display::url(
get_lang('SeeMore'),
api_get_self().'?u='.$userId.'&a=list_wall_message&start='.
($start + SocialManager::DEFAULT_SCROLL_NEW_POST).'&length='.SocialManager::DEFAULT_SCROLL_NEW_POST,
[
'class' => 'nextPage',
]
),
[
'class' => 'next',
]
);
}
echo $html;
break;
// Read the Url using OpenGraph and returns the hyperlinks content
case 'read_url_with_open_graph':
$url = isset($_POST['social_wall_new_msg_main']) ? $_POST['social_wall_new_msg_main'] : '';
$url = trim($url);
$html = '';
if (SocialManager::verifyUrl($url) == true) {
$html = Security::remove_XSS(
SocialManager::readContentWithOpenGraph($url)
);
}
echo $html;
break;
case 'like_message':
header('Content-Type: application/json');
if (
api_is_anonymous() ||
!api_get_configuration_value('social_enable_messages_feedback')
) {
echo json_encode(false);
exit;
}
$messageId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
$status = isset($_GET['status']) ? $_GET['status'] : '';
$groupId = isset($_GET['group']) ? (int) $_GET['group'] : 0;
if (empty($messageId) || !in_array($status, ['like', 'dislike'])) {
echo json_encode(false);
exit;
}
$em = Database::getManager();
$messageRepo = $em->getRepository('ChamiloCoreBundle:Message');
$messageLikesRepo = $em->getRepository('ChamiloCoreBundle:MessageFeedback');
/** @var Message $message */
$message = $messageRepo->find($messageId);
if (empty($message)) {
echo json_encode(false);
exit;
}
if ((int) $message->getGroupId() !== $groupId) {
echo json_encode(false);
exit;
}
if (!empty($message->getGroupId())) {
$usergroup = new UserGroup();
$groupInfo = $usergroup->get($groupId);
if (empty($groupInfo)) {
echo json_encode(false);
exit;
}
$isMember = $usergroup->is_group_member($groupId, $current_user_id);
if (GROUP_PERMISSION_CLOSED == $groupInfo['visibility'] && !$isMember) {
echo json_encode(false);
exit;
}
}
$user = api_get_user_entity($current_user_id);
$userLike = $messageLikesRepo->findOneBy(['message' => $message, 'user' => $user]);
if (empty($userLike)) {
$userLike = new MessageFeedback();
$userLike
->setMessage($message)
->setUser($user);
}
if ('like' === $status) {
if ($userLike->isLiked()) {
echo json_encode(false);
exit;
}
$userLike
->setLiked(true)
->setDisliked(false);
} elseif ('dislike' === $status) {
if ($userLike->isDisliked()) {
echo json_encode(false);
exit;
}
$userLike
->setLiked(false)
->setDisliked(true);
}
$userLike
->setUpdatedAt(
api_get_utc_datetime(null, false, true)
);
$em->persist($userLike);
$em->flush();
echo json_encode(true);
break;
default:
echo '';
}
exit;