* @author Isaac Flores Paz * @todo use Display::panel() * @package chamilo.social */ $cidReset = true; require_once '../inc/global.inc.php'; // Include OpenGraph NOT AVAILABLE require_once api_get_path(LIBRARY_PATH).'opengraph/OpenGraph.php'; if (api_get_setting('allow_social_tool') !='true') { $url = api_get_path(WEB_PATH).'whoisonline.php?id='.intval($_GET['u']); header('Location: '.$url); exit; } $user_id = api_get_user_id(); $friendId = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id(); $isAdmin = api_is_platform_admin($user_id); $userGroup = new UserGroup(); $show_full_profile = true; //social tab $this_section = SECTION_SOCIAL; //Initialize blocks $social_extra_info_block = null; $social_course_block = null; $social_group_info_block = null; $social_rss_block = null; $social_session_block = null; if (!empty($_POST['social_wall_new_msg_main']) || !empty($_FILES['picture']['tmp_name'])) { $messageId = 0; $idMessage = SocialManager::sendWallMessage( api_get_user_id(), $friendId, $_POST['social_wall_new_msg_main'], $messageId, MESSAGE_STATUS_WALL_POST ); if (!empty($_FILES['picture']['tmp_name']) && $idMessage > 0) { $error = SocialManager::sendWallMessageAttachmentFile( api_get_user_id(), $_FILES['picture'], $idMessage, $fileComment = '' ); } $url = api_get_path(WEB_CODE_PATH) . 'social/profile.php'; $url .= empty($_SERVER['QUERY_STRING']) ? '' : '?'.Security::remove_XSS($_SERVER['QUERY_STRING']); header('Location: ' . $url); exit; } else if (!empty($_POST['social_wall_new_msg']) && !empty($_POST['messageId'])) { $messageId = intval($_POST['messageId']); $res = SocialManager::sendWallMessage( api_get_user_id(), $friendId, $_POST['social_wall_new_msg'], $messageId, MESSAGE_STATUS_WALL ); $url = api_get_path(WEB_CODE_PATH) . 'social/profile.php'; $url .= empty($_SERVER['QUERY_STRING']) ? '' : '?'.Security::remove_XSS($_SERVER['QUERY_STRING']); header('Location: ' . $url); exit; } else if (isset($_GET['messageId'])) { $messageId = Security::remove_XSS($_GET['messageId']); $status = SocialManager::deleteMessage($messageId); header('Location: ' . api_get_path(WEB_CODE_PATH) . 'social/profile.php'); exit; } else if (isset($_GET['u'])) { //I'm your friend? I can see your profile? $user_id = intval($_GET['u']); if (api_is_anonymous($user_id, true)) { api_not_allowed(true); } // It's me! if (api_get_user_id() != $user_id) { $user_info = api_get_user_info($user_id); $show_full_profile = false; if (!$user_info) { // user does no exist !! api_not_allowed(true); } else { //checking the relationship between me and my friend $my_status = SocialManager::get_relation_between_contacts( api_get_user_id(), $user_id ); if (in_array($my_status, array( USER_RELATION_TYPE_PARENT, USER_RELATION_TYPE_FRIEND, USER_RELATION_TYPE_GOODFRIEND ))) { $show_full_profile = true; } //checking the relationship between my friend and me $my_friend_status = SocialManager::get_relation_between_contacts( $user_id, api_get_user_id() ); if (in_array($my_friend_status, array( USER_RELATION_TYPE_PARENT, USER_RELATION_TYPE_FRIEND, USER_RELATION_TYPE_GOODFRIEND ))) { $show_full_profile = true; } else { // im probably not a good friend $show_full_profile = false; } } } else { $user_info = api_get_user_info($user_id); } } else { $user_info = api_get_user_info($user_id); } if ($user_info['user_id'] == api_get_user_id()) { $isSelfUser = true; } else { $isSelfUser = false; } $userIsOnline = user_is_online($user_id); $libpath = api_get_path(LIBRARY_PATH); require_once $libpath.'magpierss/rss_fetch.inc'; $ajax_url = api_get_path(WEB_AJAX_PATH).'message.ajax.php'; $socialAjaxUrl = api_get_path(WEB_AJAX_PATH).'social.ajax.php'; $javascriptDir = api_get_path(LIBRARY_PATH) . 'javascript/'; api_block_anonymous_users(); $locale = api_get_language_isocode(); // Add Jquery scroll pagination plugin $htmlHeadXtra[] = api_get_js('jscroll/jquery.jscroll.js'); // Add Jquery Time ago plugin $htmlHeadXtra[] = api_get_asset('jquery-timeago/jquery.timeago.js'); $timeAgoLocaleDir = $javascriptDir . 'jquery-timeago/locales/jquery.timeago.' . $locale . '.js'; if (file_exists($timeAgoLocaleDir)) { $htmlHeadXtra[] = api_get_js('jquery-timeago/locales/jquery.timeago.' . $locale . '.js'); } $htmlHeadXtra[] = ''; $link_shared = ''; $nametool = get_lang('ViewMySharedProfile'); if (isset($_GET['shared'])) { $my_link = '../social/profile.php'; $link_shared = 'shared='.Security::remove_XSS($_GET['shared']); } else { $my_link = '../social/profile.php'; $link_shared = ''; } $interbreadcrumb[] = array( 'url' => 'home.php', 'name' => get_lang('SocialNetwork'), ); if (isset($_GET['u']) && is_numeric($_GET['u']) && $_GET['u'] != api_get_user_id()) { $info_user = api_get_user_info($_GET['u']); $interbreadcrumb[]= array( 'url' => '#', 'name' => $info_user['complete_name'] ); $nametool = ''; } if (isset($_GET['u'])) { $param_user = 'u='.Security::remove_XSS($_GET['u']); } else { $info_user = api_get_user_info(api_get_user_id()); $param_user = ''; } $_SESSION['social_user_id'] = intval($user_id); // Setting some course info $my_user_id = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id(); $personal_course_list = UserManager::get_personal_session_course_list($my_user_id); $course_list_code = array(); $i = 1; $list = []; if (is_array($personal_course_list)) { foreach ($personal_course_list as $my_course) { if ($i<=10) { $list[] = SocialManager::get_logged_user_course_html($my_course, $i); $course_list_code[] = array('code' => $my_course['code']); } else { break; } $i++; } //to avoid repeted courses $course_list_code = array_unique_dimensional($course_list_code); } //Social Block Menu $social_menu_block = SocialManager::show_social_menu( 'shared_profile', null, $user_id, $show_full_profile ); //Setting some session info $user_info = api_get_user_info($my_user_id); $sessionList = SessionManager::getSessionsFollowedByUser( $my_user_id, $user_info['status'] ); // My friends $friend_html = SocialManager::listMyFriendsBlock( $user_id, $link_shared, $show_full_profile ); $wallSocialAddPost = SocialManager::getWallForm(); $social_wall_block = $wallSocialAddPost; // Social Post Wall $posts = SocialManager::getWallMessagesByUser($my_user_id, $friendId) ; $posts = empty($posts) ? '

