Passed
Push — 1.11.x ( 351125...4a5877 )
by Angel Fernando Quiroz
14:08 queued 06:10
created

main/admin/resource_sequence.php (1 issue)

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
This use statement conflicts with another class in this namespace, HttpRequest. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/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 before OtherDir/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:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
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