skala
Julio Montoya 15 years ago
commit 0a1da3a132
  1. 23
      main/admin/statistics/statistics.lib.php
  2. 19
      main/admin/user_list.php
  3. 2
      main/inc/ajax/message.ajax.php
  4. 16
      main/inc/ajax/social.ajax.php
  5. 2
      main/inc/lib/database.lib.php
  6. 1
      main/inc/lib/message.lib.php
  7. 4
      main/inc/lib/online.inc.php
  8. 44
      main/inc/lib/sessionmanager.lib.php
  9. 96
      main/inc/lib/social.lib.php
  10. 195
      main/inc/lib/usermanager.lib.php
  11. 6
      main/install/dokeos_main.sql
  12. 5
      main/install/migrate-db-1.8.6.2-1.8.7-pre.sql
  13. 8
      main/social/profile.php
  14. 4
      main/social/profile_friends_and_groups.inc.php
  15. 3
      tests/main/inc/lib/social.lib.test.php

@ -1,24 +1,5 @@
<?php
// $Id: index.php 8216 2006-11-3 18:03:15 NushiFirefox $
/*
==============================================================================
Dokeos - elearning and course management software
Copyright (c) 2006 Bart Mollet <bart.mollet@hogent.be>
For a full list of contributors, see "credits.txt".
The full license can be read in "license.txt".
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
See the GNU General Public License for more details.
Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
==============================================================================
*/
/* For licensing terms, see /license.txt */
require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
/**
==============================================================================
@ -486,7 +467,7 @@ class Statistics
* Count the number of friends for social network users
*/
function get_friends() {
$user_friend_table = Database::get_main_table(TABLE_MAIN_USER_FRIEND);
$user_friend_table = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$user_table = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT lastname, firstname, username, COUNT(friend_user_id) AS count_friend
FROM ".$user_friend_table." uf LEFT JOIN ".$user_table." u ON uf.user_id = u.user_id

@ -501,12 +501,19 @@ function modify_filter($user_id,$url_params,$row)
$result .= Display::return_icon('delete_na.gif', get_lang('Delete'));
}
}
if ($is_admin) {
$result .= Display::return_icon('admin_star.png', get_lang('IsAdministrator'),array('width'=> 22, 'heigth'=> 22));
} else {
$result .= Display::return_icon('admin_star_na.png', get_lang('IsNotAdministrator'));
}
if ($is_admin) {
$result .= Display::return_icon('admin_star.png', get_lang('IsAdministrator'),array('width'=> 22, 'heigth'=> 22));
} else {
$result .= Display::return_icon('admin_star_na.png', get_lang('IsNotAdministrator'));
}
if ($row['7'] == $statusname[DRH]) {
$result .= '<a href="dashboard_add_users_to_user.php?user='.$user_id.'">'.Display::return_icon('addd.gif', get_lang('Add')).'</a>&nbsp;&nbsp;';
$result .= '<a href="dashboard_add_courses_to_user.php?user='.$user_id.'">'.Display::return_icon('addd.gif', get_lang('Add')).'</a>&nbsp;&nbsp;';
$result .= '<a href="dashboard_add_users_to_sessions.php?user='.$user_id.'">'.Display::return_icon('addd.gif', get_lang('Add')).'</a>&nbsp;&nbsp;';
}
return $result;
}

@ -15,7 +15,7 @@ switch ($action) {
}
$track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$tbl_my_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_my_user_friend = Database :: get_main_table(TABLE_MAIN_USER_FRIEND);
$tbl_my_user_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$search = Database::escape_string(Security::remove_XSS($_POST['search']));
$current_date = date('Y-m-d H:i:s',time());

