settings = $settings; } /** * Hooked to wp_ajax_translangated_get_translations_gettext */ public function gettext_get_translations() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX && current_user_can( apply_filters( 'translangated_translating_capability', 'manage_options' ) ) ) { if ( isset( $_POST['action'] ) && $_POST['action'] === 'translangated_get_translations_gettext' && ! empty( $_POST['string_ids'] ) && ! empty( $_POST['language'] ) && in_array( $_POST['language'], $this->settings['translation-languages'] ) ) { check_ajax_referer( 'gettext_get_translations', 'security' ); if ( ! empty( $_POST['string_ids'] ) ) { $gettext_string_ids = translangated_get_json_post_ids( 'string_ids' ); } else { $gettext_string_ids = array(); } $current_language = sanitize_text_field( $_POST['language'] ); $dictionaries = array(); if ( is_array( $gettext_string_ids ) ) { $trp = Translangated_Plugin::get_translangated_instance(); if ( ! $this->translangated_query ) { $this->translangated_query = $trp->get_component( 'query' ); } if ( ! $this->translation_manager ) { $this->translation_manager = $trp->get_component( 'translation_manager' ); } $dictionaries[ $current_language ] = $this->translangated_query->get_gettext_string_rows_by_ids( $gettext_string_ids, $current_language ); /* build the original id array */ $original_ids = array(); if ( ! empty( $dictionaries[ $current_language ] ) ) { foreach ( $dictionaries[ $current_language ] as $current_language_string ) { /* searching by original id */ $original_ids[] = (int)$current_language_string['ot_id']; } } echo wp_json_encode( array( 'originalIds' => $original_ids, ) ); } } } wp_die(); } /* * Save gettext translations */ public function gettext_save_translations(){ if ( defined( 'DOING_AJAX' ) && DOING_AJAX && current_user_can( apply_filters( 'translangated_translating_capability', 'manage_options' ) ) ) { if (isset($_POST['action']) && $_POST['action'] === 'translangated_save_translations_gettext' && !empty($_POST['strings'])) { check_ajax_referer( 'gettext_save_translations', 'security' ); $strings = translangated_get_json_post( 'strings' ); $update_strings = array(); foreach ( $strings as $language => $language_strings ) { if ( in_array( $language, $this->settings['translation-languages'] ) ) { $update_strings[ $language ] = array(); foreach( $language_strings as $string ) { if ( isset( $string->id ) && is_numeric( $string->id ) ) { $translated = translangated_sanitize_string( $string->translated ); $status = ! empty( $translated ) ? Translangated_Query::HUMAN_REVIEWED : Translangated_Query::NOT_TRANSLATED; array_push($update_strings[ $language ], array( 'id' => (int)$string->id, 'original' => translangated_sanitize_string( $string->original, false ), 'translated' => $translated, 'domain' => sanitize_text_field( $string->domain ), 'status' => $status, 'plural_form' => (int)$string->plural_form, 'context' => sanitize_text_field( $string->context ) )); } } } } if ( ! $this->translangated_query ) { $trp = Translangated_Plugin::get_translangated_instance(); $this->translangated_query = $trp->get_component( 'query' ); } foreach( $update_strings as $language => $update_string_array ) { $gettext_insert_update = $this->translangated_query->get_query_component('gettext_insert_update'); $gettext_insert_update->update_gettext_strings( $update_string_array, $language, array('id','translated', 'status') ); $this->translangated_query->remove_possible_duplicates($update_string_array, $language, 'gettext'); } do_action('translangated_save_editor_translations_gettext_strings', $update_strings, $this->settings); } } echo wp_json_encode( $update_strings ); wp_die(); } }