/** * Extract a language from a multilingual string. * Mostly uses qtrans_split, but ensures that it is available * * @param string $value The value to be splitted * @param string $language The code of the required language * @return mixed The splitted value or the original if it is not multilingual */ public function split($value, $language = null) { global $q_config; # qTranslate is not available if (!function_exists('qtrans_split')) { return $value; } # If there is no language passed, use the active one if (!$language) { $language = $q_config['language']; } # Check if values are actually multilingual if (!is_string($value)) { return $value; } # Split the values $values = apply_filters('uf_ml_q_before_split', $value, $language); $values = qtrans_split($value); $values = apply_filters('uf_ml_q_after_split', $values, $language); if (isset($values[$language])) { $nice = array(); foreach ($values as $lang => $data) { $nice[$lang] = maybe_unserialize($data); } return apply_filters('uf_ml_q_split', $nice[$language], $value, $language); } else { return apply_filters('uf_ml_q_split', $value, $value, $language); } }
function load_meta($post_id) { $meta = array(); foreach ($this->field_names as $field => $field_label) { $field_id = "qtrans_meta:{$field}"; $field_data = get_post_meta($post_id, $field_id, true); $meta[$field] = qtrans_split($field_data); } return $meta; }
/** * */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { module_load_include('inc', 'donkeymedia_migrate', 'qtranslate_parser'); $result = array(); $available_languages = array('en', 'de'); $default_language = 'en'; $available_content = qtrans_split($value, $available_languages); foreach ($available_languages as $lang) { if (isset($available_content[$lang]) && strlen(trim($available_content[$lang])) > 1) { $result[] = $lang; } } return $result; }
function render_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); // vars $o = array('id', 'class', 'name', 'placeholder', 'rows'); $s = array('readonly', 'disabled'); $e = ''; // maxlength if ($field['maxlength'] !== '') { $o[] = 'maxlength'; } // rows if (empty($field['rows'])) { $field['rows'] = 8; } // populate atts $atts = array(); foreach ($o as $k) { $atts[$k] = $field[$k]; } // special atts foreach ($s as $k) { if ($field[$k]) { $atts[$k] = $k; } } // render $e .= '<div class="acf-input-wrap multi-language-field">'; foreach ($languages as $language) { $class = $language === $currentLanguage ? 'wp-switch-editor current-language' : 'wp-switch-editor'; $e .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $atts['class'] = $field['class']; if ($language === $currentLanguage) { $atts['class'] .= ' current-language'; } $atts['name'] = $field['name'] . "[{$language}]"; $atts['data-language'] = $language; $e .= '<textarea ' . acf_esc_attr($atts) . ' >'; $e .= esc_textarea($values[$language]); $e .= '</textarea>'; } $e .= '</div>'; // return echo $e; }
function qtrans_getAvailableLanguages($text) { global $q_config; $result = array(); $content = qtrans_split($text); foreach ($content as $language => $lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { $result[] = $language; } } if (sizeof($result) == 0) { // add default language to keep default URL $result[] = $q_config['language']; } return $result; }
function create_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); echo '<div class="multi-language-field">'; foreach ($languages as $language) { $class = $language === $currentLanguage ? 'wp-switch-editor current-language' : 'wp-switch-editor'; echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $class = $language === $currentLanguage ? $field['class'] . ' current-language' : $field['class']; echo '<textarea data-language="' . esc_attr($language) . '" id="' . esc_attr($field['id']) . '" rows="4" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[{$language}]") . '">' . esc_textarea($values[$language]) . '</textarea>'; } echo '</div>'; }
function create_field($field) { if (!acf_qtranslate_enabled()) { acf_field_textarea::create_field($field); return; } global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); echo '<div class="multi-language-field">'; foreach ($languages as $language) { $class = $language === end($languages) ? 'wp-switch-editor current-language' : 'wp-switch-editor'; echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $class = $language === end($languages) ? $field['class'] . ' current-language' : $field['class']; echo '<textarea data-language="' . esc_attr($language) . '" id="' . esc_attr($field['id']) . '" rows="4" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[{$language}]") . '">' . esc_textarea($values[$language]) . '</textarea>'; } echo '</div>'; }
function nxs_doQTrans($txt, $lng = '') { if (!function_exists(qtrans_split) || strpos($txt, '<!--:') === false) { return $txt; } else { $tta = qtrans_split($txt); if ($lng != '') { return $tta[$lng]; } else { return reset($tta); } } }
function render_field($field) { // enqueue acf_enqueue_uploader(); // vars $id = uniqid('acf-editor-'); //$id = $field['id'] . '-' . uniqid(); $mode = 'html'; $show_tabs = true; // get height $height = acf_get_user_setting('wysiwyg_height', 300); $height = max($height, 300); // minimum height is 300 // detect mode // case: visual tab only if ($field['tabs'] == 'visual') { $mode = 'tmce'; $show_tabs = false; } elseif ($field['tabs'] == 'text') { $show_tabs = false; } elseif (wp_default_editor() == 'tinymce') { $mode = 'tmce'; } // mode $switch_class = $mode . '-active'; // filter value for editor remove_all_filters('acf_the_editor_content'); if ($mode == 'tmce') { add_filter('acf_the_editor_content', 'wp_richedit_pre'); } else { add_filter('acf_the_editor_content', 'wp_htmledit_pre'); } global $q_config, $wp_version; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); echo '<div class="multi-language-field multi-language-field-wysiwyg">'; foreach ($languages as $language) { $class = $language === $currentLanguage ? 'wp-switch-editor current-language' : 'wp-switch-editor'; echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } $uid = uniqid('acf-editor-'); foreach ($languages as $language) { $value = apply_filters('acf_the_editor_content', $values[$language]); $id = $uid . "-{$language}"; $name = $field['name'] . "[{$language}]"; $class = $switch_class; if ($language === $currentLanguage) { $class .= ' current-language'; } ?> <div id="wp-<?php echo $id; ?> -wrap" class="acf-editor-wrap wp-core-ui wp-editor-wrap <?php echo $class; ?> " data-toolbar="<?php echo $field['toolbar']; ?> " data-upload="<?php echo $field['media_upload']; ?> " data-language="<?php echo $language; ?> "> <div id="wp-<?php echo $id; ?> -editor-tools" class="wp-editor-tools hide-if-no-js"> <?php if ($field['media_upload']) { ?> <div id="wp-<?php echo $id; ?> -media-buttons" class="wp-media-buttons"> <?php do_action('media_buttons'); ?> </div> <?php } ?> <?php if (user_can_richedit() && $show_tabs) { ?> <div class="wp-editor-tabs"> <button id="<?php echo $id; ?> -tmce" class="wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);" type="button"><?php echo __('Visual', 'acf'); ?> </button> <button id="<?php echo $id; ?> -html" class="wp-switch-editor switch-html" onclick="switchEditors.switchto(this);" type="button"><?php echo _x('Text', 'Name for the Text editor tab (formerly HTML)', 'acf'); ?> </button> </div> <?php } ?> </div> <div id="wp-<?php echo $id; ?> -editor-container" class="wp-editor-container"> <textarea id="<?php echo $id; ?> " class="qtx-wp-editor-area" name="<?php echo $name; ?> " <?php if ($height) { ?> style="height:<?php echo $height; ?> px;"<?php } ?> ><?php echo $value; ?> </textarea> </div> </div> <?php } echo '</div>'; }
function nxs_doQTrans($txt, $lng = '') { if (!function_exists("qtrans_split") && !function_exists("qtranxf_split")) { return $txt; } $txt = str_ireplace('<3', '<3', $txt); $txt = str_ireplace('<(', '<(', $txt); //$txt = preg_replace('/\[caption\s[^\]]*\]/', '', $txt); $txt = preg_replace('/\\[caption[\\s]{0,}(.*?)\\][\\s]{0,}(<a[\\s]{0,}.*?<\\/a>)[\\s]{0,}(.*?)\\[\\/caption\\]/ims', '<p $1> $2 <snap class="wpimgcaption">$3</snap> </p>', $txt); // WP Image with Caption fix if (function_exists("qtrans_split") && strpos($txt, '<!--:') !== false) { $tta = qtrans_split($txt); if ($lng != '') { return $tta[$lng]; } else { return reset($tta); } } if (function_exists("qtranxf_split") && (strpos($txt, '<!--:') !== false || strpos($txt, '[:') !== false)) { $tta = qtranxf_split($txt); if ($lng != '') { return $tta[$lng]; } else { return reset($tta); } } }
function qTrans_compatibility($post_title) { if (function_exists('qtrans_split')) { $post_title = qtrans_split($post_title); //explode the string in a array $_array_[lang_code]=content $post_title = $post_title[qtrans_getLanguage()]; //get the content from array with actual language } return $post_title; }
function create_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); echo '<div class="multi-language-field multi-language-field-file">'; foreach ($languages as $language) { $class = 'wp-switch-editor'; if ($language === $currentLanguage) { $class .= ' current-language'; } echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } $base_class = $field['class']; $base_name = $field['name']; foreach ($languages as $language) { $value = $values[$language]; $o = array('class' => '', 'icon' => '', 'title' => '', 'size' => '', 'url' => '', 'name' => ''); if ($value && is_numeric($value)) { $file = get_post($value); if ($file) { $o['class'] = 'active'; $o['icon'] = wp_mime_type_icon($file->ID); $o['title'] = $file->post_title; $o['size'] = size_format(filesize(get_attached_file($file->ID))); $o['url'] = wp_get_attachment_url($file->ID); $explode = explode('/', $o['url']); $o['name'] = end($explode); } } $field['class'] = $base_class; if ($language === $currentLanguage) { $field['class'] .= ' current-language'; $o['class'] .= ' current-language'; } $field['name'] = $base_name . '[' . $language . ']'; ?> <div class="acf-file-uploader clearfix <?php echo $o['class']; ?> " data-library="<?php echo $field['library']; ?> " data-language="<?php echo $language; ?> "> <input class="acf-file-value" type="hidden" name="<?php echo $field['name']; ?> " value="<?php echo $value; ?> " /> <div class="has-file"> <ul class="hl clearfix"> <li> <img class="acf-file-icon" src="<?php echo $o['icon']; ?> " alt=""/> <div class="hover"> <ul class="bl"> <li><a href="#" class="acf-button-delete ir">Remove</a></li> <li><a href="#" class="acf-button-edit ir">Edit</a></li> </ul> </div> </li> <li> <p> <strong class="acf-file-title"><?php echo $o['title']; ?> </strong> </p> <p> <strong><?php _e('Name', 'acf'); ?> :</strong> <a class="acf-file-name" href="<?php echo $o['url']; ?> " target="_blank"><?php echo $o['name']; ?> </a> </p> <p> <strong><?php _e('Size', 'acf'); ?> :</strong> <span class="acf-file-size"><?php echo $o['size']; ?> </span> </p> </li> </ul> </div> <div class="no-file"> <ul class="hl clearfix"> <li> <p><?php _e('No File Selected', 'acf'); ?> <a href="#" class="button add-file"><?php _e('Add File', 'acf'); ?> </p></a> </li> </ul> </div> </div> <?php } echo '</div>'; }
function qtrans_use($lang, $text, $show_available = false) { global $q_config; // return full string if language is not enabled if (!qtrans_isEnabled($lang)) { return $text; } if (is_array($text)) { // handle arrays recursively foreach ($text as $key => $t) { $text[$key] = qtrans_use($lang, $text[$key], $show_available); } return $text; } if (is_object($text) || @get_class($text) == '__PHP_Incomplete_Class') { foreach (get_object_vars($text) as $key => $t) { $text->{$key} = qtrans_use($lang, $text->{$key}, $show_available); } return $text; } // prevent filtering weird data types and save some resources if (!is_string($text) || $text == '') { return $text; } // get content $content = qtrans_split($text); // find available languages $available_languages = array(); foreach ($content as $language => $lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { $available_languages[] = $language; } } // if no languages available show full text if (sizeof($available_languages) == 0) { return $text; } // if content is available show the content in the requested language if (!empty($content[$lang])) { return $content[$lang]; } // content not available in requested language (bad!!) what now? if (!$show_available) { // check if content is available in default language, if not return first language found. (prevent empty result) if ($lang != $q_config['default_language']) { return "(" . $q_config['language_name'][$q_config['default_language']] . ") " . qtrans_use($q_config['default_language'], $text, $show_available); } foreach ($content as $language => $lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { return "(" . $q_config['language_name'][$language] . ") " . $lang_text; } } } // display selection for available languages $available_languages = array_unique($available_languages); $language_list = ""; if (preg_match('/%LANG:([^:]*):([^%]*)%/', $q_config['not_available'][$lang], $match)) { $normal_seperator = $match[1]; $end_seperator = $match[2]; // build available languages string backward $i = 0; foreach ($available_languages as $language) { if ($i == 1) { $language_list = $end_seperator . $language_list; } if ($i > 1) { $language_list = $normal_seperator . $language_list; } $language_list = "<a href=\"" . qtrans_convertURL('', $language) . "\">" . $q_config['language_name'][$language] . "</a>" . $language_list; $i++; } } return "<p>" . preg_replace('/%LANG:([^:]*):([^%]*)%/', $language_list, $q_config['not_available'][$lang]) . "</p>"; }
function render_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); // enqueue acf_enqueue_uploader(); // vars $o = array('icon' => '', 'title' => '', 'size' => '', 'url' => '', 'name' => ''); $div = array('class' => 'acf-file-uploader acf-cf', 'data-library' => $field['library'], 'data-mime_types' => $field['mime_types']); $input_atts = array('type' => 'hidden', 'name' => $field['name'], 'value' => $field['value'], 'data-name' => 'value-id'); $url = ''; echo '<div class="multi-language-field multi-language-field-image">'; foreach ($languages as $language) { $class = 'wp-switch-editor'; if ($language === $currentLanguage) { $class .= ' current-language'; } echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $input_atts['name'] = $field['name'] . '[' . $language . ']'; $field['value'] = $values[$language]; $div['data-language'] = $language; $div['class'] = 'acf-file-uploader acf-cf'; // has value? if ($field['value'] && is_numeric($field['value'])) { $file = get_post($field['value']); if ($file) { $div['class'] .= ' has-value'; $o['icon'] = wp_mime_type_icon($file->ID); $o['title'] = $file->post_title; $o['size'] = @size_format(filesize(get_attached_file($file->ID))); $o['url'] = wp_get_attachment_url($file->ID); $explode = explode('/', $o['url']); $o['name'] = end($explode); } } // basic? $basic = !current_user_can('upload_files'); if ($basic) { $div['class'] .= ' basic'; } if ($language === $currentLanguage) { $div['class'] .= ' current-language'; } ?> <div <?php acf_esc_attr_e($div); ?> > <div class="acf-hidden"> <?php acf_hidden_input(array('name' => $input_atts['name'], 'value' => $field['value'], 'data-name' => 'id')); ?> </div> <div class="show-if-value file-wrap acf-soh"> <div class="file-icon"> <img data-name="icon" src="<?php echo $o['icon']; ?> " alt=""/> </div> <div class="file-info"> <p> <strong data-name="title"><?php echo $o['title']; ?> </strong> </p> <p> <strong><?php _e('File Name', 'acf'); ?> :</strong> <a data-name="name" href="<?php echo $o['url']; ?> " target="_blank"><?php echo $o['name']; ?> </a> </p> <p> <strong><?php _e('File Size', 'acf'); ?> :</strong> <span data-name="size"><?php echo $o['size']; ?> </span> </p> <ul class="acf-hl acf-soh-target"> <?php if (!$basic) { ?> <li><a class="acf-icon dark" data-name="edit" href="#"><i class="acf-sprite-edit"></i></a></li> <?php } ?> <li><a class="acf-icon dark" data-name="remove" href="#"><i class="acf-sprite-delete"></i></a></li> </ul> </div> </div> <div class="hide-if-value"> <?php if ($basic) { ?> <?php if ($field['value'] && !is_numeric($field['value'])) { ?> <div class="acf-error-message"><p><?php echo $field['value']; ?> </p></div> <?php } ?> <input type="file" name="<?php echo $field['name']; ?> " id="<?php echo $field['id']; ?> " /> <?php } else { ?> <p style="margin:0;"><?php _e('No File selected', 'acf'); ?> <a data-name="add" class="acf-button" href="#"><?php _e('Add File', 'acf'); ?> </a></p> <?php } ?> </div> </div> <?php } echo '</div>'; }
function qtranslate_conf() { global $q_config, $wpdb; // do redirection for dashboard if (isset($_GET['godashboard'])) { echo '<h2>' . __('Switching Language', 'qtranslate') . '</h2>' . sprintf(__('Switching language to %1$s... If the Dashboard isn\'t loading, use this <a href="%2$s" title="Dashboard">link</a>.', 'qtranslate'), $q_config['language_name'][qtrans_getLanguage()], admin_url()) . '<script type="text/javascript">document.location="' . admin_url() . '";</script>'; exit; } // init some needed variables $error = ''; $original_lang = ''; $language_code = ''; $language_name = ''; $language_locale = ''; $language_date_format = ''; $language_time_format = ''; $language_na_message = ''; $language_flag = ''; $language_default = ''; $altered_table = false; $message = apply_filters('qtranslate_configuration_pre', ''); // check for action if (isset($_POST['qtranslate_reset']) && isset($_POST['qtranslate_reset2'])) { $message = __('qTranslate has been reset.', 'qtranslate'); } elseif (isset($_POST['default_language'])) { // save settings qtrans_checkSetting('default_language', true, QT_LANGUAGE); qtrans_checkSetting('flag_location', true, QT_URL); qtrans_checkSetting('ignore_file_types', true, QT_STRING); qtrans_checkSetting('detect_browser_language', true, QT_BOOLEAN); qtrans_checkSetting('hide_untranslated', true, QT_INTEGER); qtrans_checkSetting('use_strftime', true, QT_INTEGER); qtrans_checkSetting('url_mode', true, QT_INTEGER); qtrans_checkSetting('auto_update_mo', true, QT_BOOLEAN); qtrans_checkSetting('hide_default_language', true, QT_BOOLEAN); if (isset($_POST['update_mo_now']) && $_POST['update_mo_now'] == '1' && qtrans_updateGettextDatabases(true)) { $message = __('Gettext databases updated.', 'qtranslate'); } } if (isset($_POST['original_lang'])) { // validate form input if ($_POST['language_na_message'] == '') { $error = __('The Language must have a Not-Available Message!', 'qtranslate'); } if (strlen($_POST['language_locale']) < 2) { $error = __('The Language must have a Locale!', 'qtranslate'); } if ($_POST['language_name'] == '') { $error = __('The Language must have a name!', 'qtranslate'); } if (strlen($_POST['language_code']) != 2) { $error = __('Language Code has to be 2 characters long!', 'qtranslate'); } if ($_POST['original_lang'] == '' && $error == '') { // new language if (isset($q_config['language_name'][$_POST['language_code']])) { $error = __('There is already a language with the same Language Code!', 'qtranslate'); } } if ($_POST['original_lang'] != '' && $error == '') { // language update if ($_POST['language_code'] != $_POST['original_lang'] && isset($q_config['language_name'][$_POST['language_code']])) { $error = __('There is already a language with the same Language Code!', 'qtranslate'); } else { // remove old language unset($q_config['language_name'][$_POST['original_lang']]); unset($q_config['flag'][$_POST['original_lang']]); unset($q_config['locale'][$_POST['original_lang']]); unset($q_config['date_format'][$_POST['original_lang']]); unset($q_config['time_format'][$_POST['original_lang']]); unset($q_config['not_available'][$_POST['original_lang']]); if (in_array($_POST['original_lang'], $q_config['enabled_languages'])) { // was enabled, so set modified one to enabled too for ($i = 0; $i < sizeof($q_config['enabled_languages']); $i++) { if ($q_config['enabled_languages'][$i] == $_POST['original_lang']) { $q_config['enabled_languages'][$i] = $_POST['language_code']; } } } if ($_POST['original_lang'] == $q_config['default_language']) { // was default, so set modified the default $q_config['default_language'] = $_POST['language_code']; } } } if (get_magic_quotes_gpc()) { if (isset($_POST['language_date_format'])) { $_POST['language_date_format'] = stripslashes($_POST['language_date_format']); } if (isset($_POST['language_time_format'])) { $_POST['language_time_format'] = stripslashes($_POST['language_time_format']); } } if ($error == '') { // everything is fine, insert language $q_config['language_name'][$_POST['language_code']] = $_POST['language_name']; $q_config['flag'][$_POST['language_code']] = $_POST['language_flag']; $q_config['locale'][$_POST['language_code']] = $_POST['language_locale']; $q_config['date_format'][$_POST['language_code']] = $_POST['language_date_format']; $q_config['time_format'][$_POST['language_code']] = $_POST['language_time_format']; $q_config['not_available'][$_POST['language_code']] = $_POST['language_na_message']; } if ($error != '' || isset($_GET['edit'])) { // get old values in the form $original_lang = $_POST['original_lang']; $language_code = $_POST['language_code']; $language_name = $_POST['language_name']; $language_locale = $_POST['language_locale']; $language_date_format = $_POST['language_date_format']; $language_time_format = $_POST['language_time_format']; $language_na_message = $_POST['language_na_message']; $language_flag = $_POST['language_flag']; $language_default = $_POST['language_default']; } } elseif (isset($_GET['convert'])) { // update language tags global $wpdb; $wpdb->show_errors(); foreach ($q_config['enabled_languages'] as $lang) { $wpdb->query('UPDATE ' . $wpdb->posts . ' set post_title = REPLACE(post_title, "[lang_' . $lang . ']","<!--:' . $lang . '-->")'); $wpdb->query('UPDATE ' . $wpdb->posts . ' set post_title = REPLACE(post_title, "[/lang_' . $lang . ']","<!--:-->")'); $wpdb->query('UPDATE ' . $wpdb->posts . ' set post_content = REPLACE(post_content, "[lang_' . $lang . ']","<!--:' . $lang . '-->")'); $wpdb->query('UPDATE ' . $wpdb->posts . ' set post_content = REPLACE(post_content, "[/lang_' . $lang . ']","<!--:-->")'); } $message = "Database Update successful!"; } elseif (isset($_GET['markdefault'])) { // update language tags global $wpdb; $wpdb->show_errors(); $result = $wpdb->get_results('SELECT ID, post_title, post_content FROM ' . $wpdb->posts . ' WHERE NOT (post_content LIKE "%<!--:-->%" OR post_title LIKE "%<!--:-->%")'); foreach ($result as $post) { $content = qtrans_split($post->post_content); $title = qtrans_split($post->post_title); foreach ($q_config['enabled_languages'] as $language) { if ($language != $q_config['default_language']) { $content[$language] = ""; $title[$language] = ""; } } $content = qtrans_join($content); $title = qtrans_join($title); $wpdb->query('UPDATE ' . $wpdb->posts . ' set post_content = "' . mysql_escape_string($content) . '", post_title = "' . mysql_escape_string($title) . '" WHERE ID=' . $post->ID); } $message = "All Posts marked as default language!"; } elseif (isset($_GET['edit'])) { $original_lang = $_GET['edit']; $language_code = $_GET['edit']; $language_name = $q_config['language_name'][$_GET['edit']]; $language_locale = $q_config['locale'][$_GET['edit']]; $language_date_format = $q_config['date_format'][$_GET['edit']]; $language_time_format = $q_config['time_format'][$_GET['edit']]; $language_na_message = $q_config['not_available'][$_GET['edit']]; $language_flag = $q_config['flag'][$_GET['edit']]; } elseif (isset($_GET['delete'])) { // validate delete (protect code) if ($q_config['default_language'] == $_GET['delete']) { $error = 'Cannot delete Default Language!'; } if (!isset($q_config['language_name'][$_GET['delete']]) || strtolower($_GET['delete']) == 'code') { $error = 'No such language!'; } if ($error == '') { // everything seems fine, delete language qtrans_disableLanguage($_GET['delete']); unset($q_config['language_name'][$_GET['delete']]); unset($q_config['flag'][$_GET['delete']]); unset($q_config['locale'][$_GET['delete']]); unset($q_config['date_format'][$_GET['delete']]); unset($q_config['time_format'][$_GET['delete']]); unset($q_config['not_available'][$_GET['delete']]); } } elseif (isset($_GET['enable'])) { // enable validate if (!qtrans_enableLanguage($_GET['enable'])) { $error = __('Language is already enabled or invalid!', 'qtranslate'); } } elseif (isset($_GET['disable'])) { // enable validate if ($_GET['disable'] == $q_config['default_language']) { $error = __('Cannot disable Default Language!', 'qtranslate'); } if (!qtrans_isEnabled($_GET['disable'])) { if (!isset($q_config['language_name'][$_GET['disable']])) { $error = __('No such language!', 'qtranslate'); } } // everything seems fine, disable language if ($error == '' && !qtrans_disableLanguage($_GET['disable'])) { $error = __('Language is already disabled!', 'qtranslate'); } } elseif (isset($_GET['moveup'])) { $languages = qtrans_getSortedLanguages(); $message = __('No such language!', 'qtranslate'); foreach ($languages as $key => $language) { if ($language == $_GET['moveup']) { if ($key == 0) { $message = __('Language is already first!', 'qtranslate'); break; } $languages[$key] = $languages[$key - 1]; $languages[$key - 1] = $language; $q_config['enabled_languages'] = $languages; $message = __('New order saved.', 'qtranslate'); break; } } } elseif (isset($_GET['movedown'])) { $languages = qtrans_getSortedLanguages(); $message = __('No such language!', 'qtranslate'); foreach ($languages as $key => $language) { if ($language == $_GET['movedown']) { if ($key == sizeof($languages) - 1) { $message = __('Language is already last!', 'qtranslate'); break; } $languages[$key] = $languages[$key + 1]; $languages[$key + 1] = $language; $q_config['enabled_languages'] = $languages; $message = __('New order saved.', 'qtranslate'); break; } } } $everything_fine = (isset($_POST['submit']) || isset($_GET['delete']) || isset($_GET['enable']) || isset($_GET['disable']) || isset($_GET['moveup']) || isset($_GET['movedown'])) && $error == ''; if ($everything_fine) { // settings might have changed, so save qtrans_saveConfig(); if (empty($message)) { $message = __('Options saved.', 'qtranslate'); } } if ($q_config['auto_update_mo']) { if (!is_dir(WP_LANG_DIR) || !($ll = @fopen(trailingslashit(WP_LANG_DIR) . 'qtranslate.test', 'a'))) { $error = sprintf(__('Could not write to "%s", Gettext Databases could not be downloaded!', 'qtranslate'), WP_LANG_DIR); } else { @fclose($ll); @unlink(trailingslashit(WP_LANG_DIR) . 'qtranslate.test'); } } // don't accidently delete/enable/disable twice $clean_uri = preg_replace("/&(delete|enable|disable|convert|markdefault|moveup|movedown)=[^&#]*/i", "", $_SERVER['REQUEST_URI']); $clean_uri = apply_filters('qtranslate_clean_uri', $clean_uri); // Generate XHTML if ($message) { ?> <div id="message" class="updated fade"><p><strong><?php echo $message; ?> </strong></p></div> <?php } if ($error != '') { ?> <div id="message" class="error fade"><p><strong><?php echo $error; ?> </strong></p></div> <?php } ?> <?php if (isset($_GET['edit'])) { ?> <div class="wrap"> <h2><?php _e('Edit Language', 'qtranslate'); ?> </h2> <form action="" method="post" id="qtranslate-edit-language"> <?php qtranslate_language_form($language_code, $language_code, $language_name, $language_locale, $language_date_format, $language_time_format, $language_flag, $language_na_message, $language_default, $original_lang); ?> <p class="submit"><input type="submit" name="submit" value="<?php _e('Save Changes »', 'qtranslate'); ?> " /></p> </form> </div> <?php } else { ?> <div class="wrap"> <h2><?php _e('Language Management (qTranslate Configuration)', 'qtranslate'); ?> </h2> <div class="tablenav"><?php printf(__('For help on how to configure qTranslate correctly, take a look at the <a href="%1$s">qTranslate FAQ</a> and the <a href="%2$s">Support Forum</a>.', 'qtranslate'), 'http://www.qianqin.de/qtranslate/faq/', 'http://www.qianqin.de/qtranslate/forum/viewforum.php?f=3'); ?> </div> <form action="<?php echo $clean_uri; ?> " method="post"> <h3><?php _e('General Settings', 'qtranslate'); ?> </h3> <table class="form-table"> <tr> <th scope="row"><?php _e('Default Language / Order', 'qtranslate'); ?> </th> <td> <fieldset><legend class="hidden"><?php _e('Default Language', 'qtranslate'); ?> </legend> <?php foreach (qtrans_getSortedLanguages() as $key => $language) { echo "\t<label title='" . $q_config['language_name'][$language] . "'><input type='radio' name='default_language' value='" . $language . "'"; if ($language == $q_config['default_language']) { echo " checked='checked'"; } echo ' />'; echo ' <a href="' . add_query_arg('moveup', $language, $clean_uri) . '"><img src="' . WP_PLUGIN_URL . '/' . basename(__DIR__) . '/arrowup.png" alt="up" /></a>'; echo ' <a href="' . add_query_arg('movedown', $language, $clean_uri) . '"><img src="' . WP_PLUGIN_URL . '/' . basename(__DIR__) . '/arrowdown.png" alt="down" /></a>'; echo ' <img src="' . trailingslashit(WP_CONTENT_URL) . $q_config['flag_location'] . $q_config['flag'][$language] . '" alt="' . $q_config['language_name'][$language] . '" /> '; echo ' ' . $q_config['language_name'][$language] . "</label><br />\n"; } ?> </br> <?php printf(__('Choose the default language of your blog. This is the language which will be shown on %s. You can also change the order the languages by clicking on the arrows above.', 'qtranslate'), get_bloginfo('url')); ?> </fieldset> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Untranslated Content', 'qtranslate'); ?> </th> <td> <fieldset><legend class="hidden"><?php _e('URL Modification Mode', 'qtranslate'); ?> </legend> <label title="Hide untranslated"><input type="radio" name="hide_untranslated" value="<?php echo QT_UNTRANSLATED_HIDE; ?> " <?php echo $q_config['hide_untranslated'] == QT_UNTRANSLATED_HIDE ? "checked=\"checked\"" : ""; ?> /> <?php _e('Hide Content which is not available for the selected language.', 'qtranslate'); ?> </label><br /> <label title="Show messages"><input type="radio" name="hide_untranslated" value="<?php echo QT_UNTRANSLATED_MESSAGE; ?> " <?php echo $q_config['hide_untranslated'] == QT_UNTRANSLATED_MESSAGE ? "checked=\"checked\"" : ""; ?> /> <?php _e('Display a message showing all the languages the content is available in.', 'qtranslate'); ?> </label><br /> <label title="Show default language"><input type="radio" name="hide_untranslated" value="<?php echo QT_UNTRANSLATED_DEFAULT; ?> " <?php echo $q_config['hide_untranslated'] == QT_UNTRANSLATED_DEFAULT ? "checked=\"checked\"" : ""; ?> /> <?php _e('Display the content in default language (or the first available language)', 'qtranslate'); ?> </label><br /> </fieldset><br/> <?php _e('This function will not work correctly if you installed qTranslate on a blog with existing entries. In this case you will need to take a look at "Convert Database" under "Advanced Settings".', 'qtranslate'); ?> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Detect Browser Language', 'qtranslate'); ?> </th> <td> <label for="detect_browser_language"><input type="checkbox" name="detect_browser_language" id="detect_browser_language" value="1"<?php echo $q_config['detect_browser_language'] ? ' checked="checked"' : ''; ?> /> <?php _e('Detect the language of the browser and redirect accordingly.', 'qtranslate'); ?> </label> <br/> <?php _e('When the frontpage is visited via bookmark/external link/type-in, the visitor will be forwarded to the correct URL for the language specified by his browser.', 'qtranslate'); ?> </td> </tr> </table> <h3><?php _e('Advanced Settings', 'qtranslate'); ?> <span id="qtranslate-show-advanced" style="display:none"> (<a name="advanced_settings" href="#advanced_settings" onclick="showAdvanced();"><?php _e('Show', 'qtranslate'); ?> </a>)</span></h3> <table class="form-table" id="qtranslate-advanced"> <tr> <th scope="row"><?php _e('URL Modification Mode', 'qtranslate'); ?> </th> <td> <fieldset><legend class="hidden"><?php _e('URL Modification Mode', 'qtranslate'); ?> </legend> <label title="Query Mode"><input type="radio" name="url_mode" value="<?php echo QT_URL_QUERY; ?> " <?php echo $q_config['url_mode'] == QT_URL_QUERY ? "checked=\"checked\"" : ""; ?> /> <?php _e('Use Query Mode (?lang=en)', 'qtranslate'); ?> </label><br /> <label title="Pre-Path Mode"><input type="radio" name="url_mode" value="<?php echo QT_URL_PATH; ?> " <?php echo $q_config['url_mode'] == QT_URL_PATH ? "checked=\"checked\"" : ""; ?> /> <?php _e('Use Pre-Path Mode (Default, puts /en/ in front of URL)', 'qtranslate'); ?> </label><br /> <label title="Pre-Domain Mode"><input type="radio" name="url_mode" value="<?php echo QT_URL_DOMAIN; ?> " <?php echo $q_config['url_mode'] == QT_URL_DOMAIN ? "checked=\"checked\"" : ""; ?> /> <?php _e('Use Pre-Domain Mode (uses http://en.yoursite.com)', 'qtranslate'); ?> </label><br /> </fieldset><br/> <?php _e('Pre-Path and Pre-Domain mode will only work with mod_rewrite/pretty permalinks. Additional Configuration is needed for Pre-Domain mode!', 'qtranslate'); ?> <br/> <label for="hide_default_language"><input type="checkbox" name="hide_default_language" id="hide_default_language" value="1"<?php echo $q_config['hide_default_language'] ? ' checked="checked"' : ''; ?> /> <?php _e('Hide URL language information for default language.', 'qtranslate'); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Flag Image Path', 'qtranslate'); ?> </th> <td> <?php echo trailingslashit(WP_CONTENT_URL); ?> <input type="text" name="flag_location" id="flag_location" value="<?php echo $q_config['flag_location']; ?> " style="width:50%"/> <br/> <?php _e('Path to the flag images under wp-content, with trailing slash. (Default: plugins/qtranslate/flags/)', 'qtranslate'); ?> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Ignore Links', 'qtranslate'); ?> </th> <td> <input type="text" name="ignore_file_types" id="ignore_file_types" value="<?php echo $q_config['ignore_file_types']; ?> " style="width:100%"/> <br/> <?php _e('Don\'t convert Links to files of the given file types. (Default: gif,jpg,jpeg,png,pdf,swf,tif,rar,zip,7z,mpg,divx,mpeg,avi,css,js)', 'qtranslate'); ?> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Update Gettext Databases', 'qtranslate'); ?> </th> <td> <label for="auto_update_mo"><input type="checkbox" name="auto_update_mo" id="auto_update_mo" value="1"<?php echo $q_config['auto_update_mo'] ? ' checked="checked"' : ''; ?> /> <?php _e('Automatically check for .mo-Database Updates of installed languages.', 'qtranslate'); ?> </label> <br/> <label for="update_mo_now"><input type="checkbox" name="update_mo_now" id="update_mo_now" value="1" /> <?php _e('Update Gettext databases now.', 'qtranslate'); ?> </label> <br/> <?php _e('qTranslate will query the Wordpress Localisation Repository every week and download the latest Gettext Databases (.mo Files).', 'qtranslate'); ?> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Date / Time Conversion', 'qtranslate'); ?> </th> <td> <label><input type="radio" name="use_strftime" value="<?php echo QT_DATE; ?> " <?php echo $q_config['use_strftime'] == QT_DATE ? ' checked="checked"' : ''; ?> /> <?php _e('Use emulated date function.', 'qtranslate'); ?> </label><br /> <label><input type="radio" name="use_strftime" value="<?php echo QT_DATE_OVERRIDE; ?> " <?php echo $q_config['use_strftime'] == QT_DATE_OVERRIDE ? ' checked="checked"' : ''; ?> /> <?php _e('Use emulated date function and replace formats with the predefined formats for each language.', 'qtranslate'); ?> </label><br /> <label><input type="radio" name="use_strftime" value="<?php echo QT_STRFTIME; ?> " <?php echo $q_config['use_strftime'] == QT_STRFTIME ? ' checked="checked"' : ''; ?> /> <?php _e('Use strftime instead of date.', 'qtranslate'); ?> </label><br /> <label><input type="radio" name="use_strftime" value="<?php echo QT_STRFTIME_OVERRIDE; ?> " <?php echo $q_config['use_strftime'] == QT_STRFTIME_OVERRIDE ? ' checked="checked"' : ''; ?> /> <?php _e('Use strftime instead of date and replace formats with the predefined formats for each language.', 'qtranslate'); ?> </label><br /> <?php _e('Depending on the mode selected, additional customizations of the theme may be needed.', 'qtranslate'); ?> </td> </tr> <tr valign="top"> <th scope="row"><?php _e('Reset qTranslate', 'qtranslate'); ?> </th> <td> <label for="qtranslate_reset"><input type="checkbox" name="qtranslate_reset" id="qtranslate_reset" value="1"/> <?php _e('Check this box and click Save Changes to reset all qTranslate settings.', 'qtranslate'); ?> </label> <br/> <label for="qtranslate_reset2"><input type="checkbox" name="qtranslate_reset2" id="qtranslate_reset2" value="1"/> <?php _e('Yes, I really want to reset qTranslate.', 'qtranslate'); ?> </label> <br/> <label for="qtranslate_reset3"><input type="checkbox" name="qtranslate_reset3" id="qtranslate_reset3" value="1"/> <?php _e('Also delete Translations for Categories/Tags/Link Categories.', 'qtranslate'); ?> </label> <br/> <?php _e('If something isn\'t working correctly, you can always try to reset all qTranslate settings. A Reset won\'t delete any posts but will remove all settings (including all languages added).', 'qtranslate'); ?> </td> </tr> <tr> <th scope="row"><?php _e('Convert Database', 'qtranslate'); ?> </th> <td> <?php printf(__('If you are updating from qTranslate 1.x or Polyglot, <a href="%s">click here</a> to convert posts to the new language tag format.', 'qtranslate'), $clean_uri . '&convert=true'); ?> <?php printf(__('If you have installed qTranslate for the first time on a Wordpress with existing posts, you can either go through all your posts manually and save them in the correct language or <a href="%s">click here</a> to mark all existing posts as written in the default language.', 'qtranslate'), $clean_uri . '&markdefault=true'); ?> <?php _e('Both processes are <b>irreversible</b>! Be sure to make a full database backup before clicking one of the links.', 'qtranslate'); ?> </td> </tr> <tr> <th scope="row"><?php _e('Debugging Information', 'qtranslate'); ?> </th> <td> <p><?php printf(__('If you encounter any problems and you are unable to solve them yourself, you can visit the <a href="%s">Support Forum</a>. Posting the following Content will help other detect any misconfigurations.', 'qtranslate'), 'http://www.qianqin.de/qtranslate/forum/'); ?> </p> <textarea readonly="readonly" id="qtranslate_debug"><?php $q_config_copy = $q_config; // remove information to keep data anonymous and other not needed things unset($q_config_copy['url_info']); unset($q_config_copy['js']); unset($q_config_copy['windows_locale']); unset($q_config_copy['pre_domain']); unset($q_config_copy['term_name']); echo htmlspecialchars(print_r($q_config_copy, true)); ?> </textarea> </td> </tr> </table> <script type="text/javascript"> // <![CDATA[ function showAdvanced() { document.getElementById('qtranslate-advanced').style.display='block'; document.getElementById('qtranslate-show-advanced').style.display='none'; return false; } if(location.hash!='#advanced_settings') { document.getElementById('qtranslate-show-advanced').style.display='inline'; document.getElementById('qtranslate-advanced').style.display='none'; } // ]]> </script> <?php do_action('qtranslate_configuration', $clean_uri); ?> <p class="submit"> <input type="submit" name="submit" class="button-primary" value="<?php _e('Save Changes', 'qtranslate'); ?> " /> </p> </form> </div> <div class="wrap"> <h2><?php _e('Languages', 'qtranslate'); ?> </h2> <div id="col-container"> <div id="col-right"> <div class="col-wrap"> <table class="widefat"> <thead> <tr> <?php print_column_headers('language'); ?> </tr> </thead> <tfoot> <tr> <?php print_column_headers('language', false); ?> </tr> </tfoot> <tbody id="the-list" class="list:cat"> <?php foreach ($q_config['language_name'] as $lang => $language) { if ($lang != 'code') { ?> <tr> <td><img src="<?php echo trailingslashit(WP_CONTENT_URL) . $q_config['flag_location'] . $q_config['flag'][$lang]; ?> " alt="<?php echo $language; ?> Flag"></td> <td><?php echo $language; ?> </td> <td><?php if (in_array($lang, $q_config['enabled_languages'])) { ?> <a class="edit" href="<?php echo $clean_uri; ?> &disable=<?php echo $lang; ?> "><?php _e('Disable', 'qtranslate'); ?> </a><?php } else { ?> <a class="edit" href="<?php echo $clean_uri; ?> &enable=<?php echo $lang; ?> "><?php _e('Enable', 'qtranslate'); ?> </a><?php } ?> </td> <td><a class="edit" href="<?php echo $clean_uri; ?> &edit=<?php echo $lang; ?> "><?php _e('Edit', 'qtranslate'); ?> </a></td> <td><?php if ($q_config['default_language'] == $lang) { _e('Default', 'qtranslate'); } else { ?> <a class="delete" href="<?php echo $clean_uri; ?> &delete=<?php echo $lang; ?> "><?php _e('Delete', 'qtranslate'); ?> </a><?php } ?> </td> </tr> <?php } } ?> </tbody> </table> <p><?php _e('Enabling a language will cause qTranslate to update the Gettext-Database for the language, which can take a while depending on your server\'s connection speed.', 'qtranslate'); ?> </p> </div> </div><!-- /col-right --> <div id="col-left"> <div class="col-wrap"> <div class="form-wrap"> <h3><?php _e('Add Language', 'qtranslate'); ?> </h3> <form name="addcat" id="addcat" method="post" class="add:the-list: validate"> <?php qtranslate_language_form($language_code, $language_code, $language_name, $language_locale, $language_date_format, $language_time_format, $language_flag, $language_default, $language_na_message); ?> <p class="submit"><input type="submit" name="submit" value="<?php _e('Add Language »', 'qtranslate'); ?> " /></p> </form></div> </div> </div><!-- /col-left --> </div><!-- /col-container --> <?php } }
function mqtrans_postUpdated($post_ID, $after, $before) { global $wpdb, $q_config; // Don't handle custom post types if (!in_array($after->post_type, array('post', 'page')) && !in_array($after->post_type, $q_config['allowed_custom_post_types'])) { return; } $titleMap = array(); $contentMap = array(); $cu = wp_get_current_user(); if ($cu->has_cap('edit_users') || empty($q_config['ul_lang_protection'])) { $title = qtrans_split($after->post_title, true, $titleMap); foreach ($title as $k => $v) { if (qtrans_isEmptyContent($v)) { unset($title[$k]); } } $content = qtrans_split($after->post_content, true, $contentMap); foreach ($content as $k => $v) { if (qtrans_isEmptyContent($v)) { unset($content[$k]); } } } else { $titleBeforeMap = array(); $titleBefore = qtrans_split($before->post_title, true, $titleBeforeMap); $titleAfter = qtrans_split($after->post_title, true, $titleMap); foreach ($titleAfter as $k => $v) { if (!mqtrans_currentUserCanEdit($k)) { unset($titleAfter[$k], $titleMap[$k]); } } $title = array_merge($titleBefore, $titleAfter); $titleMap = array_merge($titleBeforeMap, $titleMap); $contentBeforeMap = array(); $contentBefore = qtrans_split($before->post_content, true, $contentBeforeMap); $contentAfter = qtrans_split($after->post_content, true, $contentMap); foreach ($contentAfter as $k => $v) { if (qtrans_isEmptyContent($v) || !mqtrans_currentUserCanEdit($k)) { unset($contentAfter[$k], $contentMap[$k]); } } $content = array_merge($contentBefore, $contentAfter); $contentMap = array_merge($contentBeforeMap, $contentMap); } $data = array('post_title' => qtrans_join($title, $titleMap), 'post_content' => qtrans_join($content, $contentMap)); if (get_magic_quotes_gpc()) { $data = stripslashes_deep($data); } $where = array('ID' => $post_ID); $wpdb->update($wpdb->posts, $data, $where); }
function qtrans_use($lang, $text, $show_available = false) { global $q_config; // return full string if language is not enabled if (!qtrans_isEnabled($lang) || is_string($text) && !preg_match('/(<!--:[a-z]{2}-->|\\[:[a-z]{2}\\])/', $text)) { return $text; } if (is_array($text)) { // handle arrays recursively foreach ($text as &$t) { $t = qtrans_use($lang, $t, $show_available); } return $text; } if (is_object($text) || $text instanceof __PHP_Incomplete_Class) { foreach ($text as &$t) { $t = qtrans_use($lang, $t, $show_available); } return $text; } // prevent filtering weird data types and save some resources if (!is_string($text) || $text == '') { return $text; } // get content $content = qtrans_split($text); // find available languages $available_languages = array(); foreach ($content as $language => &$lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { $available_languages[] = $language; } } unset($lang_text); // if no languages available show full text if (empty($available_languages)) { return $text; } // if content is available show the content in the requested language if (!empty($content[$lang])) { return $content[$lang]; } // content not available in requested language (bad!!) what now? if (!$show_available) { // check if content is available in default language, if not return first language found. (prevent empty result) if ($lang != $q_config['default_language'] && !empty($content[$q_config['default_language']])) { $str = $content[$q_config['default_language']]; if ($q_config['show_displayed_language_prefix']) { $str = "(" . $q_config['language_name'][$q_config['default_language']] . ") " . $str; } return $str; } foreach ($content as $language => $lang_text) { if (!empty($lang_text)) { $str = $lang_text; if ($q_config['show_displayed_language_prefix']) { $str = "(" . $q_config['language_name'][$language] . ") " . $str; } return $str; } } } // display selection for available languages $available_languages = array_unique($available_languages); $language_list = ""; if (preg_match('/%LANG:([^:]*):([^%]*)%/S', $q_config['not_available'][$lang], $match)) { $normal_seperator = $match[1]; $end_seperator = $match[2]; // build available languages string backward foreach ($available_languages as $k => $language) { if ($k == 1) { $language_list = $end_seperator . $language_list; } else { if ($k > 1) { $language_list = $normal_seperator . $language_list; } } $language_list = "<a href=\"" . qtrans_convertURL('', $language) . "\">" . $q_config['language_name'][$language] . "</a>" . $language_list; } } return "<p>" . preg_replace('/%LANG:([^:]*):([^%]*)%/S', $language_list, $q_config['not_available'][$lang]) . "</p>"; }
<tbody> <tr> <th><label for="Gallery_title"><?php _e('Title', $this->plugin_name); ?> </label> <?php echo $this->Html->help(__('Give this gallery a title/name for your own reference.', $this->plugin_name)); ?> </th> <td> <?php if ($this->language_do()) { ?> <?php $titles = qtrans_split($this->Gallery->data->title); ?> <div id="gallery-title-tabs"> <ul> <?php foreach ($languages as $language) { ?> <li><a href="#gallery-title-tabs-<?php echo $language; ?> "><?php echo $this->language_flag($language); ?> </a></li> <?php }
function create_field($field) { if (!acf_qtranslate_enabled()) { acf_field_wysiwyg::create_field($field); return; } $defaults = array('toolbar' => 'full', 'media_upload' => 'yes'); $field = array_merge($defaults, $field); global $q_config, $wp_version; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); echo '<div class="multi-language-field multi-language-field-wysiwyg">'; foreach ($languages as $language) { $class = $language === end($languages) ? 'wp-switch-editor current-language' : 'wp-switch-editor'; echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $value = $values[$language]; $id = 'wysiwyg' . $field['id'] . "[{$language}]"; $name = $field['name'] . "[{$language}]"; $class = $language === end($languages) ? 'acf_wysiwyg wp-editor-wrap current-language' : 'acf_wysiwyg wp-editor-wrap'; ?> <div id="wp-<?php echo $id; ?> -wrap" class="<?php echo $class; ?> " data-toolbar="<?php echo $field['toolbar']; ?> " data-upload="<?php echo $field['media_upload']; ?> " data-language="<?php echo $language; ?> "> <?php if ($field['media_upload'] == 'yes') { ?> <?php if (version_compare($wp_version, '3.3', '<')) { ?> <div id="editor-toolbar"> <div id="media-buttons" class="hide-if-no-js"> <?php do_action('media_buttons'); ?> </div> </div> <?php } else { ?> <div id="wp-<?php echo $id; ?> -editor-tools" class="wp-editor-tools"> <div id="wp-<?php echo $id; ?> -media-buttons" class="hide-if-no-js wp-media-buttons"> <?php do_action('media_buttons'); ?> </div> </div> <?php } ?> <?php } ?> <div id="wp-<?php echo $id; ?> -editor-container" class="wp-editor-container"> <textarea id="<?php echo $id; ?> " class="wp-editor-area" name="<?php echo $name; ?> " ><?php echo wp_richedit_pre($value); ?> </textarea> </div> </div> <?php } echo '</div>'; }
function create_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); echo '<div class="multi-language-field multi-language-field-image">'; foreach ($languages as $language) { $class = 'wp-switch-editor'; if ($language === $currentLanguage) { $class .= ' current-language'; } echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } $base_class = $field['class']; $base_name = $field['name']; foreach ($languages as $language) { $value = $values[$language]; $o = array('class' => '', 'url' => ''); if ($value && is_numeric($value)) { $url = wp_get_attachment_image_src($value, $field['preview_size']); $o['class'] = 'active'; $o['url'] = $url[0]; } $field['class'] = $base_class; if ($language === $currentLanguage) { $field['class'] .= ' current-language'; $o['class'] .= ' current-language'; } $field['name'] = $base_name . '[' . $language . ']'; ?> <div class="acf-image-uploader clearfix <?php echo $o['class']; ?> " data-preview_size="<?php echo $field['preview_size']; ?> " data-library="<?php echo $field['library']; ?> " data-language="<?php echo $language; ?> " > <input class="acf-image-value" type="hidden" name="<?php echo $field['name']; ?> " value="<?php echo $value; ?> " /> <div class="has-image"> <div class="hover"> <ul class="bl"> <li><a class="acf-button-delete ir" href="#"><?php _e("Remove", 'acf'); ?> </a></li> <li><a class="acf-button-edit ir" href="#"><?php _e("Edit", 'acf'); ?> </a></li> </ul> </div> <img class="acf-image-image" src="<?php echo $o['url']; ?> " alt="" /> </div> <div class="no-image"> <p><?php _e('No image selected', 'acf'); ?> <input type="button" class="button add-image" value="<?php _e('Add Image', 'acf'); ?> " /> </div> </div> <?php } echo '</div>'; }
function qs_UpdateOrder($order_id) { global $wpdb; $orders = get_option('qs_orders'); if (!is_array($orders)) { return false; } foreach ($orders as $key => $order) { // search for wanted order if ($order['order']['order_id'] != $order_id) { continue; } // query server for updates $order['order']['order_url'] = get_option('home'); $result = qs_queryQS(QS_RETRIEVE_TRANSLATION, $order['order']); $orders[$key]['status'] = $result['order_comment']; // update db if post is updated if (isset($result['order_status']) && $result['order_status'] == QS_STATE_CLOSED) { $order['post_id'] = intval($order['post_id']); $post =& get_post($order['post_id']); $title = qtrans_split($post->post_title); $content = qtrans_split($post->post_content); $title[$order['target_language']] = $result['order_translated_title']; $content[$order['target_language']] = $result['order_translated_text']; $post->post_title = qtrans_join($title); $post->post_content = qtrans_join($content); $wpdb->show_errors(); $wpdb->query('UPDATE ' . $wpdb->posts . ' SET post_title="' . mysql_escape_string($post->post_title) . '", post_content = "' . mysql_escape_string($post->post_content) . '" WHERE ID = "' . $post->ID . '"'); wp_cache_add($post->ID, $post, 'posts'); unset($orders[$key]); } update_option('qs_orders', $orders); return true; } return false; }
function render_field($field) { global $q_config; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); // enqueue acf_enqueue_uploader(); // vars $div = array('class' => 'acf-image-uploader acf-cf', 'data-preview_size' => $field['preview_size'], 'data-library' => $field['library'], 'data-mime_types' => $field['mime_types']); $input_atts = array('type' => 'hidden', 'name' => $field['name'], 'value' => $field['value'], 'data-name' => 'value-id'); $url = ''; echo '<div class="multi-language-field multi-language-field-image">'; foreach ($languages as $language) { $class = 'wp-switch-editor'; if ($language === $currentLanguage) { $class .= ' current-language'; } echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $input_atts['name'] = $field['name'] . '[' . $language . ']'; $field['value'] = $values[$language]; $div['data-language'] = $language; $div['class'] = 'acf-image-uploader acf-cf'; // has value? if ($field['value'] && is_numeric($field['value'])) { $url = wp_get_attachment_image_src($field['value'], $field['preview_size']); $url = $url[0]; $div['class'] .= ' has-value'; } // basic? $basic = !current_user_can('upload_files'); if ($basic) { $div['class'] .= ' basic'; } if ($language === $currentLanguage) { $div['class'] .= ' current-language'; } ?> <div <?php acf_esc_attr_e($div); ?> > <div class="acf-hidden"> <?php acf_hidden_input(array('name' => $input_atts['name'], 'value' => $field['value'], 'data-name' => 'id')); ?> </div> <div class="view show-if-value acf-soh"> <img data-name="image" src="<?php echo $url; ?> " alt=""/> <ul class="acf-hl acf-soh-target"> <?php if (!$basic) { ?> <li><a class="acf-icon dark" data-name="edit" href="#"><i class="acf-sprite-edit"></i></a></li> <?php } ?> <li><a class="acf-icon dark" data-name="remove" href="#"><i class="acf-sprite-delete"></i></a></li> </ul> </div> <div class="view hide-if-value"> <?php if ($basic) { ?> <?php if ($field['value'] && !is_numeric($field['value'])) { ?> <div class="acf-error-message"><p><?php echo $field['value']; ?> </p></div> <?php } ?> <input type="file" name="<?php echo $field['name']; ?> " id="<?php echo $field['id']; ?> " /> <?php } else { ?> <p style="margin:0;"><?php _e('No image selected', 'acf'); ?> <a data-name="add" class="acf-button" href="#"><?php _e('Add Image', 'acf'); ?> </a></p> <?php } ?> </div> </div> <?php } echo '</div>'; }
/** * MigrateEvents::POST_ROW_SAVE event handler. * * @param GetResponseEvent $event * Instance of Symfony\Component\HttpKernel\Event\GetResponseEvent. */ public function updateTranslations(GetResponseEvent $event) { $row = $event->getRow(); $migrate_src_values = $row->getSource(); $migrate_dest_values = $row->getDestination(); // Make sure that this post processing is enables for this migration. if (!isset($migrate_src_values['constants']['post_save_process']) || $migrate_src_values['constants']['post_save_process'] != 'DonkeymediaMigratePostSave') { return $event; } module_load_include('inc', 'donkeymedia_migrate', 'qtranslate_parser'); // These are defined in migration.yml. $available_languages = $row->getSource()['constants']['available_languages']; $default_language = $row->getDestination()['langcode']; // Unset default language from available langguages. if (($key = array_search($default_language, $available_languages)) !== FALSE) { unset($available_languages[$key]); } $migrated_node = $event->destinationIdValues[0]; $entity = node_load($migrated_node); // Get multilingual fields in all languages. $titles = qtrans_split($migrate_src_values['title'], $available_languages); $body_values = qtrans_split($migrate_src_values['content:encoded'], $available_languages); foreach ($available_languages as $lang) { // Preprocess Body: // Remove Caption and prepare Image. $caption_tags = $this->getTags($body_values[$lang]); // Remove Caption. $body_value = $this->getTags($body_values[$lang], TRUE); // Only add translation if we have some translated Stuff. $check_values = isset($titles[$lang]) && strlen($titles[$lang]) > 0 && isset($body_values[$lang]) && strlen($body_values[$lang]) > 0; $check_content = TRUE; //($titles[$lang] != $entity->getTitle()) || $body_values[$lang] != $entity->get('body'); $has_images = count($caption_tags['caption']['values']) > 0; if ($has_images) { $X = FALSE; } if ($check_values && $check_content) { $values = array('created' => $migrate_dest_values['created'], 'uid' => $migrate_dest_values['uid'], 'sticky' => $migrate_dest_values['sticky'], 'status' => $migrate_dest_values['status'], 'title' => $titles[$lang], 'body' => array('value' => $body_value, 'format' => $migrate_dest_values['body']['format'])); if ($has_images) { $images = array(); foreach ($caption_tags['caption']['values'] as $img) { $q = db_select('migrate_map_donkeymedia_file', 'm')->fields('m', array('sourceid1', 'destid1'))->condition('m.sourceid1', $img['attachment'])->execute(); $map = $q->fetchObject(); $file = \Drupal::entityManager()->getStorage('file')->load($map->destid1); if (is_object($file)) { $image_values = array('target_id' => $file->id(), 'alt' => $img['alt'], 'title' => $img['caption']); $images[] = $image_values; $file = FALSE; } else { trigger_error("Can't find file:", E_USER_WARNING); var_dump($img); } } // Directly setting the values doesn't work :/ // $values['field_image'] = $images; } $translated_entity = $entity->addTranslation($lang, $values); if ($has_images && !empty($images)) { $translated_entity->save(); $translated_entity->field_image->setValue($images); $translated_entity->setChangedTime($migrate_dest_values['changed']); $translated_entity->save(); } else { $translated_entity->setChangedTime($migrate_dest_values['changed']); $translated_entity->save(); } } } $map = $event->getMigration()->getIdMap(); $map->saveIdMapping($event->getRow(), array($migrated_node)); }
function create_field($field) { global $q_config, $wp_version; $languages = qtrans_getSortedLanguages(true); $values = qtrans_split($field['value'], $quicktags = true); $currentLanguage = $this->plugin->get_active_language(); echo '<div class="multi-language-field multi-language-field-wysiwyg">'; foreach ($languages as $language) { $class = $language === $currentLanguage ? 'wp-switch-editor current-language' : 'wp-switch-editor'; echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>'; } foreach ($languages as $language) { $value = $values[$language]; $id = 'wysiwyg-' . $field['id'] . '-' . uniqid(); $name = $field['name'] . "[{$language}]"; $class = $language === $currentLanguage ? 'acf_wysiwyg wp-editor-wrap current-language' : 'acf_wysiwyg wp-editor-wrap'; ?> <div id="wp-<?php echo $id; ?> -wrap" class="<?php echo $class; ?> " data-toolbar="<?php echo $field['toolbar']; ?> " data-upload="<?php echo $field['media_upload']; ?> " data-language="<?php echo $language; ?> "> <?php if (user_can_richedit() && $field['media_upload'] == 'yes') { ?> <?php if (version_compare($wp_version, '3.3', '<')) { ?> <div id="editor-toolbar"> <div id="media-buttons" class="hide-if-no-js"> <?php do_action('media_buttons'); ?> </div> </div> <?php } else { ?> <div id="wp-<?php echo $id; ?> -editor-tools" class="wp-editor-tools"> <div id="wp-<?php echo $id; ?> -media-buttons" class="hide-if-no-js wp-media-buttons"> <?php do_action('media_buttons'); ?> </div> </div> <?php } ?> <?php } ?> <div id="wp-<?php echo $id; ?> -editor-container" class="wp-editor-container"> <textarea id="<?php echo $id; ?> " class="qtx-wp-editor-area" name="<?php echo $name; ?> " ><?php if (user_can_richedit()) { echo wp_richedit_pre($field['value']); } else { echo wp_htmledit_pre($field['value']); } ?> </textarea> </div> </div> <?php } echo '</div>'; }
/** * * get excerpt from post id */ public static function getExcerptById($postID, $limit = 55, $delimiter = ' ', $limit_type = 'words') { $post = get_post($postID); $excerpt = $post->post_excerpt; if (function_exists("qtrans_split")) { $arrExcerpt = qtrans_split($excerpt); $lang = get_bloginfo("language"); if ($lang) { $arrLang = explode("-", $lang); $lang = $arrLang[0]; $lang = strtolower($lang); } if (isset($arrExcerpt[$lang])) { $excerpt = $arrExcerpt[$lang]; } } $excerpt = trim($excerpt); if (empty($excerpt)) { $excerpt = $post->post_content; } $excerpt = strip_tags($excerpt, "<b><br><br/><i><small>"); if ($limit_type == 'words') { $excerpt = UniteFunctionsBiz::getTextIntro($excerpt, $limit, $delimiter); } else { $excerpt = UniteFunctionsBiz::getTextIntroChar($excerpt, $limit); } return $excerpt; }
?> /wp-admin/page.php?action=edit&post=<?php echo $post->ID; ?> "> <?php echo str_repeat('—', $post->qtm_depth) . ' ' . qtrans_use($_lang, $post->post_title); ?> </a> </td> <?php foreach ($qtransMETA->field_names as $field => $field_label) { echo '<td>'; switch ($_view) { case 'flags': foreach (qtrans_split(get_post_meta($post->ID, "qtrans_meta:{$field}", true)) as $lang => $f) { $class = $f ? 'present' : 'not-present'; $title = $f ? $f : '(empty)'; echo '<img src="' . WP_PLUGIN_URL . '/qtranslate/flags/' . $q_config['flag'][$lang] . '" alt="' . strtoupper($lang) . '" class="' . $class . '" title="' . $title . '" /> '; } break; case 'text': echo qtrans_use($_lang, get_post_meta($post->ID, "qtrans_meta:{$field}", true)); break; } echo '</td>'; } echo '</tr>'; } ?>
</tr> <tr> <th><label for="Slide.description"><?php _e('Description', $this->plugin_name); ?> </label> <?php echo $this->Html->help(__('The description is specifically used for the information bar if you have that turned on.', $this->plugin_name)); ?> </th> <td> <?php if ($this->language_do()) { ?> <?php $descriptions = qtrans_split($this->Slide->data->description); ?> <div id="slide-description-tabs"> <ul> <?php foreach ($languages as $language) { ?> <li><a href="#slide-description-tabs-<?php echo $language; ?> "><?php echo $this->language_flag($language); ?> </a></li> <?php }