@ -25,15 +25,15 @@ switch ($action) {
$is_my_friend = Security::remove_XSS($_POST['is_my_friend']); //filtered?
if (isset($_POST['is_my_friend'])) {
$relation_type=SOCIALFRIEND;//my friend
$relation_type = USER_RELATION_TYPE_FRIEND; //My friend
} else {
$relation_type=SOCIALUNKNOW;//Contact unknown
$relation_type = USER_RELATION_TYPE_UNKNOW; //Unknown contact
}
if (isset($_POST['friend_id'])) {
SocialManager::register_friend($current_user_id,$my_current_friend,$relation_type);
SocialManager::register_friend($my_current_friend,$current_user_id,$relation_type);
UserManager::relate_users($current_user_id,$my_current_friend,$relation_type);
UserManager::relate_users($my_current_friend,$current_user_id,$relation_type);
SocialManager::invitation_accepted($my_current_friend,$current_user_id);
@ -58,9 +58,9 @@ switch ($action) {
$type_friend_qualify = Security::remove_XSS($_POST['type_friend_q']); //filtered?
$is_my_friend = Security::remove_XSS($_POST['is_my_friend']); //filtered?
if (isset($_POST['is_my_friend'])) {
$relation_type=SOCIALFRIEND;//my friend
$relation_type=USER_RELATION_TYPE_FRIEND;//my friend
} else {
$relation_type=SOCIALUNKNOW;//Contact unknown
$relation_type=USER_RELATION_TYPE_UNKNOW;//Contact unknown
}
if (isset($_POST['denied_friend_id'])) {
SocialManager::invitation_denied($my_denied_current_friend,$current_user_id);
@ -82,7 +82,7 @@ switch ($action) {
$is_my_friend = Security::remove_XSS($_POST['is_my_friend']); //filtered?
if (isset($_POST['delete_friend_id'])) {
SocialManager::removed_friend($my_delete_friend);
SocialManager::remove_user_rel_user($my_delete_friend);
}
/*
if(isset($_POST['user_id_friend_q']) && isset($_POST['type_friend_q'])) {
@ -153,7 +153,7 @@ switch ($action) {
$is_my_friend = Security::remove_XSS($_POST['is_my_friend']); //filtered?
if (isset($_POST['delete_friend_id'])) {
SocialManager::removed_friend($my_delete_friend);
SocialManager::remove_user_rel_user($my_delete_friend);
}
/*
if(isset($_POST['user_id_friend_q']) && isset($_POST['type_friend_q'])) {

@ -95,7 +95,7 @@ define('TABLE_MAIN_RESERVATION_CATEGORY', 'reservation_category');
define('TABLE_MAIN_RESERVATION_ITEM_RIGHTS', 'reservation_item_rights');
// Social networking
define('TABLE_MAIN_USER_FRIEND', 'user_friend');
define('TABLE_MAIN_USER_REL_USER', 'user_rel_user');
define('TABLE_MAIN_USER_FRIEND_RELATION_TYPE', 'user_friend_relation_type');
// Web services

@ -10,7 +10,6 @@
==============================================================================
*/
require_once api_get_path(LIBRARY_PATH).'online.inc.php';
require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php';
require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php';

@ -128,9 +128,9 @@ function LoginDelete($user_id)
function WhoIsOnline($valid, $friends = false)
{
$valid = (int) $valid;
$current_date=date('Y-m-d H:i:s',time());
$current_date = date('Y-m-d H:i:s',time());
$track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$friend_user_table = Database::get_main_table(TABLE_MAIN_USER_FRIEND);
$friend_user_table = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$query = '';
if ($friends) {
// who friends from social network is online

@ -8,7 +8,7 @@
* @package dokeos.library
==============================================================================
*/
require_once('display.lib.php');
require_once 'display.lib.php';
class SessionManager {
private function __construct() {
@ -438,6 +438,48 @@ class SessionManager {
$update_sql = "UPDATE $tbl_session SET nbr_users= $nbr_users WHERE id='$id_session' ";
Database::query($update_sql,__FILE__,__LINE__);
}
/**
* Subscribes sessions to user (Dashboard feature)
* @param integer Session ID
* @param array List of user IDs
* @param bool Whether to unsubscribe existing users (true, default) or not (false)
* @return void Nothing, or false on error
**/
public static function suscribe_sessions_to_user($user_id,$session_list, $relation_stype) {
if ($user_id!= strval(intval($user_id))) return false;
foreach($session_list as $session_id){
if ($session_id!= strval(intval($session_id))) return false;
}
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT id_session FROM $tbl_session_rel_user WHERE id_user =$user_id AND relation_type = 1 ";
$result = Database::query($sql,__FILE__,__LINE__);
$existing_sessions = array();
while($row = Database::fetch_array($result)){
$existing_sessions[] = $row['id_session'];
}
//Deleting existing session_rel_user
foreach ($existing_sessions as $existing_session) {
$sql = "DELETE FROM $tbl_session_rel_user WHERE id_session=$existing_session AND id_user=$user_id AND relation_type = 1 ";
Database::query($sql,__FILE__,__LINE__);
}
foreach ($session_list as $session_id) {
// for each session
$enreg_user = Database::escape_string($enreg_user);
$insert_sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session,id_user,relation_type) VALUES('$session_id','$user_id','1')";
Database::query($insert_sql,__FILE__,__LINE__);
}
}
/** Subscribes courses to the given session and optionally (default) unsubscribes previous users
* @author Carlos Vargas <carlos.vargas@dokeos.com>,from existing code
* @param int Session ID

@ -10,107 +10,19 @@
==============================================================================
*/
// Relation type between users
define('USERUNKNOW', 0);
define('SOCIALUNKNOW', 1);
define('SOCIALPARENT', 2);
define('SOCIALFRIEND', 3);
define('SOCIALGOODFRIEND', 4);
define('SOCIALENEMY', 5);
define('SOCIALDELETED', 6);
//PLUGIN PLACES
define('SOCIAL_LEFT_PLUGIN', 1);
define('SOCIAL_CENTER_PLUGIN', 2);
define('SOCIAL_RIGHT_PLUGIN', 3);
define('MESSAGE_STATUS_INVITATION_PENDING', '5');
define('MESSAGE_STATUS_INVITATION_ACCEPTED','6');
define('MESSAGE_STATUS_INVITATION_DENIED', '7');
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
require_once api_get_path(LIBRARY_PATH).'message.lib.php';
class SocialManager extends UserManager {
private function __construct() {
}
/**
* Allow to register contact to social network
* @param int user friend id
* @param int user id
* @param int relation between users see constants definition
*/
public static function register_friend ($friend_id,$my_user_id,$relation_type) {
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_FRIEND);
$friend_id = intval($friend_id);
$my_user_id = intval($my_user_id);
$relation_type = intval($relation_type);
$sql = 'SELECT COUNT(*) as count FROM ' . $tbl_my_friend . ' WHERE friend_user_id=' .$friend_id.' AND user_id='.$my_user_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
if ($row['count'] == 0) {
$current_date=date('Y-m-d H:i:s');
$sql_i = 'INSERT INTO ' . $tbl_my_friend . '(friend_user_id,user_id,relation_type,last_edit)values(' . $friend_id . ','.$my_user_id.','.$relation_type.',"'.$current_date.'");';
Database::query($sql_i, __FILE__, __LINE__);
return true;
} else {
$sql = 'SELECT COUNT(*) as count FROM ' . $tbl_my_friend . ' WHERE friend_user_id=' . $friend_id . ' AND user_id='.$my_user_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
if ($row['count'] == 1) {
$sql_i = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.$relation_type.' WHERE friend_user_id=' . $friend_id.' AND user_id='.$my_user_id;
Database::query($sql_i, __FILE__, __LINE__);
return true;
} else {
return false;
}
}
}
/**
* Deletes a contact
* @param int user friend id
* @param bool true will delete ALL friends relationship from $friend_id
* @author isaac flores paz <isaac.flores@dokeos.com>
* @author Julio Montoya <gugli100@gmail.com> Cleaning code
*/
public static function removed_friend ($friend_id, $real_removed = false) {
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_FRIEND);
$tbl_my_message = Database :: get_main_table(TABLE_MAIN_MESSAGE);
$friend_id = intval($friend_id);
if ($real_removed == true) {
//Delete user friend
$sql_delete_relationship1 = 'UPDATE ' . $tbl_my_friend .' SET relation_type='.SOCIALDELETED.' WHERE friend_user_id='.$friend_id;
$sql_delete_relationship2 = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.SOCIALDELETED.' WHERE user_id=' . $friend_id;
Database::query($sql_delete_relationship1, __FILE__, __LINE__);
Database::query($sql_delete_relationship2, __FILE__, __LINE__);
} else {
$user_id=api_get_user_id();
$sql = 'SELECT COUNT(*) as count FROM ' . $tbl_my_friend . ' WHERE user_id=' . $user_id . ' AND relation_type<>6 AND friend_user_id='.$friend_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
if ($row['count'] == 1) {
//Delete user friend
$sql_i = 'UPDATE ' . $tbl_my_friend .' SET relation_type='.SOCIALDELETED.' WHERE user_id=' . $user_id.' AND friend_user_id='.$friend_id;
$sql_j = 'UPDATE ' . $tbl_my_message.' SET msg_status=7 WHERE user_receiver_id=' . $user_id.' AND user_sender_id='.$friend_id.' AND update_date="0000-00-00 00:00:00" ';
//Delete user
$sql_ij = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.SOCIALDELETED.' WHERE user_id=' . $friend_id.' AND friend_user_id='.$user_id;
$sql_ji = 'UPDATE ' . $tbl_my_message . ' SET msg_status=7 WHERE user_receiver_id=' . $friend_id.' AND user_sender_id='.$user_id.' AND update_date="0000-00-00 00:00:00" ';
Database::query($sql_i, __FILE__, __LINE__);
Database::query($sql_j, __FILE__, __LINE__);
Database::query($sql_ij, __FILE__, __LINE__);
Database::query($sql_ji, __FILE__, __LINE__);
}
}
}
/**
* Allow to see contacts list
* @author isaac flores paz <florespaz@bidsoftperu.com>
@ -157,7 +69,7 @@ class SocialManager extends UserManager {
*/
public static function get_relation_between_contacts ($user_id,$user_friend) {
$tbl_my_friend_relation_type = Database :: get_main_table(TABLE_MAIN_USER_FRIEND_RELATION_TYPE);
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_FRIEND);
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$sql= 'SELECT rt.id as id FROM '.$tbl_my_friend_relation_type.' rt ' .
'WHERE rt.id=(SELECT uf.relation_type FROM '.$tbl_my_friend.' uf WHERE user_id='.((int)$user_id).' AND friend_user_id='.((int)$user_friend).')';
$res=Database::query($sql,__FILE__,__LINE__);
@ -165,7 +77,7 @@ class SocialManager extends UserManager {
if (Database::num_rows($res)>0) {
return $row['id'];
} else {
return USERUNKNOW;
return USER_UNKNOW;
}
}
@ -181,7 +93,7 @@ class SocialManager extends UserManager {
*/
public static function get_friends($user_id, $id_group=null, $search_name=null, $load_extra_info = true) {
$list_ids_friends=array();
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_FRIEND);
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_my_user = Database :: get_main_table(TABLE_MAIN_USER);
$sql='SELECT friend_user_id FROM '.$tbl_my_friend.' WHERE relation_type<>6 AND friend_user_id<>'.((int)$user_id).' AND user_id='.((int)$user_id);
if (isset($id_group) && $id_group>0) {
@ -372,7 +284,7 @@ class SocialManager extends UserManager {
* @return void()
*/
public static function qualify_friend ($id_friend_qualify,$type_qualify) {
$tbl_user_friend=Database::get_main_table(TABLE_MAIN_USER_FRIEND);
$tbl_user_friend=Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$user_id=api_get_user_id();
$sql='UPDATE '.$tbl_user_friend.' SET relation_type='.((int)$type_qualify).' WHERE user_id='.((int)$user_id).' AND friend_user_id='.((int)$id_friend_qualify).';';
Database::query($sql,__FILE__,__LINE__);

@ -23,13 +23,24 @@ define('USER_FIELD_TYPE_DIVIDER', 9);
define('USER_FIELD_TYPE_TAG', 10);
//User image sizes
define('USER_IMAGE_SIZE_ORIGINAL', 1);
define('USER_IMAGE_SIZE_BIG', 2);
define('USER_IMAGE_SIZE_MEDIUM', 3);
define('USER_IMAGE_SIZE_SMALL', 4);
// Relation type between users
define('USER_UNKNOW', 0);
define('USER_RELATION_TYPE_UNKNOW', 1);
define('USER_RELATION_TYPE_PARENT', 2); // should be deprecated is useless
define('USER_RELATION_TYPE_FRIEND', 3);
define('USER_RELATION_TYPE_GOODFRIEND', 4); // should be deprecated is useless
define('USER_RELATION_TYPE_ENEMY', 5); // should be deprecated is useless
define('USER_RELATION_TYPE_DELETED', 6);
define('USER_RELATION_TYPE_RRHH', 7);
class UserManager
{
private function __construct () {
@ -263,7 +274,7 @@ class UserManager
//Delete user from groups
//Delete from user friend lists
SocialManager::removed_friend($user_id,true);
SocialManager::remove_user_rel_user($user_id,true);
}
// add event to system log
$time = time();
@ -2054,95 +2065,7 @@ class UserManager
$row = Database::fetch_array($res, 'ASSOC');
return $row['id'];
}
/**
* Subscribes users to the given session and optionally (default) unsubscribes previous users
* @param int Session ID
* @param array List of user IDs
* @param bool Whether to unsubscribe existing users (true, default) or not (false)
* @return void Nothing, or false on error
*/
public static function suscribe_users_to_session($id_session, $UserList, $empty_users = true) {
if ($id_session != strval(intval($id_session))) return false;
foreach ($UserList as $intUser) {
if ($intUser != strval(intval($intUser))) return false;
}
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$sql = "SELECT id_user FROM $tbl_session_rel_user WHERE id_session='$id_session'";
$result = Database::query($sql, __FILE__, __LINE__);
$existingUsers = array();
while($row = Database::fetch_array($result)) {
$existingUsers[] = $row['id_user'];
}
$sql = "SELECT course_code FROM $tbl_session_rel_course WHERE id_session='$id_session'";
$result = Database::query($sql, __FILE__, __LINE__);
$CourseList = array();
while($row = Database::fetch_array($result)) {
$CourseList[] = $row['course_code'];
}
foreach ($CourseList as $enreg_course) {
// for each course in the session
$nbr_users = 0;
$enreg_course = Database::escape_string($enreg_course);
// delete existing users
if ($empty_users !== false) {
foreach ($existingUsers as $existing_user) {
if(!in_array($existing_user, $UserList)) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user'";
Database::query($sql, __FILE__, __LINE__);
if (Database::affected_rows()) {
$nbr_users--;
}
}
}
}
// insert new users into session_rel_course_rel_user and ignore if they already exist
foreach ($UserList as $enreg_user) {
if (!in_array($enreg_user, $existingUsers)) {
$enreg_user = Database::escape_string($enreg_user);
$insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')";
Database::query($insert_sql, __FILE__, __LINE__);
if (Database::affected_rows()) {
$nbr_users++;
}
}
}
// count users in this session-course relation
$sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course'";
$rs = Database::query($sql, __FILE__, __LINE__);
list($nbr_users) = Database::fetch_array($rs);
// update the session-course relation to add the users total
$update_sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'";
Database::query($update_sql, __FILE__, __LINE__);
}
// delete users from the session
if ($empty_users !== false) {
Database::query("DELETE FROM $tbl_session_rel_user WHERE id_session = $id_session", __FILE__, __LINE__);
}
// insert missing users into session
$nbr_users = 0;
foreach ($UserList as $enreg_user) {
$enreg_user = Database::escape_string($enreg_user);
$nbr_users++;
$insert_sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) VALUES('$id_session','$enreg_user')";
Database::query($insert_sql, __FILE__, __LINE__);
}
// update number of users in the session
$nbr_users = count($UserList);
$update_sql = "UPDATE $tbl_session SET nbr_users= $nbr_users WHERE id='$id_session' ";
Database::query($update_sql, __FILE__, __LINE__);
}
/**
* Checks if a user_id is platform admin
* @param int user ID
@ -2859,4 +2782,94 @@ class UserManager
}
return $course_list;
}
/**
* Allow to register contact to social network
* @param int user friend id
* @param int user id
* @param int relation between users see constants definition
*/
public static function relate_users ($friend_id,$my_user_id,$relation_type) {
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$friend_id = intval($friend_id);
$my_user_id = intval($my_user_id);
$relation_type = intval($relation_type);
$sql = 'SELECT COUNT(*) as count FROM ' . $tbl_my_friend . ' WHERE friend_user_id=' .$friend_id.' AND user_id='.$my_user_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
$current_date=date('Y-m-d H:i:s');
if ($row['count'] == 0) {
$sql_i = 'INSERT INTO ' . $tbl_my_friend . '(friend_user_id,user_id,relation_type,last_edit)values(' . $friend_id . ','.$my_user_id.','.$relation_type.',"'.$current_date.'");';
Database::query($sql_i, __FILE__, __LINE__);
return true;
} else {
$sql = 'SELECT COUNT(*) as count, relation_type FROM ' . $tbl_my_friend . ' WHERE friend_user_id=' . $friend_id . ' AND user_id='.$my_user_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
if ($row['count'] == 1) {
//only for the case of a RRHH
if ($row['relation_type'] != $relation_type && $relation_type == USER_RELATION_TYPE_RRHH) {
$sql_i = 'INSERT INTO ' . $tbl_my_friend . '(friend_user_id,user_id,relation_type,last_edit)values(' . $friend_id . ','.$my_user_id.','.$relation_type.',"'.$current_date.'");';
} else {
$sql_i = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.$relation_type.' WHERE friend_user_id=' . $friend_id.' AND user_id='.$my_user_id;
}
Database::query($sql_i, __FILE__, __LINE__);
return true;
} else {
return false;
}
}
}
/**
* Deletes a contact
* @param int user friend id
* @param bool true will delete ALL friends relationship from $friend_id
* @author isaac flores paz <isaac.flores@dokeos.com>
* @author Julio Montoya <gugli100@gmail.com> Cleaning code
*/
public static function remove_user_rel_user ($friend_id, $real_removed = false, $with_status_condition = '') {
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_my_message = Database :: get_main_table(TABLE_MAIN_MESSAGE);
$friend_id = intval($friend_id);
if ($real_removed == true) {
//Delete user friend
/*
$sql_delete_relationship1 = 'UPDATE ' . $tbl_my_friend .' SET relation_type='.USER_RELATION_TYPE_DELETED.' WHERE friend_user_id='.$friend_id;
$sql_delete_relationship2 = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.USER_RELATION_TYPE_DELETED.' WHERE user_id=' . $friend_id;
Database::query($sql_delete_relationship1, __FILE__, __LINE__);
Database::query($sql_delete_relationship2, __FILE__, __LINE__);*/
$extra_condition = '';
if ($with_status_condition != '') {
$extra_condition = ' AND relation_type = '.intval($with_status_condition);
}
$sql_delete_relationship1 = 'DELETE FROM ' . $tbl_my_friend .' WHERE friend_user_id='.$friend_id.' '.$extra_condition;
$sql_delete_relationship2 = 'DELETE FROM ' . $tbl_my_friend . ' WHERE user_id=' . $friend_id.' '.$extra_condition;
Database::query($sql_delete_relationship1, __FILE__, __LINE__);
Database::query($sql_delete_relationship2, __FILE__, __LINE__);
} else {
$user_id = api_get_user_id();
$sql = 'SELECT COUNT(*) as count FROM ' . $tbl_my_friend . ' WHERE user_id=' . $user_id . ' AND relation_type <>'.USER_RELATION_TYPE_DELETED.' AND friend_user_id='.$friend_id;
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
if ($row['count'] == 1) {
//Delete user rel user
$sql_i = 'UPDATE ' . $tbl_my_friend .' SET relation_type='.USER_RELATION_TYPE_DELETED.' WHERE user_id='.$user_id.' AND friend_user_id='.$friend_id;
$sql_j = 'UPDATE ' . $tbl_my_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.' WHERE user_receiver_id=' . $user_id.' AND user_sender_id='.$friend_id.' AND update_date="0000-00-00 00:00:00" ';
//Delete user
$sql_ij = 'UPDATE ' . $tbl_my_friend . ' SET relation_type='.USER_RELATION_TYPE_DELETED.' WHERE user_id=' . $friend_id.' AND friend_user_id='.$user_id;
$sql_ji = 'UPDATE ' . $tbl_my_message . ' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.' WHERE user_receiver_id=' . $friend_id.' AND user_sender_id='.$user_id.' AND update_date="0000-00-00 00:00:00" ';
Database::query($sql_i, __FILE__, __LINE__);
Database::query($sql_j, __FILE__, __LINE__);
Database::query($sql_ij, __FILE__, __LINE__);
Database::query($sql_ji, __FILE__, __LINE__);
}
}
}
}

@ -327,6 +327,7 @@ CREATE TABLE course_rel_user (
tutor_id int unsigned NOT NULL default '0',
sort int default NULL,
user_course_cat int default '0',
relation_type int default 0,
PRIMARY KEY (course_code,user_id)
);
ALTER TABLE course_rel_user ADD INDEX (user_id);
@ -500,6 +501,7 @@ DROP TABLE IF EXISTS session_rel_user;
CREATE TABLE session_rel_user (
id_session mediumint unsigned NOT NULL default '0',
id_user mediumint unsigned NOT NULL default '0',
relation_type int default 0,
PRIMARY KEY (id_session,id_user)
);
@ -2149,9 +2151,9 @@ CREATE TABLE reservation_subscription (
-- ---------------------------------------------------------
--
-- Table structure for table user_friend
-- Table structure for table user_rel_user
--
CREATE TABLE user_friend(
CREATE TABLE user_rel_user (
id bigint unsigned not null auto_increment,
user_id int unsigned not null,
friend_user_id int unsigned not null,

@ -13,6 +13,11 @@
-- This first part is for the main database
-- xxMAINxx
ALTER TABLE user_friend RENAME TO user_rel_user;
ALTER TABLE session_rel_user ADD COLUMN relation_type int NOT NULL default 0;
ALTER TABLE course_rel_user ADD COLUMN relation_type int NOT NULL default 0;
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url, access_url_changeable) VALUES ('course_create_active_tools','notebook','checkbox','Tools','true','CourseCreateActiveToolsTitle','CourseCreateActiveToolsComment',NULL,'Notebook',1,0);
INSERT INTO course_module (name, link, image, `row`, `column`, position) VALUES ('notebook','notebook/index.php','notebook.gif',2,1,'basic');
UPDATE settings_current SET selected_value = '1.8.7.10004' WHERE variable = 'dokeos_database_version';

@ -33,12 +33,12 @@ if (isset($_GET['u'])) {
} 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(SOCIALPARENT, SOCIALFRIEND, SOCIALGOODFRIEND))) {
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(SOCIALPARENT, SOCIALFRIEND, SOCIALGOODFRIEND))) {
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
@ -374,8 +374,8 @@ echo '<div id="social-content-right">';
$list_path_friends= $list_path_normal_friends = $list_path_parents = array();
//SOCIALGOODFRIEND , SOCIALFRIEND, SOCIALPARENT
$friends = SocialManager::get_friends($user_id, SOCIALFRIEND);
//SOCIALGOODFRIEND , USER_RELATION_TYPE_FRIEND, USER_RELATION_TYPE_PARENT
$friends = SocialManager::get_friends($user_id, USER_RELATION_TYPE_FRIEND);
$friend_html = '';

@ -16,8 +16,8 @@ if (isset($_GET['view']) && in_array($_GET['view'], $views)) {
if ($_GET['view']=='friends') {
echo '<div style="margin-top:20px;">';
$list_path_friends= $list_path_normal_friends = $list_path_parents = array();
//SOCIALGOODFRIEND , SOCIALFRIEND, SOCIALPARENT
$friends = SocialManager::get_friends($user_id, SOCIALFRIEND);
//SOCIALGOODFRIEND , USER_RELATION_TYPE_FRIEND, SOCIALPARENT
$friends = SocialManager::get_friends($user_id, USER_RELATION_TYPE_FRIEND);
$number_friends = count($friends);
$friend_html = '';
$friend_html .= '<div><h3>'.get_lang('SocialFriend').'</h3></div>';

@ -23,6 +23,8 @@ class TestSocial extends UnitTestCase{
$this->social = null;
}
*/
//@todo this function was moved to usermanager
/*
public function testRegisterFriend(){
$instans= new MockDatabase();
$friend_id=4;
@ -36,6 +38,7 @@ class TestSocial extends UnitTestCase{
//var_dump($res);
}
*/
public function testRemovedFriend(){
$instans= new MockDatabase();

Loading…
Cancel
Save