chamilo /
chamilo-lms
| 1 | <?php |
||
| 2 | /* For licensing terms, see /license.txt */ |
||
| 3 | |||
| 4 | use Chamilo\CoreBundle\Entity\ExtraField; |
||
|
0 ignored issues
–
show
|
|||
| 5 | |||
| 6 | $cidReset = true; |
||
| 7 | |||
| 8 | require_once __DIR__.'/../inc/global.inc.php'; |
||
| 9 | |||
| 10 | api_protect_admin_script(); |
||
| 11 | |||
| 12 | $em = Database::getManager(); |
||
| 13 | |||
| 14 | $extraField = null; |
||
| 15 | $extraFieldOption = null; |
||
| 16 | $variableLanguage = null; |
||
| 17 | $originalName = null; |
||
| 18 | |||
| 19 | if (isset($_GET['extra_field'])) { |
||
| 20 | $extraField = $em->find('ChamiloCoreBundle:ExtraField', intval($_GET['extra_field'])); |
||
| 21 | $variableLanguage = '$'.api_underscore_to_camel_case($extraField->getVariable()); |
||
| 22 | $originalName = $extraField->getDisplayText(false); |
||
| 23 | } elseif (isset($_GET['extra_field_option'])) { |
||
| 24 | $extraFieldOption = $em->find('ChamiloCoreBundle:ExtraFieldOptions', intval($_GET['extra_field_option'])); |
||
| 25 | $extraField = $extraFieldOption->getField(); |
||
| 26 | $variableLanguage = '$'.ExtraFieldOption::getLanguageVariable($extraFieldOption->getDisplayText()); |
||
| 27 | $originalName = $extraFieldOption->getDisplayText(false); |
||
| 28 | } |
||
| 29 | |||
| 30 | if (!$extraField || empty($variableLanguage) || empty($originalName)) { |
||
| 31 | api_not_allowed(true); |
||
| 32 | } |
||
| 33 | |||
| 34 | $languageId = isset($_GET['sub_language']) ? (int) $_GET['sub_language'] : 0; |
||
| 35 | |||
| 36 | $languages = $em |
||
| 37 | ->getRepository('ChamiloCoreBundle:Language') |
||
| 38 | ->findAllPlatformSubLanguages(); |
||
| 39 | |||
| 40 | $languagesOptions = [0 => get_lang('None')]; |
||
| 41 | |||
| 42 | foreach ($languages as $language) { |
||
| 43 | $languagesOptions[$language->getId()] = $language->getOriginalName(); |
||
| 44 | } |
||
| 45 | |||
| 46 | $translateUrl = api_get_path(WEB_CODE_PATH).'admin/sub_language_ajax.inc.php'; |
||
| 47 | |||
| 48 | $form = new FormValidator('new_lang_variable', 'POST', $translateUrl); |
||
| 49 | $form->addHeader(get_lang('AddWordForTheSubLanguage')); |
||
| 50 | $form->addText('variable_language', get_lang('LanguageVariable'), false); |
||
| 51 | $form->addText('original_name', get_lang('OriginalName'), false); |
||
| 52 | $form->addSelect( |
||
| 53 | 'sub_language', |
||
| 54 | [get_lang('SubLanguage'), get_lang('OnlyActiveSubLanguagesAreListed')], |
||
| 55 | $languagesOptions |
||
| 56 | ); |
||
| 57 | |||
| 58 | if ($languageId) { |
||
| 59 | $languageInfo = api_get_language_info($languageId); |
||
| 60 | $form->addText( |
||
| 61 | 'new_language', |
||
| 62 | [get_lang('Translation'), get_lang('IfThisTranslationExistsThisWillReplaceTheTerm')] |
||
| 63 | ); |
||
| 64 | $form->addHidden('file_id', 0); |
||
| 65 | $form->addHidden('id', $languageInfo['parent_id']); |
||
| 66 | $form->addHidden('sub', $languageInfo['id']); |
||
| 67 | $form->addHidden('sub_language_id', $languageInfo['id']); |
||
| 68 | $form->addHidden('redirect', true); |
||
| 69 | $form->addHidden('extra_field_type', $extraField->getExtraFieldType()); |
||
| 70 | $form->addButtonSave(get_lang('Save')); |
||
| 71 | } |
||
| 72 | |||
| 73 | $form->setDefaults([ |
||
| 74 | 'variable_language' => $variableLanguage, |
||
| 75 | 'original_name' => $originalName, |
||
| 76 | 'sub_language' => $languageId, |
||
| 77 | ]); |
||
| 78 | $form->addRule('sub_language', get_lang('Required'), 'required'); |
||
| 79 | $form->freeze(['variable_language', 'original_name']); |
||
| 80 | |||
| 81 | $interbreadcrumb[] = ['url' => api_get_path(WEB_CODE_PATH).'admin', 'name' => get_lang('Administration')]; |
||
| 82 | |||
| 83 | switch ($extraField->getExtraFieldType()) { |
||
| 84 | case ExtraField::USER_FIELD_TYPE: |
||
| 85 | $interbreadcrumb[] = [ |
||
| 86 | 'url' => api_get_path(WEB_CODE_PATH).'admin/extra_fields.php?type=user', |
||
| 87 | 'name' => get_lang('UserFields'), |
||
| 88 | ]; |
||
| 89 | break; |
||
| 90 | case ExtraField::COURSE_FIELD_TYPE: |
||
| 91 | $interbreadcrumb[] = [ |
||
| 92 | 'url' => api_get_path(WEB_CODE_PATH).'admin/extra_fields.php?type=course', |
||
| 93 | 'name' => get_lang('CourseFields'), |
||
| 94 | ]; |
||
| 95 | break; |
||
| 96 | case ExtraField::SESSION_FIELD_TYPE: |
||
| 97 | $interbreadcrumb[] = [ |
||
| 98 | 'url' => api_get_path(WEB_CODE_PATH).'admin/extra_fields.php?type=session', |
||
| 99 | 'name' => get_lang('SessionFields'), |
||
| 100 | ]; |
||
| 101 | break; |
||
| 102 | } |
||
| 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 |
Let?s assume that you have a directory layout like this:
. |-- OtherDir | |-- Bar.php | `-- Foo.php `-- SomeDir `-- Foo.phpand let?s assume the following content of
Bar.php:If both files
OtherDir/Foo.phpandSomeDir/Foo.phpare 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.phpHowever, as
OtherDir/Foo.phpdoes 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: