Issues (2037)

main/admin/skill_translate.php (1 issue)

1
<?php
2
/* For licensing terms, see /license.txt */
3
4
use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
5
use Chamilo\CoreBundle\Entity\Language;
6
use Chamilo\CoreBundle\Entity\Skill;
0 ignored issues
show
This use statement conflicts with another class in this namespace, Skill. 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...
7
8
$cidReset = true;
9
10
require_once __DIR__.'/../inc/global.inc.php';
11
12
api_protect_admin_script();
13
14
$em = Database::getManager();
15
16
$skill = null;
17
$extraFieldOption = null;
18
$variableLanguage = null;
19
$originalName = null;
20
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'name';
21
22
if (isset($_GET['skill'])) {
23
    /** @var Skill $skill */
24
    $skill = $em->find('ChamiloCoreBundle:Skill', intval($_GET['skill']));
25
26
    if ($action === 'name') {
27
        $variableLanguage = ChamiloApi::getLanguageVar(
28
            $skill->getName(false),
29
            'Skill'
30
        );
31
        $originalName = $skill->getName(false);
32
    } elseif ($action === 'code') {
33
        $variableLanguage = ChamiloApi::getLanguageVar(
34
            $skill->getShortCode(false),
35
            'SkillCode'
36
        );
37
        $originalName = $skill->getShortCode(false);
38
    }
39
}
40
41
if (!$skill || empty($variableLanguage)) {
42
    api_not_allowed(true);
43
}
44
45
if (empty($originalName)) {
46
    Display::addFlash(
47
        Display::return_message(get_lang('CanNotTranslate'), 'error')
48
    );
49
    header('Location: '.api_get_path(WEB_CODE_PATH).'admin/skill_edit.php?id='.$skill->getId());
50
    exit;
51
}
52
53
$languageId = isset($_GET['sub_language']) ? intval($_GET['sub_language']) : 0;
54
55
$languages = $em
56
    ->getRepository('ChamiloCoreBundle:Language')
57
    ->findAllPlatformSubLanguages();
58
59
$languagesOptions = [0 => get_lang('None')];
60
61
/** @var Language $language */
62
foreach ($languages as $language) {
63
    $languagesOptions[$language->getId()] = $language->getOriginalName();
64
}
65
66
$translateUrl = api_get_path(WEB_CODE_PATH).'admin/sub_language_ajax.inc.php?skill='.$skill->getId();
67
68
$form = new FormValidator('new_lang_variable', 'POST', $translateUrl);
69
$form->addHeader(get_lang('AddWordForTheSubLanguage'));
70
$form->addText('variable_language', get_lang('LanguageVariable'), false);
71
$form->addText('original_name', get_lang('OriginalName'), false);
72
$form->addSelect(
73
    'sub_language',
74
    [get_lang('SubLanguage'), get_lang('OnlyActiveSubLanguagesAreListed')],
75
    $languagesOptions
76
);
77
78
if ($languageId) {
79
    $languageInfo = api_get_language_info($languageId);
80
    $form->addText(
81
        'new_language',
82
        [get_lang('Translation'), get_lang('IfThisTranslationExistsThisWillReplaceTheTerm')]
83
    );
84
    $form->addHidden('file_id', 0);
85
    $form->addHidden('id', $languageInfo['parent_id']);
86
    $form->addHidden('sub', $languageInfo['id']);
87
    $form->addHidden('sub_language_id', $languageInfo['id']);
88
    $form->addHidden('redirect', true);
89
    $form->addButtonSave(get_lang('Save'));
90
}
91
92
$form->setDefaults([
93
    'variable_language' => '$'.$variableLanguage,
94
    'original_name' => $originalName,
95
    'sub_language' => $languageId,
96
    'new_language' => $action === 'code' ? $skill->getShortCode() : $skill->getName(),
97
]);
98
$form->addRule('sub_language', get_lang('Required'), 'required');
99
$form->freeze(['variable_language', 'original_name']);
100
101
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')];
102
$interbreadcrumb[] = ['url' => 'skill_list.php', 'name' => get_lang('ManageSkills')];
103
104
$view = new Template(get_lang('AddWordForTheSubLanguage'));
105
$view->assign('form', $form->returnForm());
106
$template = $view->get_template('extrafield/translate.tpl');
107
$content = $view->fetch($template);
108
$view->assign('content', $content);
109
$view->display_one_col_template();
110