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

rosk0’s picture

Hm, it looks like this allready was fixed with 36ec6fd2679a5bcec0ccff404e81f7cbe710125d, but please confirm that I;m right.

  • klausi committed 151ba8f on 8.x-2.x
    Issue #2401777: Bump PHPCS dependency to 2.1.0 minimum to avoid...
klausi’s picture

Status: Active » Fixed

Please upgrade to PHPCS 2.1.0 with composer install.

Thanks for reporting!

rosk0’s picture

Hey, 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 :)

klausi’s picture

Hm, 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.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.