function qs_service() { global $q_config, $qs_public_key, $qs_error_messages; if (!isset($_REQUEST['post'])) { echo '<script type="text/javascript">document.location="edit.php";</script>'; printf(__('To translate a post, please go to the <a href="%s">edit posts overview</a>.', 'qtranslate'), 'edit.php'); exit; } $post_id = intval($_REQUEST['post']); $translate_from = ''; if (isset($_REQUEST['source_language']) && qtrans_isEnabled($_REQUEST['source_language'])) { $translate_from = $_REQUEST['source_language']; } if (isset($_REQUEST['target_language']) && qtrans_isEnabled($_REQUEST['target_language'])) { $translate_to = $_REQUEST['target_language']; } if ($translate_to == $translate_from) { $translate_to = ''; } $post =& get_post($post_id); if (!$post) { printf(__('Post with id "%s" not found!', 'qtranslate'), $post_id); return; } $default_service = intval(get_option('qs_default_service')); $service_settings = get_option('qs_service_settings'); // Detect available Languages and possible target languages $available_languages = qtrans_getAvailableLanguages($post->post_content); if (sizeof($available_languages) == 0) { $error = __('The requested Post has no content, no Translation possible.', 'qtranslate'); } // try to guess source and target language if (!in_array($translate_from, $available_languages)) { $translate_from = ''; } $missing_languages = array_diff($q_config['enabled_languages'], $available_languages); if (empty($translate_from) && in_array($q_config['default_language'], $available_languages) && $translate_to != $q_config['default_language']) { $translate_from = $q_config['default_language']; } if (empty($translate_to) && sizeof($missing_languages) == 1) { $translate_to = $missing_languages[0]; } if (in_array($translate_to, $available_languages)) { $message = __('The Post already has content for the selected target language. If a translation request is send, the current text for the target language will be overwritten.', 'qtranslate'); } if (sizeof($available_languages) == 1) { if ($available_languages[0] == $translate_to) { $translate_to = ''; } $translate_from = $available_languages[0]; } elseif ($translate_from == '' && sizeof($available_languages) > 1) { $languages = qtrans_getSortedLanguages(); foreach ($languages as $language) { if ($language != $translate_to && in_array($language, $available_languages)) { $translate_from = $language; break; } } } // link to current page with get variables $url_link = add_query_arg('post', $post_id); if (!empty($translate_to)) { $url_link = add_query_arg('target_language', $translate_to, $url_link); } if (!empty($translate_from)) { $url_link = add_query_arg('source_language', $translate_from, $url_link); } // get correct title and content $post_title = qtrans_use($translate_from, $post->post_title); $post_content = qtrans_use($translate_from, $post->post_content); if (isset($translate_from) && isset($translate_to)) { $title = sprintf('Translate "%1$s" from %2$s to %3$s', htmlspecialchars($post_title), $q_config['language_name'][$translate_from], $q_config['language_name'][$translate_to]); } elseif (isset($translate_from)) { $title = sprintf('Translate "%1$s" from %2$s', htmlspecialchars($post_title), $q_config['language_name'][$translate_from]); } else { $title = sprintf('Translate "%1$s"', htmlspecialchars($post_title)); } // Check data if (isset($_POST['service_id'])) { $service_id = intval($_POST['service_id']); $default_service = $service_id; update_option('qs_default_service', $service_id); $order_key = substr(md5(time() . AUTH_KEY), 0, 20); $request = array('order_service_id' => $service_id, 'order_url' => get_option('home'), 'order_key' => $order_key, 'order_title' => $post_title, 'order_text' => $post_content, 'order_source_language' => $translate_from, 'order_source_locale' => $q_config['locale'][$translate_from], 'order_target_language' => $translate_to, 'order_target_locale' => $q_config['locale'][$translate_to]); // check for additional fields if (is_array($service_settings[$service_id])) { $request['order_required_field'] = array(); foreach ($service_settings[$service_id] as $setting => $value) { $request['order_required_field'][$setting] = $value; } } $answer = qs_queryQS(QS_INIT_TRANSLATION, $request); if (isset($answer['error'])) { $error = sprintf(__('An error occured: %s', 'qtranslate'), $qs_error_messages[$answer['error']]); if ($answer['message'] != '') { $error .= '<br />' . sprintf(__('Additional information: %s', 'qtranslate'), qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($answer['message'])); } } if (isset($answer['order_id'])) { $orders = get_option('qs_orders'); if (!is_array($orders)) { $orders = array(); } $orders[] = array('post_id' => $post_id, 'service_id' => $service_id, 'source_language' => $translate_from, 'target_language' => $translate_to, 'order' => array('order_key' => $order_key, 'order_id' => $answer['order_id'])); update_option('qs_orders', $orders); if (empty($answer['message'])) { $order_completed_message = ''; } else { $order_completed_message = htmlspecialchars($answer['message']); } qs_UpdateOrder($answer['order_id']); } } if (isset($error)) { ?> <div class="wrap"> <h2><?php _e('qTranslate Services', 'qtranslate'); ?> </h2> <div id="message" class="error fade"><p><?php echo $error; ?> </p></div> <p><?php printf(__('An serious error occured and qTranslate Services cannot proceed. For help, please visit the <a href="%s">Support Forum</a>', 'qtranslate'), 'http://www.qianqin.de/qtranslate/forum/'); ?> </p> </div> <?php return; } if (isset($order_completed_message)) { ?> <div class="wrap"> <h2><?php _e('qTranslate Services', 'qtranslate'); ?> </h2> <div id="message" class="updated fade"><p><?php _e('Order successfully sent.', 'qtranslate'); ?> </p></div> <p><?php _e('Your translation order has been successfully transfered to the selected service.', 'qtranslate'); ?> </p> <?php if (!empty($order_completed_message)) { ?> <p><?php printf(__('The service returned this message: %s', 'qtranslate'), $order_completed_message); ?> </p> <?php } ?> <p><?php _e('Feel free to choose an action:', 'qtranslate'); ?> </p> <ul> <li><a href="<?php echo add_query_arg('target_language', null, $url_link); ?> "><?php _e('Translate this post to another language.', 'qtranslate'); ?> </a></li> <li><a href="edit.php"><?php _e('Translate a different post.', 'qtranslate'); ?> </a></li> <li><a href="options-general.php?page=qtranslate#qtranslate_service_settings"><?php _e('View all open orders.', 'qtranslate'); ?> </a></li> <li><a href="options-general.php?page=qtranslate&qs_cron=true#qtranslate_service_settings"><?php _e('Let qTranslate Services check if any open orders are finished.', 'qtranslate'); ?> </a></li> <li><a href="<?php echo get_permalink($post_id); ?> "><?php _e('View this post.', 'qtranslate'); ?> </a></li> </ul> </div> <?php return; } ?> <div class="wrap"> <h2><?php _e('qTranslate Services', 'qtranslate'); ?> </h2> <?php if (!empty($message)) { ?> <div id="message" class="updated fade"><p><?php echo $message; ?> </p></div> <?php } ?> <h3><?php echo $title; ?> </h3> <form action="edit.php?page=qtranslate_services" method="post" id="qtranslate-services-translate"> <p><?php if (sizeof($available_languages) > 1) { $available_languages_name = array(); foreach (array_diff($available_languages, array($translate_from)) as $language) { $available_languages_name[] = '<a href="' . add_query_arg('source_language', $language, $url_link) . '">' . $q_config['language_name'][$language] . '</a>'; } $available_languages_names = join(", ", $available_languages_name); printf(__('Your article is available in multiple languages. If you do not want to translate from %1$s, you can switch to one of the following languages: %2$s', 'qtranslate'), $q_config['language_name'][$translate_from], $available_languages_names); } ?> </p> <input type="hidden" name="post" value="<?php echo $post_id; ?> "/> <input type="hidden" name="source_language" value="<?php echo $translate_from; ?> "/> <?php if (empty($translate_to)) { ?> <p><?php _e('Please choose the language you want to translate to:', 'qtranslate'); ?> </p> <ul> <?php foreach ($q_config['enabled_languages'] as $language) { if ($translate_from == $language) { continue; } ?> <li><label><input type="radio" name="target_language" value="<?php echo $language; ?> " /> <?php echo $q_config['language_name'][$language]; ?> </li> <?php } ?> </ul> <p class="submit"> <input type="submit" name="submit" class="button-primary" value="<?php _e('Continue', 'qtranslate'); ?> " /> </p> <?php } else { ?> <p><?php printf(__('Please review your article and <a href="%s">edit</a> it if needed.', 'qtranslate'), 'post.php?action=edit&post=' . $post_id); ?> </p> <textarea name="qs_content_preview" id="qs_content_preview" readonly="readonly"><?php echo $post_content; ?> </textarea> <?php $timestamp = time(); if ($timestamp != qs_queryQS(QS_VERIFY, $timestamp)) { ?> <p class="error"><?php _e('ERROR: Could not connect to qTranslate Services. Please try again later.', 'qtranslate'); ?> </p> <?php return; } ?> <h4><?php _e('Use the following Translation Service:', 'qtranslate'); ?> </h4> <ul> <?php if ($services = qs_queryQS(QS_GET_SERVICES)) { foreach ($services as $service_id => $service) { // check if we have data for all required fields $requirements_matched = true; foreach ($service['service_required_fields'] as $field) { if (!isset($service_settings[$service_id][$field['name']]) || $service_settings[$service_id][$field['name']] == '') { $requirements_matched = false; } } if (!$requirements_matched) { ?> <li> <label><input type="radio" name="service_id" disabled="disabled" /> <b><?php echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($service['service_name']); ?> </b> ( <a href="<?php echo $service['service_url']; ?> " target="_blank"><?php _e('Website', 'qtranslate'); ?> </a> )</label> <p class="error"><?php printf(__('Cannot use this service, not all <a href="%s">required fields</a> filled in for this service.', 'qtranslate'), 'options-general.php?page=qtranslate#qs_service_' . $service_id); ?> </p> <p class="service_description"><?php echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($service['service_description']); ?> </p> </li> <?php } else { ?> <li><label><input type="radio" name="service_id" <?php if ($default_service == $service['service_id']) { echo 'checked="checked"'; } ?> value="<?php echo $service['service_id']; ?> " /> <b><?php echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($service['service_name']); ?> </b> ( <a href="<?php echo $service['service_url']; ?> " target="_blank"><?php _e('Website', 'qtranslate'); ?> </a> )</label><p class="service_description"><?php echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($service['service_description']); ?> </p></li> <?php } } ?> </ul> <p><?php _e('Your article will be SSL encrypted and securly sent to qTranslate Services, which will forward your text to the chosen Translation Service. Once qTranslate Services receives the translated text, it will automatically appear on your blog.', 'qtranslate'); ?> </p> <p class="submit"> <input type="hidden" name="target_language" value="<?php echo $translate_to; ?> "/> <input type="submit" name="submit" class="button-primary" value="<?php _e('Request Translation', 'qtranslate'); ?> " /> </p> <?php } } ?> </div> </form> <?php }
function qs_quote() { global $q_config; $mode = 'full'; if (isset($_POST['mode'])) { $mode = $_POST['mode']; } if ($mode != 'price_only') { $mode = 'full'; } $service_id = $_POST['service_id']; $translate_from = $_POST['translate_from']; $translate_to = $_POST['translate_to']; $post =& get_post($_POST['post_id']); $post = qtrans_use($translate_from, $post); $post_title = $post->post_title; $post_content = $post->post_content; $post_excerpt = $post->post_excerpt; $request = array('order_service_id' => $service_id, 'order_title' => $post_title, 'order_text' => $post_content, 'order_excerpt' => $post_excerpt, 'order_source_language' => $translate_from, 'order_source_locale' => $q_config['locale'][$translate_from], 'order_target_language' => $translate_to, 'order_target_locale' => $q_config['locale'][$translate_to], 'order_confirm_url' => get_admin_url(null, 'edit.php?page=qtranslate_services&confirm=1&post=' . $_POST['post_id'] . '&source_language=' . $translate_from . '&target_language=' . $translate_to . '&service_id=' . $service_id), 'order_failure_url' => get_admin_url(null, 'edit.php?page=qtranslate_services&post=' . $_POST['post_id'] . '&source_language=' . $translate_from . '&target_language=' . $translate_to . '&service_id=' . $service_id)); $answer = qs_queryQS(QS_QUOTE, $request); $price = __('unavailable', 'qtranslate'); $currency = ''; $short = ''; if (isset($answer['price'])) { if ($answer['price'] == 0) { $price = __('free', 'qtranslate'); } else { if ($answer['price'] < 0) { $price = __('unavailable', 'qtranslate'); } else { $price = number_format_i18n($answer['price'], 2); $currency = $answer['currency']; } } $content = sprintf(__('<p>Price: %1$s %2$s</p>', 'qtranslate'), $currency, $price); $short = sprintf(__('~ %1$s %2$s', 'qtranslate'), $currency, $price); if (!empty($answer['paypalurl'])) { $content .= '<div class="qs_submit"><a href="' . $answer['paypalurl'] . '"><img src="https://fpdbs.paypal.com/dynamicimageweb?cmd=_dynamic-image&locale=' . $q_config['locale'][$q_config['language']] . '"></a></div>'; } else { $content .= '<div class="qs_submit"><a class="button-primary" onclick="sendorder();">' . __('Request Translation', 'qtranslate') . '</a></div>'; } } else { $content = '<p>' . __('An error occured!', 'qtranslate'); if (isset($answer['error'])) { $content .= '<br>' . $answer['message']; } $content .= '</p>'; } if ($mode == 'full') { echo "jQuery('#submitdiv .request').html('"; echo $content; echo "');"; } else { if ($mode == 'price_only') { echo "jQuery('.qsprice').html('"; echo $short; echo "');"; } } die; }