Merge 1.9.x

1.10.x
Julio Montoya 11 years ago
commit 89322e016c
  1. 2
      main/auth/profile.php
  2. 2
      main/course_info/infocours.php
  3. 4
      main/inc/lib/formvalidator/Element/SelectTheme.php
  4. 34
      main/inc/lib/sessionmanager.lib.php
  5. 20
      main/lang/english/trad4all.inc.php
  6. 23
      main/lang/french/trad4all.inc.php
  7. 20
      main/lang/spanish/trad4all.inc.php
  8. 2
      main/newscorm/lp_edit.php
  9. 61
      main/webservices/registration.soap.php
  10. 14
      plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php
  11. 13
      plugin/advanced_subscription/src/HookAdvancedSubscription.php
  12. 10
      plugin/advanced_subscription/src/scripts/insert_session_fields.php

@ -219,7 +219,7 @@ if (api_get_setting('profile', 'language') !== 'true') {
//THEME
if (is_profile_editable() && api_get_setting('user_selected_theme') == 'true') {
$form->addElement('select_theme', 'theme', get_lang('Theme'));
$form->addElement('SelectTheme', 'theme', get_lang('Theme'));
if (api_get_setting('profile', 'theme') !== 'true') {
$form->freeze('theme');
}

@ -158,7 +158,7 @@ if (api_get_setting('pdf_export_watermark_by_course') == 'true') {
}
$group = array();
$group[]=$form->createElement('select_theme', 'course_theme', null, array('class'=>' ', 'id'=>'course_theme_id'));
$group[]=$form->createElement('SelectTheme', 'course_theme', null, array('class'=>' ', 'id'=>'course_theme_id'));
$form->addGroup($group, '', array(get_lang("Stylesheets")), '');
$form->addElement('label', get_lang('DocumentQuota'), format_file_size(DocumentManager::get_course_quota()));

@ -4,12 +4,12 @@
/**
* A dropdownlist with all themes to use with QuickForm
*/
class HTML_QuickForm_Select_Theme extends HTML_QuickForm_select
class SelectTheme extends HTML_QuickForm_select
{
/**
* Class constructor
*/
function HTML_QuickForm_Select_Theme($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
function SelectTheme($elementName=null, $elementLabel=null, $options=null, $attributes=null) {
if (!isset($attributes['class'])) {
//todo this was comment due a bug in infocours.php with jquery-ui
//$attributes['class'] = 'chzn-select';

@ -5518,10 +5518,13 @@ class SessionManager
if ($sessionFieldValue['session_id'] == $id) {
// Check if session field value is set in session field list
if (isset($fields[$sessionFieldValue['field_id']])) {
$var = $fields[$sessionFieldValue['field_id']];
$val = $sessionFieldValue['field_value'];
// Assign session field value to session
$session[$var] = $val;
// Avoid overwriting the session's ID field
if ($fields[$sessionFieldValue['field_id']] != 'id') {
$var = $fields[$sessionFieldValue['field_id']];
$val = $sessionFieldValue['field_value'];
// Assign session field value to session
$session[$var] = $val;
}
}
}
}
@ -5737,19 +5740,26 @@ class SessionManager
$term = Database::escape_string($term);
$resultData = Database::select('*', $sTable, array(
'where' => array(
"name LIKE %?% " => $term,
"OR description LIKE %?% " => $term,
"OR id IN (
if (is_array($extraFieldsToInclude) && count($extraFieldsToInclude) > 0) {
$resultData = Database::select('*', $sTable, array(
'where' => array(
"name LIKE %?% " => $term,
"OR description LIKE %?% " => $term,
"OR id IN (
SELECT session_id
FROM $sfvTable
WHERE field_value LIKE %?%
) " => $term
)
));
)
));
} else {
$resultData = Database::select('*', $sTable, array(
'where' => array(
"name LIKE %?% " => $term,
"OR description LIKE %?% " => $term
)
));
if (empty($extraFieldsToInclude)) {
return $resultData;
}

@ -319,7 +319,8 @@ $UserIsNotATeacher = "User is not a teacher";
$ConvertToMultipleAnswer = "Convert to multiple answer";
$ThisItemIsInvisibleForStudentsButYouHaveAccessAsTeacher = "This item is invisible for learner but you have access as teacher.";
$PreventSessionAdminsToManageAllUsersTitle = "Prevent session admins to manage all users";
$AllowSessionAdminsToSeeAllUsersComment = "When this option is not enabled (default), session administrators can only see the users they have created.";
$IsOpenSession = "Open session";
$AllowVisitors = "Allow visitors";
$DeleteAllAttendances = "Delete all created attendances";
$Unsubscribe = "Unsubscribe";
$AddForum = "Add a forum";
@ -327,6 +328,12 @@ $ReplyShort = "Re:";
$SendToAllUsers = "Send to all users";
$SelectACategory = "Select a category";
$AdvancedEdit = "Advanced edit";
$PublicationStartDate = "Published start date";
$ShowStatus = "Show status";
$Mode = "Mode";
$Schedule = "Schedule";
$Place = "Place/Location";
$RecommendedNumberOfParticipants = "Recommended number of participants";
$WCAGGoMenu = "Goto menu";
$WCAGGoContent = "Goto content";
$NoTimeLimits = "No time limits";
@ -334,6 +341,9 @@ $SearchXapianModuleNotInstalled = "The Xapian search module is not installed";
$TypeMessage = "Please type your message!";
$ConfirmReset = "Do you really want to delete all messages?";
$ClearList = "Clear the chat";
$SessionBanner = "Session banner";
$ShortDescription = "Short description";
$TargetAudience = "Target audience";
$CallSent = "Chat call has been sent. Waiting for the approval of your partner.";
$ChatDenied = "Your call has been denied by your partner.";
$Send = "Send message";
@ -1061,8 +1071,12 @@ $LastPage = "Last page";
$Coachs = "Coachs";
$CourseProgram = "Description";
$ThisCourseDescriptionIsEmpty = "There is no course description so far.";
$Vacancies = "Vacancies";
$QuestionPlan = "Help";
$Cost = "Cost";
$NewBloc = "Other";
$TeachingHours = "Lecture hours";
$Area = "Area";
$InProcess = "In process";
$CourseDescriptionUpdated = "The description has been updated";
$CourseDescriptionDeleted = "Description has been deleted";
@ -1082,7 +1096,7 @@ $AttendanceCalendar = "Attendance calendar";
$QualifyAttendanceGradebook = "Grade the attendance list in the assessment tool";
$CreateANewAttendance = "Create a new attendance list";
$Attendance = "Attendance";
$AllowSessionAdminsToSeeAllUsersTitle = "Allow session administrators to see all users";
$IsInductionSession = "Induction-type session";
$GeneralDescription = "Description";
$GeneralDescriptionQuestions = "What is the goal of the training? Are there prerequisites? How is this training connected to other training?";
$GeneralDescriptionInformation = "Describe the training (number of hours, sser number, location) and trainer (name, office, Tel., e-mail, office hours . . . .).";
@ -1113,7 +1127,9 @@ $ShowThumbnails = "Show Thumbnails";
$SetSlideshowOptions = "Gallery settings";
$SlideshowOptions = "Slideshow Options";
$NoResizing = "NO RESIZING";
$Brochure = "Brochure";
$SlideShow = "Slideshow";
$PublicationEndDate = "Published end date";
$ViewSlideshow = "View Slideshow";
$UploadADocument = "Upload a document";
$langNameOfLang['bosnian'] = "bosnian";

@ -317,7 +317,11 @@ $YourVersionNotUpToDate = "Votre version n'est pas à jour";
$Hotpotatoes = "Hotpotatoes";
$CourseCategoriesAreGlobal = "Les catégories de cours sont globales par rapport aux configurations multi-portails. Les modifications ne sont autorisées qu'à l'administrateur global du portail administratif.";
$UserIsNotATeacher = "L'utilisateur n'est pas un enseignant";
$ConvertToMultipleAnswer = "Convertir à réponses multiples";
$ThisItemIsInvisibleForStudentsButYouHaveAccessAsTeacher = "Cet élément est invisible pour les étudiants mais vous avez un accès enseignant.";
$PreventSessionAdminsToManageAllUsersTitle = "Empêcher les administrateurs de session de gérer tous les utilisateurs";
$IsOpenSession = "Session ouverte";
$AllowVisitors = "Permettre des visiteurs externes";
$DeleteAllAttendances = "Supprimer toutes les présences créées";
$Unsubscribe = "Désinscription";
$AddForum = "Ajouter un nouveau forum";
@ -325,6 +329,12 @@ $ReplyShort = "Re:";
$SendToAllUsers = "Envoyer à tous";
$SelectACategory = "Sélectionnez une catégorie";
$AdvancedEdit = "Édition avancée";
$PublicationStartDate = "Date de début publiée";
$ShowStatus = "Montrer l'état";
$Mode = "Modalité";
$Schedule = "Horaire";
$Place = "Lieu";
$RecommendedNumberOfParticipants = "Nombre recommandé de participants";
$WCAGGoMenu = "Aller au menu";
$WCAGGoContent = "Aller au contenu";
$NoTimeLimits = "Pas de limite de temps";
@ -332,6 +342,9 @@ $SearchXapianModuleNotInstalled = "Le module de recherche Xapian n'est pas insta
$TypeMessage = "Veuillez introduire votre message !";
$ConfirmReset = "Etes-vous sûr de vouloir supprimer tous les messages ?";
$ClearList = "Effacer la liste";
$SessionBanner = "Banner de session";
$ShortDescription = "Courte description";
$TargetAudience = "Public cible";
$CallSent = "Une demande de \"chat\" a été envoyée. En attente d'approbation de la personne contactée.";
$ChatDenied = "Votre appel a été refusé par la personne contactée.";
$Send = "Envoyer";
@ -1059,11 +1072,18 @@ $LastPage = "Dernière page";
$Coachs = "Formateurs";
$CourseProgram = "Description du cours";
$ThisCourseDescriptionIsEmpty = "La description du cours est vide";
$Vacancies = "Places libres";
$QuestionPlan = "Question pour le responsable";
$Cost = "Coût";
$NewBloc = "Autre";
$TeachingHours = "Heures académiques";
$Area = "Département";
$InProcess = "En cours";
$CourseDescriptionUpdated = "La description du cour a été mise à jour";
$CourseDescriptionDeleted = "La description du cours a été supprimée";
$PreventSessionAdminsToManageAllUsersComment = "Lorsque cette option est activée, les administrateurs de sessions ne pourront voir que les utilisateurs qu'ils ont eux-mêmes créés.";
$FieldTypeFile = "Envoi de fichier";
$ConvertToUniqueAnswer = "Convertir à réponse unique";
$NextWeek = "Semaine suivante";
$DragAndDropAnElementHere = "Glisser déposer un élément ici.";
$ThereAreNoRegisteredDatetimeYet = "Il n'y a aucune date/heure enregistrée pour le moment";
@ -1077,6 +1097,7 @@ $AttendanceCalendar = "Calendrier de présences";
$QualifyAttendanceGradebook = "Coter les présences dans le cahier de notes";
$CreateANewAttendance = "Créer un nouveau répertoire de feuilles de présences";
$Attendance = "Présence";
$IsInductionSession = "Session de type induction";
$GeneralDescription = "Description du cours";
$GeneralDescriptionQuestions = "Quelle est la place de ce cours dans l'organisation? Quels sont les prérequis? Quels sont les liens avec les autres cours?";
$GeneralDescriptionInformation = "Informations permettant d'identifier le cours (sigle, titre, nombre de personnes impliquées, ...) et le responsable (nom, prénom, bureau, tél, e-mail, horaire...).Présentation générale du cours.";
@ -1107,7 +1128,9 @@ $ShowThumbnails = "Afficher les vignettes";
$SetSlideshowOptions = "Définir les options de la galerie";
$SlideshowOptions = "Options de la galerie";
$NoResizing = "NE PAS REDIMENSIONNER (défaut)";
$Brochure = "Brochure";
$SlideShow = "Présentation";
$PublicationEndDate = "Date de fin publiée";
$ViewSlideshow = "Voir la galerie";
$UploadADocument = "Envoyer un document";
$langNameOfLang['bosnian'] = "bosnien";

@ -319,7 +319,8 @@ $UserIsNotATeacher = "El usuario no es un profesor.";
$ConvertToMultipleAnswer = "Convertir a respuesta múltiple";
$ThisItemIsInvisibleForStudentsButYouHaveAccessAsTeacher = "Este item no es visible para un estudiante pero podrá acceder a él como profesor";
$PreventSessionAdminsToManageAllUsersTitle = "Impedir a los admins de sesiones de gestionar todos los usuarios";
$AllowSessionAdminsToSeeAllUsersComment = "Cuando esta opción está desactivada los administradores de sesión solamente podrán ver sus usuarios.";
$IsOpenSession = "Sesión abierta";
$AllowVisitors = "Permitir visitantes";
$DeleteAllAttendances = "Eliminar todas las asistencias creadas";
$Unsubscribe = "Dar de baja";
$AddForum = "Añadir un foro";
@ -327,6 +328,12 @@ $ReplyShort = "Re:";
$SendToAllUsers = "Enviar a todos los usuarios";
$SelectACategory = "Seleccione una categoría";
$AdvancedEdit = "Edición avanzada";
$PublicationStartDate = "Fecha de inicio publicada";
$ShowStatus = "Mostrar estado";
$Mode = "Modalidad";
$Schedule = "Horario";
$Place = "Ubicación";
$RecommendedNumberOfParticipants = "Número recomendado de participantes";
$WCAGGoMenu = "Ir al menú";
$WCAGGoContent = "Ir al contenido";
$NoTimeLimits = "Sin límite de tiempo";
@ -334,6 +341,9 @@ $SearchXapianModuleNotInstalled = "El modulo Xapian de PHP no está configurado
$TypeMessage = "Por favor, escriba su mensaje";
$ConfirmReset = "¿Seguro que quiere borrar todos los mensajes?";
$ClearList = "Borrar la lista";
$SessionBanner = "Banner de sesión";
$ShortDescription = "Descripción corta";
$TargetAudience = "Público objetivo";
$CallSent = "Una petición de chat ha sido enviada. Esperando la aprobación de la persona contactada.";
$ChatDenied = "Su llamada ha sido rechazada por la persona contactada";
$Send = "Enviar";
@ -1061,8 +1071,12 @@ $LastPage = "Última página";
$Coachs = "Tutores";
$CourseProgram = "Descripción del curso";
$ThisCourseDescriptionIsEmpty = "Descripción no disponible";
$Vacancies = "Vacantes";
$QuestionPlan = "Cuestiones clave";
$Cost = "Costo";
$NewBloc = "Apartado personalizado";
$TeachingHours = "Horas lectivas";
$Area = "Área";
$InProcess = "En proceso";
$CourseDescriptionUpdated = "La descripción del curso ha sido actualizada";
$CourseDescriptionDeleted = "La descripción del curso ha sido borrada";
@ -1082,7 +1096,7 @@ $AttendanceCalendar = "Calendario de asistencia";
$QualifyAttendanceGradebook = "Calificar la lista de asistencia";
$CreateANewAttendance = "Crear una lista de asistencia";
$Attendance = "Asistencia";
$AllowSessionAdminsToSeeAllUsersTitle = "Permitir a los administradores de sesión ver todos los usuarios";
$IsInductionSession = "Sesión de tipo inducción";
$GeneralDescription = "Descripción general";
$GeneralDescriptionQuestions = "¿Cuál es el objetivo de este curso? ¿Hay requisitos previos? ¿Qué relación tiene con otros cursos?";
$GeneralDescriptionInformation = "Descripción del curso (número de horas, código, lugar donde se desarrollará, etc.). Profesorado (nombre, despacho, teléfono, correo electrónico, etc.).";
@ -1113,7 +1127,9 @@ $ShowThumbnails = "Mostrar miniaturas";
$SetSlideshowOptions = "Opciones de la presentación";
$SlideshowOptions = "Opciones de la presentación";
$NoResizing = "Presentación en su tamaño original";
$Brochure = "Brochure";
$SlideShow = "Presentación";
$PublicationEndDate = "Fecha de fin publicada";
$ViewSlideshow = "Ver presentación";
$UploadADocument = "Enviar un documento";
$langNameOfLang['bosnian'] = "bosnio";

@ -111,7 +111,7 @@ if (api_get_setting('allow_course_theme') == 'true') {
$mycourselptheme = api_get_course_setting('allow_learning_path_theme');
if (!empty($mycourselptheme) && $mycourselptheme!=-1 && $mycourselptheme== 1) {
//LP theme picker
$theme_select = $form->addElement('select_theme', 'lp_theme', get_lang('Theme'));
$theme_select = $form->addElement('SelectTheme', 'lp_theme', get_lang('Theme'));
$form->applyFilter('lp_theme', 'trim');
$s_theme = $_SESSION['oLP']->get_theme();

@ -5643,36 +5643,40 @@ $server->register(
);
/**
* Web service to get a session list filtered by name, description or short description extra field
* @param string $term Search term
* @param string $extraFields Extrafields to include in request result
* @param string $secretKey Secret key to check
* @return array The list
*/
function WSSearchSession($term, $extraFields, $secretKey)
* Web service to get a session list filtered by name, description or short description extra field
* @param array $params Contains the following parameters
* string $params['term'] Search term
* string $params['extra_fields'] Extrafields to include in request result
* string $params['secret_key'] Secret key to check
* @return array The list
*/
function WSSearchSession($params)
{
if (!WSHelperVerifyKey($secretKey)) {
if (!WSHelperVerifyKey($params['secret_key'])) {
return return_error(WS_ERROR_SECRET_KEY);
}
$fieldsToInclude = explode(',', $extraFields);
$fieldsToInclude = array();
foreach ($fieldsToInclude as &$field) {
if (empty($field)) {
continue;
}
if (!empty($params['extrafields'])) {
$fieldsToInclude = explode(',', $params['extrafields']);
foreach ($fieldsToInclude as &$field) {
if (empty($field)) {
continue;
}
$field = trim($field);
$field = trim($field);
}
}
return SessionManager::searchSession($term, $fieldsToInclude);
return SessionManager::searchSession($params['term'], $fieldsToInclude);
}
/* Search session Web Service end */
/* Fetch session Web Service start */
// Input params for WSSearchSession
// Input params for WSFetchSession
$server->wsdl->addComplexType(
'FetchSession',
'complexType',
@ -5680,7 +5684,7 @@ $server->wsdl->addComplexType(
'all',
'',
array(
'id' => array('name' => 'term', 'type' => 'xsd:int'),
'id' => array('name' => 'id', 'type' => 'xsd:int'),
'extrafields' => array('name' => 'extrafields', 'type' => 'xsd:string'),
'secret_key' => array('name' => 'secret_key', 'type' => 'xsd:string')
)
@ -5699,19 +5703,20 @@ $server->register(
);
/**
* Web service to get a session by its id. Optionally can get its extra fields values
* @param int $id The session id
* @param string $extraFields Extrafields to include in request result
* @param string $secretKey Secret key to check
* @return array The session data
*/
function WSFetchSession($id, $extraFields, $secretKey)
* Web service to get a session by its id. Optionally can get its extra fields values
* @param array $params Contains the following parameters:
* int $params['id'] The session id
* string $params['extrafields'] Extrafields to include in request result
* string $params['secret_key'] Secret key to check
* @return array The session data
*/
function WSFetchSession($params)
{
if (!WSHelperVerifyKey($secretKey)) {
if (!WSHelperVerifyKey($params['secret_key'])) {
return return_error(WS_ERROR_SECRET_KEY);
}
$fieldsToInclude = explode(',', $extraFields);
$fieldsToInclude = explode(',', $params['extrafields']);
foreach ($fieldsToInclude as &$field) {
if (empty($field)) {
@ -5721,14 +5726,14 @@ function WSFetchSession($id, $extraFields, $secretKey)
$field = trim($field);
}
$sessionData = SessionManager::fetch($id);
$sessionData = SessionManager::fetch($params['id']);
if ($sessionData === false) {
return return_error(WS_ERROR_INVALID_INPUT);
}
if (!empty($extraFields)) {
$sessionData['extra'] = SessionManager::getFilteredExtraFields($id, $fieldsToInclude);
$sessionData['extra'] = SessionManager::getFilteredExtraFields($params['id'], $fieldsToInclude);
}
return array($sessionData);

@ -829,7 +829,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
{
if (!empty($sessionId)) {
// Assign variables
$fieldsArray = array('id', 'cost', 'place', 'allow_visitors', 'teaching_hours', 'brochure', 'banner');
$fieldsArray = array('code', 'cost', 'place', 'allow_visitors', 'teaching_hours', 'brochure', 'banner');
$extraSession = new ExtraFieldValue('session');
$extraField = new ExtraField('session');
// Get session fields
@ -843,12 +843,12 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
}
$mergedArray = array_merge(array($sessionId), array_keys($fields));
$sessionFieldValueList = $extraSession->get_all(
array(
'session_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray
)
);
foreach ($sessionFieldValueList as $sessionFieldValue) {
$sql = "SELECT * FROM " . Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES) .
" WHERE session_id = %d AND field_id IN (%d, %d, %d, %d, %d, %d, %d)";
$sql = vsprintf($sql, $mergedArray);
$sessionFieldValueList = Database::query($sql);
while ($sessionFieldValue = Database::fetch_assoc($sessionFieldValueList)) {
// Check if session field value is set in session field list
if (isset($fields[$sessionFieldValue['field_id']])) {
$var = $fields[$sessionFieldValue['field_id']];

@ -139,8 +139,10 @@ class HookAdvancedSubscription extends HookObserver implements
'all',
'',
array(
// user.user_id
// user_field_values.value
'user_id' => array('name' => 'user_id', 'type' => 'xsd:int'),
// user_field.user_id
'user_field' => array('name' => 'user_field', 'type' => 'xsd:string'),
// session.id
'session_id' => array('name' => 'session_id', 'type' => 'xsd:int'),
// user.profile_completes
@ -415,7 +417,7 @@ class HookAdvancedSubscription extends HookObserver implements
global $debug;
if ($debug) {
error_log('WSUserSubscribedInCourse');
error_log(__FUNCTION__);
error_log('Params ' . print_r($params, 1));
}
if (!WSHelperVerifyKey($params)) {
@ -473,11 +475,10 @@ class HookAdvancedSubscription extends HookObserver implements
$result = return_error(WS_ERROR_NOT_FOUND_RESULT);
// Check params
if (is_array($params) && !empty($params['session_id']) && !empty($params['user_id'])) {
$userId = (int) $params['user_id'];
$userId = UserManager::get_user_id_from_original_id($params['user_id'], $params['user_field']);
$sessionId = (int) $params['session_id'];
// Check if user exists
if (
UserManager::is_user_id_valid($userId) &&
if (UserManager::is_user_id_valid($userId) &&
SessionManager::isValidId($sessionId)
) {
// Check if student is already subscribed
@ -684,4 +685,4 @@ class HookAdvancedSubscription extends HookObserver implements
}
return false;
}
}
}

@ -93,7 +93,7 @@ $mode->save(array(
$isInductionSession = new ExtraField('session');
$isInductionSession->save(array(
'field_type' => ExtraField::FIELD_TYPE_CHECKBOX,
'field_variable' => 'is_induccion_session',
'field_variable' => 'is_induction_session',
'field_display_text' => get_lang('IsInductionSession'),
'field_visible' => 1,
'field_changeable' => 1
@ -178,7 +178,7 @@ $target = new ExtraField('session');
$target->save(array(
'field_type' => ExtraField::FIELD_TYPE_SELECT,
'field_variable' => 'target',
'field_display_text' => get_lang('Target'),
'field_display_text' => get_lang('TargetAudience'),
'field_visible' => 1,
'field_changeable' => 1,
'field_options' => implode('; ', $targetOptions)
@ -188,7 +188,7 @@ $shortDescription = new ExtraField('session');
$shortDescription->save(array(
'field_type' => ExtraField::FIELD_TYPE_TEXT,
'field_variable' => 'short_description',
'field_display_text' => get_lang('ShortSescription'),
'field_display_text' => get_lang('ShortDescription'),
'field_visible' => 1,
'field_changeable' => 1
));
@ -196,8 +196,8 @@ $shortDescription->save(array(
$id = new ExtraField('session');
$id->save(array(
'field_type' => ExtraField::FIELD_TYPE_TEXT,
'field_variable' => 'id',
'field_display_text' => get_lang('Id'),
'field_variable' => 'code',
'field_display_text' => get_lang('Code'),
'field_visible' => 1,
'field_changeable' => 1
));

Loading…
Cancel
Save