'.get_lang("NoPosts").'

' : $posts; $social_post_wall_block = Display::panel($posts, get_lang('Posts')); $socialAutoExtendLink = Display::url( get_lang('SeeMore'), $socialAjaxUrl . '?u='. $my_user_id . '&a=listWallMessage&start=10&length=5', array( 'class' => 'nextPage next', ) ); $socialRightInformation = null; $social_right_content = null; $show_full_profile = true; if ($show_full_profile) { $t_ufo = Database :: get_main_table(TABLE_EXTRA_FIELD_OPTIONS); $extra_user_data = UserManager::get_extra_user_data($user_id, false, true); $extra_information = ''; if (is_array($extra_user_data) && count($extra_user_data)>0 ) { $extra_information_value = ''; $extraField = new ExtraField('user'); foreach ($extra_user_data as $key => $data) { // Avoiding parameters if (in_array( $key, array( 'mail_notify_invitation', 'mail_notify_message', 'mail_notify_group_message', ) )) { continue; } // get display text, visibility and type from user_field table $field_variable = str_replace('extra_', '', $key); $extraFieldInfo = $extraField->get_handler_field_info_by_field_variable( $field_variable ); if ($extraFieldInfo['visible'] != 1) { continue; } if (is_array($data)) { $extra_information_value .= '
'.ucfirst($extraFieldInfo['display_text']).'
' .'
'.implode(',', $data).'
'; } else { switch ($extraFieldInfo['field_type']) { case ExtraField::FIELD_TYPE_DOUBLE_SELECT: $id_options = explode(';', $data); $value_options = array(); // get option display text from user_field_options table foreach ($id_options as $id_option) { $sql = "SELECT display_text FROM $t_ufo WHERE id = '$id_option'"; $res_options = Database::query($sql); $row_options = Database::fetch_row($res_options); $value_options[] = $row_options[0]; } $extra_information_value .= '
'.ucfirst($extraFieldInfo['display_text']).':
' .'
'.implode(' ', $value_options).'
'; break; case ExtraField::FIELD_TYPE_TAG: $user_tags = UserManager::get_user_tags($user_id, $extraFieldInfo['id']); $tag_tmp = array(); foreach ($user_tags as $tags) { $tag_tmp[] = '' .$tags['tag'] .''; } if (is_array($user_tags) && count($user_tags)>0) { $extra_information_value .= '
'.ucfirst($extraFieldInfo['display_text']).':
' .'
'.implode('', $tag_tmp).'
'; } break; case ExtraField::FIELD_TYPE_SOCIAL_PROFILE: $icon_path = UserManager::get_favicon_from_url($data); $bottom = '0.2'; //quick hack for hi5 $domain = parse_url($icon_path, PHP_URL_HOST); if ($domain == 'www.hi5.com' or $domain == 'hi5.com') { $bottom = '-0.8'; } $data = '' .'icon' .$extraFieldInfo['display_text'] .''; $extra_information_value .= '
'.$data.'
'; break; default: if (!empty($data)) { $extra_information_value .= '
'.ucfirst($extraFieldInfo['display_text']).':
'.$data.'
'; } break; } } } // if there are information to show if (!empty($extra_information_value)) { $extra_information .= Display::panel( $extra_information_value, get_lang('ExtraInformation') ); } } // If there are information to show Block Extra Information if (!empty($extra_information_value)) { $social_extra_info_block = $extra_information; } // MY GROUPS $results = $userGroup->get_groups_by_user($my_user_id, 0); $grid_my_groups = array(); $max_numbers_of_group = 4; if (is_array($results) && count($results) > 0) { $i = 1; foreach ($results as $result) { if ($i > $max_numbers_of_group) { break; } $id = $result['id']; $url_open = ''; $url_close = ''; $icon = ''; $name = cut($result['name'], CUT_GROUP_NAME, true); if ($result['relation_type'] == GROUP_USER_PERMISSION_ADMIN) { $icon = Display::return_icon( 'social_group_admin.png', get_lang('Admin'), array('style'=>'vertical-align:middle;width:16px;height:16px;') ); } elseif ($result['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) { $icon = Display::return_icon( 'social_group_moderator.png', get_lang('Moderator'), array('style'=>'vertical-align:middle;width:16px;height:16px;') ); } $count_users_group = count($userGroup->get_all_users_by_group($id)); if ($count_users_group == 1 ) { $count_users_group = $count_users_group.' '.get_lang('Member'); } else { $count_users_group = $count_users_group.' '.get_lang('Members'); } $item_name = $url_open.$name.$icon.$url_close; $item_actions = ''; $grid_my_groups[] = array( $item_name, $url_open.$result['picture'].$url_close, $item_actions, ); $i++; } } // Block My Groups if (count($grid_my_groups) > 0) { $my_groups = ''; $count_groups = 0; if (count($results) == 1 ) { $count_groups = count($results); } else { $count_groups = count($results); } $my_groups .= '
'; $my_groups .= '
'.get_lang('MyGroups').' ('.$count_groups.')
'; if ($i > $max_numbers_of_group) { if (api_get_user_id() == $user_id) { $my_groups .= ''; } else { $my_groups .= ''; } } $total = count($grid_my_groups); $i = 1; foreach ($grid_my_groups as $group) { $my_groups .= '
'; $my_groups .= $group[0]; $my_groups .= '
'; $i++; } $my_groups .= '
'; $social_group_info_block = $my_groups; } // Block Social Course $my_courses = null; // COURSES LIST if (is_array($list)) { // Courses without sessions $my_course = ''; $i = 1; foreach ($list as $key => $value) { if ( empty($value[2]) ) { //if out of any session $my_courses .= $value[1]; $i++; } } $social_course_block .= $my_courses; //$social_course_block = Display::panel($my_courses, get_lang('MyCourses')); } // Block Social Sessions if (count($sessionList) > 0) { //$social_session_block = $htmlSessionList; $social_session_block = $sessionList; } // Block Social User Feeds $user_feeds = SocialManager::get_user_feeds($user_id); if (!empty($user_feeds)) { $social_rss_block = Display::panel($user_feeds, get_lang('RSSFeeds')); } // Productions $production_list = UserManager::build_production_list($user_id); // Images uploaded by course $file_list = ''; if (is_array($course_list_code) && count($course_list_code)>0) { foreach ($course_list_code as $course) { $file_list.= UserManager::get_user_upload_files_by_course($user_id,$course['code'],$resourcetype='images'); } } $count_pending_invitations = 0; if (!isset($_GET['u']) || (isset($_GET['u']) && $_GET['u']==api_get_user_id()) ) { $pending_invitations = SocialManager::get_list_invitation_of_friends_by_user_id(api_get_user_id()); $list_get_path_web = SocialManager::get_list_web_path_user_invitation_by_user_id(api_get_user_id()); $count_pending_invitations = count($pending_invitations); } if (!empty($production_list) || !empty($file_list) || $count_pending_invitations > 0) { //Pending invitations if (!isset($_GET['u']) || (isset($_GET['u']) && $_GET['u']==api_get_user_id())) { if ($count_pending_invitations > 0) { $invitations = '

'.get_lang('PendingInvitations').'

'; for ($i=0;$i<$count_pending_invitations;$i++) { $user_invitation_id = $pending_invitations[$i]['user_sender_id']; $invitations .= '
'; $invitations .= '
'; $invitations .= ''; $invitations .= '
'; $invitations .= '
'; $user_invitation_info = api_get_user_info($user_invitation_id); $invitations .= '' .api_get_person_name( $user_invitation_info['firstname'], $user_invitation_info['lastname']) .''; $invitations .= '
'; $invitations .= Security::remove_XSS( cut($pending_invitations[$i]['content'], 50), STUDENT, true ); $invitations .= '
'; $invitations .= '' .get_lang('SocialAddToFriends') .''; $invitations .= '
'; $invitations .= '
'; $invitations .= '
'; } $socialRightInformation .= SocialManager::social_wrapper_div($invitations, 4); } } // Productions $production_list = UserManager::build_production_list($user_id); $product_content = ''; if (!empty($production_list)) { $product_content .= '

'.get_lang('MyProductions').'

'; $product_content .= $production_list; $socialRightInformation .= SocialManager::social_wrapper_div($product_content, 4); } $images_uploaded = null; // Images uploaded by course if (!empty($file_list)) { $images_uploaded .= '

'.get_lang('ImagesUploaded').'

'; $images_uploaded .= '
'; $images_uploaded .= $file_list; $images_uploaded .= '
'; $socialRightInformation .= SocialManager::social_wrapper_div($images_uploaded, 4); } } if (!empty($user_info['competences']) || !empty($user_info['diplomas']) || !empty($user_info['openarea']) || !empty($user_info['teach']) ) { $more_info .= '

'.get_lang('MoreInformation').'

'; if (!empty($user_info['competences'])) { $more_info .= '
'; $more_info .= '
'.get_lang('MyCompetences').'
'; $more_info .= '
'.$user_info['competences'].'
'; $more_info .= '
'; } if (!empty($user_info['diplomas'])) { $more_info .= '
'.get_lang('MyDiplomas').'
'; $more_info .= '
'.$user_info['diplomas'].'
'; $more_info .= '
'; } if (!empty($user_info['openarea'])) { $more_info .= '
'.get_lang('MyPersonalOpenArea').'
'; $more_info .= '
'.$user_info['openarea'].'
'; $more_info .= '
'; } if (!empty($user_info['teach'])) { $more_info .= '
'.get_lang('MyTeach').'
'; $more_info .= '
'.$user_info['teach'].'
'; $more_info .= '
'; } $socialRightInformation .= SocialManager::social_wrapper_div($more_info, 4); } } $tpl = new Template(get_lang('Social')); // Block Avatar Social SocialManager::setSocialUserBlock($tpl, $user_id, 'shared_profile'); $tpl->assign('social_friend_block', $friend_html); $tpl->assign('social_menu_block', $social_menu_block); $tpl->assign('social_wall_block', $social_wall_block); $tpl->assign('social_post_wall_block', $social_post_wall_block); $tpl->assign('social_extra_info_block', $social_extra_info_block); $tpl->assign('social_course_block', $social_course_block); $tpl->assign('social_group_info_block', $social_group_info_block); $tpl->assign('social_rss_block', $social_rss_block); $tpl->assign('social_skill_block', SocialManager::getSkillBlock($my_user_id)); $tpl->assign('sessionList', $social_session_block); $tpl->assign('social_right_information', $socialRightInformation); $tpl->assign('social_auto_extend_link', $socialAutoExtendLink); $formModalTpl = new Template(); $formModalTpl->assign('messageForm', MessageManager::generate_message_form('send_message')); $formModalTpl->assign('invitationForm', MessageManager::generate_invitation_form('send_invitation')); $formModals = $formModalTpl->fetch('default/social/form_modals.tpl'); $tpl->assign('formModals', $formModals); $social_layout = $tpl->get_template('social/profile.tpl'); $tpl->display($social_layout);