ASong2U_Web/wp-content/plugins/sitepress-multilingual-cms/inc/quote/quote-get-submit.php

161 lines
6.8 KiB
PHP

<?php
/*
* Thickbox form submit process
*/
global $sitepress, $sitepress_settings, $wpdb;
/**
* Save for later
*/
if (isset($data['submit-for-later'])) {
$saved = $sitepress_settings['quote-get'];
$saved['step'] = 3;
$sitepress->save_settings(array('quote-get' => $saved));
echo '<script type="text/javascript">jQuery(\'#TB_closeWindowButton\').trigger(\'click\');</script>';
/**
* Produce quote
*/
} else if (isset($data['submit-produce'])) {
$saved = $sitepress_settings['quote-get'];
if (empty($saved['from'])
|| empty($saved['to'])
|| empty($saved['content'])
) {
die('data not valid');
}
$word_count = 0;
$wc_description = array();
foreach ($saved['content'] as $ID => $true) {
$wc_description[] = $saved['description'][$ID]['num'] . ' '
. $saved['description'][$ID]['title'] . ' with '
. $saved['description'][$ID]['words'] . ' words';
$word_count += intval($saved['description'][$ID]['words']);
}
$wc_description = implode(', ', $wc_description);
/**
* Create account
*/
if (!isset($sitepress_settings['site_id'])) {
$user = array();
$user['create_account'] = 1;
$user['anon'] = 1;
$user['platform_kind'] = 2;
$user['cms_kind'] = 1;
$user['blogid'] = $wpdb->blogid ? $wpdb->blogid : 1;
$user['url'] = get_option('home');
$user['title'] = get_option('blogname');
$user['description'] = $sitepress_settings['icl_site_description'];
$user['is_verified'] = 1;
$user['interview_translators'] = $sitepress_settings['interview_translators'];
$user['project_kind'] = $sitepress_settings['website_kind'];
$user['pickup_type'] = intval($sitepress_settings['translation_pickup_method']);
$user['ignore_languages'] = 1;
$user['word_count'] = $word_count;
$user['wc_description'] = $wc_description;
if (defined('ICL_AFFILIATE_ID') && defined('ICL_AFFILIATE_KEY')) {
$user['affiliate_id'] = ICL_AFFILIATE_ID;
$user['affiliate_key'] = ICL_AFFILIATE_KEY;
}
$notifications = 0;
if ($sitepress_settings['icl_notify_complete']) {
$notifications += 1;
}
if ($sitepress_settings['alert_delay']) {
$notifications += 2;
}
$user['notifications'] = $notifications;
// prepare language pairs
$pay_per_use = $sitepress_settings['translator_choice'] == 1;
$language_pairs = array($saved['from'] => $saved['to']);
$lang_pairs = array();
if (isset($language_pairs)) {
foreach ($language_pairs as $k => $v) {
$english_fr = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' ");
foreach ($v as $k => $v) {
$incr++;
$english_to = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' ");
$lang_pairs['from_language' . $incr] = ICL_Pro_Translation::server_languages_map($english_fr);
$lang_pairs['to_language' . $incr] = ICL_Pro_Translation::server_languages_map($english_to);
if ($pay_per_use) {
$lang_pairs['pay_per_use' . $incr] = 1;
}
}
}
}
require_once ICL_PLUGIN_PATH . '/lib/icl_api.php';
$icl_query = new ICanLocalizeQuery();
list($site_id, $access_key) = $icl_query->createAccount(array_merge($user, $lang_pairs));
if (!$site_id){
$user['pickup_type'] = ICL_PRO_TRANSLATION_PICKUP_POLLING;
list($site_id, $access_key) = $icl_query->createAccount(array_merge($user, $lang_pairs));
}
if (!$site_id) {
if (!$access_key) {
// We will force the next try to be http.
update_option('_force_mp_post_http', 1);
}
$saved = $sitepress_settings['quote-get'];
$saved['step'] = 3;
$sitepress->save_settings(array('quote-get' => $saved));
echo __('An unknown error has occurred when communicating with the ICanLocalize server. Please try again.', 'sitepress') . '<br /><br />';
require_once ICL_PLUGIN_PATH . '/inc/quote/quote-get.php';
exit;
} else {
if($user['pickup_type'] == ICL_PRO_TRANSLATION_PICKUP_POLLING){
$iclsettings['translation_pickup_method'] = ICL_PRO_TRANSLATION_PICKUP_POLLING;
}
$iclsettings['site_id'] = $site_id;
$iclsettings['access_key'] = $access_key;
$iclsettings['icl_account_email'] = $user['email'];
$sitepress->get_icl_translator_status($iclsettings);
$sitepress->save_settings($iclsettings);
}
/**
* Update account
*/
} else {
$data = array();
$data['word_count'] = $word_count;
$data['wc_description'] = $wc_description;
$data['site_id'] = $site_id = $sitepress_settings['site_id'];
$data['accesskey'] = $access_key = $sitepress_settings['access_key'];
$data['ignore_languages'] = 1;
require_once ICL_PLUGIN_PATH . '/lib/icl_api.php';
$icl_query = new ICanLocalizeQuery();
if ($icl_query->updateAccount($data) !== 0) {
$saved = $sitepress_settings['quote-get'];
$saved['step'] = 3;
$sitepress->save_settings(array('quote-get' => $saved));
echo __('An unknown error has occurred when communicating with the ICanLocalize server. Please try again.', 'sitepress') . '<br /><br />';
require_once ICL_PLUGIN_PATH . '/inc/quote/quote-get.php';
exit;
}
}
/**
* Set URL query
*/
$language_pairs = array($saved['from'] => $saved['to']);
$lang_pairs = array();
$incr = 1;
$query = '';
if (isset($language_pairs)) {
foreach ($language_pairs as $k => $v) {
$english_from = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' ");
$query .= '&to_lang_num=' . count($v);
$query .= '&from_language_name=' . $english_from;
foreach ($v as $k => $v) {
$english_to = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' ");
$query .= '&to_language_name_' . $incr . '=' . ICL_Pro_Translation::server_languages_map($english_to);
$incr++;
}
}
}
$url = ICL_API_ENDPOINT . '/websites/' . $site_id . '/quote?accesskey=' . $access_key . '&locale=' . $sitepress->get_default_language() . $query . '&compact=1';
// Call reopen JS
echo '<script type="text/javascript">icl_thickbox_reopen(\'' . $url . '\');</script>';
exit;
}