You are here

function kaltura_installation_form_validate in Kaltura 6.2

File

includes/kaltura.install.inc, line 206
Contains functions for installation of Kaltura module.

Code

function kaltura_installation_form_validate($form, &$form_state) {
  if ($form_state['clicked_button']['#value'] == KALTURA_INSTALL_BACKBUTTON) {
    $form_state['storage']['step'] -= 2;
    return;
  }

  // drupal_set_message(t('Validation called for step @step.', array('@step' => $form_state['storage']['step'])));
  switch ($form_state['storage']['step']) {
    case 1:

      // check that the supplied URL is valid
      if (!valid_url($form_state['values']['kaltura_server_url'])) {
        $targs = array(
          '%kaltura_server_url' => $form_state['values']['kaltura_server_url'],
        );
        watchdog('kaltura', 'Install error: %kaltura_server_url is not a valid URL.', $targs, WATCHDOG_ERROR);
        form_set_error('kaltura_server_url', '%kaltura_server_url does not appear to be a valid URL.', $targs);
        return;
      }

      // check that the supplied URL is a live Kaltura server
      $config = KalturaHelpers::getServiceConfiguration();
      $config->serviceUrl = $form_state['values']['kaltura_server_url'];
      $config->curlTimeout = 30;
      $client = new KalturaClient($config);
      try {
        if ($ping = $client->system
          ->ping()) {
          $targs = array(
            '%kaltura_server_url' => $form_state['values']['kaltura_server_url'],
          );
          $tmessage = 'Confirmed connection to %kaltura_server_url';
          drupal_set_message(t($tmessage, $targs));
          watchdog('kaltura', $tmessage, $targs, WATCHDOG_NOTICE);
          return;
        }
      } catch (Exception $ex) {
        $targs = array(
          '!file' => $ex
            ->getFile(),
          '!line' => $ex
            ->getLine(),
          '%message' => $ex
            ->getMessage(),
          '!code' => $ex
            ->getCode(),
          '%kaltura_server_url' => $form_state['values']['kaltura_server_url'],
        );
        $tmessage = 'Kaltura ping to %kaltura_server_url failed with Kaltura exception: %message (in !file @ line !line).';
        form_set_error('kaltura_server_url', t($tmessage, $targs));
        watchdog('kaltura', $tmessage, $targs, WATCHDOG_ERROR);
      }
      break;
    case 2:

      // radio boxes ... if they get this wrong, they get a prize.
      break;
    case 3:
      switch ($form_state['storage']['login_register']) {
        case 'register':
          if ($form_state['storage']['kaltura_server_url'] == KALTURA_SAAS_SERVER_URL) {
            if (!isset($form_state['values']['terms_of_use'])) {
              form_set_error('terms_of_use', 'You must agree to the Kaltura Terms of Use to register with Kaltura SaaS.');
            }
          }
          break;
        case 'login':
          $vc = TRUE;

          // whether to attempt client validation as well

          /* Kaltura client will prepend slash, so let's trim it here */
          $form['storage']['kaltura_url'] = trim($form_state['storage']['kaltura_server_url'], ' /');
          if (!valid_url($form_state['storage']['kaltura_server_url'], TRUE)) {
            form_set_error('kaltura_server_url', t('Kaltura URL must be a valid URL.'));
            $vc = FALSE;
          }
          if (empty($form_state['values']['kaltura_partner_id'])) {
            form_set_error('kaltura_partner_id', t('Kaltura Partner ID must be provided.'));
            $vc = FALSE;
          }
          if (!valid_email_address($form_state['values']['kaltura_login_email'])) {
            form_set_error('kaltura_login_password', t('You must provide a valid Kaltura login email.'));
            $vc = FALSE;
          }
          if (empty($form_state['values']['kaltura_login_password'])) {
            form_set_error('kaltura_login_password', t('You must enter a Kaltura login password.'));
            $vc = FALSE;
          }
          if ($vc) {

            // client failure here (eg bad pass) throws a kaltura exception
            try {

              // test access credentials
              $config = Kalturahelpers::getServiceConfiguration();

              // we're still in validate, so the changed values aren't
              // committed to $form_state['storage'] yet
              $config->partnerId = $form_state['values']['kaltura_partner_id'];
              $config->serviceUrl = $form_state['storage']['kaltura_server_url'];
              $client = new KalturaClient($config);
              $result = $client->partner
                ->getSecrets($form_state['values']['kaltura_partner_id'], $form_state['values']['kaltura_login_email'], $form_state['values']['kaltura_login_password']);
              $form_state['storage']['result'] = $result;
              drupal_set_message(t('Kaltura credentials verified against !kaltura_url', array(
                '!kaltura_url' => $form_state['storage']['kaltura_server_url'],
              )));
              $form['storage']['secret'] = $result->secret;
              $form['storage']['adminSecret'] = $result->adminSecret;
            } catch (Exception $ex) {
              form_set_error('', t('Kaltura credentials failed login: %message', array(
                '%message' => $ex
                  ->getMessage(),
                '%file' => $ex
                  ->getFile(),
                '%line' => $ex
                  ->getLine(),
                '%code' => $ex
                  ->getCode(),
              )));

              //if (module_exists('devel')) {

              //  dpm($ex->getTrace(), 'Exception stack trace');

              //}
            }
          }
      }
      break;
  }
}