Error code:
phpcs: PHP Fatal error: Call to undefined method PHP_CodeSniffer_File::findStartOfStatement() in
/home/rosko/.drush/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php on line 216
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpcs:0
PHP 2. PHP_CodeSniffer_CLI->runphpcs() /usr/bin/phpcs:25
PHP 3. PHP_CodeSniffer_CLI->process($values = *uninitialized*) /usr/share/php/PHP/CodeSniffer/CLI.php:95
PHP 4. PHP_CodeSniffer->processFiles($files = array (0 => '/tmp/___0.tmp/idevels.module'), $local = FALSE) /usr/share/php/PHP/CodeSniffer/CLI.php:854
Triggering code:
/**
* @file
* idevels_events module file.
*/
use Drupal\Core\Form\FormStateInterface;
/**
* Implements hook_form_alter().
*/
function idevels_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
if ($form_id == 'events_node_edit_form' || $form_id == 'events_node_form') {
$form['title']['widget'][0]['value']['#maxlength'] = 80;
$form['field_select_price'] = array(
'#type' => 'select',
'#title' => t('Cost of event'),
'#options' => array(
0 => t('Free event'),
1 => t('Paid event'),
),
'#default_value' => 1,
'#weight' => 9.5,
);
$field_event_price_values = $form['field_event_price']['widget']['0']['value']['#default_value'];
if (empty($field_event_price_values)) {
$form['field_select_price']['#default_value'] = '';
}
$form['field_event_price']['#states'] = array(
'visible' => array(
':input[name=field_select_price]' => array('value' => 1)
),
);
array_unshift($form['actions']['publish']['#submit'], 'idevels_submit_events');
array_unshift($form['#validate'], 'idevels_validate_events');
$form['field_city']['widget']['#autocomplete_route_name'] = 'idevels.taxonomy.autocomplete';
$form['field_city']['widget']['#default_value'] = str_replace('"', '', $form['field_city']['widget']['#default_value']);
$form['field_event_date']['#attributes']['class'][] = 'future-date';
$form['field_event_date_end']['#attributes']['class'][] = 'future-date';
$form['#attached']['js'] = array(drupal_get_path('module', 'idevels') . '/js/idevelsAutocomplete.js', drupal_get_path('module', 'idevels') . '/js/createEventForm.js', drupal_get_path('module', 'idevels') . '/js/DatePastFuture.js');
}
if ($form_id == 'user_form' || $form_id == 'user_register_form' || $form_id == 'user_register') {
array_unshift($form['#validate'], 'idevels_validate_pastdate');
$form['field_birthday']['#attributes']['class'][] = 'past-date';
$form['#attached']['js'] = array(drupal_get_path('module', 'idevels') . '/js/DatePastFuture.js');
}
}
//Custom submit to change field_select_price value
function idevels_submit_events($form, FormStateInterface $form_state) {
$values = $form_state->getValues();
if ($values['field_select_price'] == '0') {
$form_state->setValue('field_event_price', array(''));
}
}
//Custom validate to change field_city value
function idevels_validate_events($form, FormStateInterface $form_state) {
$values = $form_state->getValues();
if (is_array($values['field_city'])) {
$string = implode(', ', $values['field_city']);
$form_state->setValue('field_city', array($string));
$form_state->getUserInput('field_city', array($string));
$input = $form_state->getUserInput();
$input['field_city'] = '"' . $input['field_city'] . '"';
$form_state->setUserInput($input);
}
if (empty($values['body'][0]['value'])) {
$form_state->setError($form['body'], t("The event body can't be empty."));
}
elseif (strlen(strip_tags($values['body'][0]['value'])) < 302) {
$form_state->setError($form['body'], t('The event discription is too short. Please enter at least 300 symbols. Event discription has !body_len symbols.',
array(
'!body_len' => strlen(strip_tags(html_entity_decode($values['body'][0]['value']))) - 2,
)));
}
if (empty($values['field_new_teaser'][0]['value'])) {
$form_state->setError($form['field_new_teaser'], t("The event teaser can't be empty."));
}
elseif (strlen(strip_tags(html_entity_decode($values['field_new_teaser'][0]['value']))) < 102) {
$form_state->setError($form['field_new_teaser'], t('The event teaser is too short. Please enter at least 100 symbols. Event teaser has !teaser_len symbols.',
array(
'!teaser_len' => strlen(strip_tags(html_entity_decode($values['field_new_teaser'][0]['value']))) - 2,
)));
}
if (!($values['field_event_date'][0]['value'] instanceof DateTime)) {
$form_state->setError($form['field_event_date'], t("The event date can't be empty."));
}
elseif ($values['field_event_date'][0]['value'] < new DateTime()) {
$form_state->setError($form['field_event_date'], t("The event start time can't be before now."));
}
if ($values['field_event_date_end'][0]['value'] instanceof DateTime) {
if ($values['field_event_date_end'][0]['value'] < $values['field_event_date'][0]['value']) {
$form_state->setError($form['field_event_date_end'], t("The event end time can't be before event start time."));
}
if ($values['field_event_date_end'][0]['value'] < new DateTime()) {
$form_state->setError($form['field_event_date_end'], t("The event end time can't be before now."));
}
}
}
// Custom validate for date
function idevels_validate_pastdate($form, FormStateInterface $form_state) {
$values = $form_state->getValues();
if (is_object($values['field_birthday'][0]['value']) && strtotime($values['field_birthday'][0]['value']->format('Y-m-d\TH:i:s')) > time()) {
$form_state->setError($form['field_birthday'], t("The date can't be before today"));
}
}
/**
* Implements hook_theme().
*/
function idevels_theme() {
return array(
'idevels_formatter' => array(
'variables' => array('lat' => NULL, 'lng' => NULL),
'template' => 'idevels-formatter',
),
);
}
Comments
Comment #1
rosk0Hm, it looks like this allready was fixed with 36ec6fd2679a5bcec0ccff404e81f7cbe710125d, but please confirm that I;m right.
Comment #3
klausiPlease upgrade to PHPCS 2.1.0 with composer install.
Thanks for reporting!
Comment #4
rosk0Hey, thanks for the quick fix!
Don't want to rise separate issue for this, but I think that composer.lock should be generated by composer update --no-dev before get committed because regular usage suppose production environment not development.
Feel free to ignore me :)
Comment #5
klausiHm, I don't think so. If you don't want dev dependencies then you need to use "composer install --no-dev". If you don't use that option composer will install require-dev dependencies per default.
I want to pin down the exact versions of PHPUnit etc in composer.lock, so that the environment for all developers and for Travis CI is the same.