Save c_student_publication with session = null instead of session = 0

pull/2487/head
Angel Fernando Quiroz Campos 9 years ago
parent f26ce1ae11
commit 1fc7546107
  1. 82
      main/admin/user_move_stats.php
  2. 1
      main/gradebook/gradebook_edit_all.php
  3. 25
      main/gradebook/gradebook_edit_link.php
  4. 24
      main/gradebook/lib/GradebookUtils.php
  5. 197
      main/gradebook/lib/be/studentpublicationlink.class.php
  6. 13
      main/inc/lib/sessionmanager.lib.php
  7. 176
      main/work/work.lib.php
  8. 4
      src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php
  9. 11
      src/Chamilo/CourseBundle/Entity/CStudentPublication.php

@ -74,6 +74,7 @@ if (isset($_REQUEST['load_ajax'])) {
$origin_course_code = $combination_result['course_code'];
$origin_session_id = intval($combination_result['session_id']);
$new_session_id = intval($_REQUEST['session_id']);
$session = $em->find('ChamiloCoreBundle:Session', $new_session_id);
//if (!isset($_REQUEST['view_stat'])) {
if ($origin_session_id == $new_session_id ) {
@ -359,30 +360,28 @@ if (isset($_REQUEST['load_ajax'])) {
$dir_name = substr($parent_data['url'], 1);
$created_dir = create_unexisting_work_directory($base_work_dir, $dir_name);
$created_dir = '/'.$created_dir;
$now = api_get_utc_datetime();
$now = new DateTime(api_get_utc_datetime(), new DateTimeZone('UTC'));
//Creating directory
$sql_add_publication = "INSERT INTO " . $TBL_STUDENT_PUBLICATION . " SET
url = '".$created_dir."',
c_id = $course_id,
title = '".$parent_data['title']."',
description = '".$parent_data['description']." folder_moved_from_session_id_$origin_session_id ',
author = '',
active = '0',
accepted = '1',
filetype = 'folder',
sent_date = '".$now."',
qualification = '".$parent_data['qualification'] ."',
parent_id = '',
qualificator_id = '',
date_of_qualification = '',
session_id = ".$new_session_id;
$rest_insert = Database::query($sql_add_publication);
if ($debug) echo ($sql_add_publication);
// add the directory
$id = Database::insert_id();
$publication = new \Chamilo\CourseBundle\Entity\CStudentPublication();
$publication
->setUrl($created_dir)
->setCId($course_id)
->setTitle($parent_data['title'])
->setDescription(
$parent_data['description'] . "folder_moved_from_session_id_$origin_session_id"
)
->setActive(false)
->setAccepted(true)
->setFiletype('folder')
->setSentDate($now)
->setQualification($parent_data['qualification'])
->setParentId(0)
->setQualificatorId(0)
->setSession($session);
$id = $publication->getIid();
//Folder created
api_item_property_update($course_info, 'work', $id, 'DirectoryCreated', api_get_user_id());
if ($debug) var_dump($rest_insert);
$new_parent_id = $id;
$result_message[$TBL_STUDENT_PUBLICATION.' - new folder created called: '.$created_dir]++;
}
@ -424,23 +423,25 @@ if (isset($_REQUEST['load_ajax'])) {
if ($update_database) {
//Creating a new work
$sql_add_publication = "INSERT INTO " . $TBL_STUDENT_PUBLICATION . " SET " .
"url = '" . $new_url . "',
c_id = $course_id,
title = '" . $data['title']. "',
description = '" . $data['description'] . " file moved',
author = '" . $data['author'] . "',
active = '" . $data['active']. "',
accepted = '" . $data['accepted']. "',
post_group_id = " . $data['post_group_id'] . ",
sent_date = '".$data['sent_date'] ."',
parent_id = ".$new_parent_id ." ,
session_id = ".$new_session_id;
if ($debug) echo $sql_add_publication;
$rest_insert = Database::query($sql_add_publication);
if ($debug) var_dump($rest_insert);
$id = Database::insert_id();
$data['sent_date'] = new DateTime($data['sent_date'], new DateTimeZone('UTC'));
$publication = new \Chamilo\CourseBundle\Entity\CStudentPublication();
$publication
->setUrl($new_url)
->setCId($course_id)
->setTitle($data['title'])
->setDescription($data['description'] . ' file moved')
->setActive($data['active'])
->setAccepted($data['accepted'])
->setPostGroupId($data['post_group_id'])
->setSentDate($data['sent_date'])
->setParentId($new_parent_id)
->setSession($session);
$em->persist($publication);
$em->flush();
$id = $publication->getIid();
api_item_property_update($course_info, 'work', $id, 'DocumentAdded', $user_id);
$result_message[$TBL_STUDENT_PUBLICATION]++;
@ -564,8 +565,7 @@ $htmlHeadXtra[] = '<script type="text/javascript">
}
function view_stat (unique_id, user_id) {
var session_id = document.getElementById(unique_id).options[document.getElementById(unique_id).selectedIndex].value;
load_thick("user_move_stats.php?load_ajax=1&view_stat=1"+"&unique_id="+unique_id+"&user_id="+user_id+"&session_id="+session_id,"");
/*
$.ajax({
contentType: "application/x-www-form-urlencoded",
beforeSend: function(objeto) {
@ -576,7 +576,7 @@ $htmlHeadXtra[] = '<script type="text/javascript">
success: function(datos) {
$("div#reponse_"+unique_id).html(datos);
}
});*/
});
}

@ -31,7 +31,6 @@ $course_id = GradebookUtils::get_course_id_by_link_id($my_selectcat);
$table_link = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
$table_evaluation = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$tbl_forum_thread = Database:: get_course_table(TABLE_FORUM_THREAD);
$tbl_work = Database:: get_course_table(TABLE_STUDENT_PUBLICATION);
$tbl_attendance = Database:: get_course_table(TABLE_ATTENDANCE);
$table_evaluated[LINK_EXERCISE] = array(

@ -13,8 +13,8 @@ $tbl_grade_links = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
//selected name of database
$course_id = GradebookUtils::get_course_id_by_link_id($_GET['editlink']);
$tbl_forum_thread = Database :: get_course_table(TABLE_FORUM_THREAD);
$tbl_work = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$tbl_attendance = Database :: get_course_table(TABLE_ATTENDANCE);
$em = Database::getManager();
$linkarray = LinkFactory :: load($_GET['editlink']);
/** @var AbstractLink $link */
@ -77,14 +77,23 @@ if ($form->validate()) {
Database::query($sql_t);
//Update weight into student publication(work)
$sql_t = 'UPDATE '.$tbl_work.' SET
weight='.$final_weight.'
WHERE c_id = '.$course_id.' AND id = (
SELECT ref_id FROM '.$tbl_grade_links.'
WHERE id='.intval($_GET['editlink'] ).' AND type=3
)';
$em
->createQuery('
UPDATE ChamiloCourseBundle:CStudentPublication w
SET w.weight = :final_weight
WHERE w.cId = :course
AND w.id = (
SELECT l.refId FROM ChamiloCoreBundle:GradebookLink l
WHERE l.id = :link AND l.type = :type
)
')
->execute([
'final_weight' => $final_weight,
'course' => $course_id,
'link' => intval($_GET['editlink'] ),
'type' => LINK_STUDENTPUBLICATION
]);
Database::query($sql_t);
header('Location: '.$_SESSION['gradebook_dest'].'?linkedited=&selectcat=' . $link->get_category_id().'&'.api_get_cidreq());
exit;
}

@ -1157,6 +1157,7 @@ class GradebookUtils
AbstractLink::add_link_log($linkId, $name);
$table_link = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
$em = Database::getManager();
$table_evaluation = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$tbl_forum_thread = Database:: get_course_table(TABLE_FORUM_THREAD);
$tbl_work = Database:: get_course_table(TABLE_STUDENT_PUBLICATION);
@ -1189,13 +1190,22 @@ class GradebookUtils
';
Database::query($sql);
//Update weight into student publication(work)
$sql = 'UPDATE '.$tbl_work.' SET weight='.$weight.'
WHERE
c_id = '.$course_id.' AND id = (
SELECT ref_id FROM '.$table_link.'
WHERE id='.$linkId.' AND type = '.LINK_STUDENTPUBLICATION.'
) ';
Database::query($sql);
$em
->createQuery('
UPDATE ChamiloCourseBundle:CStudentPublication w
SET w.weight = :final_weight
WHERE w.cId = :course
AND w.id = (
SELECT l.refId FROM ChamiloCoreBundle:GradebookLink l
WHERE l.id = :link AND l.type = :type
)
')
->execute([
'final_weight' => $weight,
'course' => $course_id,
'link' => $linkId,
'type' => LINK_STUDENTPUBLICATION
]);
}
/**

@ -100,9 +100,8 @@ class StudentPublicationLink extends AbstractLink
if (empty($this->course_code)) {
die('Error in get_not_created_links() : course code not set');
}
$tbl_grade_links = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$session_id = api_get_session_id();
$em = Database::getManager();
$session = $em->find('ChamiloCoreBundle:Session', api_get_session_id());
/*
if (empty($session_id)) {
$session_condition = api_get_session_condition(0, true);
@ -114,20 +113,21 @@ class StudentPublicationLink extends AbstractLink
//Only show works from the session
//AND has_properties != ''
$sql = "SELECT id, url, title FROM $tbl_grade_links
WHERE
c_id = {$this->course_id} AND
active = 1 AND
filetype='folder' AND
session_id = ".api_get_session_id()."";
$result = Database::query($sql);
while ($data = Database::fetch_array($result)) {
$work_name = $data['title'];
$links = $em
->getRepository('ChamiloCourseBundle:CStudentPublication')
->findBy([
'cId' => $this->course_id,
'active' => true,
'filetype' => 'folder',
'session' => $session
]);
foreach ($links as $data) {
$work_name = $data->getTitle();
if (empty($work_name)) {
$work_name = basename($data['url']);
$work_name = basename($data->getUrl());
}
$cats[] = array ($data['id'], $work_name);
$cats[] = array ($data->getId(), $work_name);
}
$cats=isset($cats) ? $cats : array();
return $cats;
@ -138,14 +138,17 @@ class StudentPublicationLink extends AbstractLink
*/
public function has_results()
{
$tbl_grade_links = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$sql = 'SELECT count(*) AS number FROM '.$tbl_grade_links."
WHERE c_id = {$this->course_id} AND
parent_id = '".intval($this->get_ref_id())."' AND
session_id =".api_get_session_id()."";
$result = Database::query($sql);
$number = Database::fetch_row($result);
return ($number[0] != 0);
$em = Database::getManager();
$session = $em->find('ChamiloCoreBundle:Session', api_get_session_id());
$results = $em
->getRepository('ChamiloCourseBundle:CStudentPublication')
->findBy([
'cId' => $this->course_id,
'parentId' => intval($this->get_ref_id()),
'session' => $session
]);
return count($results) != 0;
}
/**
@ -155,34 +158,33 @@ class StudentPublicationLink extends AbstractLink
public function calc_score($stud_id = null, $type = null)
{
$stud_id = intval($stud_id);
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$sql = 'SELECT * FROM '.$table."
WHERE
c_id = {$this->course_id} AND
id = '".intval($this->get_ref_id())."' AND
session_id = ".api_get_session_id()."
"
;
$em = Database::getManager();
$query = Database::query($sql);
$assignment = Database::fetch_array($query);
$session = $em->find('ChamiloCoreBundle:Session', api_get_session_id());
if (count($assignment) == 0) {
$parentId = '0';
} else {
$parentId = $assignment['id'];
}
$assignment = $em
->getRepository('ChamiloCourseBundle:CStudentPublication')
->findOneBy([
'cId' => $this->course_id,
'id' => intval($this->get_ref_id()),
'session' => $session
]);
$parentId = !$assignment ? 0 : $assignment->getId();
$sql = 'SELECT * FROM '.$table.'
$dql = 'SELECT a FROM ChamiloCourseBundle:CStudentPublication a
WHERE
c_id = '.$this->course_id.' AND
a.cId = :course AND
active = 1 AND
parent_id = "'.$parentId.'" AND
session_id = '.api_get_session_id() .' AND
parent_id = :parent AND
session_id = :session AND
qualificator_id <> 0
';
$params = ['course' => $this->course_id, 'parent' => $parentId, 'session' => $session];
if (!empty($stud_id)) {
$sql .= " AND user_id = $stud_id ";
$dql .= ' AND a.userId = :student ';
$params['student'] = $stud_id;
}
$order = api_get_setting('student_publication_to_take_in_gradebook');
@ -190,72 +192,73 @@ class StudentPublicationLink extends AbstractLink
switch ($order) {
case 'last':
// latest attempt
$sql .= ' ORDER BY sent_date DESC';
$dql .= ' ORDER BY a.sentDate DESC';
break;
case 'first':
default:
// first attempt
$sql .= ' ORDER BY id';
$dql .= ' ORDER BY a.id';
break;
}
$scores = Database::query($sql);
$scores = $em->createQuery($dql)->execute([$params]);
// for 1 student
if (!empty($stud_id)) {
if ($data = Database::fetch_array($scores)) {
return array(
$data['qualification'],
$assignment['qualification']
);
} else {
return '';
}
} else {
$students = array(); // user list, needed to make sure we only
// take first attempts into account
$rescount = 0;
$sum = 0;
$bestResult = 0;
$weight = 0;
$sumResult = 0;
$myResult = 0;
while ($data = Database::fetch_array($scores)) {
if (!(array_key_exists($data['user_id'], $students))) {
if ($assignment['qualification'] != 0) {
$students[$data['user_id']] = $data['qualification'];
$rescount++;
$sum += $data['qualification'] / $assignment['qualification'];
$sumResult += $data['qualification'];
if ($data['qualification'] > $bestResult) {
$bestResult = $data['qualification'];
}
$weight = $assignment['qualification'];
}
}
}
if (!count($scores)) {
return '';
}
if ($rescount == 0) {
return null;
} else {
switch ($type) {
case 'best':
return array($bestResult, $weight);
break;
case 'average':
return array($sumResult/$rescount, $weight);
break;
case 'ranking':
return AbstractLink::getCurrentUserRanking($stud_id, $students);
break;
default:
return array($sum, $rescount);
break;
}
}
$data = $scores[0];
return [
$data->getQualification(),
$assignment->getQualification()
];
}
$students = array(); // user list, needed to make sure we only
// take first attempts into account
$rescount = 0;
$sum = 0;
$bestResult = 0;
$weight = 0;
$sumResult = 0;
foreach ($scores as $data) {
if (!(array_key_exists($data->getUserId(), $students))) {
if ($assignment->getQualification() != 0) {
$students[$data->getUserId()] = $data->getQualification();
$rescount++;
$sum += $data->getQualification() / $assignment->getQualification();
$sumResult += $data->getQualification();
if ($data->getQualification() > $bestResult) {
$bestResult = $data->getQualification();
}
$weight = $assignment->getQualification();
}
}
}
if ($rescount == 0) {
return null;
}
switch ($type) {
case 'best':
return array($bestResult, $weight);
break;
case 'average':
return array($sumResult/$rescount, $weight);
break;
case 'ranking':
return AbstractLink::getCurrentUserRanking($stud_id, $students);
break;
default:
return array($sum, $rescount);
break;
}
}
/**

@ -906,6 +906,7 @@ class SessionManager
* Assignments
*/
//total
$params = [$course['real_id']];
if ($getAllSessions) {
$sql = "SELECT count(w.id) as count
FROM $workTable w
@ -921,11 +922,17 @@ class SessionManager
ON (a.publication_id = w.id AND a.c_id = w.c_id)
WHERE w.c_id = %s
AND parent_id = 0
AND active IN (1, 0)
AND session_id = %s";
AND active IN (1, 0)";
if (empty($sessionId)) {
$sql .= ' AND w.session_id = NULL ';
} else {
$sql .= ' AND w.session_id = %s ';
$params[] = $sessionId;
}
}
$sql_query = sprintf($sql, $course['real_id'], $sessionId);
$sql_query = vsprintf($sql, $params);
$result = Database::query($sql_query);
$row = Database::fetch_array($result);
$assignments_total = $row['count'];

@ -207,6 +207,7 @@ function get_work_count_by_student($user_id, $work_id)
$work_id = intval($work_id);
$course_id = api_get_course_int_id();
$session_id = api_get_session_id();
$sessionCondition = api_get_session_condition($session_id);
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$sql = "SELECT COUNT(*) as count
@ -215,8 +216,8 @@ function get_work_count_by_student($user_id, $work_id)
c_id = $course_id AND
parent_id = $work_id AND
user_id = $user_id AND
active IN (0, 1) AND
session_id = $session_id ";
active IN (0, 1)
$sessionCondition";
$result = Database::query($sql);
$return = 0;
if (Database::num_rows($result)) {
@ -381,14 +382,15 @@ function getUniqueStudentAttemptsTotal($workId, $groupId, $course_id, $sessionId
$workId = intval($workId);
$sessionId = intval($sessionId);
$groupId = intval($groupId);
$sessionCondition = api_get_session_condition($sessionId, true, false, 'w.session_id');
$sql = "SELECT count(DISTINCT u.user_id)
FROM $work_table w
INNER JOIN $user_table u
ON w.user_id = u.user_id
WHERE
w.c_id = $course_id AND
w.session_id = $sessionId AND
w.c_id = $course_id
$sessionCondition AND
w.parent_id = ".$workId." AND
w.post_group_id = ".$groupId." AND
w.active IN (0, 1)
@ -445,6 +447,8 @@ function getUniqueStudentAttempts(
}
}
$sessionCondition = api_get_session_condition($sessionId, true, false, 'w.session_id');
$sql = "SELECT count(*) FROM (
SELECT count(*), w.parent_id
FROM $work_table w
@ -452,8 +456,8 @@ function getUniqueStudentAttempts(
ON w.user_id = u.user_id
WHERE
w.filetype = 'file' AND
w.c_id = $course_id AND
w.session_id = $sessionId AND
w.c_id = $course_id
$sessionCondition AND
$workCondition
w.post_group_id = ".$groupId." AND
w.active IN (0, 1) $studentCondition
@ -881,8 +885,7 @@ function updateDirName($work_data, $newPath)
WHERE
c_id = $course_id AND
id = $work_id AND
session_id = $sessionId
";
session_id = " . ($sessionId ? $sessionId : 'NULL');
Database::query($sql);
}
}
@ -898,16 +901,21 @@ function updateDirName($work_data, $newPath)
function get_parent_directories($id)
{
$course_id = api_get_course_int_id();
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$id = intval($id);
$sql = "SELECT id FROM $work_table WHERE c_id = $course_id AND parent_id = $id";
$result = Database::query($sql);
$em = Database::getManager();
$directories = $em
->getRepository('ChamiloCourseBundle:CStudentPublication')
->findBy([
'cId' => $course_id,
'parentId' => $id
]);
$list_id = array();
if (Database::num_rows($result)) {
while ($row = Database::fetch_array($result)) {
$list_id[] = $row['id'];
}
foreach ($directories as $directory) {
$list_id[] = $directory->getId();
}
return $list_id;
}
@ -1600,7 +1608,7 @@ function get_work_user_list_from_documents(
$workId = intval($workId);
$userCondition = " AND u.user_id = $studentId ";
$sessionCondition = " AND w.session_id = $sessionId ";
$sessionCondition = api_get_session_condition($sessionId, true, false, 'w.session_id');
$workCondition = " AND w_rel.work_id = $workId";
$workParentCondition = " AND w.parent_id = $workId";
@ -2331,6 +2339,7 @@ function get_list_users_without_publication($task_id, $studentId = null)
$session_id = api_get_session_id();
$course_id = api_get_course_int_id();
$task_id = intval($task_id);
$sessionCondition = api_get_session_condition($session_id);
if ($session_id == 0) {
$sql = "SELECT user_id as id FROM $work_table
@ -2342,8 +2351,7 @@ function get_list_users_without_publication($task_id, $studentId = null)
$sql = "SELECT user_id as id FROM $work_table
WHERE
c_id = $course_id AND
parent_id = '$task_id' AND
session_id = '".$session_id."' AND
parent_id = '$task_id' $sessionCondition AND
active IN (0, 1)";
}
@ -2511,13 +2519,14 @@ function getDocumentToWorkPerUser($documentId, $workId, $courseId, $sessionId, $
$userId = intval($userId);
$sessionId = intval($sessionId);
$active = intval($active);
$sessionCondition = api_get_session_condition($sessionId);
$sql = "SELECT w.* FROM $work w INNER JOIN $workRel rel ON (w.parent_id = rel.work_id)
WHERE
w.document_id = $documentId AND
w.parent_id = $workId AND
w.c_id = $courseId AND
w.session_id = $sessionId AND
w.c_id = $courseId
$sessionCondition AND
user_id = $userId AND
active = $active
";
@ -2917,12 +2926,13 @@ function getWorkCommentCountFromParent(
$work = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$commentTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT);
$parentId = intval($parentId);
$sessionCondition = api_get_session_condition($sessionId, false, false, 'w.session_id');
$sql = "SELECT count(*) as count
FROM $commentTable c INNER JOIN $work w
ON c.c_id = w.c_id AND w.id = c.work_id
WHERE
session_id = $sessionId AND
$sessionCondition AND
parent_id = $parentId AND
w.c_id = ".$courseInfo['real_id'];
@ -2958,6 +2968,7 @@ function getLastWorkStudentFromParent(
}
$work = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$sessionCondition = api_get_session_condition($sessionId, false);
$commentTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT_COMMENT);
$parentId = intval($parentId);
@ -2965,7 +2976,7 @@ function getLastWorkStudentFromParent(
FROM $commentTable c INNER JOIN $work w
ON c.c_id = w.c_id AND w.id = c.work_id
WHERE
session_id = $sessionId AND
$sessionCondition AND
parent_id = $parentId AND
w.c_id = ".$courseInfo['real_id']."
ORDER BY w.sent_date
@ -3008,12 +3019,13 @@ function getLastWorkStudentFromParentByUser(
$userId = intval($userId);
$work = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$parentId = intval($parentId);
$sessionCondition = api_get_session_condition($sessionId);
$sql = "SELECT *
FROM $work
WHERE
user_id = $userId AND
session_id = $sessionId AND
user_id = $userId
$sessionCondition AND
parent_id = $parentId AND
c_id = ".$courseInfo['real_id']."
ORDER BY sent_date DESC
@ -3571,7 +3583,7 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
'post_group_id' => $groupId,
'sent_date' => api_get_utc_datetime(),
'parent_id' => $workInfo['id'],
'session_id' => $sessionId,
'session_id' => $sessionId ? $sessionId : null,
'user_id' => $userId,
'has_properties' => 0,
'qualification' => 0
@ -3621,7 +3633,7 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
/**
* Creates a new task (directory) in the assignment tool
* @param array $params
* @param array $formValues
* @param int $user_id
* @param array $courseInfo
* @param int $group_id
@ -3637,11 +3649,11 @@ function processWorkForm($workInfo, $values, $courseInfo, $sessionId, $groupId,
*/
function addDir($formValues, $user_id, $courseInfo, $group_id, $session_id)
{
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$em = Database::getManager();
$user_id = intval($user_id);
$group_id = intval($group_id);
$session_id = intval($session_id);
$session = $em->find('ChamiloCoreBundle:Session', $session_id);
$base_work_dir = api_get_path(SYS_COURSE_PATH).$courseInfo['path'].'/work';
$course_id = $courseInfo['real_id'];
@ -3650,59 +3662,63 @@ function addDir($formValues, $user_id, $courseInfo, $group_id, $session_id)
$directory = disable_dangerous_file($directory);
$created_dir = create_unexisting_work_directory($base_work_dir, $directory);
if (!empty($created_dir)) {
$dirName = '/'.$created_dir;
$today = api_get_utc_datetime();
$params = [
'c_id' => $course_id,
'url' => $dirName,
'title' => $formValues['new_dir'],
'description' => $formValues['description'],
'author' => '',
'active' => '1',
'accepted' => '1',
'filetype' => 'folder',
'post_group_id' => $group_id,
'sent_date' => $today,
'qualification' => $formValues['qualification'] != '' ? $formValues['qualification'] : 0,
'parent_id' => 0,
'qualificator_id' => 0,
'weight' => !empty($formValues['weight']) ? $formValues['weight'] : 0,
'session_id' => $session_id,
'allow_text_assignment' => $formValues['allow_text_assignment'],
'contains_file' => 0,
'user_id' => $user_id,
'has_properties' => 0,
'document_id' => 0
];
$id = Database::insert($work_table, $params);
if ($id) {
$sql = "UPDATE $work_table SET id = iid WHERE iid = $id";
Database::query($sql);
// Folder created
api_item_property_update(
$courseInfo,
'work',
$id,
'DirectoryCreated',
$user_id,
$group_id
);
if (empty($created_dir)) {
return false;
}
updatePublicationAssignment($id, $formValues, $courseInfo, $group_id);
$dirName = '/'.$created_dir;
$today = new DateTime(api_get_utc_datetime(), new DateTimeZone('UTC'));
$workTable = new \Chamilo\CourseBundle\Entity\CStudentPublication();
$workTable
->setCId($course_id)
->setUrl($dirName)
->setTitle($formValues['new_dir'])
->setDescription($formValues['description'])
->setActive(true)
->setAccepted(true)
->setFiletype('folder')
->setPostGroupId($group_id)
->setSentDate($today)
->setQualification($formValues['qualification'] != '' ? $formValues['qualification'] : 0)
->setParentId(0)
->setQualificatorId(0)
->setWeight(!empty($formValues['weight']) ? $formValues['weight'] : 0)
->setSession($session)
->setAllowTextAssignment($formValues['allow_text_assignment'])
->setContainsFile(0)
->setUserId($user_id)
->setHasProperties(0)
->setDocumentId(0);
$em->persist($workTable);
$em->flush();
$workTable->setId($workTable->getIid());
$em->merge($workTable);
$em->flush();
// Folder created
api_item_property_update(
$courseInfo,
'work',
$workTable->getIid(),
'DirectoryCreated',
$user_id,
$group_id
);
if (api_get_course_setting('email_alert_students_on_new_homework') == 1) {
send_email_on_homework_creation($course_id, $session_id, $id);
}
updatePublicationAssignment($workTable->getIid(), $formValues, $courseInfo, $group_id);
return $id;
}
if (api_get_course_setting('email_alert_students_on_new_homework') == 1) {
send_email_on_homework_creation(
$course_id,
$session ? $session->getId() : 0,
$workTable->getIid()
);
}
return false;
return $workTable->getIid();
}
/**
@ -3750,7 +3766,9 @@ function updateWork($workId, $params, $courseInfo, $sessionId = 0)
$filteredParams,
array(
'id = ? AND c_id = ? AND session_id = ? ' => array(
$workId, $courseInfo['real_id'], $sessionId
$workId,
$courseInfo['real_id'],
$sessionId ? $sessionId : null
)
)
);

@ -2696,7 +2696,7 @@ class CourseRestorer
unset($folder['id']);
$folder['c_id'] = $this->destination_course_id;
$folder['parent_id'] = 0;
$folder['session_id'] = $sessionId;
$folder['session_id'] = $sessionId ? $sessionId : null;
$new_id = Database::insert($work_table, $folder);
if ($new_id) {
@ -2727,7 +2727,7 @@ class CourseRestorer
foreach ($sub_folders as $sub_folder) {
$sub_folder['c_id'] = $this->destination_course_id;
$sub_folder['ref'] = $new_id;
$sub_folder['session_id'] = $sessionId;
$sub_folder['session_id'] = $sessionId ? $sessionId : null;
$new_item_id = Database::insert($item_property_table, $sub_folder);
if ($new_item_id) {
$sql = "UPDATE $item_property_table SET id = iid WHERE iid = $new_item_id";

@ -579,7 +579,7 @@ class CStudentPublication
* @param Session $session
* @return CStudentPublication
*/
public function setSession(Session $session)
public function setSession(Session $session = null)
{
$this->session = $session;
@ -757,4 +757,13 @@ class CStudentPublication
{
$this->documentId = $documentId;
}
/**
* Get iid
* @return int
*/
public function getIid()
{
return $this->iid;
}
}

Loading…
Cancel
Save