|
13 | 13 | use Chamilo\CoreBundle\Entity\SessionRelUser; |
14 | 14 | use Chamilo\CoreBundle\Entity\User; |
15 | 15 | use Chamilo\CoreBundle\Framework\Container; |
| 16 | +use Chamilo\CourseBundle\Entity\CStudentPublication; |
16 | 17 | use Chamilo\CourseBundle\Entity\CSurvey; |
17 | 18 | use ExtraField as ExtraFieldModel; |
18 | 19 | use Monolog\Logger; |
@@ -2948,31 +2949,42 @@ public static function add_courses_to_session( |
2948 | 2949 | } |
2949 | 2950 |
|
2950 | 2951 | if ($importAssignments) { |
2951 | | - $workTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION); |
2952 | | - $sql = " SELECT * FROM $workTable |
2953 | | - WHERE active = 1 AND |
2954 | | - c_id = $courseId AND |
2955 | | - parent_id = 0 AND |
2956 | | - (session_id IS NULL OR session_id = 0)"; |
2957 | | - $result = Database::query($sql); |
2958 | | - $workList = Database::store_result($result, 'ASSOC'); |
2959 | | - |
2960 | | - foreach ($workList as $work) { |
2961 | | - $values = [ |
2962 | | - 'work_title' => $work['title'], |
2963 | | - 'new_dir' => $work['url'].'_session_'.$sessionId, |
2964 | | - 'description' => $work['description'], |
2965 | | - 'qualification' => $work['qualification'], |
2966 | | - 'allow_text_assignment' => $work['allow_text_assignment'], |
2967 | | - ]; |
2968 | | - // @todo add addDir with resources |
2969 | | - /*addDir( |
2970 | | - $values, |
2971 | | - api_get_user_id(), |
2972 | | - $courseInfo, |
2973 | | - 0, |
2974 | | - $sessionId |
2975 | | - );*/ |
| 2952 | + $repo = Container::getStudentPublicationRepository(); |
| 2953 | + $course = api_get_course_entity($courseId); |
| 2954 | + $session = api_get_session_entity($sessionId); |
| 2955 | + $user = api_get_user_entity(); |
| 2956 | + |
| 2957 | + $qb = $repo->getResourcesByCourse($course, null); |
| 2958 | + $qb |
| 2959 | + ->andWhere('resource.active = 1') |
| 2960 | + ->andWhere('resource.filetype = :filetype') |
| 2961 | + ->andWhere('resource.publicationParent IS NULL') |
| 2962 | + ->setParameter('filetype', 'folder'); |
| 2963 | + |
| 2964 | + $baseAssignments = $qb->getQuery()->getResult(); |
| 2965 | + |
| 2966 | + foreach ($baseAssignments as $originalAssignment) { |
| 2967 | + if (!$originalAssignment instanceof CStudentPublication) { |
| 2968 | + continue; |
| 2969 | + } |
| 2970 | + |
| 2971 | + $newAssignment = new CStudentPublication(); |
| 2972 | + $newAssignment |
| 2973 | + ->setTitle($originalAssignment->getTitle()) |
| 2974 | + ->setDescription($originalAssignment->getDescription() ?? '') |
| 2975 | + ->setActive(1) |
| 2976 | + ->setAccepted(true) |
| 2977 | + ->setFiletype('folder') |
| 2978 | + ->setPostGroupId(0) |
| 2979 | + ->setSentDate(new \DateTime()) |
| 2980 | + ->setQualification($originalAssignment->getQualification()) |
| 2981 | + ->setWeight($originalAssignment->getWeight()) |
| 2982 | + ->setAllowTextAssignment($originalAssignment->getAllowTextAssignment()) |
| 2983 | + ->setUser($user) |
| 2984 | + ->setParent($course) |
| 2985 | + ->addCourseLink($course, $session, null); |
| 2986 | + |
| 2987 | + $repo->create($newAssignment); |
2976 | 2988 | } |
2977 | 2989 | } |
2978 | 2990 | // If the course isn't subscribed yet |
|
0 commit comments