1 | <?php |
||
2 | |||
3 | /* For licensing terms, see /license.txt */ |
||
4 | |||
5 | use Chamilo\CoreBundle\Entity\Sequence; |
||
6 | use Chamilo\CoreBundle\Entity\SequenceResource; |
||
7 | use ChamiloSession as Session; |
||
8 | use Symfony\Component\HttpFoundation\Request as HttpRequest; |
||
0 ignored issues
–
show
|
|||
9 | |||
10 | $cidReset = true; |
||
11 | |||
12 | require_once __DIR__.'/../inc/global.inc.php'; |
||
13 | |||
14 | api_protect_global_admin_script(); |
||
15 | |||
16 | Session::erase('sr_vertex'); |
||
17 | |||
18 | $httpRequest = HttpRequest::createFromGlobals(); |
||
19 | |||
20 | // setting breadcrumbs |
||
21 | $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')]; |
||
22 | |||
23 | $type = $httpRequest->query->has('type') |
||
24 | ? $httpRequest->query->getInt('type', SequenceResource::SESSION_TYPE) |
||
25 | : $httpRequest->request->getInt('type', SequenceResource::SESSION_TYPE); |
||
26 | |||
27 | $tpl = new Template(get_lang('ResourcesSequencing')); |
||
28 | $em = Database::getManager(); |
||
29 | $sequenceRepository = $em->getRepository('ChamiloCoreBundle:Sequence'); |
||
30 | |||
31 | $currentUrl = api_get_self().'?type='.$type; |
||
32 | |||
33 | $formSequence = new FormValidator('sequence_form', 'post', $currentUrl, null, null, FormValidator::LAYOUT_INLINE); |
||
34 | $formSequence->addText('name', get_lang('Sequence'), true, ['cols-size' => [3, 8, 1]]); |
||
35 | $formSequence->applyFilter('name', 'html_filter'); |
||
36 | $formSequence->addButtonCreate(get_lang('AddSequence'), 'submit_sequence', false, ['cols-size' => [3, 8, 1]]); |
||
37 | |||
38 | $em = Database::getManager(); |
||
39 | |||
40 | // Add sequence |
||
41 | if ($formSequence->validate()) { |
||
42 | $values = $formSequence->exportValues(); |
||
43 | $sequence = new Sequence(); |
||
44 | $sequence->setName($values['name']); |
||
45 | $em->persist($sequence); |
||
46 | $em->flush(); |
||
47 | Display::addFlash(Display::return_message(get_lang('Saved'))); |
||
48 | header('Location: '.$currentUrl); |
||
49 | exit; |
||
50 | } |
||
51 | |||
52 | $selectSequence = new FormValidator('frm_select_delete', 'post', $currentUrl); |
||
53 | $sequenceList = $sequenceRepository->findAllToSelect($type); |
||
54 | |||
55 | $sequenceElement = $selectSequence->addSelect( |
||
56 | 'sequence', |
||
57 | get_lang('Sequence'), |
||
58 | $sequenceList, |
||
59 | ['id' => 'sequence_id', 'cols-size' => [3, 7, 2], 'disabled' => 'disabled'] |
||
60 | ); |
||
61 | |||
62 | if (!empty($sequenceList)) { |
||
63 | $selectSequence->addButtonDelete(get_lang('Delete')); |
||
64 | $sequenceElement->removeAttribute('disabled'); |
||
65 | } |
||
66 | |||
67 | if ($selectSequence->validate()) { |
||
68 | $values = $selectSequence->exportValues(); |
||
69 | $sequenceRepository->removeSequence($values['sequence']); |
||
70 | |||
71 | Display::addFlash( |
||
72 | Display::return_message(get_lang('Deleted'), 'success') |
||
73 | ); |
||
74 | |||
75 | header('Location: '.$currentUrl); |
||
76 | exit; |
||
77 | } |
||
78 | |||
79 | $list = $sequenceRepository->getItems($type); |
||
80 | |||
81 | switch ($type) { |
||
82 | case SequenceResource::COURSE_TYPE: |
||
83 | $label = get_lang('Courses'); |
||
84 | break; |
||
85 | case SequenceResource::SESSION_TYPE: |
||
86 | $label = get_lang('Sessions'); |
||
87 | break; |
||
88 | } |
||
89 | |||
90 | $form = new FormValidator(''); |
||
91 | $form->addHtml("<div class='col-md-6'>"); |
||
92 | $form->addHidden('sequence_type', $type); |
||
93 | $form->addSelect( |
||
94 | 'sessions', |
||
95 | $label, |
||
96 | $list, |
||
97 | ['id' => 'item', 'cols-size' => [4, 7, 1], 'disabled' => 'disabled'] |
||
98 | ); |
||
99 | $form->addButtonNext( |
||
100 | get_lang('UseAsReference'), |
||
101 | 'use_as_reference', |
||
102 | ['cols-size' => [4, 7, 1], 'disabled' => 'disabled'] |
||
103 | ); |
||
104 | $form->addHtml("</div>"); |
||
105 | $form->addHtml("<div class='col-md-6'>"); |
||
106 | $form->addSelect( |
||
107 | 'requirements', |
||
108 | get_lang('Requirements'), |
||
109 | $list, |
||
110 | ['id' => 'requirements', 'cols-size' => [3, 7, 2], 'disabled' => 'disabled'] |
||
111 | ); |
||
112 | |||
113 | $form->addButtonCreate( |
||
114 | get_lang('SetAsRequirement'), |
||
115 | 'set_requirement', |
||
116 | false, |
||
117 | ['cols-size' => [3, 7, 2], 'disabled' => 'disabled'] |
||
118 | ); |
||
119 | $form->addHtml('</div>'); |
||
120 | |||
121 | $formSave = new FormValidator(''); |
||
122 | $formSave->addButton( |
||
123 | 'save_resource', |
||
124 | get_lang('SaveSettings'), |
||
125 | 'floppy-o', |
||
126 | 'success', |
||
127 | null, |
||
128 | null, |
||
129 | ['cols-size' => [1, 10, 1], 'disabled' => 'disabled'] |
||
130 | ); |
||
131 | |||
132 | $headers[] = [ |
||
133 | 'url' => api_get_self().'?type='.SequenceResource::SESSION_TYPE, |
||
134 | 'content' => get_lang('Sessions'), |
||
135 | ]; |
||
136 | |||
137 | $headers[] = [ |
||
138 | 'url' => api_get_self().'?type='.SequenceResource::COURSE_TYPE, |
||
139 | 'content' => get_lang('Courses'), |
||
140 | ]; |
||
141 | |||
142 | $tabs = Display::tabsOnlyLink($headers, $type === SequenceResource::COURSE_TYPE ? 2 : 1); |
||
143 | |||
144 | $tpl->assign('create_sequence', $formSequence->returnForm()); |
||
145 | $tpl->assign('select_sequence', $selectSequence->returnForm()); |
||
146 | $tpl->assign('configure_sequence', $form->returnForm()); |
||
147 | $tpl->assign('save_sequence', $formSave->returnForm()); |
||
148 | $tpl->assign('sequence_type', $type); |
||
149 | $tpl->assign('tabs', $tabs); |
||
150 | $layout = $tpl->get_template('admin/resource_sequence.tpl'); |
||
151 | $tpl->display($layout); |
||
152 |
Let?s assume that you have a directory layout like this:
and let?s assume the following content of
Bar.php
:If both files
OtherDir/Foo.php
andSomeDir/Foo.php
are loaded in the same runtime, you will see a PHP error such as the following:PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php
However, as
OtherDir/Foo.php
does not necessarily have to be loaded and the error is only triggered if it is loaded beforeOtherDir/Bar.php
, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias: