From 450862a04a7313f5ac3f67b6f7e2680af370c146 Mon Sep 17 00:00:00 2001 From: Camila Moraes Date: Tue, 9 Jun 2026 14:07:54 -0300 Subject: [PATCH 1/5] =?UTF-8?q?Implementa=203=20fun=C3=A7=C3=B5es=20ao=20w?= =?UTF-8?q?ebform=20replicado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Element/HabilitacaoElement.php | 70 +++++++++++++++++++ src/Element/NumeroUspElement.php | 67 ++++++++++++++++++ src/Element/PosGradElement.php | 68 ++++++++++++++++++ .../WebformElement/HabilitacaoElement.php | 17 +++++ .../WebformElement/NumeroUspElement.php | 17 +++++ src/Plugin/WebformElement/PosGradElement.php | 17 +++++ 6 files changed, 256 insertions(+) create mode 100644 src/Element/HabilitacaoElement.php create mode 100644 src/Element/NumeroUspElement.php create mode 100644 src/Element/PosGradElement.php create mode 100644 src/Plugin/WebformElement/HabilitacaoElement.php create mode 100644 src/Plugin/WebformElement/NumeroUspElement.php create mode 100644 src/Plugin/WebformElement/PosGradElement.php diff --git a/src/Element/HabilitacaoElement.php b/src/Element/HabilitacaoElement.php new file mode 100644 index 0000000..7827678 --- /dev/null +++ b/src/Element/HabilitacaoElement.php @@ -0,0 +1,70 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateHabilitacao'], + ], + ]; + } + + +public static function validateHabilitacao(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + + $habilitacoes = [ + 'portugues', + 'grego', + 'latim', + 'alemao', + 'espanhol', + 'frances', + 'ingles', + 'italiano', + 'arabe', + 'armenio', + 'chines', + 'coreano', + 'hebraico', + 'japones', + 'russo', + 'linguistica', +]; + +$valido = FALSE; + + foreach ($habilitacoes as $habilitacao) { + if (str_contains($value, $habilitacao)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { + $form_state->setError( + $element, + t('Essa habilitação não consta.') + ); + } + } +} \ No newline at end of file diff --git a/src/Element/NumeroUspElement.php b/src/Element/NumeroUspElement.php new file mode 100644 index 0000000..b540228 --- /dev/null +++ b/src/Element/NumeroUspElement.php @@ -0,0 +1,67 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateNumeroUsp'], + ], + ]; + } + + /** + * Validates the USP number. + */ + public static function validateNumeroUsp( + &$element, + FormStateInterface $form_state, + &$complete_form + ): void { + + $value = str_replace(['.', '-'], '', $element['#value']); + + // Value selected in the Webform Select element. + $tipo = $form_state->getValue('tipo_de_numero_usp'); + + switch ($tipo) { + + case 'intercambista': + if (strlen($value) != 7) { + $form_state->setError( + $element, + t('O Número USP de intercambista deve possuir 7 dígitos.') + ); + } + break; + + case 'docente': + case 'graduacao': + case 'pos': + case 'funcionario': + default: + if (strlen($value) != 8) { + $form_state->setError( + $element, + t('O Número USP deve possuir 8 dígitos.') + ); + } + break; + } + + } + +} \ No newline at end of file diff --git a/src/Element/PosGradElement.php b/src/Element/PosGradElement.php new file mode 100644 index 0000000..9c865f8 --- /dev/null +++ b/src/Element/PosGradElement.php @@ -0,0 +1,68 @@ + TRUE, + '#element_validate' => [ + [$class, 'validatePosGrad'], + ], + ]; + } + + + +public static function validatePosGrad(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + if ( + !str_contains($value, 'Antropologia Social') && + !str_contains($value, 'Ciência Política') && + !str_contains($value, 'Estudos Comparados de Literaturas de Língua Portuguesa') && + !str_contains($value, 'Estudos Linguísticos e Literários em Inglês') && + !str_contains($value, 'Filologia e Língua Portuguesa') && + !str_contains($value, 'Filosofia') && + !str_contains($value, 'Geografia Física') && + !str_contains($value, 'Geografia Humana') && + !str_contains($value, 'História Econômica') && + !str_contains($value, 'História Social') && + !str_contains($value, 'Humanidades, Direitos e Outras Legitimidades') && + !str_contains($value, 'Letras Clássicas') && + !str_contains($value, 'Letras Estrangeiras e Tradução (LETRA)') && + !str_contains($value, 'Língua e Literatura Alemã') && + !str_contains($value, 'Língua Espanhola e Literaturas Espanhola e Hispano-Americana') && + !str_contains($value, 'Língua, Literatura e Cultura Italianas') && + !str_contains($value, 'Língua, Literatura e Cultura Japonesa') && + !str_contains($value, 'Linguística') && + !str_contains($value, 'Literatura Brasileira') && + !str_contains($value, 'Literatura Portuguesa') && + !str_contains($value, 'Mestrado Profissional em Letras em Rede Nacional (PROFLETRAS)') && + !str_contains($value, 'Sociologia') && + !str_contains($value, 'Teoria Literária e Literatura Comparada') + + ) + { + $form_state->setError( + $element, + t('Esse programa não faz parte da Pós-Graduação na FFLCH.') + ); + } + } +} diff --git a/src/Plugin/WebformElement/HabilitacaoElement.php b/src/Plugin/WebformElement/HabilitacaoElement.php new file mode 100644 index 0000000..47fb3b2 --- /dev/null +++ b/src/Plugin/WebformElement/HabilitacaoElement.php @@ -0,0 +1,17 @@ + Date: Tue, 9 Jun 2026 15:42:33 -0300 Subject: [PATCH 2/5] =?UTF-8?q?Implementa=203=20fun=C3=A7=C3=B5es=20ao=20w?= =?UTF-8?q?ebform=20replicado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Element/HabilitacaoElement.php | 10 ++++ src/Element/PosGradElement.php | 78 +++++++++++++++++++----------- 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/src/Element/HabilitacaoElement.php b/src/Element/HabilitacaoElement.php index 7827678..3d02114 100644 --- a/src/Element/HabilitacaoElement.php +++ b/src/Element/HabilitacaoElement.php @@ -31,6 +31,16 @@ public static function validateHabilitacao(&$element, FormStateInterface $form_s $value = $element['#value']; + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); $habilitacoes = [ 'portugues', diff --git a/src/Element/PosGradElement.php b/src/Element/PosGradElement.php index 9c865f8..f1660f8 100644 --- a/src/Element/PosGradElement.php +++ b/src/Element/PosGradElement.php @@ -32,36 +32,58 @@ public static function validatePosGrad(&$element, FormStateInterface $form_state $value = $element['#value']; - if ( - !str_contains($value, 'Antropologia Social') && - !str_contains($value, 'Ciência Política') && - !str_contains($value, 'Estudos Comparados de Literaturas de Língua Portuguesa') && - !str_contains($value, 'Estudos Linguísticos e Literários em Inglês') && - !str_contains($value, 'Filologia e Língua Portuguesa') && - !str_contains($value, 'Filosofia') && - !str_contains($value, 'Geografia Física') && - !str_contains($value, 'Geografia Humana') && - !str_contains($value, 'História Econômica') && - !str_contains($value, 'História Social') && - !str_contains($value, 'Humanidades, Direitos e Outras Legitimidades') && - !str_contains($value, 'Letras Clássicas') && - !str_contains($value, 'Letras Estrangeiras e Tradução (LETRA)') && - !str_contains($value, 'Língua e Literatura Alemã') && - !str_contains($value, 'Língua Espanhola e Literaturas Espanhola e Hispano-Americana') && - !str_contains($value, 'Língua, Literatura e Cultura Italianas') && - !str_contains($value, 'Língua, Literatura e Cultura Japonesa') && - !str_contains($value, 'Linguística') && - !str_contains($value, 'Literatura Brasileira') && - !str_contains($value, 'Literatura Portuguesa') && - !str_contains($value, 'Mestrado Profissional em Letras em Rede Nacional (PROFLETRAS)') && - !str_contains($value, 'Sociologia') && - !str_contains($value, 'Teoria Literária e Literatura Comparada') - - ) - { + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); + + $programas = [ + 'antropologia social', + 'ciencia politica', + 'estudos comparados de literaturas de linguas portuguesa', + 'estudos linguisticos e literarios em ingles', + 'filologia e lingua portuguesa', + 'filosofia', + 'geografia fisica', + 'geografia humana', + 'historia economica', + 'historia social', + 'humanidades, direitos e outras legitimidades', + 'letras classicas', + 'letras estrangeiras e traducao', + 'letra', + 'lingua e literartura alema', + 'lingua espanhola e literaturas espanhola e hispano-americana', + 'lingua, literatura e cultura italianas', + 'lingua, literatura e cultura japonesas', + 'linguistica', + 'literatura brasileira', + 'literatura portuguesa', + 'mestrado profissional em letras em rede nacional', + 'profletras', + 'sociologia', + 'teoria literaria e literatura comparada', + ]; + + $valido = FALSE; + + foreach ($programas as $programa) { + if (str_contains($value, $programa)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { $form_state->setError( $element, - t('Esse programa não faz parte da Pós-Graduação na FFLCH.') + t('Esse programa não consta na Pós-Graduação.') ); } } From 0c5b894ed0fb00e58c19f6e45628d201953a0f4d Mon Sep 17 00:00:00 2001 From: Camila Moraes Date: Tue, 9 Jun 2026 16:38:28 -0300 Subject: [PATCH 3/5] =?UTF-8?q?Implementa=20mais=20uma=20fun=C3=A7=C3=A3o?= =?UTF-8?q?=20ao=20webform=20replicado,=20total=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Element/DepartamentosElement.php | 91 +++++++++++++++++++ .../WebformElement/DepartamentosElement.php | 17 ++++ 2 files changed, 108 insertions(+) create mode 100644 src/Element/DepartamentosElement.php create mode 100644 src/Plugin/WebformElement/DepartamentosElement.php diff --git a/src/Element/DepartamentosElement.php b/src/Element/DepartamentosElement.php new file mode 100644 index 0000000..96ac9cc --- /dev/null +++ b/src/Element/DepartamentosElement.php @@ -0,0 +1,91 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateDepartamentos'], + ], + ]; + } + + + + + +public static function validateDepartamentos(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); + + $departamentos = [ + 'departamento de antropologia', + 'departamento de ciencia politica', + 'departamento de filosofia', + 'departamento de geografia', + 'departamento de historia', + 'departamento de letras classicas e vernaculas', + 'departamento de letras modernas', + 'departamento de letras orientais', + 'departamento de linguistica', + 'departamento de sociologia', + 'departamento de teoria literaria e literatura comparada', + 'fla', + 'flp', + 'flf', + 'flg', + 'flh', + 'flc', + 'flm', + 'flo', + 'fll', + 'fsl', + 'flt', + ]; + +$valido = FALSE; + + foreach ($departamentos as $departamento) { + if (str_contains($value, $departamento)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { + $form_state->setError( + $element, + t('Esse departamento não é da FFLCH.') + ); + } + } +} + + \ No newline at end of file diff --git a/src/Plugin/WebformElement/DepartamentosElement.php b/src/Plugin/WebformElement/DepartamentosElement.php new file mode 100644 index 0000000..01f43e2 --- /dev/null +++ b/src/Plugin/WebformElement/DepartamentosElement.php @@ -0,0 +1,17 @@ + Date: Wed, 10 Jun 2026 13:40:34 -0300 Subject: [PATCH 4/5] =?UTF-8?q?Arrumando=20a=20valida=C3=A7=C3=A2o=20de=20?= =?UTF-8?q?funcion=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Element/DepartamentosElement.php | 11 +++++++++++ src/Element/NumeroUspElement.php | 15 +++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Element/DepartamentosElement.php b/src/Element/DepartamentosElement.php index 96ac9cc..d300662 100644 --- a/src/Element/DepartamentosElement.php +++ b/src/Element/DepartamentosElement.php @@ -57,6 +57,17 @@ public static function validateDepartamentos(&$element, FormStateInterface $form 'departamento de linguistica', 'departamento de sociologia', 'departamento de teoria literaria e literatura comparada', + 'antropologia', + 'ciencia politica', + 'filosofia', + 'geografia', + 'historia', + 'letras classicas e vernaculas', + 'letras modernas', + 'letras orientais', + 'linguistica', + 'sociologia', + 'teoria literaria e literatura comparada', 'fla', 'flp', 'flf', diff --git a/src/Element/NumeroUspElement.php b/src/Element/NumeroUspElement.php index b540228..02c4c4f 100644 --- a/src/Element/NumeroUspElement.php +++ b/src/Element/NumeroUspElement.php @@ -26,32 +26,27 @@ public function getInfo(): array { /** * Validates the USP number. */ - public static function validateNumeroUsp( - &$element, - FormStateInterface $form_state, - &$complete_form - ): void { + public static function validateNumeroUsp(&$element, FormStateInterface $form_state,&$complete_form): void { $value = str_replace(['.', '-'], '', $element['#value']); - // Value selected in the Webform Select element. - $tipo = $form_state->getValue('tipo_de_numero_usp'); + $tipo = $form_state->getValue('tipo_de_vinculo'); switch ($tipo) { case 'intercambista': + case 'funcionario': if (strlen($value) != 7) { $form_state->setError( $element, - t('O Número USP de intercambista deve possuir 7 dígitos.') + t('O Número USP deve possuir 7 dígitos.') ); } - break; + break; case 'docente': case 'graduacao': case 'pos': - case 'funcionario': default: if (strlen($value) != 8) { $form_state->setError( From 074537e84a3ea7f756e6d3132bfc3b3e5e1dfade Mon Sep 17 00:00:00 2001 From: Camila Moraes Date: Thu, 11 Jun 2026 16:23:20 -0300 Subject: [PATCH 5/5] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20biblioteca?= =?UTF-8?q?=20replicado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/schema/webform_replicado.schema.yml | 8 +++ src/Element/NumeroUspElement.php | 21 ++++++- src/Form/SettingsForm.php | 69 ++++++++++++++++++++++ webform_replicado.links.menu.yml | 6 ++ webform_replicado.routing.yml | 7 +++ 5 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 config/schema/webform_replicado.schema.yml create mode 100644 src/Form/SettingsForm.php create mode 100644 webform_replicado.links.menu.yml create mode 100644 webform_replicado.routing.yml diff --git a/config/schema/webform_replicado.schema.yml b/config/schema/webform_replicado.schema.yml new file mode 100644 index 0000000..d325c1a --- /dev/null +++ b/config/schema/webform_replicado.schema.yml @@ -0,0 +1,8 @@ +# Schema for the configuration files of the webform_replicado module. +webform_replicado.settings: + type: config_object + label: 'webform_replicado settings' + mapping: + example: + type: string + label: 'Example' diff --git a/src/Element/NumeroUspElement.php b/src/Element/NumeroUspElement.php index 02c4c4f..c3909bd 100644 --- a/src/Element/NumeroUspElement.php +++ b/src/Element/NumeroUspElement.php @@ -4,6 +4,8 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element\Textfield; +use Uspdev\Replicado\Pessoa; +use Uspdev\Replicado\Replicado; /** * Provides a USP number element. @@ -56,7 +58,24 @@ public static function validateNumeroUsp(&$element, FormStateInterface $form_sta } break; } - + //validação para garantir que o número usp existe + + //$config = [ + //'host' => '192.168.100.89', + //'port' => 1498, + //'database' => 'rep_dbc', + //'username' => 'dbmaint_read', + //'password' => 'secret', + //'codundclg' => '8', + //'codundclgs' => '8,84', + //'pathlog' => 'path/to/your.log', + //'sybase' => true, + //'usarCache' => false, + //'debug' => false, + //'debugLevel' => 1, + // $validação = $config->get('validação') + //]; + } } \ No newline at end of file diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php new file mode 100644 index 0000000..75dd7aa --- /dev/null +++ b/src/Form/SettingsForm.php @@ -0,0 +1,69 @@ + 'textarea', + '#title' => $this->t('Validação'), + '#description' => $this->t('Validação das informações'), + '#default_value' => $this->config('webform_replicado.settings')->get('validação'), +]; + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, FormStateInterface $form_state): void { + // @todo Validate the form here. + // Example: + // @code + // if ($form_state->getValue('example') === 'wrong') { + // $form_state->setErrorByName( + // 'message', + // $this->t('The value is not correct.'), + // ); + // } + // @endcode + parent::validateForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state): void { + $this->config('webform_replicado.settings') + ->set('validação', $form_state->getValue('validação')) + ->save(); + parent::submitForm($form, $form_state); + } + +} diff --git a/webform_replicado.links.menu.yml b/webform_replicado.links.menu.yml new file mode 100644 index 0000000..378fd23 --- /dev/null +++ b/webform_replicado.links.menu.yml @@ -0,0 +1,6 @@ +webform_replicado.settings: + title: 'Webform Replicado' + description: 'Configurações de webform para replicado' + parent: system.admin_config_system + route_name: webform_replicado.settings + weight: 10 \ No newline at end of file diff --git a/webform_replicado.routing.yml b/webform_replicado.routing.yml new file mode 100644 index 0000000..014ec43 --- /dev/null +++ b/webform_replicado.routing.yml @@ -0,0 +1,7 @@ +webform_replicado.settings: + path: '/admin/config/webform_replicado/settings' + defaults: + _title: 'Settings' + _form: 'Drupal\webform_replicado\Form\SettingsForm' + requirements: + _permission: 'administer site configuration'