Use course category ID in courses - refs BT#15992

pull/3064/head
Angel Fernando Quiroz Campos 5 years ago
parent b2310e95d3
commit b59c35836a
  1. 10
      main/admin/course_add.php
  2. 13
      main/admin/course_edit.php
  3. 18
      main/admin/course_list.php
  4. 15
      main/inc/lib/add_course.lib.inc.php
  5. 8
      main/inc/lib/api.lib.php
  6. 2
      main/inc/lib/course.lib.php
  7. 4
      main/inc/lib/course_category.lib.php
  8. 2
      src/CoreBundle/Entity/Course.php
  9. 9
      src/CoreBundle/Framework/Container.php
  10. 6
      src/GraphQlBundle/Map/MutationMap.php

@ -69,7 +69,7 @@ if ($countCategories >= 100) {
$form->addElement(
'select_ajax',
'category_code',
'category_id',
get_lang('Category'),
null,
['url' => $url]
@ -79,13 +79,13 @@ if ($countCategories >= 100) {
$accessUrlId,
api_get_configuration_value('allow_base_course_category')
);
$categoriesOptions = [null => get_lang('none')];
$categoriesOptions = [0 => get_lang('None')];
/** @var CourseCategory $category */
foreach ($categories as $category) {
$categoriesOptions[$category->getCode()] = (string) $category;
$categoriesOptions[$category->getId()] = (string) $category;
}
$form->addSelect(
'category_code',
'category_id',
get_lang('Category'),
$categoriesOptions
);
@ -230,7 +230,7 @@ if ($form->validate()) {
$course['wanted_code'] = $course['visual_code'];
$course['gradebook_model_id'] = isset($course['gradebook_model_id']) ? $course['gradebook_model_id'] : null;
// Fixing category code
$course['course_category'] = isset($course['category_code']) ? $course['category_code'] : '';
$course['category_id'] = isset($course['category_id']) ? (int) $course['category_id'] : '';
include_once api_get_path(SYS_CODE_PATH).'lang/english/trad4all.inc.php';
$file_to_include = api_get_path(SYS_CODE_PATH).'lang/'.$course['course_language'].'/trad4all.inc.php';

@ -153,7 +153,7 @@ if ($countCategories >= 100) {
$categorySelect = $form->addElement(
'select_ajax',
'category_code',
'category_id',
get_lang('Category'),
null,
['url' => $url]
@ -164,20 +164,19 @@ if ($countCategories >= 100) {
$categorySelect->addOption($data['name'], $data['code']);
}
} else {
$courseInfo['category_code'] = $courseInfo['categoryCode'];
$categories = $courseCategoriesRepo->findAllInAccessUrl(
$urlId,
api_get_configuration_value('allow_base_course_category')
);
$categoriesOptions = [null => get_lang('none')];
$categoriesOptions = [0 => get_lang('None')];
/** @var CourseCategory $category */
foreach ($categories as $category) {
$categoriesOptions[$category->getCode()] = (string) $category;
$categoriesOptions[$category->getId()] = (string) $category;
}
$form->addSelect(
'category_code',
'category_id',
get_lang('Category'),
$categoriesOptions
);
@ -355,7 +354,7 @@ if ($form->validate()) {
$teachers = isset($course['course_teachers']) ? $course['course_teachers'] : '';
$title = $course['title'];
$category_code = isset($course['category_code']) ? $course['category_code'] : '';
$category_code = isset($course['category_id']) ? (int) $course['category_id'] : '';
$department_name = $course['department_name'];
$department_url = $course['department_url'];
$course_language = $course['course_language'];
@ -375,7 +374,7 @@ if ($form->validate()) {
$params = [
'course_language' => $course_language,
'title' => $title,
'category_code' => $category_code,
'category' => $category_code,
'visual_code' => $visual_code,
'department_name' => $department_name,
'department_url' => $department_url,

@ -94,22 +94,24 @@ function get_number_of_courses()
function get_course_data($from, $number_of_items, $column, $direction)
{
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
code AS col0,
course.code AS col0,
title AS col1,
code AS col2,
course.code AS col2,
course_language AS col3,
category_code AS col4,
category.code AS col4,
subscribe AS col5,
unsubscribe AS col6,
code AS col7,
course.code AS col7,
visibility AS col8,
directory as col9,
visual_code,
directory,
course.id
FROM $course_table course";
FROM $course_table course
LEFT JOIN $tblCourseCategory category ON course.category = category.id ";
if ((api_is_platform_admin() || api_is_session_admin()) &&
api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1
@ -123,7 +125,7 @@ function get_course_data($from, $number_of_items, $column, $direction)
$keyword = Database::escape_string("%".trim($_GET['keyword'])."%");
$sql .= " WHERE (
title LIKE '".$keyword."' OR
code LIKE '".$keyword."' OR
course.code LIKE '".$keyword."' OR
visual_code LIKE '".$keyword."'
)
";
@ -139,7 +141,7 @@ function get_course_data($from, $number_of_items, $column, $direction)
$keyword_unsubscribe = Database::escape_string($_GET['keyword_unsubscribe']);
$sql .= " WHERE
(code LIKE '".$keyword_code."' OR visual_code LIKE '".$keyword_code."') AND
(course.code LIKE '".$keyword_code."' OR visual_code LIKE '".$keyword_code."') AND
title LIKE '".$keyword_title."' AND
course_language LIKE '".$keyword_language."' AND
visibility LIKE '".$keyword_visibility."' AND
@ -147,7 +149,7 @@ function get_course_data($from, $number_of_items, $column, $direction)
unsubscribe LIKE '".$keyword_unsubscribe."'";
if (!empty($keyword_category)) {
$sql .= " AND category_code LIKE '".$keyword_category."' ";
$sql .= " AND category.code LIKE '".$keyword_category."' ";
}
}

@ -786,7 +786,7 @@ class AddCourse
$visual_code = $params['visual_code'];
$directory = $params['directory'];
$tutor_name = isset($params['tutor_name']) ? $params['tutor_name'] : null;
$category_code = isset($params['course_category']) ? $params['course_category'] : '';
$categoryId = isset($params['category_id']) ? (int) $params['category_id'] : '';
$course_language = isset($params['course_language']) && !empty($params['course_language']) ? $params['course_language'] : api_get_setting(
'platformLanguage'
);
@ -870,6 +870,8 @@ class AddCourse
if ($ok_to_register_course) {
$repo = Container::getCourseRepository();
$course = new \Chamilo\CoreBundle\Entity\Course();
/** @var \Chamilo\CoreBundle\Entity\CourseCategory $courseCategory */
$courseCategory = Container::getCourseCategoryRepository()->find($categoryId);
$urlId = 1;
if (api_get_current_access_url_id() !== -1) {
$urlId = api_get_current_access_url_id();
@ -882,7 +884,7 @@ class AddCourse
->setCourseLanguage($course_language)
->setTitle($title)
->setDescription(get_lang('Course Description'))
->setCategoryCode($category_code)
->setCategory($courseCategory)
->setVisibility($visibility)
->setShowScore(1)
->setDiskQuota($disk_quota)
@ -984,9 +986,12 @@ class AddCourse
'MessageOfNewCourseToAdmin'
).' '.$siteName.' - '.$iname."\n";
$message .= get_lang('Course name').' '.$title."\n";
$message .= get_lang(
'Category'
).' '.$category_code."\n";
if ($courseCategory) {
$message .= get_lang(
'Category'
).' '.$courseCategory->getCode()."\n";
}
$message .= get_lang('Coach').' '.$tutor_name."\n";
$message .= get_lang('Language').' '.$course_language;

@ -2200,16 +2200,16 @@ function api_format_course_array(Course $course)
return [];
}
$categoryCode = $course->getCategoryCode();
$category = $course->getCategory();
$courseData = [];
$courseData['categoryCode'] = '';
$courseData['categoryName'] = '';
if (!empty($categoryCode)) {
$categoryRepo = Database::getManager()->getRepository('ChamiloCoreBundle:CourseCategory');
$category = $categoryRepo->findOneBy(['code' => $categoryCode]);
$courseData['category_id'] = 0;
if ($category) {
$courseData['categoryCode'] = $category->getCode();
$courseData['categoryName'] = $category->getName();
$courseData['category_id'] = $category->getId();
}
$courseData['id'] = $courseData['real_id'] = $course->getId();

@ -2893,7 +2893,7 @@ class CourseManager
$sql = "SELECT
DISTINCT(course.code),
course.id as real_id,
course.category_code AS category,
course.category,
course.title
FROM $tbl_course course
INNER JOIN $tbl_course_user cru

@ -96,7 +96,7 @@ class CourseCategory
LEFT JOIN $tbl_category t2
ON t1.id = t2.parent_id
LEFT JOIN $tbl_course t3
ON t3.category_code=t1.code
ON t3.category = t1.id
WHERE
1 = 1
$parentIdCondition
@ -263,7 +263,7 @@ class CourseCategory
);
Database::query("UPDATE $tbl_category SET parent_id='".$row['parent_id']."' WHERE parent_id='$node'");
} else {
Database::query("UPDATE $tbl_course SET category_code='' WHERE category_code='$node'");
Database::query("UPDATE $tbl_course SET category = NULL WHERE category = ".$category['id']);
Database::query("UPDATE $tbl_category SET parent_id=NULL WHERE parent_id='$node'");
}

@ -786,7 +786,7 @@ class Course extends AbstractResource implements ResourceInterface
/**
* Get categoryCode.
*
* @return string
* @return CourseCategory
*/
public function getCategory()
{

@ -6,6 +6,7 @@ namespace Chamilo\CoreBundle\Framework;
use Chamilo\CoreBundle\Component\Editor\Editor;
use Chamilo\CoreBundle\Hook\Interfaces\HookEventInterface;
use Chamilo\CoreBundle\Repository\AccessUrlRepository;
use Chamilo\CoreBundle\Repository\CourseCategoryRepository;
use Chamilo\CoreBundle\Repository\CourseRepository;
use Chamilo\CoreBundle\Repository\IllustrationRepository;
use Chamilo\CoreBundle\ToolChain;
@ -382,6 +383,14 @@ class Container
return self::$container->get('Chamilo\CoreBundle\Repository\CourseRepository');
}
/**
* @return CourseCategoryRepository|object|null
*/
public static function getCourseCategoryRepository()
{
return self::$container->get('Chamilo\CoreBundle\Repository\CourseCategoryRepository');
}
/**
* @return IllustrationRepository
*/

@ -228,7 +228,11 @@ class MutationMap extends ResolverMap implements ContainerAwareInterface
}
if (isset($courseInput['categoryCode'])) {
$course->setCategoryCode($courseInput['categoryCode']);
$courseCategory = $this->em
->getRepository('ChamiloCoreBundle:CourseCategory')
->findOneBy(['code' => $courseInput['categoryCode']]);
$course->setCategory($courseCategory);
}
if (!empty($courseInput['visualCode'])) {

Loading…
Cancel
Save