skala
Yannick Warnier 16 years ago
commit 9c712d427c
  1. 9
      documentation/changelog.html
  2. 64
      main/admin/add_users_to_group.php
  3. 2
      main/admin/add_users_to_session.php
  4. 2
      main/admin/course_add.php
  5. 6
      main/admin/group_list.php
  6. 65
      main/admin/statistics/statistics.lib.php
  7. 6
      main/admin/user_fields_add.php
  8. 1
      main/auth/inscription.php
  9. 27
      main/auth/profile.php
  10. 42
      main/chat/chat_chat.php
  11. 17
      main/chat/chat_hidden.php
  12. 41
      main/chat/chat_message.php
  13. 13
      main/css/academica/default.css
  14. 14
      main/css/baby_orange/default.css
  15. 30
      main/css/blue_lagoon/default.css
  16. 13
      main/css/cool_blue/default.css
  17. 13
      main/css/corporate/default.css
  18. 13
      main/css/cosmic_campus/default.css
  19. 13
      main/css/delicious_bordeaux/default.css
  20. 13
      main/css/dokeos_classic/default.css
  21. 13
      main/css/dokeos_classic_2D/default.css
  22. 13
      main/css/empire_green/default.css
  23. 13
      main/css/fruity_orange/default.css
  24. 12
      main/css/medical/default.css
  25. 14
      main/css/public_admin/default.css
  26. 13
      main/css/royal_purple/default.css
  27. 13
      main/css/silver_line/default.css
  28. 13
      main/css/sober_brown/default.css
  29. 13
      main/css/steel_grey/default.css
  30. 13
      main/css/tasty_olive/default.css
  31. 12
      main/exercice/exercice.php
  32. 6
      main/exercice/exercise.class.php
  33. 30
      main/gradebook/gradebook.php
  34. 32
      main/gradebook/index.php
  35. BIN
      main/img/unknown_50_50.jpg
  36. BIN
      main/img/unknown_group.png
  37. BIN
      main/img/userfield_user_tag.png
  38. 1
      main/inc/lib/display.lib.php
  39. 3
      main/inc/lib/fckeditor/editor/plugins/ajaxfilemanager/inc/class.upload.php
  40. 217
      main/inc/lib/group_portal_manager.lib.php
  41. 7
      main/inc/lib/social.lib.php
  42. 11
      main/inc/lib/sortabletable.class.php
  43. 21
      main/inc/lib/usermanager.lib.php
  44. 11
      main/newscorm/learnpath.class.php
  45. 151
      main/social/group_edit.php
  46. 101
      main/social/groups.php
  47. 5
      main/social/home.php
  48. 6
      main/social/select_options.php
  49. 47
      main/tracking/courseLog.php

@ -42,7 +42,14 @@
<li>Added when a user is enrolled only in one course, go directly to the course after the login (defined by the platform administrator through platform administration > configuration setting > training)- DT#3466</li>
<li>Added user' photo into user list interface - DT#5496</li>
<li>Disabled field trainers(tutor name) in create course form from user portal, by default is current user's name, you can modify this field into setting course - DT#5496 </li>
<li>Added option to export the trainings list to CSV file in Administration>Trainings - DT#4256</li>
<li>Added option to export the trainings list to CSV file in Administration>Trainings - DT#4256</li>
<li>Gradebook automatic deleted bug of a link fixed DT#5229</li>
<li>User tags added DT#5508</li>
<li>Who is online look revamped DT#5490</li>
<li>New search tool added DT#5610 </li>
<li>User groups added DT#5611 </li>
<li>Social network tab added</li>
</ul>
<h3>Debugging</h3>
<ul>

@ -39,7 +39,7 @@ $tbl_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
$tool_name = get_lang('SubscribeUsersToGroup');
$group_id = intval($_GET['id']);
$add_type = 'single';
$add_type = 'multiple';
if(isset($_REQUEST['add_type']) && $_REQUEST['add_type']!=''){
$add_type = Security::remove_XSS($_REQUEST['add_type']);
}
@ -210,13 +210,19 @@ if($_POST['form_sent']) {
$UserList = $_POST['sessionUsersList'];
$ClassList = $_POST['sessionClassesList'];
$group_id = intval($_POST['id']);
if(!is_array($UserList)) {
$UserList=array();
}
if ($form_sent == 1) {
//added a parameter to send emails when registering a user
// SessionManager::suscribe_users_to_session($id_session,$UserList,true,true);
GroupPortalManager::delete_users($group_id);
$result = GroupPortalManager::add_users_to_groups($UserList, array($group_id));
//SessionManager::suscribe_users_to_session($id_session,$UserList,true,true);
//adding the session to the access_url_rel_session table
/*global $_configuration;
@ -269,7 +275,7 @@ if ($ajax_search) {
WHERE access_url_id = $access_url_id
$order_clause";
}
}
}
$result=Database::query($sql,__FILE__,__LINE__);
$Users=Database::store_result($result);
foreach ($Users as $user) {
@ -332,14 +338,12 @@ if ($ajax_search) {
LEFT JOIN $tbl_session_rel_user
ON $tbl_session_rel_user.id_user = u.user_id AND id_session = '$id_session'
$where_filter
$order_clause";
} else {
$order_clause";
} else {
$sql="SELECT u.user_id, lastname, firstname, username, group_id
FROM $tbl_user u
LEFT JOIN $tbl_group_rel_user gu
ON (gu.user_id = u.user_id) WHERE gu.group_id = $group_id
ON (gu.user_id = u.user_id) AND gu.group_id = $group_id
$order_clause";
}
@ -364,14 +368,14 @@ if ($ajax_search) {
if($user['group_id'] != $group_id)
$nosessionUsersList[$user['user_id']] = $user ;
}
var_dump($nosessionUsersList);
$user_anonymous=api_get_anonymous_id();
/* foreach($nosessionUsersList as $key_user_list =>$value_user_list) {
foreach($nosessionUsersList as $key_user_list =>$value_user_list) {
if ($nosessionUsersList[$key_user_list]['user_id']==$user_anonymous) {
unset($nosessionUsersList[$key_user_list]);
}
}*/
}
//filling the correct users in list
$sql="SELECT u.user_id, lastname, firstname, username, group_id
FROM $tbl_user u
@ -392,6 +396,7 @@ if ($ajax_search) {
$order_clause";
}
}
$result=Database::query($sql,__FILE__,__LINE__);
$Users=Database::store_result($result);
@ -402,7 +407,7 @@ if ($ajax_search) {
}
foreach ($Users as $user) {
if($user['group_id'] == $group_id){
if($user['group_id'] == $group_id) {
$sessionUsersList[$user['user_id']] = $user;
if (array_key_exists($user['user_id'],$nosessionUsersList))
unset($nosessionUsersList[$user['user_id']]);
@ -411,25 +416,21 @@ if ($ajax_search) {
}
if ($add_type == 'multiple') {
//$link_add_type_unique = '<a href="'.api_get_self().'?id_session='.$id_session.'&add='.Security::remove_XSS($_GET['add']).'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
//$link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
$link_add_type_unique = '<a href="'.api_get_self().'?id='.$group_id.'&add='.Security::remove_XSS($_GET['add']).'&add_type=unique">'.Display::return_icon('single.gif').get_lang('SessionAddTypeUnique').'</a>';
$link_add_type_multiple = Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple');
} else {
//$link_add_type_unique = Display::return_icon('single.gif').get_lang('SessionAddTypeUnique');
//$link_add_type_multiple = '<a href="'.api_get_self().'?id_session='.$id_session.'&add='.Security::remove_XSS($_GET['add']).'&add_type=multiple">'.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').'</a>';
/*
* <div class="actions">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>
</div>
*/
$link_add_type_unique = Display::return_icon('single.gif').get_lang('SessionAddTypeUnique');
$link_add_type_multiple = '<a href="'.api_get_self().'?id='.$group_id.'&add='.Security::remove_XSS($_GET['add']).'&add_type=multiple">'.Display::return_icon('multiple.gif').get_lang('SessionAddTypeMultiple').'</a>';
}
?>
<div class="actions">
<?php echo $link_add_type_unique ?>&nbsp;|&nbsp;<?php echo $link_add_type_multiple ?>
</div>
<?php echo '<div class="row"><div class="form_header">'.$tool_name.' ('.$session_info['name'].')</div></div><br/>'; ?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?page=<?php echo Security::remove_XSS($_GET['page']); ?>&id_session=<?php echo $id_session; ?><?php if(!empty($_GET['add'])) echo '&add=true' ; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>?id=<?php echo $group_id; ?><?php if(!empty($_GET['add'])) echo '&add=true' ; ?>" style="margin:0px;" <?php if($ajax_search){echo ' onsubmit="valide();"';}?>>
<?php
if ($add_type=='multiple') {
@ -461,6 +462,7 @@ if ($add_type=='multiple') {
?>
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="id" value="<?=$group_id?>" />
<input type="hidden" name="add_type" />
<?php
@ -537,7 +539,7 @@ if(!empty($errorMsg)) {
<?php
}
?>
<br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br />
</td>
<td align="center">
<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15" style="width:360px;">
@ -559,13 +561,7 @@ unset($sessionUsersList);
<td colspan="3" align="center">
<br />
<?php
if(isset($_GET['add'])) {
echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('FinishSessionCreation').'</button>';
} else {
//@todo see that the call to "valide()" doesn't duplicate the onsubmit of the form (necessary to avoid delete on "enter" key pressed)
echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('SubscribeUsersToGroup').'</button>';
}
echo '<button class="save" type="button" value="" onclick="valide()" >'.get_lang('SubscribeUsersToGroup').'</button>';
?>
</td>
</tr>

@ -373,7 +373,7 @@ if ($ajax_search) {
$order_clause";
}
}
echo $sql;
$result=Database::query($sql,__FILE__,__LINE__);
$Users=Database::store_result($result);
//var_dump($_REQUEST['id_session']);

@ -74,8 +74,8 @@ $form->applyFilter('title','trim');
$form->add_textfield( 'visual_code', get_lang('CourseCode'),false,array('size'=>'20','maxlength'=>20));
$form->applyFilter('visual_code','api_strtoupper');
$form->applyFilter('visual_code','html_filter');
$form->addRule('visual_code',get_lang('Max'),'maxlength',$maxlength);
$form->addRule('wanted_code',get_lang('Max'),'maxlength',$maxlength);
$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers);
$form->applyFilter('tutor_id','html_filter');

@ -105,8 +105,8 @@ function get_group_data($from, $number_of_items, $column, $direction)
$users = array ();
$t = time();
while ($group = Database::fetch_row($res)) {
// forget about the expiration date field
while ($group = Database::fetch_row($res)) {
$group['1'] = '<a href="/main/social/groups.php?id='.$group['0'].'">'.$group['1'].'</a>';
$groups[] = $group;
}
return $groups;
@ -180,8 +180,6 @@ function modify_filter($group_id,$url_params,$row)
$result .= '<a href="'.api_get_path(WEB_CODE_PATH).'admin/add_users_to_group.php?id='.$group_id.'">'.Display::return_icon('add_user_big.gif',get_lang('AddUsersToGroup')).'</a>';
$result .= '<a href="group_edit.php?id='.$group_id.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>&nbsp;&nbsp;';
$result .= '<a href="group_list.php?action=delete_group&amp;group_id='.$group_id.'&amp;'.$url_params.'&amp;sec_token='.$_SESSION['sec_token'].'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset))."'".')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
}
return $result;
}

@ -413,45 +413,44 @@ class Statistics
$form->add_textfield('date_diff',get_lang('Days'),true);
$form->addRule('date_diff','InvalidNumber','numeric');
$form->addElement('submit','ok',get_lang('Ok'));
$defaults['date_diff'] = 60;
if (!isset($_GET['date_diff'])) {
$defaults['date_diff'] = 60;
} else {
$defaults['date_diff'] = Security::Remove_XSS($_GET['date_diff']);
}
$form->setDefaults($defaults);
if($form->validate()) {
$form->display();
$values = $form->exportValues();
$date_diff = $values['date_diff'];
$table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
$sql = "SELECT * FROM $table GROUP BY access_cours_code HAVING access_cours_code <> '' AND DATEDIFF( NOW() , access_date ) >= ". $date_diff;
$res = Database::query($sql,__FILE__,__LINE__);
$number_of_courses = Database::num_rows($res);
$sql .= ' ORDER BY '.$columns[$column].' '.$sql_order[$direction];
$from = ($page_nr -1) * $per_page;
$sql .= ' LIMIT '.$from.','.$per_page;
echo '<p>'.get_lang('LastAccess').' &gt;= '.$date_diff.' '.get_lang('Days').'</p>';
$res = Database::query($sql, __FILE__, __LINE__);
if (Database::num_rows($res) > 0)
{
$courses = array ();
while ($obj = Database::fetch_object($res))
{
$course = array ();
$course[]= '<a href="'.api_get_path(WEB_PATH).'courses/'.$obj->access_cours_code.'">'.$obj->access_cours_code.' <a>';
$course[] = $obj->access_date;
$courses[] = $course;
}
$parameters['action'] = 'courselastvisit';
$parameters['date_diff'] = $date_diff;
$table_header[] = array ("Coursecode", true);
$table_header[] = array ("Last login", true);
Display :: display_sortable_table($table_header, $courses, array ('column'=>$column,'direction'=>$direction), array (), $parameters);
}
else
$form->display();
$values = $form->exportValues();
$date_diff = $values['date_diff'];
$table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS);
$sql = "SELECT * FROM $table GROUP BY access_cours_code HAVING access_cours_code <> '' AND DATEDIFF( NOW() , access_date ) <= ". $date_diff;
$res = Database::query($sql,__FILE__,__LINE__);
$number_of_courses = Database::num_rows($res);
$sql .= ' ORDER BY '.$columns[$column].' '.$sql_order[$direction];
$from = ($page_nr -1) * $per_page;
$sql .= ' LIMIT '.$from.','.$per_page;
echo '<p>'.get_lang('LastAccess').' &gt;= '.$date_diff.' '.get_lang('Days').'</p>';
$res = Database::query($sql, __FILE__, __LINE__);
if (Database::num_rows($res) > 0)
{
$courses = array ();
while ($obj = Database::fetch_object($res))
{
echo get_lang('NoSearchResults');
$course = array ();
$course[]= '<a href="'.api_get_path(WEB_PATH).'courses/'.$obj->access_cours_code.'">'.$obj->access_cours_code.' <a>';
$course[] = $obj->access_date;
$courses[] = $course;
}
$parameters['action'] = 'courselastvisit';
$parameters['date_diff'] = $date_diff;
$parameters['action'] = 'courselastvisit';
$table_header[] = array ("Coursecode", true);
$table_header[] = array ("Last login", true);
Display :: display_sortable_table($table_header, $courses, array ('column'=>$column,'direction'=>$direction), array (), $parameters);
}
else
{
$form->display();
echo get_lang('NoSearchResults');
}
}
}

@ -81,7 +81,7 @@ function change_image_user_field (image_value) {
document.getElementById(\'options\').style.display = \'none\';
document.getElementById(\'img_plus_and_minus\').innerHTML=\'&nbsp;<img style="vertical-align:middle;" src="../img/div_show.gif" alt="" />&nbsp;'.get_lang('AdvancedParameters').'\';
$("div#id_image_user_field").html("&nbsp;");
$("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_divider.png', get_lang('UserTag'))."'".');
$("div#id_image_user_field").html('."'<br />".Display::return_icon('userfield_user_tag.png', get_lang('UserTag'))."'".');
}
}
@ -162,7 +162,7 @@ $form->addElement('text','fieldlabel',get_lang('FieldLabel'));
$form->applyFilter('fieldlabel','html_filter');
$form->addRule('fieldlabel', get_lang('OnlyLettersAndNumbersAllowed'), 'username');
$form->addRule('fieldlabel', '', 'maxlength',20);
$form->addRule('fieldlabel', get_lang('FieldTaken'), 'fieldlabel_available');
//$form->addRule('fieldlabel', get_lang('FieldTaken'), 'fieldlabel_available');
// Field options possible
$form->addElement('text','fieldoptions',get_lang('FieldPossibleValues').Display::return_icon('info3.gif', get_lang('FieldPossibleValuesComment'), array('align' => 'absmiddle', 'hspace' => '3px')));
@ -286,7 +286,7 @@ if(!empty($defaults['fieldtype'])) {
} else if ($image_value==9) {
echo '<br />'.Display::return_icon('userfield_divider.png', get_lang('AddUserFields'));
} else if ($image_value==10) {
echo '<br />'.Display::return_icon('userfield_divider.png', get_lang('UserTag'));
echo '<br />'.Display::return_icon('userfield_user_tag.png', get_lang('UserTag'));
}
} else {
echo '<br />'.Display::return_icon('userfield_text.png', get_lang('AddUserFields'));

@ -380,6 +380,7 @@ if (api_get_setting('openid_authentication') == 'true' && !empty($_GET['openid']
$defaults['openid'] = Security::remove_XSS($_GET['openid']);
}
$defaults['status'] = STUDENT;
$defaults = array_merge($defaults, $extra_data);
$form->setDefaults($defaults);
if ($form->validate()) {

@ -534,30 +534,19 @@ $msg_is_not_password = false;
if (!empty($_SESSION['change_email'])) {
$msg_fail_changue_email= ($_SESSION['change_email'] == 'success');
unset($_SESSION['change_email']);
}
if (!empty($_SESSION['is_not_password'])) {
} elseif (!empty($_SESSION['is_not_password'])) {
$msg_is_not_password = ($_SESSION['is_not_password'] == 'success');
unset($_SESSION['is_not_password']);
}
if (!empty($_SESSION['profile_update'])) {
} elseif (!empty($_SESSION['profile_update'])) {
$update_success = ($_SESSION['profile_update'] == 'success');
unset($_SESSION['profile_update']);
}
if (!empty($_SESSION['image_uploaded'])) {
} elseif (!empty($_SESSION['image_uploaded'])) {
$upload_picture_success = ($_SESSION['image_uploaded'] == 'success');
unset($_SESSION['image_uploaded']);
}
if (!empty($_SESSION['production_uploaded'])) {
} elseif (!empty($_SESSION['production_uploaded'])) {
$upload_production_success = ($_SESSION['production_uploaded'] == 'success');
unset($_SESSION['production_uploaded']);
} elseif (isset($_POST['remove_production'])) {
foreach (array_keys($_POST['remove_production']) as $production) {
UserManager::remove_user_production($_user['user_id'], urldecode($production));
}
@ -566,7 +555,6 @@ if (!empty($_SESSION['production_uploaded'])) {
}
$form->removeElement('productions_list');
$file_deleted = true;
} elseif ($form->validate()) {
$wrong_current_password = false;
@ -711,14 +699,15 @@ if (api_get_setting('extended_profile') == 'true') {
echo '<a href="/main/messages/inbox.php">'.Display::return_icon('inbox.png').' '.get_lang('Messages').'</a>';
}
$show = isset($_GET['show']) ? '&amp;show='.Security::remove_XSS($_GET['show']) : '';
echo '<span style="float:right; padding-top:7px;">';
//echo '<span style="float:right; padding-top:7px;">';
if (isset($_GET['type']) && $_GET['type'] == 'extended') {
echo '<a href="profile.php?type=reduced'.$show.'">'.Display::return_icon('edit.gif', get_lang('EditNormalProfile')).'&nbsp;'.get_lang('EditNormalProfile').'</a>';
} else {
echo '<a href="profile.php?type=extended'.$show.'">'.Display::return_icon('edit.gif', get_lang('EditExtendProfile')).'&nbsp;'.get_lang('EditExtendProfile').'</a>';
}
echo '</span>';
//echo '</span>';
echo '</div>';
}
@ -818,4 +807,4 @@ if (api_get_setting('allow_message_tool') == 'true') {
}
echo '</div>';
$form->display();
Display :: display_footer();
Display :: display_footer();

@ -33,9 +33,10 @@
define('FRAME','chat');
$language_file = array ('chat');
require('../inc/global.inc.php');
include(api_get_path(LIBRARY_PATH).'document.lib.php');
include (api_get_path(LIBRARY_PATH).'fileUpload.lib.php');
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'document.lib.php';
require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php';
require_once api_get_path(LIBRARY_PATH).'groupmanager.lib.php';
//$course=api_get_course_id();
$course=$_GET['cidReq'];
@ -56,10 +57,17 @@ if (!empty($course))
$isMaster=$is_courseAdmin?true:false;
$dateNow=date('Y-m-d');
$dateNow=date('Y-m-d');
$basepath_chat = '';
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
if (!empty($group_id)) {
$group_info = GroupManager :: get_group_properties($group_id);
$basepath_chat = $group_info['directory'].'/chat_files';
} else {
$basepath_chat = '/chat_files';
}
$chatPath=$documentPath.$basepath_chat.'/';
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document/';
$chatPath=$documentPath.'chat_files/';
$TABLEITEMPROPERTY= Database::get_course_table(TABLE_ITEM_PROPERTY);
if(!is_dir($chatPath))
@ -74,11 +82,13 @@ if (!empty($course))
$perm = octdec(!empty($perm)?$perm:'0770');
@mkdir($chatPath,$perm);
@chmod($chatPath,$perm);
/*
$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files');
Database::query("INSERT INTO ".$TABLEITEMPROPERTY . " (tool,insert_user_id,insert_te,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$doc_id,'DocumentAdded',1,0,NULL,0)");
*/
// save chat files document for group into item property
if (!empty($group_id)) {
$doc_id=add_document($_course,$basepath_chat,'folder',0,'chat_files');
$sql = "INSERT INTO $TABLEITEMPROPERTY (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)
VALUES ('document',1,NOW(),NOW(),$doc_id,'FolderCreated',1,$group_id,NULL,0)";
Database::query($sql,__FILE__,__LINE__);
}
}
}
@ -95,10 +105,10 @@ if (!empty($course))
{
@fclose(fopen($chatPath.$filename_chat,'w'));
if (!api_is_anonymous()) {
$doc_id=add_document($_course,'/chat_files/'.$filename_chat,'file',0,$filename_chat);
$doc_id=add_document($_course,$basepath_chat.'/'.$filename_chat,'file',0,$filename_chat);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $_user['user_id'],$group_id,null,null,null,$session_id);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', $_user['user_id'],$group_id,null,null,null,$session_id);
item_property_update_on_folder($_course,'/chat_files', $_user['user_id']);
item_property_update_on_folder($_course,$basepath_chat, $_user['user_id']);
}
}
@ -124,13 +134,13 @@ if (!empty($course))
@fclose(fopen($chatPath.$basename_chat.'.log.html','w'));
$doc_id=add_document($_course,'/chat_files/'.$basename_chat.'-'.$i.'.log.html','file',filesize($chatPath.$basename_chat.'-'.$i.'.log.html'),$basename_chat.'-'.$i.'.log.html');
$doc_id=add_document($_course,$basepath_chat.'/'.$basename_chat.'-'.$i.'.log.html','file',filesize($chatPath.$basename_chat.'-'.$i.'.log.html'),$basename_chat.'-'.$i.'.log.html');
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $_user['user_id'],$group_id,null,null,null,$session_id);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', $_user['user_id'],$group_id,null,null,null,$session_id);
item_property_update_on_folder($_course,'/chat_files', $_user['user_id']);
item_property_update_on_folder($_course,$basepath_chat, $_user['user_id']);
$doc_id = DocumentManager::get_document_id($_course,'/chat_files/'.$basename_chat.'.log.html');
$doc_id = DocumentManager::get_document_id($_course,$basepath_chat.'/'.$basename_chat.'.log.html');
update_existing_document($_course, $doc_id,0);
}

@ -34,8 +34,9 @@ define('FRAME','hidden');
$language_file = array ('chat');
require('../inc/global.inc.php');
include_once '../inc/lib/course.lib.php';
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'groupmanager.lib.php';
require_once 'chat_functions.lib.php';
//$tbl_user=$mainDbName."`.`user";
//$tbl_chat_connected=$_course['dbNameGlu'].'chat_connected';
@ -69,9 +70,17 @@ if (!empty($group_id)) {
$extra_condition = $session_condition;
}
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document/';
$chatPath=$documentPath.'chat_files/';
// get chat path
$chatPath = '';
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
if (!empty($group_id)) {
$group_info = GroupManager :: get_group_properties($group_id);
$chatPath=$documentPath.$group_info['directory'].'/chat_files/';
} else {
$chatPath=$documentPath.'/chat_files/';
}
// get chat file
$basename_chat = '';
if (!empty($group_id)) {
$basename_chat = 'messages-'.$dateNow.'_gid-'.$group_id;

@ -40,14 +40,14 @@ define('FRAME','message');
$language_file = array ('chat');
require('../inc/global.inc.php');
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'groupmanager.lib.php';
$course=api_get_course_id();
$session_id = intval($_SESSION['id_session']);
$group_id = intval($_SESSION['_gid']);
/////
// Juan Carlos Ra<EFBFBD>a insert smileys and self-closing window
// Juan Carlos Raña insert smileys and self-closing window
////
?>
<script language="javascript" type="text/javascript">
@ -121,9 +121,17 @@ if (!empty($course) && !empty($_user['user_id']))
$lastname=Database::result($result,0,'lastname');
$dateNow=date('Y-m-d');
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document/';
$chatPath=$documentPath.'chat_files/';
$basepath_chat = '';
$documentPath=api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
if (!empty($group_id)) {
$group_info = GroupManager :: get_group_properties($group_id);
$basepath_chat = $group_info['directory'].'/chat_files';
} else {
$basepath_chat = '/chat_files';
}
$chatPath=$documentPath.$basepath_chat.'/';
$TABLEITEMPROPERTY= Database::get_course_table(TABLE_ITEM_PROPERTY);
if(!is_dir($chatPath)) {
@ -135,12 +143,13 @@ if (!empty($course) && !empty($_user['user_id']))
$perm = octdec(!empty($perm)?$perm:'0770');
@mkdir($chatPath,$perm);
@chmod($chatPath,$perm);
/*
$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files');
$sql_insert = "INSERT INTO ".$TABLEITEMPROPERTY . " (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$doc_id,'DocumentAdded',1,0,NULL,0)";
Database::query($sql_insert ,__FILE__,__LINE__);
*/
// save chat files document for group into item property
if (!empty($group_id)) {
$doc_id=add_document($_course,$basepath_chat,'folder',0,'chat_files');
$sql = "INSERT INTO $TABLEITEMPROPERTY (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)
VALUES ('document',1,NOW(),NOW(),$doc_id,'FolderCreated',1,$group_id,NULL,0)";
Database::query($sql,__FILE__,__LINE__);
}
}
}
@ -245,15 +254,15 @@ if (!empty($course) && !empty($_user['user_id']))
if(!file_exists($chatPath.$basename_chat.'.log.html'))
{
$doc_id=add_document($_course,'/chat_files/'.$basename_chat.'.log.html','file',0,$basename_chat.'.log.html');
$doc_id=add_document($_course,$basepath_chat.'/'.$basename_chat.'.log.html','file',0,$basename_chat.'.log.html');
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $_user['user_id'],$group_id,null,null,null,$session_id);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', $_user['user_id'],$group_id,null,null,null,$session_id);
item_property_update_on_folder($_course,'/chat_files', $_user['user_id']);
item_property_update_on_folder($_course,$basepath_chat, $_user['user_id']);
}
else
{
$doc_id = DocumentManager::get_document_id($_course,'/chat_files/'.$basename_chat.'.log.html');
$doc_id = DocumentManager::get_document_id($_course,$basepath_chat.'/'.$basename_chat.'.log.html');
}
$fp=fopen($chatPath.$basename_chat.'.log.html','a');
@ -275,7 +284,7 @@ if (!empty($course) && !empty($_user['user_id']))
$chat_size=filesize($chatPath.$basename_chat.'.log.html');
update_existing_document($_course, $doc_id,$chat_size);
item_property_update_on_folder($_course,'/chat_files', $_user['user_id']);
item_property_update_on_folder($_course,$basepath_chat, $_user['user_id']);
}
}
}

@ -484,7 +484,13 @@ form span.form_error {
border-bottom:1px solid #4171b5;
border-top:1px solid #4171b5;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2045,7 +2051,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2057,6 +2063,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -478,7 +478,6 @@ form span.form_error {
border-bottom:1px solid #4171b5;
border-top:1px solid #4171b5;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -491,6 +490,14 @@ form span.form_error {
padding-right:12px;
text-align:center;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.actions img {
vertical-align:middle;
}
@ -2034,7 +2041,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2046,6 +2053,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -149,7 +149,7 @@ input.link_alike:hover {
.coursestatusicons {
border: 0px solid #000;
float: left;
padding-right: 5px;
padding-right: 8px;
width: auto;
}
/* user_portal course list */
@ -2120,7 +2120,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2441,7 +2447,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2452,6 +2458,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;
@ -2616,6 +2625,8 @@ input.arrowl {
/* UI improvements */
* {
outline :none;
}
@ -2641,3 +2652,16 @@ input, select, textarea {
input[type="text"]:focus, input[type="password"]:focus, textarea:focus {
background-image:url(images/shadow.gif);
}
.independent_course_item a {
font-size:120%;
}
.session_course_item a {
font-size:120%;
}
#maincontent .courseslist li {
margin-bottom:8px;
}

@ -2114,7 +2114,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2436,7 +2442,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2447,6 +2453,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -498,7 +498,13 @@ form span.form_error {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2033,7 +2039,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2045,6 +2051,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -526,7 +526,13 @@ form span.form_error {
border-bottom:1px solid #7171b7;
border-top:1px solid #7171b7;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2071,7 +2077,7 @@ button.back {
background-image:url(images/button_back.gif);
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2083,6 +2089,9 @@ button.back {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2131,7 +2131,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2453,7 +2459,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2464,6 +2470,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2189,7 +2189,13 @@ padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;}
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2750,7 +2756,7 @@ button.upload {
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2762,6 +2768,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2222,7 +2222,6 @@ input.forms {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2235,6 +2234,13 @@ input.forms {
padding-right:12px;
text-align:center;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.actions img {
vertical-align:middle;
}
@ -2784,7 +2790,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2796,6 +2802,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2130,7 +2130,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2452,7 +2458,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2463,6 +2469,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2130,7 +2130,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2452,7 +2458,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2463,6 +2469,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2147,6 +2147,13 @@ padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;}
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.actionsbig a {
float:left;
padding-left:12px;
@ -2708,7 +2715,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2720,6 +2727,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2163,7 +2163,13 @@ padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;}
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2719,13 +2725,14 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:10em;
text-align: center;
padding-right: 5px;
padding-left: 5px;
}
#expire_session div {
float:left;
padding-left:15px;
@ -2760,6 +2767,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2126,7 +2126,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2448,7 +2454,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:9em;
text-align: center;
padding-top: 3px;
@ -2459,6 +2465,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -1877,7 +1877,13 @@ div.system_announcement {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2439,7 +2445,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2451,6 +2457,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2180,7 +2180,13 @@ padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;}
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2741,7 +2747,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
cursor:hand;
height:8em;
text-align: center;
@ -2753,6 +2759,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2132,7 +2132,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2454,7 +2460,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2465,6 +2471,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -2106,7 +2106,13 @@ div.comments {
border-bottom:1px solid #999999;
border-top:1px solid #999999;
background-color:#efefef;
height:100%;
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
float:left;
width:100%;
}
.content_table {
padding:2px;
margin-bottom: 5px;
vertical-align:middle;
@ -2453,7 +2459,7 @@ button.upload {
}
.icon_image_content {
width:70px;
width:80px;
height:5em;
text-align: center;
padding-top: 3px;
@ -2464,6 +2470,9 @@ button.upload {
.question_menu {
list-style:none;
float:left;
padding:0px;
margin:-2px;
min-height:100px;
}
.question_menu li {
float:left;

@ -532,11 +532,13 @@ if ($is_allowedToEdit) {
$sql = 'SELECT gl.id FROM ' . $tbl_grade_link . ' gl WHERE gl.type="1" AND gl.ref_id="' . $exerciseId . '";';
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
$link = LinkFactory :: load($row['id']);
if ($link[0] != null) {
$link[0]->delete();
}
//see
if (!empty($row['id'])) {
$link = LinkFactory :: load($row['id']);
if ($link[0] != null) {
$link[0]->delete();
}
}
Display :: display_confirmation_message(get_lang('ExerciseDeleted'));
break;
case 'enable' : // enables an exercise

@ -576,7 +576,7 @@ class Exercise
$cond1=Database::escape_string(Security::remove_XSS($exercise));
$cond2=Database::escape_string(Security::remove_XSS(api_html_entity_decode($description),COURSEMANAGERLOWSECURITY));
}*/
$sql="INSERT INTO $TBL_EXERCICES (start_time, end_time, title, description, sound, type, random,active, results_disabled, max_attempt, feedback_type, session_id)
$sql="INSERT INTO $TBL_EXERCICES (start_time, end_time, title, description, sound, type, random,active, results_disabled, max_attempt, feedback_type, expired_time, session_id)
VALUES(
'$start_time','$end_time',
'".Database::escape_string($exercise)."',
@ -588,6 +588,7 @@ class Exercise
'".Database::escape_string($results_disabled)."',
'".Database::escape_string($attempts)."',
'".Database::escape_string($feedbacktype)."',
'".Database::escape_string($expired_time)."',
'".Database::escape_string($session_id)."'
)";
Database::query($sql,__FILE__,__LINE__);
@ -983,7 +984,6 @@ class Exercise
$form -> addElement('text', 'enabletimercontroltotalminutes',get_lang('ExerciseTotalDurationInMinutes'),array('style' => 'width : 35px'));
$form -> addElement('html','</div>');
//$form -> addElement('text', 'exerciseAttempts', get_lang('ExerciseAttempts').' : ',array('size'=>'2'));
@ -1099,7 +1099,7 @@ class Exercise
$this -> updateType($form -> getSubmitValue('exerciseType'));
$this -> setRandom($form -> getSubmitValue('randomQuestions'));
$this -> updateResultsDisabled($form -> getSubmitValue('results_disabled'));
$this -> updateExpiredTime($form -> getSubmitValue('enabletimercontroltotalminutes'));
$this -> updateExpiredTime($form -> getSubmitValue('enabletimercontroltotalminutes'));
if($form -> getSubmitValue('enabletimelimit')==1) {
$start_time = $form -> getSubmitValue('start_time');
$this->start_time = $start_time['Y'].'-'.$start_time['F'].'-'.$start_time['d'].' '.$start_time['H'].':'.$start_time['i'].':00';

@ -269,15 +269,18 @@ if (isset ($_GET['visiblelink'])) {
}
if (isset ($_GET['deletelink'])) {
block_students();
$link= LinkFactory :: load(Security::remove_XSS($_GET['deletelink']));
if ($link[0] != null) {
$sql='UPDATE '.$tbl_forum_thread.' SET thread_qualify_max=0,thread_weight=0,thread_title_qualify="" WHERE thread_id=(SELECT ref_id FROM '.$tbl_grade_links.' where id='.Security::remove_XSS($_GET['deletelink']).');';
Database::query($sql);
$link[0]->delete();
//fixing #5229
if (!empty($_GET['deletelink'])) {
$link= LinkFactory :: load(Security::remove_XSS($_GET['deletelink']));
if ($link[0] != null) {
$sql='UPDATE '.$tbl_forum_thread.' SET thread_qualify_max=0,thread_weight=0,thread_title_qualify="" WHERE thread_id=(SELECT ref_id FROM '.$tbl_grade_links.' where id='.Security::remove_XSS($_GET['deletelink']).');';
Database::query($sql);
$link[0]->delete();
}
unset ($link);
$confirmation_message = get_lang('LinkDeleted');
$filter_confirm_msg = false;
}
unset ($link);
$confirmation_message = get_lang('LinkDeleted');
$filter_confirm_msg = false;
}
$course_to_crsind = isset ($course_to_crsind) ? $course_to_crsind : '';
if ($course_to_crsind && !isset($_GET['confirm'])) {
@ -328,11 +331,14 @@ if (isset ($_POST['action'])) {
$number_of_deleted_evaluations++;
}
if (api_substr($indexstr, 0, 4) == 'LINK') {
$link= LinkFactory :: load(api_substr($indexstr, 4));
if ($link[0] != null) {
$link[0]->delete();
$id = api_substr($indexstr, 4);
if (!empty($id)) {
$link= LinkFactory :: load();
if ($link[0] != null) {
$link[0]->delete();
}
$number_of_deleted_links++;
}
$number_of_deleted_links++;
}
}
$confirmation_message = get_lang('DeletedCategories') . ' : <b>' . $number_of_deleted_categories . '</b><br />' . get_lang('DeletedEvaluations') . ' : <b>' . $number_of_deleted_evaluations . '</b><br />' . get_lang('DeletedLinks') . ' : <b>' . $number_of_deleted_links . '</b><br /><br />' . get_lang('TotalItems') . ' : <b>' . $number_of_selected_items . '</b>';

@ -327,15 +327,18 @@ if (isset ($_GET['visiblelink'])) {
if (isset ($_GET['deletelink'])) {
block_students();
$get_delete_link=Security::remove_XSS($_GET['deletelink']);
$link= LinkFactory :: load($get_delete_link);
if ($link[0] != null) {
$sql='UPDATE '.$tbl_forum_thread.' SET thread_qualify_max=0,thread_weight=0,thread_title_qualify="" WHERE thread_id=(SELECT ref_id FROM '.$tbl_grade_links.' where id='.$get_delete_link.');';
Database::query($sql);
$link[0]->delete();
//fixing #5229
if (!empty($get_delete_link)) {
$link= LinkFactory :: load($get_delete_link);
if ($link[0] != null) {
$sql='UPDATE '.$tbl_forum_thread.' SET thread_qualify_max=0,thread_weight=0,thread_title_qualify="" WHERE thread_id=(SELECT ref_id FROM '.$tbl_grade_links.' where id='.$get_delete_link.');';
Database::query($sql);
$link[0]->delete();
}
unset ($link);
$confirmation_message = get_lang('LinkDeleted');
$filter_confirm_msg = false;
}
unset ($link);
$confirmation_message = get_lang('LinkDeleted');
$filter_confirm_msg = false;
}
if (!empty($course_to_crsind) && !isset($_GET['confirm'])) {
@ -387,12 +390,15 @@ if (isset ($_POST['action'])) {
$number_of_deleted_evaluations++;
}
if (substr($indexstr, 0, 4) == 'LINK') {
$link= LinkFactory :: load(substr($indexstr, 4));
if ($link[0] != null) {
$link[0]->delete();
//fixing #5229
$id = substr($indexstr, 4);
if (!empty($id)) {
$link= LinkFactory :: load($id);
if ($link[0] != null) {
$link[0]->delete();
}
$number_of_deleted_links++;
}
$number_of_deleted_links++;
}
}
$confirmation_message = get_lang('DeletedCategories') . ' : <b>' . $number_of_deleted_categories . '</b><br />' . get_lang('DeletedEvaluations') . ' : <b>' . $number_of_deleted_evaluations . '</b><br />' . get_lang('DeletedLinks') . ' : <b>' . $number_of_deleted_links . '</b><br /><br />' . get_lang('TotalItems') . ' : <b>' . $number_of_selected_items . '</b>';

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@ -317,6 +317,7 @@ class Display {
$column = 0;
$default_items_per_page = isset ($paging_options['per_page']) ? $paging_options['per_page'] : 20;
$table = new SortableTableFromArray($content, $column, $default_items_per_page, $name);
if (is_array($query_vars)) {
$table->set_additional_parameters($query_vars);
}

@ -6,6 +6,7 @@
* @since 22/April/2007
*
*/
require_once api_get_path(LIBRARY_PATH) . 'fileUpload.lib.php';//from Dokeos
class Upload
{
var $fileType = ""; //the file type
@ -203,7 +204,7 @@ class Upload
{
$this->fileBaseName = $fileBaseName;
}
$this->fileBaseName=str_replace(' ','_',$this->fileBaseName);// Juan Carlos Ra<EFBFBD>a Because fix long names. See: ajaxfilemanager/inc/class.manager.php
$this->fileBaseName=disable_dangerous_file(replace_dangerous_char(str_replace(' ','_',$this->fileBaseName)));// Juan Carlos Raña replace space by _ because fix long names. See: ajaxfilemanager/inc/class.manager.php. And add cleaning from dokeos replace_dangerous_char() and disable_dangerous_file()
$fileName = $this->fileBaseName . $this->fileExtension;
$filePath = $dest . $fileName;

@ -4,7 +4,7 @@
==============================================================================
* This library provides functions for the access_url management.
* Include/require it in your code to use its functionality.
*
* @author Julio Montoya <gugli100@gmail.com>
* @package dokeos.library
==============================================================================
*/
@ -147,7 +147,10 @@ class GroupPortalManager
/**
* Gets data of all groups
* @author Julio Montoya
* @return array
* @param int visibility
* @param int from which record the results will begin (use for pagination)
* @param int number of items
* @return array
* */
function get_all_group_data($visibility = GROUP_PERMISSION_OPEN, $from=0, $number_of_items=10)
{
@ -163,6 +166,11 @@ class GroupPortalManager
return $data;
}
/**
* Gets the group data
*
*
*/
function get_group_data($group_id)
{
$table = Database :: get_main_table(TABLE_MAIN_GROUP);
@ -177,6 +185,12 @@ class GroupPortalManager
return $item;
}
/**
* Gets the tags from a given group
* @param int group id
* @param bool show group links or not
*
*/
function get_group_tags($group_id, $show_tag_links = true)
{
$tag = Database :: get_main_table(TABLE_MAIN_TAG);
@ -246,7 +260,76 @@ class GroupPortalManager
$sql = "SELECT g.picture_uri, g.name, g.description, g.id
FROM $tbl_group g
INNER JOIN $table_group_rel_user gu
ON gu.group_id = g.id WHERE gu.user_id = $user_id $where_relation_condition ";
ON gu.group_id = g.id WHERE gu.user_id = $user_id $where_relation_condition ORDER BY created_on desc ";
$result=Database::query($sql,__FILE__,__LINE__);
$array = array();
while ($row = Database::fetch_array($result, 'ASSOC')) {
if ($with_image == true) {
$picture = self::get_picture_group($row['id'], $row['picture_uri'],80);
$img = '<img src="'.$picture['file'].'" />';
$row['picture_uri'] = $img;
}
$array[$row['id']] = $row;
}
return $array;
}
/** Gets the inner join of users and group table
* @author Julio Montoya
* @return int access url id
* @return array Database::store_result of the result
* */
function get_groups_by_popularity($num = 10, $with_image = false)
{
$where = '';
$table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
$tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
if (empty($num)) {
$num = 10;
} else {
$num = intval($num);
}
$sql = "SELECT count(user_id) as count, g.picture_uri, g.name, g.description, g.id
FROM $tbl_group g
INNER JOIN $table_group_rel_user gu
ON gu.group_id = g.id GROUP BY g.id ORDER BY count DESC LIMIT $num";
$result=Database::query($sql,__FILE__,__LINE__);
$array = array();
while ($row = Database::fetch_array($result, 'ASSOC')) {
if ($with_image == true) {
$picture = self::get_picture_group($row['id'], $row['picture_uri'],80);
$img = '<img src="'.$picture['file'].'" />';
$row['picture_uri'] = $img;
}
$array[$row['id']] = $row;
}
return $array;
}
/** Gets the last groups created
* @author Julio Montoya
* @return int access url id
* @return array Database::store_result of the result
* */
function get_groups_by_age($num = 10, $with_image = false)
{
$where = '';
$table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
$tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
if (empty($num)) {
$num = 10;
} else {
$num = intval($num);
}
$sql = "SELECT g.picture_uri, g.name, g.description, g.id
FROM $tbl_group g
INNER JOIN $table_group_rel_user gu
ON gu.group_id = g.id ORDER BY created_on desc LIMIT $num ";
$result=Database::query($sql,__FILE__,__LINE__);
$array = array();
@ -261,6 +344,7 @@ class GroupPortalManager
return $array;
}
function get_users_by_group($group_id='', $with_image = false)
{
$where = '';
@ -283,7 +367,7 @@ class GroupPortalManager
$array = array();
while ($row = Database::fetch_array($result, 'ASSOC')) {
if ($with_image == true) {
$picture = UserManager::get_picture_user($row['user_id'], $row['picture_uri'],80);
$picture = UserManager::get_picture_user($row['user_id'], $row['picture_uri'],80,'medium_');
$img = '<img src="'.$picture['file'].'" />';
$row['picture_uri'] = $img;
}
@ -374,17 +458,18 @@ class GroupPortalManager
* @author Julio Montoya
* @param int user id
* @param int group_id
* @return boolean true if success
* @return int 0 if there are not relationship otherwise return GROUP_USER_PERMISSION_ADMIN or GROUP_USER_PERMISSION_READER constants
* */
function get_user_group_role($user_id, $group_id)
{
$table_group_rel_user= Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$return_value = 0;
if (!empty($user_id) && !empty($group_id)) {
$sql = "SELECT relation_type FROM $table_group_rel_user WHERE id = ".intval($group_id)." AND user_id = ".intval($user_id)." ";
$sql = "SELECT relation_type FROM $table_group_rel_user WHERE group_id = ".intval($group_id)." AND user_id = ".intval($user_id)." ";
$result = Database::query($sql, __FILE__, __LINE__);
if (Database::num_rows($result)>0) {
$row = Database::fetch_row($result);
$row = Database::fetch_array($result,'ASSOC');
$return_value = $row['relation_type'];
}
}
@ -425,35 +510,6 @@ class GroupPortalManager
}
/**
* Add a group of users into a group of URLs
* @author Julio Montoya
* @param array of user_ids
* @param array of url_ids
* */
function add_users_to_urls($user_list, $url_list)
{
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$result_array=array();
if (is_array($user_list) && is_array($url_list)){
foreach ($url_list as $url_id) {
foreach ($user_list as $user_id) {
$count = UrlManager::relation_url_user_exist($user_id,$url_id);
if ($count==0) {
$sql = "INSERT INTO $table_url_rel_user
SET user_id = ".Database::escape_string($user_id).", access_url_id = ".Database::escape_string($url_id);
$result = Database::query($sql, __FILE__, __LINE__);
if($result)
$result_array[$url_id][$user_id]=1;
else
$result_array[$url_id][$user_id]=0;
}
}
}
}
return $result_array;
}
/**
@ -539,34 +595,40 @@ class GroupPortalManager
}
return $result;
}
function add_course_to_url($course_code, $url_id=1)
{
$table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
if (empty($url_id)) $url_id=1;
$count = UrlManager::relation_url_course_exist($course_code,$url_id);
if (empty($count)) {
$sql = "INSERT INTO $table_url_rel_course
SET course_code = '".Database::escape_string($course_code)."', access_url_id = ".Database::escape_string($url_id);
$result = Database::query($sql, __FILE__, __LINE__);
/**
* Add a group of users into a group of URLs
* @author Julio Montoya
* @param array of user_ids
* @param array of url_ids
* */
function add_users_to_groups($user_list, $group_list, $relation_type = GROUP_USER_PERMISSION_READER) {
$table_url_rel_group = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$result_array = array();
$relation_type = intval($relation_type);
if (is_array($user_list) && is_array($group_list)) {
foreach ($group_list as $group_id) {
foreach ($user_list as $user_id) {
$role = self::get_user_group_role($user_id,$group_id);
if ($role == 0) {
$sql = "INSERT INTO $table_url_rel_group
SET user_id = ".intval($user_id).", group_id = ".intval($group_id).", relation_type = ".intval($relation_type)."";
$result = Database::query($sql, __FILE__, __LINE__);
if ($result)
$result_array[$group_id][$user_id]=1;
else
$result_array[$group_id][$user_id]=0;
}
}
}
}
return $result;
return $result_array;
}
function add_session_to_url($session_id, $url_id=1)
{
$table_url_rel_session= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
if (empty($url_id)) $url_id=1;
$count = UrlManager::relation_url_session_exist($session_id,$url_id);
if (empty($count)) {
$sql = "INSERT INTO $table_url_rel_session
SET session_id = ".Database::escape_string($session_id).", access_url_id = ".Database::escape_string($url_id);
$result = Database::query($sql, __FILE__, __LINE__);
}
return $result;
}
/**
* Deletes an url and user relationship
@ -575,10 +637,10 @@ class GroupPortalManager
* @param int url id
* @return boolean true if success
* */
function delete_url_rel_user($user_id, $url_id)
function delete_users($group_id)
{
$table_url_rel_user= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql= "DELETE FROM $table_url_rel_user WHERE user_id = ".Database::escape_string($user_id)." AND access_url_id=".Database::escape_string($url_id)." ";
$table_= Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$sql= "DELETE FROM $table_ WHERE group_id = ".intval($group_id);
$result = Database::query($sql, __FILE__, __LINE__);
return $result;
}
@ -605,10 +667,10 @@ class GroupPortalManager
* @param int url id
* @return boolean true if success
* */
function delete_url_rel_session($session_id, $url_id)
function delete_user_rel_group($user_id, $group_id)
{
$table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$sql= "DELETE FROM $table_url_rel_session WHERE session_id = ".Database::escape_string($session_id)." AND access_url_id=".Database::escape_string($url_id)." ";
$table = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$sql= "DELETE FROM $table WHERE user_id = ".intval($user_id)." AND group_id=".intval($group_id)." ";
$result = Database::query($sql, __FILE__, __LINE__);
return $result;
}
@ -815,14 +877,14 @@ class GroupPortalManager
/**
* Creates new user pfotos in various sizes of a user, or deletes user pfotos.
* Creates new group pictures in various sizes of a user, or deletes user pfotos.
* Note: This method relies on configuration setting from dokeos/main/inc/conf/profile.conf.php
* @param int $user_id The user internal identitfication number.
* @param string $file The common file name for the newly created pfotos. It will be checked and modified for compatibility with the file system.
* @param int The group id
* @param string $file The common file name for the newly created pfotos. It will be checked and modified for compatibility with the file system.
* If full name is provided, path component is ignored.
* If an empty name is provided, then old user photos are deleted only, @see UserManager::delete_user_picture() as the prefered way for deletion.
* @param string $source_file The full system name of the image from which user photos will be created.
* @return string/bool Returns the resulting common file name of created images which usually should be stored in database.
* @param string $source_file The full system name of the image from which user photos will be created.
* @return string/bool Returns the resulting common file name of created images which usually should be stored in database.
* When deletion is recuested returns empty string. In case of internal error or negative validation returns FALSE.
*/
public static function update_group_picture($group_id, $file = null, $source_file = null) {
@ -919,7 +981,7 @@ class GroupPortalManager
}
/**
* Get user picture URL or path from user ID (returns an array).
* Gets the group picture URL or path from group ID (returns an array).
* The return format is a complete path, enabling recovery of the directory
* with dirname() or the file with basename(). This also works for the
* functions dealing with the user's productions, as they are located in
@ -981,7 +1043,7 @@ class GroupPortalManager
return array('dir' => $dir, 'file' => $picture_filename);
}
/**
/**
* Resize a picture
*
* @param string file picture
@ -1006,10 +1068,11 @@ class GroupPortalManager
}
return $temp;
}
/**
* Gets the current user image
* @param string user id
* @param string picture user name
/**
* Gets the current group image
* @param string group id
* @param string picture group name
* @param string height
* @param string picture size it can be small_, medium_ or big_
* @param string style css

@ -571,10 +571,13 @@ class SocialManager extends UserManager {
echo '<a href="/main/social/friends.php">'.Display::return_icon('lp_users.png').' '.get_lang('Friends').'</a>';
echo '<a href="/main/social/invitations.php">'.Display::return_icon('lp_users.png').' '.get_lang('Invitations').'</a>';
echo '<a href="/main/social/groups.php">'.Display::return_icon('group.gif').' '.get_lang('MyGroups').'</a>';
echo '<a href="/main/social/search.php">'.Display::return_icon('search.gif').' '.get_lang('Search').'</a>';
echo '<a href="/main/social/search.php">'.Display::return_icon('search.gif').' '.get_lang('Search').'</a>';
echo '<a href="/main/auth/profile.php?show=1">'.Display::return_icon('edit.gif').' '.get_lang('Configuration').'</a>';
/*
echo '<span style="float:right; padding-top:7px;">'.
'<a href="/main/auth/profile.php?show=1">'.Display::return_icon('edit.gif').' '.get_lang('Configuration').'</a>';
'</span>';
'</span>';
*/
echo '</div>';
}
}

@ -491,8 +491,15 @@ class SortableTable extends HTML_Table {
.search_users_grid_nav { float:right;}
</style>';
$items = $this->get_clean_html(); // getting the items of the table
if ($hide_navigation == true ) {
$items = $this->table_data; //this is a faster way to get what we want
} else {
//the normal way
$items = $this->get_clean_html(); // getting the items of the table
}
// the generating of style classes must be improved. Maybe we need a a table name to create style on the fly:
// i.e: .whoisonline_table_grid_container instead of .grid_container
// where whoisonline is the table's name like drupal's template engine

@ -2208,8 +2208,18 @@ class UserManager
$file = $image_array_sys['dir'].$picture_file;
if (file_exists($file) && !is_dir($file)) {
$picture['file'] = $image_array['dir'].$picture_file;
} else {
$picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown.jpg';
} else {
switch ($size_picture) {
case 'big_' :
$picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown.jpg'; break;
case 'medium_' :
$picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown_50_50.jpg'; break;
case 'small_' :
$picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown.jpg'; break;
default:
$picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown.jpg'; break;
}
}
}
return $picture;
@ -2565,10 +2575,9 @@ class UserManager
$where_field = " field_id = $field_id AND ";
}
// all the information of the field
$sql = "SELECT u.user_id,u.username,firstname, lastname, email, tag, picture_uri FROM $table_user_tag ut INNER JOIN $table_user_tag_values uv ON (uv.tag_id=ut.id)
$sql = "SELECT u.user_id,u.username,firstname, lastname, email, tag, picture_uri FROM $table_user_tag ut INNER JOIN $table_user_tag_values uv ON (uv.tag_id=ut.id)
INNER JOIN $user_table u ON(uv.user_id =u.user_id)
WHERE $where_field tag LIKE '$tag%' ORDER BY tag";
WHERE $where_field tag LIKE '$tag%' ORDER BY tag";
$sql .= " LIMIT $from,$number_of_items";
$result = Database::query($sql, __FILE__, __LINE__);
@ -2643,7 +2652,7 @@ class UserManager
</div>
<div>
<input type="text" size="30" value="'.Security::remove_XSS($query).'" tabindex="1" id="standard_q" name="q"/>
<input type="submit" value="search"/>
<button class="search" value="search"/>'.get_lang('Search').'</button>
</div>
</td>
</tr>

@ -883,10 +883,15 @@ class learnpath {
$sql = 'SELECT gl.id FROM ' . $tbl_grade_link . ' gl WHERE gl.type="4" AND gl.ref_id="' . $id . '";';
$result = Database::query($sql, __FILE__, __LINE__);
$row = Database :: fetch_array($result, 'ASSOC');
$link = LinkFactory :: load($row['id']);
if ($link[0] != null) {
$link[0]->delete();
//fixing gradebook link deleted see #5229
if (!empty($row['id'])) {
$link = LinkFactory :: load($row['id']);
if ($link[0] != null) {
$link[0]->delete();
}
}
//TODO: also delete items and item-views
if (api_get_setting('search_enabled') == 'true') {
require_once (api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php');

@ -0,0 +1,151 @@
<?php // $Id: user_edit.php 22233 2009-07-20 09:54:05Z ivantcholakov $
/* For licensing terms, see /dokeos_license.txt */
/**
==============================================================================
* @package dokeos.admin
==============================================================================
*/
// Language files that should be included
$language_file = array('admin');
$cidReset = true;
include '../inc/global.inc.php';
$this_section = SECTION_SOCIAL;
$libpath = api_get_path(LIBRARY_PATH);
require_once $libpath.'fileManage.lib.php';
require_once $libpath.'fileUpload.lib.php';
require_once $libpath.'group_portal_manager.lib.php';
require_once $libpath.'formvalidator/FormValidator.class.php';
require_once $libpath.'image.lib.php';
require_once $libpath.'mail.lib.inc.php';
require_once $libpath.'social.lib.php';
$group_id = isset($_GET['id']) ? intval($_GET['id']) : intval($_POST['id']);
$tool_name = get_lang('GroupEdit');
$interbreadcrumb[] = array('url' => 'index.php','name' => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => 'group_list.php','name' => get_lang('GroupList'));
$table_group = Database::get_main_table(TABLE_MAIN_GROUP);
$sql = "SELECT * FROM $table_group WHERE id = '".$group_id."'";
$res = Database::query($sql, __FILE__, __LINE__);
if (Database::num_rows($res) != 1) {
header('Location: groups.php?id='.$group_id);
exit;
}
$group_data = Database::fetch_array($res, 'ASSOC');
// Create the form
$form = new FormValidator('group_edit', 'post', '', '', array('style' => 'width: 60%; float: '.($text_dir == 'rtl' ? 'right;' : 'left;')));
$form->addElement('header', '', $tool_name);
$form->addElement('hidden', 'id', $group_id);
// name
$form->addElement('text', 'name', get_lang('Name'));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement('text', 'description', get_lang('Description'));
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
// url
$form->addElement('text', 'url', get_lang('URL'));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
if (strlen($group_data['picture_uri']) > 0) {
$form->addElement('checkbox', 'delete_picture', '', get_lang('DelImage'));
}
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array());
// Submit button
$form->addElement('style_submit_button', 'submit', get_lang('ModifyInformation'), 'class="save"');
// Set default values
$form->setDefaults($group_data);
// Validate form
if ( $form->validate()) {
$group = $form->exportValues();
$picture_element = & $form->getElement('picture');
$picture = $picture_element->getValue();
$picture_uri = $group_data['picture_uri'];
if ($group['delete_picture']) {
$picture_uri = GroupPortalManager::delete_group_picture($group_id);
}
elseif (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture($group_id, $_FILES['picture']['name'], $_FILES['picture']['tmp_name']);
}
$name = $group['name'];
$description = $group['description'];
$url = $group['url'];
$status = intval($group['visibility']);
GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri);
$tok = Security::get_token();
header('Location: groups.php?id='.$group_id.'&action=show_message&message='.urlencode(get_lang('GroupUpdated')).'&sec_token='.$tok);
exit();
}
Display::display_header($tool_name);
//show the action menu
SocialManager::show_social_menu();
echo '<div class="actions-title">';
echo get_lang('Groups');
echo '</div>';
// Group picture
$image_path = GroupPortalManager::get_group_picture_path_by_id($group_id,'web');
$image_dir = $image_path['dir'];
$image = $image_path['file'];
$image_file = ($image != '' ? $image_dir.$image : api_get_path(WEB_CODE_PATH).'img/unknown_group.jpg');
$image_size = api_getimagesize($image_file);
$img_attributes = 'src="'.$image_file.'?rand='.time().'" '
.'alt="'.api_get_person_name($user_data['firstname'], $user_data['lastname']).'" '
.'style="float:'.($text_dir == 'rtl' ? 'left' : 'right').'; padding:5px;" ';
if ($image_size[0] > 300) { //limit display width to 300px
$img_attributes .= 'width="300" ';
}
// get the path,width and height from original picture
$big_image = $image_dir.'big_'.$image;
$big_image_size = api_getimagesize($big_image);
$big_image_width = $big_image_size[0];
$big_image_height = $big_image_size[1];
$url_big_image = $big_image.'?rnd='.time();
if ($image == '') {
echo '<img '.$img_attributes.' />';
} else {
echo '<input type="image" '.$img_attributes.' onclick="javascript: return show_image(\''.$url_big_image.'\',\''.$big_image_width.'\',\''.$big_image_height.'\');"/>';
}
// Display form
$form->display();
// Footer
Display::display_footer();

@ -20,14 +20,29 @@ echo '</div>';
$group_id = intval($_GET['id']);
if ($group_id != 0 ) {
if ($group_id != 0 ) {
if (isset($_GET['action']) && $_GET['action']=='leave') {
$user_leaved = intval($_GET['u']);
GroupPortalManager::delete_user_rel_group($user_leaved, $group_id);
}
if (isset($_GET['action']) && $_GET['action']=='join') {
$user_join = intval($_GET['u']);
GroupPortalManager::add_user_to_group($user_join, $group_id);
}
$group_info = GroupPortalManager::get_group_data($group_id);
$picture = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'],160,'medium_');
$tags = GroupPortalManager::get_group_tags($group_id,true);
$users = GroupPortalManager::get_users_by_group($group_id,true);
//var_dump($users);
//@todo this must be move to default.css for dev use only
echo '<style>
#group_members { width:250px; height:300px; overflow-x:none; overflow-y: auto;}
.group_member_item { width:80px; float:left;}
</style>';
//Group's title
@ -60,57 +75,89 @@ if ($group_id != 0 ) {
echo '</div>';
}
echo '<div id="group_members">';
echo get_lang('Members').' : ';
foreach($users as $user) {
echo $user['picture_uri'].$user['firstname'].$user['lastname'].'<br />';
echo get_lang('Members').' : ';
echo '<div id="group_members">';
foreach($users as $user) {
echo '<div class="group_member_item">'.$user['picture_uri'].$user['firstname'].$user['lastname'].'</div>';
}
echo '</div>';
echo '<div id="group_permissions">';
if (in_array(api_get_user_id(), $users)) {
if (is_array($users[api_get_user_id()]) && count($users[api_get_user_id()]) > 0) {
//im a member
if (isset($users[api_get_user_id()]) && $users[api_get_user_id()]['relation_info']!='') {
$my_group_role = $users[api_get_get_user_id()]['relation_info'];
// just a reader
if ($users[api_get_user_id()]['relation_type']!='') {
$my_group_role = $users[api_get_user_id()]['relation_type'];
// I'm just a reader
if ($my_group_role == GROUP_USER_PERMISSION_READER) {
echo 'Im just a reader';
echo 'Invite others';
echo 'Leave group';
echo '<a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.get_lang('LeaveGroup').'</a>';
echo 'Invite others/';
//the main admin
} elseif ($my_group_role == GROUP_USER_PERMISSION_ADMIN) {
echo 'Imm the admin';
echo 'Edit group';
echo 'Im the admin/';
echo '<a href="group_edit.php?id='.$group_id.'">'.get_lang('EditGroup').'</a>';
echo 'Invite others';
}
} else {
//im not a member
echo 'I should register';
echo '<a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a>';
}
} else {
//im not a member
echo 'I should register';
echo '<a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a>';
}
echo '</div>';
} else {
echo '<h1>'.get_lang('Newest').'</h1>';
echo '<h1>'.get_lang('Popular').'</h1>';
echo '<h1>'.get_lang('MyGroups').'</h1>';
$results = GroupPortalManager::get_groups_by_user(api_get_user_id(), 0, true);
// Newest groups ----------------
$results = GroupPortalManager::get_groups_by_age(10 , true);
$groups = array();
foreach ($results as $result) {
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$url_close = '</a>';
$groups[]= array($url_open.$result['picture_uri'].$url_close, $url_open.$result['name'].$url_close);
}
if (count($groups) > 0) {
echo '<h1>'.get_lang('Newest').'</h1>';
Display::display_sortable_grid('search_users', array(), $groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
}
// Pop groups ----------------
$results = GroupPortalManager::get_groups_by_popularity(10 , true);
$groups = array();
foreach ($results as $result) {
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$groups[]= array($url_open.$result['picture_uri'].$url_close, $url_open.$result['name'].$url_close,$result['count']);
}
if (count($groups) > 0) {
echo '<h1>'.get_lang('Popular').'</h1>';
Display::display_sortable_grid('search_users', array(), $groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,true));
}
Display::display_sortable_grid('search_users', array(), $groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
// My groups
$results = GroupPortalManager::get_groups_by_user(api_get_user_id(), 0, true);
$groups = array();
foreach ($results as $result) {
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$groups[]= array($url_open.$result['picture_uri'].$url_close, $url_open.$result['name'].$url_close);
}
echo '<h1>'.get_lang('MyGroups').'</h1>';
if (count($groups) > 0) {
Display::display_sortable_grid('search_users', array(), $groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
} else {
echo get_lang('CreateAgroup');
}
}

@ -265,10 +265,13 @@ echo '<a href="../messages/inbox.php">'.Display::return_icon('inbox.png').' '.ge
echo '<a href="group.php">'.Display::return_icon('group.gif').' '.get_lang('MyGroups').'</a>';
echo '<a href="/main/social/search.php">'.Display::return_icon('search.gif').' '.get_lang('Search').'</a>';
echo '<a href="/main/auth/profile.php?show=1">'.Display::return_icon('edit.gif').' '.get_lang('Configuration').'</a>';
/*
echo '<span style="float:right; padding-top:7px;">'.
'<a href="/main/auth/profile.php?show=1">'.Display::return_icon('edit.gif').' '.get_lang('Configuration').'</a>';
'</span>';
*/
echo '</div>';

@ -11,13 +11,19 @@ $current_date=date('Y-m-d H:i:s',time());
$html_form='<select id="id_search_name" name="id_search_name" size="8"" style="width:350px;">';
$user_id = api_get_user_id();
$is_western_name_order = api_is_western_name_order();
if (api_get_setting('allow_social_tool')=='true' && api_get_setting('allow_message_tool')=='true') {
$sql = 'SELECT DISTINCT u.user_id as id, '.($is_western_name_order ? 'concat(u.firstname," ",u.lastname," ","( ",u.email," )")' : 'concat(u.lastname," ",u.firstname," ","( ",u.email," )")').' as name
FROM '.$tbl_my_user_friend.' uf ' .
'INNER JOIN '.$tbl_my_user.' AS u ON uf.friend_user_id = u.user_id ' .
'WHERE relation_type<>6 AND friend_user_id<>'.(int)$user_id.' AND '.($is_western_name_order ? 'concat(u.firstname, " ", u.lastname)' : 'concat(u.lastname, " ", u.firstname)').' like CONCAT("%","'.$search.'","%") ';
} elseif (api_get_setting('allow_social_tool')=='false' && api_get_setting('allow_message_tool')=='true') {
$valid=api_get_setting('time_limit_whosonline');
$sql='SELECT DISTINCT u.user_id as id, '.($is_western_name_order ? 'concat(u.firstname," ",u.lastname," ","( ",u.email," )")' : 'concat(u.lastname," ",u.firstname," ","( ",u.email," )")').' as name
FROM '.$tbl_my_user.' u INNER JOIN '.$track_online_table.' t ON u.user_id=t.login_user_id
WHERE DATE_ADD(login_date,INTERVAL "'.$valid.'" MINUTE) >= "'.$current_date.'" AND '.($is_western_name_order ? 'concat(u.firstname, " ", u.lastname)' : 'concat(u.lastname, " ", u.firstname)').' like CONCAT("%","'.$search.'","%") ';

@ -124,7 +124,7 @@ $nbStudents = count($a_students);
if (isset($_GET['additional_profile_field']) && is_numeric($_GET['additional_profile_field'])) {
//$additional_user_profile_info = get_addtional_profile_information_of_field($_GET['additional_profile_field']);
$user_array = array();
foreach($a_students as $key=>$item){
foreach ($a_students as $key=>$item) {
$user_array[] = $key;
}
//fetching only the user that are loaded NOT ALL user in the portal
@ -662,10 +662,12 @@ if ($_GET['studentlist'] == 'false') {
$table -> set_header(6, get_lang('Student_publication'),false);
$table -> set_header(7, get_lang('Messages'),false);
$table -> set_header(8, get_lang('FirstLogin'), false, 'align="center"');
$table -> set_header(9, get_lang('LatestLogin'), false, 'align="center"');
$table -> set_header(10, get_lang('Details'),false);
$table -> set_header(9, get_lang('LatestLogin'), false, 'align="center"');
if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
$table -> set_header(11, get_lang('AdditionalProfileField'),false);
$table -> set_header(10, get_lang('AdditionalProfileField'),false);
$table -> set_header(11, get_lang('Details'),false);
} else {
$table -> set_header(10, get_lang('Details'),false);
}
if ($export_csv) {
$csv_content[] = array ();
@ -703,13 +705,15 @@ if ($_GET['studentlist'] == 'false') {
$row[] = Tracking :: get_first_connection_date_on_the_course($student_id, $course_code);
$row[] = Tracking :: get_last_connection_date_on_the_course($student_id, $course_code);
$row[] = '<center><a href="../mySpace/myStudents.php?student='.$student_id.'&details=true&course='.$course_code.'&origin=tracking_course"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></center>';
// we need to display an additional profile field
if (isset($_GET['additional_profile_field']) AND is_numeric($_GET['additional_profile_field'])) {
if (is_array($additional_user_profile_info[$student_id]))
if (is_array($additional_user_profile_info[$student_id])) {
$row[]=implode(', ', $additional_user_profile_info[$student_id]);
} else {
$row[]='&nbsp;';
}
}
$row[] = '<center><a href="../mySpace/myStudents.php?student='.$student_id.'&details=true&course='.$course_code.'&origin=tracking_course"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a></center>';
if ($export_csv) {
$row[8] = strip_tags($row[8]);
$row[9] = strip_tags($row[9]);
@ -904,10 +908,10 @@ function get_addtional_profile_information_of_field_by_user($field_id, $users){
// Database table definition
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$table_user_field_values = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
$result = UserManager::get_extra_field_information($field_id);
$result_extra_field = UserManager::get_extra_field_information($field_id);
if (!empty($users)) {
if ($result['field_type'] == USER_FIELD_TYPE_TAG ) {
if ($result_extra_field['field_type'] == USER_FIELD_TYPE_TAG ) {
foreach($users as $user_id) {
$user_result = UserManager::get_user_tags($user_id, $field_id);
$tag_list = array();
@ -929,6 +933,29 @@ function get_addtional_profile_information_of_field_by_user($field_id, $users){
$result = api_sql_query($sql,__FILE__,__LINE__);
while($row = Database::fetch_array($result)) {
if (!empty($row['field_value'])) {
if ($result_extra_field['field_type'] == USER_FIELD_TYPE_DOUBLE_SELECT) {
$id_double_select = explode(';',$row['field_value']);
if (is_array($id_double_select)) {
$value1 = $result_extra_field['options'][$id_double_select[0]]['option_value'];
$value2 = $result_extra_field['options'][$id_double_select[1]]['option_value'];
$row['field_value'] = ($value1.';'.$value2);
}
} else if ($result_extra_field['field_type'] == USER_FIELD_TYPE_DATE) {
$datetime = explode(';',$row['field_value']);
if (is_array($datetime)) {
$time = mktime(0,0,0,$datetime[1],$datetime[0],$datetime[2]);
$row['field_value'] = date('Y-m-d',$time);
}
} else if ($result_extra_field['field_type'] == USER_FIELD_TYPE_DATETIME) {
$datetime = explode(';',$row['field_value']);
if (is_array($datetime)) {
$time = mktime($datetime[3],$datetime[4],0,$datetime[1],$datetime[0],$datetime[2]);
$row['field_value'] = date('Y-m-d H:i:s',$time);
}
}
}
$return[$row['user_id']][] = $row['field_value'];
}
}

Loading…
Cancel
Save