1 | <?php |
||
2 | |||
3 | /* For licensing terms, see /license.txt */ |
||
4 | |||
5 | use Chamilo\CoreBundle\Entity\SkillRelCourse; |
||
6 | use Chamilo\CoreBundle\Entity\SkillRelItem; |
||
7 | |||
8 | /** |
||
9 | * Responses to AJAX calls. |
||
10 | */ |
||
11 | require_once __DIR__.'/../global.inc.php'; |
||
12 | |||
13 | $action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null; |
||
14 | |||
15 | api_block_anonymous_users(); |
||
16 | |||
17 | Skill::isAllowed(api_get_user_id()); |
||
18 | |||
19 | $skill = new Skill(); |
||
20 | $gradebook = new Gradebook(); |
||
21 | $skillGradeBook = new SkillRelGradebook(); |
||
22 | $userId = api_get_user_id(); |
||
23 | |||
24 | switch ($action) { |
||
25 | case 'add': |
||
26 | if (api_is_platform_admin() || api_is_drh()) { |
||
27 | if (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) { |
||
28 | $skillId = $skill->edit($_REQUEST); |
||
29 | } else { |
||
30 | $skillId = $skill->add($_REQUEST); |
||
31 | } |
||
32 | } |
||
33 | echo $skillId; |
||
34 | break; |
||
35 | case 'delete_skill': |
||
36 | if (api_is_platform_admin() || api_is_drh()) { |
||
37 | echo $skill->delete($_REQUEST['skill_id']); |
||
38 | } |
||
39 | break; |
||
40 | case 'find_skills': |
||
41 | $returnSkills = [[ |
||
42 | 'items' => [], |
||
43 | ]]; |
||
44 | |||
45 | if (isset($_REQUEST['q']) && !empty($_REQUEST['q'])) { |
||
46 | $skills = $skill->find('all', ['where' => ['name LIKE %?% ' => $_REQUEST['q']]]); |
||
47 | foreach ($skills as $skill) { |
||
48 | $returnSkills['items'][] = [ |
||
49 | 'id' => $skill['id'], |
||
50 | 'text' => $skill['name'], |
||
51 | ]; |
||
52 | } |
||
53 | } |
||
54 | header('Content-Type: application/json'); |
||
55 | echo json_encode($returnSkills); |
||
56 | break; |
||
57 | case 'get_gradebooks': |
||
58 | $gradebooks = $gradebook_list = $gradebook->get_all(); |
||
59 | $gradebook_list = []; |
||
60 | //Only course gradebook with certificate |
||
61 | if (!empty($gradebooks)) { |
||
62 | foreach ($gradebooks as $gradebook) { |
||
63 | if (0 == $gradebook['parent_id'] && |
||
64 | !empty($gradebook['certif_min_score']) && |
||
65 | !empty($gradebook['document_id']) |
||
66 | ) { |
||
67 | $gradebook_list[] = $gradebook; |
||
68 | } |
||
69 | } |
||
70 | } |
||
71 | echo json_encode($gradebook_list); |
||
72 | break; |
||
73 | case 'find_gradebooks': |
||
74 | $return = []; |
||
75 | if (isset($_REQUEST['tag']) && !empty($_REQUEST['tag'])) { |
||
76 | $gradebooks = $gradebook->find('all', ['where' => ['name LIKE %?% ' => $_REQUEST['tag']]]); |
||
77 | foreach ($gradebooks as $item) { |
||
78 | $item['key'] = $item['name']; |
||
79 | $item['value'] = $item['id']; |
||
80 | $return[] = $item; |
||
81 | } |
||
82 | } |
||
83 | echo json_encode($return); |
||
84 | break; |
||
85 | case 'get_course_info_popup': |
||
86 | $courseInfo = api_get_course_info($_REQUEST['code']); |
||
87 | $courses = CourseManager::processHotCourseItem( |
||
88 | [ |
||
89 | ['c_id' => $courseInfo['real_id']], |
||
90 | ] |
||
91 | ); |
||
92 | Display::display_no_header(); |
||
93 | Display::$global_template->assign('hot_courses', $courses); |
||
94 | $template = Display::$global_template->get_template('layout/hot_course_item_popup.tpl'); |
||
95 | echo Display::$global_template->fetch($template); |
||
96 | break; |
||
97 | case 'gradebook_exists': |
||
98 | $data = $gradebook->get($_REQUEST['gradebook_id']); |
||
99 | if (!empty($data)) { |
||
100 | echo 1; |
||
101 | } else { |
||
102 | echo 0; |
||
103 | } |
||
104 | break; |
||
105 | case 'get_skills_by_profile': |
||
106 | $skillRelProfile = new SkillRelProfile(); |
||
107 | $profile_id = isset($_REQUEST['profile_id']) ? $_REQUEST['profile_id'] : null; |
||
108 | $skills = $skillRelProfile->getSkillsByProfile($profile_id); |
||
109 | echo json_encode($skills); |
||
110 | break; |
||
111 | case 'get_saved_profiles': |
||
112 | $skillProfile = new SkillProfile(); |
||
113 | $profiles = $skillProfile->get_all(); |
||
114 | Display::display_no_header(); |
||
115 | Display::$global_template->assign('profiles', $profiles); |
||
116 | $template = Display::$global_template->get_template('skill/profile_item.tpl'); |
||
117 | echo Display::$global_template->fetch($template); |
||
118 | break; |
||
119 | case 'get_skills': |
||
120 | $loadUserData = isset($_REQUEST['load_user_data']) ? $_REQUEST['load_user_data'] : null; |
||
121 | $id = intval($_REQUEST['id']); |
||
122 | $skills = $skill->get_all($loadUserData, false, $id); |
||
123 | echo json_encode($skills); |
||
124 | break; |
||
125 | case 'get_skill_info': |
||
126 | $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; |
||
127 | $skillInfo = $skill->getSkillInfo($id); |
||
128 | echo json_encode($skillInfo); |
||
129 | break; |
||
130 | case 'get_skill_course_info': |
||
131 | $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; |
||
132 | $skillInfo = $skill->getSkillInfo($id); |
||
133 | $courses = $skill->getCoursesBySkill($id); |
||
134 | $sessions = $skill->getSessionsBySkill($id); |
||
135 | $html = ''; |
||
136 | if (!empty($courses) || !empty($sessions)) { |
||
137 | Display::display_no_header(); |
||
138 | Display::$global_template->assign('skill', $skillInfo); |
||
139 | Display::$global_template->assign('courses', $courses); |
||
140 | Display::$global_template->assign('sessions', $sessions); |
||
141 | $template = Display::$global_template->get_template('skill/skill_info.tpl'); |
||
142 | $html = Display::$global_template->fetch($template); |
||
143 | } |
||
144 | echo $html; |
||
145 | break; |
||
146 | case 'get_skills_tree_json': |
||
147 | header('Content-Type: application/json'); |
||
148 | $userId = isset($_REQUEST['load_user']) && 1 == $_REQUEST['load_user'] ? api_get_user_id() : 0; |
||
149 | $skill_id = isset($_REQUEST['skill_id']) ? intval($_REQUEST['skill_id']) : 0; |
||
150 | $depth = isset($_REQUEST['main_depth']) ? intval($_REQUEST['main_depth']) : 2; |
||
151 | $all = $skill->getSkillsTreeToJson($userId, $skill_id, false, $depth); |
||
152 | echo $all; |
||
153 | break; |
||
154 | case 'get_user_skill': |
||
155 | $skillId = isset($_REQUEST['profile_id']) ? intval($_REQUEST['profile_id']) : 0; |
||
156 | $skill = $skill->userHasSkill($userId, $skillId); |
||
157 | if ($skill) { |
||
158 | echo 1; |
||
159 | } else { |
||
160 | echo 0; |
||
161 | } |
||
162 | break; |
||
163 | case 'get_all_user_skills': |
||
164 | $skills = $skill->getUserSkills($userId, true); |
||
165 | echo json_encode($skills); |
||
166 | break; |
||
167 | case 'get_user_skills': |
||
168 | $skills = $skill->getUserSkills($userId, true); |
||
169 | Display::display_no_header(); |
||
170 | Display::$global_template->assign('skills', $skills); |
||
171 | $template = Display::$global_template->get_template('skill/user_skills.tpl'); |
||
172 | echo Display::$global_template->fetch($template); |
||
173 | break; |
||
174 | case 'get_gradebook_info': |
||
175 | $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; |
||
176 | $info = $gradebook->get($id); |
||
177 | echo json_encode($info); |
||
178 | break; |
||
179 | case 'load_children': |
||
180 | $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; |
||
181 | $load_user_data = isset($_REQUEST['load_user_data']) ? $_REQUEST['load_user_data'] : null; |
||
182 | $skills = $skill->getChildren($id, $load_user_data); |
||
183 | $return = []; |
||
184 | foreach ($skills as $skill) { |
||
185 | if (isset($skill['data']) && !empty($skill['data'])) { |
||
186 | $return[$skill['data']['id']] = [ |
||
187 | 'id' => $skill['data']['id'], |
||
188 | 'name' => $skill['data']['name'], |
||
189 | 'passed' => $skill['data']['passed'], |
||
190 | ]; |
||
191 | } |
||
192 | } |
||
193 | $success = true; |
||
194 | if (empty($return)) { |
||
195 | $success = false; |
||
196 | } |
||
197 | |||
198 | $result = [ |
||
199 | 'success' => $success, |
||
200 | 'data' => $return, |
||
201 | ]; |
||
202 | echo json_encode($result); |
||
203 | break; |
||
204 | case 'load_direct_parents': |
||
205 | $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null; |
||
206 | $skills = $skill->getDirectParents($id); |
||
207 | $return = []; |
||
208 | foreach ($skills as $skill) { |
||
209 | $return[$skill['data']['id']] = [ |
||
210 | 'id' => $skill['data']['id'], |
||
211 | 'parent_id' => $skill['data']['parent_id'], |
||
212 | 'name' => $skill['data']['name'], |
||
213 | ]; |
||
214 | } |
||
215 | echo json_encode($return); |
||
216 | break; |
||
217 | case 'profile_matches': |
||
218 | $skill_rel_user = new SkillRelUser(); |
||
219 | $skills = !empty($_REQUEST['skill_id']) ? $_REQUEST['skill_id'] : []; |
||
220 | $total_skills_to_search = $skills; |
||
221 | $users = $skill_rel_user->getUserBySkills($skills); |
||
222 | $user_list = []; |
||
223 | $count_skills = count($skills); |
||
224 | $ordered_user_list = null; |
||
225 | |||
226 | if (!empty($users)) { |
||
227 | foreach ($users as $user) { |
||
228 | $user_info = api_get_user_info($user['user_id']); |
||
229 | $user_list[$user['user_id']]['user'] = $user_info; |
||
230 | $my_user_skills = $skill_rel_user->getUserSkills($user['user_id']); |
||
231 | $user_skill_list = []; |
||
232 | foreach ($my_user_skills as $skill_item) { |
||
233 | $user_skill_list[] = $skill_item['skill_id']; |
||
234 | } |
||
235 | |||
236 | $user_skills = []; |
||
237 | $found_counts = 0; |
||
238 | |||
239 | foreach ($skills as $skill_id) { |
||
240 | $found = false; |
||
241 | if (in_array($skill_id, $user_skill_list)) { |
||
242 | $found = true; |
||
243 | $found_counts++; |
||
244 | $user_skills[$skill_id] = ['skill_id' => $skill_id, 'found' => $found]; |
||
245 | } |
||
246 | } |
||
247 | |||
248 | foreach ($my_user_skills as $my_skill) { |
||
249 | if (!isset($user_skills[$my_skill['skill_id']])) { |
||
250 | $user_skills[$my_skill['skill_id']] = [ |
||
251 | 'skill_id' => $my_skill['skill_id'], |
||
252 | 'found' => false, |
||
253 | ]; |
||
254 | } |
||
255 | $total_skills_to_search[$my_skill['skill_id']] = $my_skill['skill_id']; |
||
256 | } |
||
257 | $user_list[$user['user_id']]['skills'] = $user_skills; |
||
258 | $user_list[$user['user_id']]['total_found_skills'] = $found_counts; |
||
259 | } |
||
260 | |||
261 | foreach ($user_list as $user_id => $user_data) { |
||
262 | $ordered_user_list[$user_data['total_found_skills']][] = $user_data; |
||
263 | } |
||
264 | |||
265 | if (!empty($ordered_user_list)) { |
||
266 | krsort($ordered_user_list); |
||
267 | } |
||
268 | } |
||
269 | |||
270 | Display::display_no_header(); |
||
271 | Display::$global_template->assign('order_user_list', $ordered_user_list); |
||
272 | Display::$global_template->assign('total_search_skills', $count_skills); |
||
273 | |||
274 | $skill_list = []; |
||
275 | if (!empty($total_skills_to_search)) { |
||
276 | $total_skills_to_search = $skill->getSkillsInfo($total_skills_to_search); |
||
277 | foreach ($total_skills_to_search as $skill_info) { |
||
278 | $skill_list[$skill_info['id']] = $skill_info; |
||
279 | } |
||
280 | } |
||
281 | |||
282 | Display::$global_template->assign('skill_list', $skill_list); |
||
283 | $template = Display::$global_template->get_template('skill/profile.tpl'); |
||
284 | echo Display::$global_template->fetch($template); |
||
285 | break; |
||
286 | case 'delete_gradebook_from_skill': |
||
287 | case 'remove_skill': |
||
288 | if (api_is_platform_admin() || api_is_drh()) { |
||
289 | if (!empty($_REQUEST['skill_id']) && !empty($_REQUEST['gradebook_id'])) { |
||
290 | $skill_item = $skillGradeBook->getSkillInfo( |
||
291 | $_REQUEST['skill_id'], |
||
292 | $_REQUEST['gradebook_id'] |
||
293 | ); |
||
294 | if (!empty($skill_item)) { |
||
295 | $skillGradeBook->delete($skill_item['id']); |
||
296 | echo 1; |
||
297 | } else { |
||
298 | echo 0; |
||
299 | } |
||
300 | } else { |
||
301 | echo 0; |
||
302 | } |
||
303 | } |
||
304 | break; |
||
305 | case 'get_profile': |
||
306 | $skillRelProfile = new SkillRelProfile(); |
||
307 | $profileId = isset($_REQUEST['profile_id']) ? intval($_REQUEST['profile_id']) : null; |
||
308 | $profile = $skillRelProfile->getProfileInfo($profileId); |
||
309 | echo json_encode($profile); |
||
310 | break; |
||
311 | case 'save_profile': |
||
312 | if (api_is_platform_admin() || api_is_drh()) { |
||
313 | $skill_profile = new SkillProfile(); |
||
314 | $params = $_REQUEST; |
||
315 | $params['skills'] = isset($params['skill_id']) ? $params['skill_id'] : null; |
||
316 | $profileId = isset($_REQUEST['profile']) ? intval($_REQUEST['profile']) : null; |
||
317 | if ($profileId > 0) { |
||
318 | $skill_profile->updateProfileInfo( |
||
319 | $profileId, |
||
320 | $params['name'], |
||
321 | $params['description'] |
||
322 | ); |
||
323 | $skill_data = 1; |
||
324 | } else { |
||
325 | $skill_data = $skill_profile->save($params); |
||
326 | } |
||
327 | if (!empty($skill_data)) { |
||
328 | echo 1; |
||
329 | } else { |
||
330 | echo 0; |
||
331 | } |
||
332 | } |
||
333 | break; |
||
334 | case 'delete_profile': |
||
335 | if (api_is_platform_admin() || api_is_drh()) { |
||
336 | $profileId = $_REQUEST['profile']; |
||
337 | $skillProfile = new SkillProfile(); |
||
338 | $isDeleted = $skillProfile->delete($profileId); |
||
339 | |||
340 | echo json_encode([ |
||
341 | 'status' => $isDeleted, |
||
342 | ]); |
||
343 | } |
||
344 | break; |
||
345 | case 'skill_exists': |
||
346 | $skill_data = $skill->get($_REQUEST['skill_id']); |
||
347 | if (!empty($skill_data)) { |
||
348 | echo 1; |
||
349 | } else { |
||
350 | echo 0; |
||
351 | } |
||
352 | break; |
||
353 | case 'search_skills': |
||
354 | $returnSkills = []; |
||
355 | if (isset($_REQUEST['q']) && !empty($_REQUEST['q'])) { |
||
356 | $skills = $skill->find( |
||
357 | 'all', |
||
358 | [ |
||
359 | 'where' => ['name LIKE %?% ' => $_REQUEST['q']], |
||
360 | ] |
||
361 | ); |
||
362 | foreach ($skills as $skill) { |
||
363 | $returnSkills[] = [ |
||
364 | 'id' => $skill['id'], |
||
365 | 'text' => $skill['name'], |
||
366 | ]; |
||
367 | } |
||
368 | } |
||
369 | |||
370 | echo json_encode(['items' => $returnSkills]); |
||
371 | break; |
||
372 | case 'search_skills_in_course': |
||
373 | $courseId = isset($_REQUEST['course_id']) ? (int) $_REQUEST['course_id'] : 0; |
||
374 | $sessionId = isset($_REQUEST['session_id']) ? (int) $_REQUEST['session_id'] : null; |
||
375 | |||
376 | if (empty($courseId)) { |
||
377 | exit; |
||
378 | } |
||
379 | $em = Database::getManager(); |
||
380 | $skills = $em->getRepository(SkillRelCourse::class)->findBy( |
||
381 | ['course' => $courseId, 'session' => $sessionId] |
||
382 | ); |
||
383 | |||
384 | $returnSkills = []; |
||
385 | /** @var SkillRelCourse $skill */ |
||
386 | foreach ($skills as $skill) { |
||
387 | $returnSkills[] = [ |
||
388 | 'id' => $skill->getSkill()->getId(), |
||
389 | 'text' => $skill->getSkill()->getName(), |
||
390 | ]; |
||
391 | } |
||
392 | echo json_encode([ |
||
393 | 'items' => $returnSkills, |
||
394 | ]); |
||
395 | break; |
||
396 | case 'update_skill_rel_user': |
||
397 | $allowSkillInTools = api_get_configuration_value('allow_skill_rel_items'); |
||
398 | if (empty($allowSkillInTools)) { |
||
399 | exit; |
||
400 | } |
||
401 | |||
402 | if (!api_is_allowed_to_edit()) { |
||
403 | exit; |
||
404 | } |
||
405 | |||
406 | $creatorId = api_get_user_id(); |
||
407 | $typeId = isset($_REQUEST['type_id']) ? (int) $_REQUEST['type_id'] : 0; |
||
408 | $itemId = isset($_REQUEST['item_id']) ? (int) $_REQUEST['item_id'] : 0; |
||
409 | $skillId = isset($_REQUEST['skill_id']) ? (int) $_REQUEST['skill_id'] : 0; |
||
410 | $userId = isset($_REQUEST['user_id']) ? (int) $_REQUEST['user_id'] : 0; |
||
411 | $courseId = isset($_REQUEST['course_id']) ? (int) $_REQUEST['course_id'] : 0; |
||
412 | $sessionId = isset($_REQUEST['session_id']) ? (int) $_REQUEST['session_id'] : 0; |
||
413 | $resultId = isset($_REQUEST['result_id']) ? (int) $_REQUEST['result_id'] : 0; |
||
414 | |||
415 | if (!empty($typeId) && !empty($itemId) && !empty($skillId) && !empty($userId) && !empty($courseId)) { |
||
416 | $em = Database::getManager(); |
||
417 | $user = api_get_user_entity($userId); |
||
418 | $skill = $em->getRepository('ChamiloCoreBundle:Skill')->find($skillId); |
||
419 | if (empty($user) || empty($skill)) { |
||
420 | exit; |
||
421 | } |
||
422 | $course = api_get_course_entity($courseId); |
||
423 | if (empty($course)) { |
||
424 | exit; |
||
425 | } |
||
426 | |||
427 | $session = api_get_session_entity($sessionId); |
||
428 | /** @var SkillRelItem $skillRelItem */ |
||
429 | $skillRelItem = $em->getRepository(SkillRelItem::class)->findOneBy( |
||
430 | ['itemId' => $itemId, 'itemType' => $typeId, 'skill' => $skillId] |
||
431 | ); |
||
432 | |||
433 | if ($skillRelItem) { |
||
434 | $criteria = [ |
||
435 | 'user' => $userId, |
||
436 | 'skillRelItem' => $skillRelItem, |
||
437 | ]; |
||
438 | $skillRelItemRelUser = $em->getRepository('ChamiloCoreBundle:SkillRelItemRelUser')->findOneBy($criteria); |
||
439 | if ($skillRelItemRelUser) { |
||
440 | $em->remove($skillRelItemRelUser); |
||
441 | $em->flush(); |
||
442 | $skillRelItemRelUser = null; |
||
443 | } else { |
||
444 | $skillRelItemRelUser = new Chamilo\CoreBundle\Entity\SkillRelItemRelUser(); |
||
445 | $skillRelItemRelUser |
||
446 | ->setUser($user) |
||
447 | ->setSkillRelItem($skillRelItem) |
||
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||
448 | ->setResultId($resultId) |
||
449 | ->setCreatedBy($creatorId) |
||
450 | ->setUpdatedBy($creatorId) |
||
451 | ; |
||
452 | $em->persist($skillRelItemRelUser); |
||
453 | $em->flush(); |
||
454 | } |
||
455 | } |
||
456 | echo Skill::getUserSkillStatusLabel($skillRelItem, $skillRelItemRelUser, false); |
||
457 | } |
||
458 | break; |
||
459 | case 'assign_user_to_skill': |
||
460 | $allowSkillInTools = api_get_configuration_value('allow_skill_rel_items'); |
||
461 | if (empty($allowSkillInTools)) { |
||
462 | exit; |
||
463 | } |
||
464 | |||
465 | if (!api_is_allowed_to_edit()) { |
||
466 | exit; |
||
467 | } |
||
468 | |||
469 | $skillId = isset($_REQUEST['skill_id']) ? (int) $_REQUEST['skill_id'] : 0; |
||
470 | $userId = isset($_REQUEST['user_id']) ? (int) $_REQUEST['user_id'] : 0; |
||
471 | $courseId = isset($_REQUEST['course_id']) ? (int) $_REQUEST['course_id'] : 0; |
||
472 | $sessionId = isset($_REQUEST['session_id']) ? (int) $_REQUEST['session_id'] : null; |
||
473 | |||
474 | if (empty($skillId) || empty($userId)) { |
||
475 | exit; |
||
476 | } |
||
477 | |||
478 | $em = Database::getManager(); |
||
479 | $skillRepo = $em->getRepository('ChamiloCoreBundle:Skill'); |
||
480 | $skill = $skillRepo->find($skillId); |
||
481 | $user = api_get_user_entity($userId); |
||
482 | |||
483 | if (empty($skill) || empty($user)) { |
||
484 | exit; |
||
485 | } |
||
486 | |||
487 | $skillUserRepo = $em->getRepository('ChamiloCoreBundle:SkillRelUser'); |
||
488 | $criteria = [ |
||
489 | 'user' => $user, |
||
490 | 'skill' => $skill, |
||
491 | ]; |
||
492 | $skillRelUsers = $skillUserRepo->findBy($criteria); |
||
493 | if (empty($skillRelUsers)) { |
||
494 | $skillUser = new \Chamilo\CoreBundle\Entity\SkillRelUser(); |
||
495 | $skillUser->setUser($user); |
||
496 | $skillUser->setSkill($skill); |
||
497 | /*if ($showLevels) { |
||
498 | $level = $skillLevelRepo->find(intval($values['acquired_level'])); |
||
499 | $skillUser->setAcquiredLevel($level); |
||
500 | }*/ |
||
501 | |||
502 | $course = api_get_course_entity($courseId); |
||
503 | $skillUser->setCourse($course); |
||
504 | if (!empty($sessionId)) { |
||
505 | $session = $em->getRepository('ChamiloCoreBundle:Session')->find($sessionId); |
||
506 | $skillUser->setSession($session); |
||
507 | } |
||
508 | |||
509 | $skillUser->setArgumentation(''); |
||
510 | $skillUser->setArgumentationAuthorId(api_get_user_id()); |
||
511 | $skillUser->setAcquiredSkillAt(new DateTime()); |
||
512 | $skillUser->setAssignedBy(0); |
||
513 | $em->persist($skillUser); |
||
514 | $em->flush(); |
||
515 | $result = 'success'; |
||
516 | } else { |
||
517 | foreach ($skillRelUsers as $skillRelUser) { |
||
518 | $em->remove($skillRelUser); |
||
519 | } |
||
520 | $em->flush(); |
||
521 | $result = 'danger'; |
||
522 | } |
||
523 | echo $result; |
||
524 | break; |
||
525 | default: |
||
526 | echo ''; |
||
527 | } |
||
528 | exit; |
||
529 |