You are here

function globallink_pd_settings_validate in GlobalLink Connect for Drupal 7.6

Same name and namespace in other branches
  1. 7.7 globallink_settings.inc \globallink_pd_settings_validate()
  2. 7.5 globallink_settings.inc \globallink_pd_settings_validate()

Handles validation of globallink_pd_settings form.

File

./globallink_settings.inc, line 108

Code

function globallink_pd_settings_validate(&$form, &$form_state) {
  module_load_include('inc', 'globallink', 'gl_ws/gl_ws_common');
  $project_short_code_char_arr = str_split(str_replace(' ', '', $form_state['values']['globallink_pd_projectid']));
  foreach ($project_short_code_char_arr as $val) {
    if (!preg_match('/[a-zA-Z0-9\\,_]/', $val)) {
      form_set_error('', t('Only enter comma seperated GlobalLink Project Short Code.'));
      return FALSE;
    }
    if ($val === strtolower($val) && !is_numeric($val) && $val != ',' && $val != '_' && $val != '') {
      form_set_error('', t('GlobalLink Project Short Code is in lowercase.'));
      return FALSE;
    }
  }
  $project_short_code_arr = explode(',', str_replace(' ', '', $form_state['values']['globallink_pd_projectid']));
  foreach ($project_short_code_arr as $val) {
    if (count(array_keys($project_short_code_arr, $val)) > 1) {
      form_set_error('', t('GlobalLink Project Short Code has duplicates.'));
      return FALSE;
    }
  }
  $value = $form_state['values']['globallink_pd_max_target'];
  if (!is_numeric($value)) {
    form_set_error('globallink_pd_max_target', t('Max Target Count is not a number.'));
    return FALSE;
  }
  elseif ($value < 1) {
    form_set_error('globallink_pd_max_target', t('Max Target Count should be greater than 1.'));
    return FALSE;
  }
  $prefix_len = strlen($form_state['values']['globallink_pd_submissionprefix']);
  if ($prefix_len > 118) {
    form_set_error('globallink_pd_max_target', t('Submission Name cannot be longer than 118 characters. Currently ' . $prefix_len . ' characters long.'));
    return FALSE;
  }
  if (isset($form_state['values']['globallink_pd_password']) && $form_state['values']['globallink_pd_password'] != '') {
    try {
      $pd_obj = new ProjectDirector();
      $url = strrev($form_state['values']['globallink_pd_url']);
      if (ord($url) == 47) {
        $url = substr($url, 1);
      }
      $r_url = strrev($url);
      $pd_obj->url = $r_url;
      $pd_obj->username = $form_state['values']['globallink_pd_username'];
      $pd_obj->password = $form_state['values']['globallink_pd_password'];
      $pd_obj->projectShortCode = $form_state['values']['globallink_pd_projectid'];
      $pd_obj->submissionPrefix = $form_state['values']['globallink_pd_submissionprefix'];
      $pd_obj->classifier = $form_state['values']['globallink_pd_classifier'];
      $pd_obj->maxTargetCount = $form_state['values']['globallink_pd_max_target'];
      $success = globallink_test_pd_connectivity($pd_obj);
      if (!is_bool($success)) {
        form_set_error('', t($success));
      }
    } catch (SoapFault $se) {
      watchdog('GlobalLink', 'SOAP Exception - %function - Code[%faultcode], Message[%faultstring]', array(
        '%function' => __FUNCTION__,
        '%faultcode' => $se->faultcode,
        '%faultstring' => $se->faultstring,
      ), WATCHDOG_ERROR);
      form_set_error('', t('Web Services Error: @faultcode - @faultstring', array(
        '@faultcode' => $se->faultcode,
        '@faultstring' => $se->faultstring,
      )));
    } catch (Exception $e) {
      watchdog('GlobalLink', 'Exception - %function - File[%file], Line[%line], Code[%code], Message[%message]', array(
        '%function' => __FUNCTION__,
        '%file' => $e
          ->getFile(),
        '%line' => $e
          ->getLine(),
        '%code' => $e
          ->getCode(),
        '%message' => $e
          ->getMessage(),
      ), WATCHDOG_ERROR);
      form_set_error('', t('Error: @message', array(
        '@message' => $e
          ->getMessage(),
      )));
    }
  }
}