View source
<?php
define('KALTURA_DEFAULT_URL', 'http://www.kaltura.com/');
define('KALTURA_SAAS_DEFAULT_URL', 'http://www.kaltura.com/');
define('KALTURA_SAAS_TERMS_URL', 'http://corp.kaltura.com/terms_of_use');
define('KALTURA_INSTALL_BACKBUTTON', 'Back');
define('KALTURA_INSTALL_FWDBUTTON', 'Continue');
define('KALTURA_INSTALL_SKIPREGBUTTON', 'Skip Registration');
define('KALTURA_INSTALL_STEPS', 4);
define('KALTURACE_ACCEPTS_REGISTRATION', FALSE);
function kaltura_installation_form(&$form_state = NULL) {
global $base_url;
drupal_add_css(drupal_get_path('module', 'kaltura') . '/style/kaltura.css');
$step = isset($form_state['values']) ? (int) $form_state['storage']['step'] : 0;
$form_state['storage']['step'] = $step + 1;
$form['indicator'] = array(
'#value' => t('Step @step of @steps', array(
'@step' => $form_state['storage']['step'],
'@steps' => KALTURA_INSTALL_STEPS,
)),
'#prefix' => '<p>',
'#suffix' => '</p>',
);
$next = array(
'#type' => 'submit',
'#value' => KALTURA_INSTALL_FWDBUTTON,
);
$prev = array(
'#type' => 'submit',
'#value' => KALTURA_INSTALL_BACKBUTTON,
);
switch ($form_state['storage']['step']) {
case 1:
$desc_items = array(
t('If you wish to use Kaltura\'s hosted service at Kaltura.com, leave the default of <code>http://www.kaltura.com/</code>'),
t('If you have a Kaltura On-Prem or CE installation ready, enter the base URL of that Kaltura server.'),
);
$form['kaltura_server_url'] = array(
'#type' => 'textfield',
'#title' => t('Kaltura Server URL'),
'#default_value' => isset($form_state['storage']['kaltura_server_url']) ? $form_state['storage']['kaltura_server_url'] : KALTURA_SAAS_DEFAULT_URL,
'#description' => t('Enter the base URL of your Kaltura server.') . theme('item_list', $desc_items),
);
$form['next'] = $next;
break;
case 2:
$targs = array(
'!kaltura_url' => $form_state['storage']['kaltura_server_url'],
);
$form['intro'] = array(
'#value' => t('Do you have an existing account at !kaltura_url?', $targs),
);
$form['login_register'] = array(
'#type' => 'radios',
'#options' => array(
'register' => t('Register a new !kaltura_url account', $targs),
'login' => t('Log into existing !kaltura_url account', $targs),
),
'#default_value' => isset($form_state['storage']['login_register']) ? $form_state['storage']['login_register'] : 'register',
);
$form['prev'] = $prev;
$form['next'] = $next;
break;
case 3:
switch ($form_state['storage']['login_register']) {
case 'register':
$form['admin_name'] = array(
'#type' => 'textfield',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : '',
'#title' => 'Your Name',
'#description' => '',
);
$form['organisation'] = array(
'#type' => 'textfield',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : '',
'#title' => 'Your Organisation',
'#description' => '',
);
$form['admin_email'] = array(
'#type' => 'textfield',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : '',
'#title' => 'Email',
'#description' => '',
);
$form['cms_password'] = array(
'#type' => 'password',
'#title' => t('Kaltura Password'),
'#description' => t('This will be the password for your new Kaltura account.'),
);
$form['phone'] = array(
'#type' => 'textfield',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : '',
'#title' => 'Phone',
'#description' => '',
);
$form['partner_site_name'] = array(
'#type' => 'textfield',
'#title' => t('Website Name'),
'#default_value' => isset($form_state['storage']['partner_site_name']) ? $form_state['storage']['partner_site_name'] : variable_get('site_name', ''),
'#size' => 60,
'#maxlength' => 256,
);
$form['website'] = array(
'#type' => 'textfield',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : $base_url,
'#title' => 'Website URL',
'#description' => '',
);
$form['notification_url'] = array(
'#type' => 'value',
'#value' => url('kaltura/notification_handler', array(
'absolute' => TRUE,
)),
);
$kcategories = new KalturaContentCategories();
foreach ($kcategories->categories as $category) {
$categories[$category] = $category;
}
$form['site_content'] = array(
'#type' => 'checkboxes',
'#default_value' => isset($form_state['storage']['content_categories']) ? $form_state['storage']['content_categories'] : array(),
'#title' => 'Content Categories',
'#description' => 'Check all that apply.',
'#options' => $categories,
'#attributes' => array(
'class' => 'kaltura-install-website-content',
),
);
$form['description'] = array(
'#type' => 'textarea',
'#default_value' => isset($form_state['storage']['']) ? $form_state['storage'][''] : '',
'#title' => 'How do you plan to use Kaltura Platform?',
'#description' => '',
'#required' => TRUE,
);
$form['adult_content'] = array(
'#type' => 'checkboxes',
'#default_value' => isset($form_state['storage']['adult_content']) ? $form_state['storage']['adult_content'] : array(),
'#title' => 'Adult Content',
'#options' => array(
'yes' => t('This site will include adult content.'),
),
);
$terms_options = array(
'agree' => t('I agree to the !terms_of_use', array(
'!terms_of_use' => l('Kaltura Terms of Use', KALTURA_SAAS_TERMS_URL),
)),
);
if ($form_state['storage']['kaltura_server_url'] == KALTURA_SAAS_DEFAULT_URL) {
$form['terms_of_use'] = array(
'#type' => 'checkboxes',
'#default_value' => isset($form_state['storage']['terms_of_use']) ? $form_state['storage']['terms_of_use'] : array(),
'#title' => 'Terms of Use',
'#description' => '',
'#options' => $terms_options,
);
}
break;
case 'login':
$form['kaltura_partner_id'] = array(
'#type' => 'textfield',
'#title' => t('Kaltura Partner ID'),
'#description' => t('Visible under Account » Server Settings » Partner Info in Kaltura console.'),
'#default_value' => $form_state['storage']['kaltura_partner_id'],
);
$form['kaltura_login_email'] = array(
'#type' => 'textfield',
'#title' => t('Kaltura Partner Login'),
'#description' => t('The email address you use to log into Kaltura, visible under Account » Account Overview » Login Info in Kaltura console.'),
'#default_value' => $form_state['storage']['kaltura_login_email'],
);
$form['kaltura_login_password'] = array(
'#type' => 'password',
'#title' => t('Kaltura Password'),
'#default_value' => $form_state['storage']['kaltura_login_password'],
);
$form['notification_url'] = array(
'#type' => 'value',
'#value' => url('kaltura/notification_handler', array(
'absolute' => TRUE,
)),
);
break;
}
$form['prev'] = $prev;
$form['next'] = $next;
break;
case 4:
$form['prev'] = $prev;
$form['next'] = $next;
}
return $form;
}
function kaltura_installation_form_validate($form, &$form_state) {
if ($form_state['clicked_button']['#value'] == KALTURA_INSTALL_BACKBUTTON) {
$form_state['storage']['step'] -= 2;
return;
}
switch ($form_state['storage']['step']) {
case 1:
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;
}
$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:
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;
$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) {
try {
$config = Kalturahelpers::getServiceConfiguration();
$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(),
)));
}
}
}
break;
}
}
function kaltura_installation_form_submit($form, &$form_state) {
global $base_url;
$form_state['storage'] = array_merge($form_state['storage'], $form_state['values']);
switch ($form_state['storage']['step']) {
case 3:
switch ($form_state['storage']['login_register']) {
case 'login':
$config = Kalturahelpers::getServiceConfiguration();
$config->partnerId = $form_state['storage']['kaltura_partner_id'];
$config->serviceUrl = $form_state['storage']['kaltura_server_url'];
$client = new KalturaClient($config);
try {
$result = $client->partner
->getSecrets($form_state['storage']['kaltura_partner_id'], $form_state['storage']['kaltura_login_email'], $form_state['storage']['kaltura_login_password']);
variable_set('kaltura_partner_id', $result->id);
variable_set('kaltura_subp_id', $result->id . "00");
variable_set('kaltura_secret', $result->secret);
variable_set('kaltura_admin_secret', $result->adminSecret);
variable_set('kaltura_local_registration', 1);
variable_set('kaltura_server_url', $form_state['storage']['kaltura_server_url']);
variable_set('kaltura_partner_cms_email', $form_state['storage']['kaltura_login_email']);
variable_set('kaltura_partner_cms_password', $form_state['storage']['kaltura_login_password']);
variable_set('kaltura_partner_url2', $form_state['storage']['partner_url2']);
variable_set('kaltura_notification_type', 0);
kaltura_update_kaltura_partner(2, $partner->notificationUrl);
drupal_set_message('Congratulations! You have successfully installed the Kaltura Module and connected to your Kaltura server.');
drupal_goto('admin/settings/kaltura/general');
} catch (Exception $ex) {
drupal_set_message(t('Kaltura client exception: @message', array(
'@message' => $ex
->getMessage(),
)), 'error');
}
case 'register':
$partner = new KalturaPartner();
$partner->name = $form_state['storage']['partner_site_name'];
$partner->website = $form_state['storage']['website'];
$partner->notificationUrl = url('kaltura/notification_handler', array(
'absolute' => TRUE,
));
$partner->adminName = $form_state['storage']['admin_name'];
$partner->adminEmail = $form_state['storage']['admin_email'];
$partner->description = $form_state['storage']['description'];
$partner->commercialUse = 'non-commercial_use';
$partner->type = 102;
$partner->appearInSearch = 1;
$content_categories = new KalturaContentCategories();
foreach ($form_state['storage']['site_content'] as $k => $category) {
if ($category) {
$categories[] = $k;
}
}
$partner->contentCategories = !empty($categories) ? implode(',', $categories) : 'N/A';
$partner->adultContent = $form_state['storage']['adult_content']['yes'] ? TRUE : FALSE;
$config = KalturaHelpers::getServiceConfiguration();
$config->serviceUrl = $form_state['storage']['kaltura_server_url'];
$config->curlTimeout = 60;
$client = new KalturaClient($config);
watchdog('kaltura', 'Registering Kaltura partner: <pre>!partner</pre>', array(
'!partner' => print_r($partner, 1),
));
try {
$res = $client->partner
->register($partner, $form_state['storage']['cms_password']);
if ($res->id) {
variable_set('kaltura_partner_id', $res->id);
variable_set('kaltura_subp_id', $res->id . '00');
variable_set('kaltura_secret', $res->secret);
variable_set('kaltura_admin_secret', $res->adminSecret);
variable_set('kaltura_local_registration', 1);
variable_set('kaltura_server_url', $form_state['storage']['kaltura_server_url']);
variable_set('kaltura_partner_cms_email', $res->adminEmail);
variable_set('kaltura_partner_cms_password', $res->cmsPassword);
variable_set('kaltura_partner_url2', $form_state['storage']['partner_url2']);
variable_set('kaltura_notification_type', 0);
variable_set('kaltura_content_categories', $res->categories);
kaltura_update_kaltura_partner(2, $partner->notificationUrl);
drupal_set_message('Congratulations! You have successfully installed the Kaltura Video Module and registered for the Kaltura Partner Program.');
drupal_goto('admin/settings/kaltura/general');
}
else {
form_set_error('', t('Error registering for the Kaltura Partner Program: @message', array(
'@message' => $res['error'][0]['desc'],
)));
drupal_set_message(t('Error registering for the Kaltura Partner Program: @message', array(
'@message' => $res['error'][0]['desc'],
)), 'error');
}
} catch (Exception $ex) {
if (stristr($ex
->getMessage(), 'timed out after')) {
form_set_error('', t('Registration attempt with Kaltura server timed out. You may wish to try again, or !register_manually.', array(
'!register_manually' => l('register manually', 'http://corp.kaltura.com/about/signup'),
)));
}
else {
form_set_error('', t('Registration error: @message', array(
'@message' => $ex
->getMessage(),
)), 'error');
}
watchdog('kaltura', 'Registration error: @message', array(
'@message' => $ex
->getMessage(),
));
watchdog('kaltura', 'Backtrace for failed registration: <pre>!trace</pre>', array(
'!trace' => print_r($ex
->getTrace(), 1),
));
drupal_goto('admin/settings/kaltura/install');
}
break;
}
break;
}
}
function kaltura_get_partner_details($partner_id, $cms_email, $cms_password) {
$session_user = KalturaHelpers::getSessionUser();
$config = KalturaHelpers::getServiceConfiguration();
$config->partnerId = $partner_id;
$kaltura_client = new KalturaClient($config);
try {
$result = $kaltura_client->partner
->getsecrets($partner_id, $cms_email, $cms_password);
} catch (Exception $ex) {
drupal_set_message(t('Kaltura client exception: @message', array(
'@message' => $ex
->getMessage(),
)), 'error');
$result['error'] = $ex
->getMessage();
}
if ($result->id) {
return array(
$result->id,
$result->id . '00',
$result->notificationUrl,
$result->secret,
$result->adminSecret,
);
}
else {
return array(
FALSE,
$result['error'],
);
}
}