ASong2U_Web/wp-content/plugins/sitepress-multilingual-cms/modules/icl-translation/icl-reminder-popup.php

174 lines
8.2 KiB
PHP

<?php
// included from Sitepress::reminder_popups
//
// NOTE: this is also used for other popup links to ICanLocalize
global $wpdb;
$target = $_GET['target'];
$auto_resize = isset($_GET['auto_resize']) && $_GET['auto_resize'];
$unload_cb = isset($_GET['unload_cb']) ? $_GET['unload_cb'] : false;
if(preg_match('|^@select-translators;([^;]+);([^;]+)@|', $target, $matches)){
$from_lang = $matches[1];
$to_lang = $matches[2];
require_once ICL_PLUGIN_PATH . '/lib/Snoopy.class.php';
require_once ICL_PLUGIN_PATH . '/lib/xml2array.php';
require_once ICL_PLUGIN_PATH . '/lib/icl_api.php';
$icl_query = new ICanLocalizeQuery();
foreach($this->get_active_languages() as $lang){
$lang_server[$lang['code']] = ICL_Pro_Translation::server_languages_map($lang['english_name']);
}
if(!$this->icl_account_configured()){
$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('siteurl');
$user['title'] = get_option('blogname');
$user['description'] = @strval($this->settings['icl_site_description']);
$user['is_verified'] = 1;
if(defined('ICL_AFFILIATE_ID') && defined('ICL_AFFILIATE_KEY')){
$user['affiliate_id'] = ICL_AFFILIATE_ID;
$user['affiliate_key'] = ICL_AFFILIATE_KEY;
}
$user['interview_translators'] = $this->settings['interview_translators'];
$user['project_kind'] = 2;
$user['pickup_type'] = intval($this->settings['translation_pickup_method']);
$notifications = 0;
if ( !empty($this->settings['icl_notify_complete'])){
$notifications += 1;
}
if ( $this->settings['alert_delay']){
$notifications += 2;
}
$user['notifications'] = $notifications;
$user['ignore_languages'] = 0;
$user['from_language1'] = $lang_server[$from_lang];
$user['to_language1'] = $lang_server[$to_lang];
list($site_id, $access_key) = $icl_query->createAccount($user);
if($site_id && $access_key){
$this->settings['site_id'] = $iclsettings['site_id'] = $site_id;
$this->settings['access_key'] = $iclsettings['access_key'] = $access_key;
$iclsettings['language_pairs'][$from_lang][$to_lang] = 1;
$this->save_settings($iclsettings);
}else{
$user['pickup_type'] = ICL_PRO_TRANSLATION_PICKUP_POLLING;
list($site_id, $access_key) = $icl_query->createAccount($user);
if($site_id && $access_key){
$this->settings['site_id'] = $iclsettings['site_id'] = $site_id;
$this->settings['access_key'] = $iclsettings['access_key'] = $access_key;
$iclsettings['language_pairs'][$from_lang][$to_lang] = 1;
$iclsettings['translation_pickup_method'] = ICL_PRO_TRANSLATION_PICKUP_POLLING;
$this->save_settings($iclsettings);
}else{
printf(__('<p>In order to enable ICanLocalize translation, your site needs to be on a public server (not localhost). Please <a%s>contact us</a> for support. </p><p>Show <a%s>debug information</a>.</p>', 'sitepress'),
' target="_blank" href="http://wpml.org/?page_id=5255"',
' a href="admin.php?page='.ICL_PLUGIN_FOLDER.'/menu/troubleshooting.php&icl_action=icl-connection-test&data='.base64_encode(serialize($user)).'#icl-connection-test"');
exit;
}
}
}else{
$iclsettings['language_pairs'] = $this->settings['language_pairs'];
$iclsettings['language_pairs'][$from_lang][$to_lang] = 1;
$this->save_settings($iclsettings);
// update account - add language pair
$incr = 0;
foreach($this->settings['language_pairs'] as $k=>$v){
foreach($v as $k2=>$v2){
$incr++;
$data['from_language'.$incr] = $lang_server[$k];
$data['to_language'.$incr] = $lang_server[$k2];
}
}
$data['site_id'] = $this->settings['site_id'];
$data['accesskey'] = $this->settings['access_key'];
$data['create_account'] = 0;
$icl_query->updateAccount($data);
}
$icl_query = new ICanLocalizeQuery($this->settings['site_id'], $this->settings['access_key']);
$website_details = $icl_query->get_website_details();
if(empty($website_details)){
echo '<p class="error">';
printf(__('There was a problem connecting to ICanLocalize. Please close this window and try again. If the problem persists please <a%s>contact us</a>.', 'sitepress'),
' target="_blank" href="http://wpml.org/?page_id=5255"');
echo '</p>';
exit;
}
$translation_languages = $website_details['translation_languages']['translation_language'];
if(isset($translation_languages['attr'])){
$buff = $translation_languages;
unset($translation_languages);
$translation_languages[0] = $buff;
unset($buff);
}
foreach((array)$translation_languages as $lpair){
if($lpair['attr']['from_language_name'] == $lang_server[$from_lang] && $lpair['attr']['to_language_name'] == $lang_server[$to_lang]){
$lang_pair_id = $lpair['attr']['id'];
}
}
$target = ICL_API_ENDPOINT . '/websites/' . $this->settings['site_id'] . '/website_translation_offers/'.$lang_pair_id.'?accesskey=' . $this->settings['access_key'] . '&compact=1';
}
$support_mode = isset($_GET['support']) ? $_GET['support'] : '';
if ($support_mode == '1') {
$iclq = new ICanLocalizeQuery($this->settings['support_site_id'], $this->settings['support_access_key']);
} else {
$iclq = new ICanLocalizeQuery($this->settings['site_id'], $this->settings['access_key']);
}
$session_id = $iclq->get_current_session(true, $support_mode == '1');
$admin_lang = $this->get_admin_language();
if (isset($_GET['code'])) {
$add = '&code=' . urlencode($_GET['code']);
}else{
$add = '';
}
if (strpos($target, '?') === false) {
$target .= '?';
} else {
$target .= '&';
}
$target .= "session=" . $session_id . "&lc=" . $admin_lang . $add;
$on_click = isset($_GET['message_id']) ? 'parent.dismiss_message(' . esc_js($_GET['message_id']) . ', \'' . wp_create_nonce('icl_delete_message_nonce') . '\');' : '';
$can_delete = isset($_GET['message_id']) ? $wpdb->get_var($wpd->prepare("SELECT can_delete FROM {$wpdb->prefix}icl_reminders WHERE id=%d", $_GET['message_id'])) == '1' : false;
$image_path = ICL_PLUGIN_URL . '/res/img/web_logo_small.png';
echo '<img src="' . $image_path . '" style="margin: 0px 0px 0px; float: left; "><br clear="all" />';
?>
<?php if($can_delete): ?>
<a id="icl_reminder_dismiss" href="#" onclick="<?php echo $on_click?>"><?php _e('Dismiss', 'sitepress')?></a>
<br />
<br />
<?php endif; ?>
<iframe src="<?php echo $target;?>" style="width:100%; height:92%" onload="<?php if($auto_resize):?>jQuery('#TB_window').css('width','90%').css('margin-left', '-45%');<?php endif; ?><?php if($unload_cb):?>jQuery('#TB_window').unbind('unload').bind('tb_unload', <?php echo esc_js($unload_cb) ?>);<?php endif; ?>">