Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/sitepres.../menu
File: edit-languages.php
'active' => $active,
[500] Fix | Delete
'encode_url' => $encode_url,
[501] Fix | Delete
'tag' => $tag,
[502] Fix | Delete
]
[503] Fix | Delete
);
[504] Fix | Delete
}
[505] Fix | Delete
[506] Fix | Delete
function update_main_table( $id, $code, $default_locale, $encode_url, $tag ) {
[507] Fix | Delete
global $wpdb;
[508] Fix | Delete
$wpdb->update(
[509] Fix | Delete
$wpdb->prefix . 'icl_languages', [
[510] Fix | Delete
'code' => $code,
[511] Fix | Delete
'default_locale' => $default_locale,
[512] Fix | Delete
'encode_url' => $encode_url,
[513] Fix | Delete
'tag' => $tag,
[514] Fix | Delete
], [ 'ID' => $id ]
[515] Fix | Delete
);
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
function insert_translation( $name, $language_code, $display_language_code ) {
[519] Fix | Delete
global $wpdb;
[520] Fix | Delete
$insert_sql = "INSERT INTO {$wpdb->prefix}icl_languages_translations (name, language_code, display_language_code) VALUES(%s, %s, %s)";
[521] Fix | Delete
$insert_prepared = $wpdb->prepare( $insert_sql, [ $name, $language_code, $display_language_code ] );
[522] Fix | Delete
[523] Fix | Delete
return $wpdb->query( $insert_prepared );
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
function update_translation( $name, $language_code, $display_language_code ) {
[527] Fix | Delete
global $wpdb;
[528] Fix | Delete
$update_sql = "UPDATE {$wpdb->prefix}icl_languages_translations SET name=%s WHERE language_code = %s AND display_language_code = %s";
[529] Fix | Delete
$update_prepared = $wpdb->prepare( $update_sql, [ $name, $language_code, $display_language_code ] );
[530] Fix | Delete
$wpdb->query( $update_prepared );
[531] Fix | Delete
}
[532] Fix | Delete
[533] Fix | Delete
function insert_flag( $lang_code, $flag, $from_template ) {
[534] Fix | Delete
global $wpdb;
[535] Fix | Delete
$insert_sql = "INSERT INTO {$wpdb->prefix}icl_flags (lang_code, flag, from_template) VALUES(%s, %s, %s)";
[536] Fix | Delete
$insert_prepared = $wpdb->prepare( $insert_sql, [ $lang_code, $flag, $from_template ] );
[537] Fix | Delete
[538] Fix | Delete
return $wpdb->query( $insert_prepared );
[539] Fix | Delete
}
[540] Fix | Delete
[541] Fix | Delete
function update_flag( $lang_code, $flag, $from_template ) {
[542] Fix | Delete
global $wpdb;
[543] Fix | Delete
$update_sql = "UPDATE {$wpdb->prefix}icl_flags SET flag= %s,from_template=%s WHERE lang_code = %s";
[544] Fix | Delete
$update_prepared = $wpdb->prepare( $update_sql, [ $flag, $from_template, $lang_code ] );
[545] Fix | Delete
$wpdb->query( $update_prepared );
[546] Fix | Delete
}
[547] Fix | Delete
[548] Fix | Delete
function update() {
[549] Fix | Delete
$this->mode = 'save';
[550] Fix | Delete
[551] Fix | Delete
// Basic check.
[552] Fix | Delete
if ( ! isset( $_POST['icl_edit_languages'] ) || ! is_array( $_POST['icl_edit_languages'] ) ) {
[553] Fix | Delete
$this->set_errors( __( 'Please, enter valid data.', 'sitepress' ) );
[554] Fix | Delete
[555] Fix | Delete
return;
[556] Fix | Delete
}
[557] Fix | Delete
[558] Fix | Delete
global $sitepress, $wpdb;
[559] Fix | Delete
[560] Fix | Delete
// First check if add and validate it.
[561] Fix | Delete
if ( isset( $_POST['icl_edit_languages']['add'] ) && $_POST['icl_edit_languages_ignore_add'] == 'false' ) {
[562] Fix | Delete
if ( $this->validate_one( 'add', $_POST['icl_edit_languages']['add'] ) ) {
[563] Fix | Delete
$this->insert_one( $this->sanitize( $_POST['icl_edit_languages']['add'] ) );
[564] Fix | Delete
}
[565] Fix | Delete
// Reset flag upload field.
[566] Fix | Delete
$_POST['icl_edit_languages']['add']['flag_upload'] = 'false';
[567] Fix | Delete
}
[568] Fix | Delete
[569] Fix | Delete
foreach ( $_POST['icl_edit_languages'] as $id => $data ) {
[570] Fix | Delete
// Ignore insert.
[571] Fix | Delete
if ( $id == 'add' ) {
[572] Fix | Delete
continue;
[573] Fix | Delete
}
[574] Fix | Delete
[575] Fix | Delete
// Validate and sanitize data.
[576] Fix | Delete
if ( ! $this->validate_one( $id, $data ) ) {
[577] Fix | Delete
continue;
[578] Fix | Delete
}
[579] Fix | Delete
$data = stripslashes_deep( $data );
[580] Fix | Delete
[581] Fix | Delete
// Update main table.
[582] Fix | Delete
$this->update_main_table( $id, $data['code'], $data['default_locale'], $data['encode_url'], $data['tag'] );
[583] Fix | Delete
[584] Fix | Delete
if (
[585] Fix | Delete
$wpdb->get_var(
[586] Fix | Delete
$wpdb->prepare( "SELECT code FROM {$wpdb->prefix}icl_locale_map WHERE code = %s", $data['code'] )
[587] Fix | Delete
)
[588] Fix | Delete
) {
[589] Fix | Delete
$wpdb->update( $wpdb->prefix . 'icl_locale_map', [ 'locale' => $data['default_locale'] ], [ 'code' => $data['code'] ] );
[590] Fix | Delete
} else {
[591] Fix | Delete
$wpdb->insert(
[592] Fix | Delete
$wpdb->prefix . 'icl_locale_map', [
[593] Fix | Delete
'code' => $data['code'],
[594] Fix | Delete
'locale' => $data['default_locale'],
[595] Fix | Delete
]
[596] Fix | Delete
);
[597] Fix | Delete
}
[598] Fix | Delete
[599] Fix | Delete
// Update translations table.
[600] Fix | Delete
foreach ( $data['translations'] as $translation_code => $translation_value ) {
[601] Fix | Delete
[602] Fix | Delete
// If new (add language) translations are submitted.
[603] Fix | Delete
if ( $translation_code == 'add' ) {
[604] Fix | Delete
if ( ( $this->is_new_data_and_invalid() ) || $_POST['icl_edit_languages_ignore_add'] == 'true' ) {
[605] Fix | Delete
continue;
[606] Fix | Delete
}
[607] Fix | Delete
if ( empty( $translation_value ) ) {
[608] Fix | Delete
$translation_value = $data['english_name'];
[609] Fix | Delete
}
[610] Fix | Delete
$translation_code = $_POST['icl_edit_languages']['add']['code'];
[611] Fix | Delete
}
[612] Fix | Delete
[613] Fix | Delete
// Check if update.
[614] Fix | Delete
if ( $wpdb->get_var(
[615] Fix | Delete
$wpdb->prepare(
[616] Fix | Delete
"SELECT id FROM {$wpdb->prefix}icl_languages_translations WHERE language_code = %s AND display_language_code=%s",
[617] Fix | Delete
$data['code'],
[618] Fix | Delete
$translation_code
[619] Fix | Delete
)
[620] Fix | Delete
)
[621] Fix | Delete
) {
[622] Fix | Delete
$this->update_translation( $translation_value, $data['code'], $translation_code );
[623] Fix | Delete
} else {
[624] Fix | Delete
if ( ! $this->insert_translation( $translation_value, $data['code'], $translation_code ) ) {
[625] Fix | Delete
$this->set_errors( sprintf( __( 'Error adding translation %1$s for %2$s.', 'sitepress' ), $data['code'], $translation_code ) );
[626] Fix | Delete
}
[627] Fix | Delete
}
[628] Fix | Delete
}
[629] Fix | Delete
[630] Fix | Delete
// Handle flag.
[631] Fix | Delete
$from_template = $this->handle_flag_post_data( $data, $id );
[632] Fix | Delete
[633] Fix | Delete
// Update flag table.
[634] Fix | Delete
$this->update_flag( $data['code'], $data['flag'], $from_template );
[635] Fix | Delete
// Reset flag upload field.
[636] Fix | Delete
$_POST['icl_edit_languages'][ $id ]['flag_upload'] = 'false';
[637] Fix | Delete
}
[638] Fix | Delete
// Refresh cache.
[639] Fix | Delete
$sitepress->get_language_name_cache()->clear();
[640] Fix | Delete
$sitepress->clear_flags_cache();
[641] Fix | Delete
delete_option( '_icl_cache' );
[642] Fix | Delete
[643] Fix | Delete
// Unset ADD fields.
[644] Fix | Delete
if ( $this->is_new_data_and_valid() ) {
[645] Fix | Delete
unset( $_POST['icl_edit_languages']['add'] );
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
// Reset active languages.
[649] Fix | Delete
$this->get_active_languages();
[650] Fix | Delete
$this->update_language_packs( $sitepress );
[651] Fix | Delete
}
[652] Fix | Delete
[653] Fix | Delete
/**
[654] Fix | Delete
* @param array $data
[655] Fix | Delete
* @param int $id
[656] Fix | Delete
*
[657] Fix | Delete
* @return int
[658] Fix | Delete
*/
[659] Fix | Delete
private function handle_flag_post_data( array &$data, $id ) {
[660] Fix | Delete
$from_template = 0;
[661] Fix | Delete
if ( $this->is_flag_uploading_process( $data, $id ) ) {
[662] Fix | Delete
if ( $filename = $this->upload_flag( $id ) ) {
[663] Fix | Delete
$data['flag'] = $filename;
[664] Fix | Delete
$from_template = 1;
[665] Fix | Delete
} else {
[666] Fix | Delete
$data['flag'] = $data['code'] . '.png';
[667] Fix | Delete
$this->set_errors( __( 'Error uploading flag file.', 'sitepress' ) );
[668] Fix | Delete
}
[669] Fix | Delete
$this->wpml_flags->clear();
[670] Fix | Delete
} elseif ( empty( $data['flag'] ) || 'false' === $data['flag_upload'] ) {
[671] Fix | Delete
$data['flag'] = $data['code'] . '.png';
[672] Fix | Delete
} else {
[673] Fix | Delete
$from_template = 1;
[674] Fix | Delete
}
[675] Fix | Delete
[676] Fix | Delete
return $from_template;
[677] Fix | Delete
}
[678] Fix | Delete
[679] Fix | Delete
/**
[680] Fix | Delete
* @param array $data
[681] Fix | Delete
* @param $id
[682] Fix | Delete
*
[683] Fix | Delete
* @return bool
[684] Fix | Delete
*/
[685] Fix | Delete
private function is_flag_uploading_process( array &$data, $id ) {
[686] Fix | Delete
return array_key_exists( 'flag_upload', $data ) && 'true' == $data['flag_upload'] && ! empty( $_FILES['icl_edit_languages']['name'][ $id ]['flag_file'] );
[687] Fix | Delete
}
[688] Fix | Delete
[689] Fix | Delete
function insert_one( $data ) {
[690] Fix | Delete
global $sitepress, $wpdb;
[691] Fix | Delete
[692] Fix | Delete
$data = stripslashes_deep( stripslashes_deep( $data ) );
[693] Fix | Delete
// Insert main table.
[694] Fix | Delete
if ( ! $this->insert_main_table( $data['code'], $data['english_name'], $data['default_locale'], 0, 1, $data['encode_url'], $data['tag'] ) ) {
[695] Fix | Delete
$this->set_errors( __( 'Adding language failed.', 'sitepress' ) );
[696] Fix | Delete
[697] Fix | Delete
return false;
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
// add locale map
[701] Fix | Delete
$locale_exists = $wpdb->get_var(
[702] Fix | Delete
$wpdb->prepare(
[703] Fix | Delete
"SELECT code
[704] Fix | Delete
FROM {$wpdb->prefix}icl_locale_map
[705] Fix | Delete
WHERE code=%s", $data['code']
[706] Fix | Delete
)
[707] Fix | Delete
);
[708] Fix | Delete
if ( $locale_exists ) {
[709] Fix | Delete
$wpdb->update( $wpdb->prefix . 'icl_locale_map', [ 'locale' => $data['default_locale'] ], [ 'code' => $data['code'] ] );
[710] Fix | Delete
} else {
[711] Fix | Delete
$wpdb->insert(
[712] Fix | Delete
$wpdb->prefix . 'icl_locale_map', [
[713] Fix | Delete
'code' => $data['code'],
[714] Fix | Delete
'locale' => $data['default_locale'],
[715] Fix | Delete
]
[716] Fix | Delete
);
[717] Fix | Delete
}
[718] Fix | Delete
[719] Fix | Delete
// Insert translations.
[720] Fix | Delete
$all_languages = $sitepress->get_languages();
[721] Fix | Delete
foreach ( $all_languages as $key => $lang ) {
[722] Fix | Delete
[723] Fix | Delete
// If submitted.
[724] Fix | Delete
if ( array_key_exists( $lang['code'], $data['translations'] ) ) {
[725] Fix | Delete
if ( empty( $data['translations'][ $lang['code'] ] ) ) {
[726] Fix | Delete
$data['translations'][ $lang['code'] ] = $data['english_name'];
[727] Fix | Delete
}
[728] Fix | Delete
if ( ! $this->insert_translation(
[729] Fix | Delete
$data['translations'][ $lang['code'] ],
[730] Fix | Delete
$data['code'],
[731] Fix | Delete
$lang['code']
[732] Fix | Delete
)
[733] Fix | Delete
) {
[734] Fix | Delete
$this->set_errors(
[735] Fix | Delete
sprintf(
[736] Fix | Delete
__( 'Error adding translation %1$s for %2$s.', 'sitepress' ),
[737] Fix | Delete
$data['code'],
[738] Fix | Delete
$lang['code']
[739] Fix | Delete
)
[740] Fix | Delete
);
[741] Fix | Delete
}
[742] Fix | Delete
} else {
[743] Fix | Delete
if ( ! $this->insert_translation( $data['english_name'], $data['code'], $lang['code'] ) ) {
[744] Fix | Delete
$this->set_errors(
[745] Fix | Delete
sprintf(
[746] Fix | Delete
__( 'Error adding translation %1$s for %2$s.', 'sitepress' ),
[747] Fix | Delete
$data['code'],
[748] Fix | Delete
$lang['code']
[749] Fix | Delete
)
[750] Fix | Delete
);
[751] Fix | Delete
}
[752] Fix | Delete
}
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
// Insert native name.
[756] Fix | Delete
if ( ! isset( $data['translations']['add'] ) || empty( $data['translations']['add'] ) ) {
[757] Fix | Delete
$data['translations']['add'] = $data['english_name'];
[758] Fix | Delete
}
[759] Fix | Delete
if ( ! $this->insert_translation( $data['translations']['add'], $data['code'], $data['code'] ) ) {
[760] Fix | Delete
$this->set_errors( __( 'Error adding native name.', 'sitepress' ) );
[761] Fix | Delete
}
[762] Fix | Delete
[763] Fix | Delete
// Handle flag.
[764] Fix | Delete
$from_template = $this->handle_flag_post_data( $data, 'add' );
[765] Fix | Delete
[766] Fix | Delete
// Insert flag table.
[767] Fix | Delete
if ( ! $this->insert_flag( $data['code'], $data['flag'], $from_template ) ) {
[768] Fix | Delete
$this->set_errors( __( 'Error adding flag.', 'sitepress' ) );
[769] Fix | Delete
}
[770] Fix | Delete
SitePress_Setup::insert_default_category( $data['code'] );
[771] Fix | Delete
}
[772] Fix | Delete
[773] Fix | Delete
function validate_one( $id, $data ) {
[774] Fix | Delete
[775] Fix | Delete
global $wpdb;
[776] Fix | Delete
[777] Fix | Delete
$new_record = 'add' === $id;
[778] Fix | Delete
[779] Fix | Delete
$unique_columns = [
[780] Fix | Delete
'code' => esc_html__( 'The Language code already exists.', 'sitepress' ),
[781] Fix | Delete
'english_name' => esc_html__( 'The Language name already exists.', 'sitepress' ),
[782] Fix | Delete
'default_locale' => esc_html__( 'The default locale already exists.', 'sitepress' ),
[783] Fix | Delete
'tag' => esc_html__( 'The hreflang already exists.', 'sitepress' ),
[784] Fix | Delete
];
[785] Fix | Delete
[786] Fix | Delete
foreach ( $unique_columns as $column => $message ) {
[787] Fix | Delete
$exists_args = [ $data[ $column ] ];
[788] Fix | Delete
[789] Fix | Delete
$exists_query = 'SELECT ' . esc_sql( $column ) . ' FROM ' . $wpdb->prefix . 'icl_languages WHERE ' . esc_sql( $column ) . '=%s ';
[790] Fix | Delete
[791] Fix | Delete
if ( ! $new_record ) {
[792] Fix | Delete
$exists_query .= 'AND id!=%d ';
[793] Fix | Delete
$exists_args[] = $id;
[794] Fix | Delete
}
[795] Fix | Delete
[796] Fix | Delete
$exists_query .= 'LIMIT 1';
[797] Fix | Delete
[798] Fix | Delete
$exists = $wpdb->get_var( $wpdb->prepare( $exists_query, $exists_args ) );
[799] Fix | Delete
if ( $exists ) {
[800] Fix | Delete
$this->error = $message;
[801] Fix | Delete
$this->set_validation_failed( $id );
[802] Fix | Delete
[803] Fix | Delete
return false;
[804] Fix | Delete
}
[805] Fix | Delete
}
[806] Fix | Delete
[807] Fix | Delete
foreach ( $this->required_fields as $name => $type ) {
[808] Fix | Delete
if ( 'flag' === $name ) {
[809] Fix | Delete
if ( isset( $data['flag_upload'] ) && 'true' === $data['flag_upload'] ) {
[810] Fix | Delete
$check = $_FILES['icl_edit_languages']['name'][ $id ]['flag_file'];
[811] Fix | Delete
if ( empty( $check ) ) {
[812] Fix | Delete
continue;
[813] Fix | Delete
}
[814] Fix | Delete
if ( ! $this->check_extension( $check ) ) {
[815] Fix | Delete
if ( 'add' === $id ) {
[816] Fix | Delete
$this->set_validation_failed( $id );
[817] Fix | Delete
}
[818] Fix | Delete
[819] Fix | Delete
return false;
[820] Fix | Delete
}
[821] Fix | Delete
}
[822] Fix | Delete
continue;
[823] Fix | Delete
}
[824] Fix | Delete
[825] Fix | Delete
if ( 'code' === $name ) {
[826] Fix | Delete
if ( ! $this->is_language_code_valid( $data[ $name ] ) ) {
[827] Fix | Delete
$this->set_errors( __( 'Invalid character in language code.', 'sitepress' ) );
[828] Fix | Delete
$this->set_validation_failed( $id );
[829] Fix | Delete
[830] Fix | Delete
return false;
[831] Fix | Delete
}
[832] Fix | Delete
[833] Fix | Delete
continue;
[834] Fix | Delete
}
[835] Fix | Delete
[836] Fix | Delete
if ( ! isset( $_POST['icl_edit_languages'][ $id ][ $name ] ) || empty( $_POST['icl_edit_languages'][ $id ][ $name ] ) ) {
[837] Fix | Delete
if ( 'true' === $_POST['icl_edit_languages_ignore_add'] ) {
[838] Fix | Delete
return false;
[839] Fix | Delete
}
[840] Fix | Delete
$this->set_errors( __( 'Please, enter required data.', 'sitepress' ) );
[841] Fix | Delete
if ( 'add' === $id ) {
[842] Fix | Delete
$this->set_validation_failed( $id );
[843] Fix | Delete
}
[844] Fix | Delete
[845] Fix | Delete
return false;
[846] Fix | Delete
}
[847] Fix | Delete
if ( 'array' === $type && ! is_array( $_POST['icl_edit_languages'][ $id ][ $name ] ) ) {
[848] Fix | Delete
if ( 'add' === $id ) {
[849] Fix | Delete
$this->set_validation_failed( $id );
[850] Fix | Delete
}
[851] Fix | Delete
$this->set_errors( __( 'Please, enter valid data.', 'sitepress' ) );
[852] Fix | Delete
[853] Fix | Delete
return false;
[854] Fix | Delete
}
[855] Fix | Delete
}
[856] Fix | Delete
[857] Fix | Delete
return true;
[858] Fix | Delete
}
[859] Fix | Delete
[860] Fix | Delete
/**
[861] Fix | Delete
* Checks that language code is valid.
[862] Fix | Delete
*
[863] Fix | Delete
* @param string $language_code Unvalidated language code from input.
[864] Fix | Delete
*
[865] Fix | Delete
* @return bool
[866] Fix | Delete
*/
[867] Fix | Delete
private function is_language_code_valid( $language_code ) {
[868] Fix | Delete
$pattern = '/^[a-zA-Z0-9\-\_]+$/';
[869] Fix | Delete
[870] Fix | Delete
return (bool) preg_match( $pattern, $language_code );
[871] Fix | Delete
}
[872] Fix | Delete
[873] Fix | Delete
/**
[874] Fix | Delete
* @return bool
[875] Fix | Delete
*/
[876] Fix | Delete
private function is_delete_language_action() {
[877] Fix | Delete
return isset( $_GET['action'] ) && 'delete-language' === $_GET['action'] && wp_create_nonce( 'delete-language' . (int) $_GET['id'] ) == $_GET['icl_nonce'];
[878] Fix | Delete
}
[879] Fix | Delete
[880] Fix | Delete
/**
[881] Fix | Delete
* @return bool
[882] Fix | Delete
*/
[883] Fix | Delete
private function must_display_new_language_translation_column() {
[884] Fix | Delete
return $this->is_edit_mode() || $this->is_new_data_and_valid();
[885] Fix | Delete
}
[886] Fix | Delete
[887] Fix | Delete
/**
[888] Fix | Delete
* @return bool
[889] Fix | Delete
*/
[890] Fix | Delete
private function is_new_data_and_invalid() {
[891] Fix | Delete
return $this->validation_action && $this->validation_failed && 'add' === $this->validation_action;
[892] Fix | Delete
}
[893] Fix | Delete
[894] Fix | Delete
/**
[895] Fix | Delete
* @return bool
[896] Fix | Delete
*/
[897] Fix | Delete
private function is_new_data_and_valid() {
[898] Fix | Delete
return $this->validation_action && ! $this->validation_failed && 'add' === $this->validation_action;
[899] Fix | Delete
}
[900] Fix | Delete
[901] Fix | Delete
/**
[902] Fix | Delete
* @return bool
[903] Fix | Delete
*/
[904] Fix | Delete
private function is_edit_mode() {
[905] Fix | Delete
return 'edit' === $this->mode;
[906] Fix | Delete
}
[907] Fix | Delete
[908] Fix | Delete
private function set_validation_failed( $id ) {
[909] Fix | Delete
$this->validation_action = ( 'add' === $id ) ? 'add' : 'update';
[910] Fix | Delete
$this->validation_failed = true;
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
function delete_language( $lang_id ) {
[914] Fix | Delete
global $wpdb, $sitepress;
[915] Fix | Delete
$lang = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}icl_languages WHERE id=%d", $lang_id ) );
[916] Fix | Delete
if ( $lang ) {
[917] Fix | Delete
if ( in_array( $lang->code, $this->built_in_languages, true ) ) {
[918] Fix | Delete
$error = __( "Error: This is a built in language. You can't delete it.", 'sitepress' );
[919] Fix | Delete
} else {
[920] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_languages WHERE id=%d", $lang_id ) );
[921] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_languages_translations WHERE language_code=%s", $lang->code ) );
[922] Fix | Delete
[923] Fix | Delete
$translation_ids = $wpdb->get_col( $wpdb->prepare( "SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE language_code=%s", $lang->code ) );
[924] Fix | Delete
if ( $translation_ids ) {
[925] Fix | Delete
$rids = $wpdb->get_col( "SELECT rid FROM {$wpdb->prefix}icl_translation_status WHERE translation_id IN (" . wpml_prepare_in( $translation_ids, '%d' ) . ')' );
[926] Fix | Delete
if ( $rids ) {
[927] Fix | Delete
$job_ids = $wpdb->get_col( "SELECT job_id FROM {$wpdb->prefix}icl_translate_job WHERE rid IN (" . wpml_prepare_in( $rids, '%d' ) . ')' );
[928] Fix | Delete
if ( $job_ids ) {
[929] Fix | Delete
$wpdb->query( "DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id IN (" . wpml_prepare_in( $job_ids, '%d' ) . ')' );
[930] Fix | Delete
}
[931] Fix | Delete
}
[932] Fix | Delete
}
[933] Fix | Delete
[934] Fix | Delete
// delete posts
[935] Fix | Delete
$post_ids = $wpdb->get_col(
[936] Fix | Delete
$wpdb->prepare(
[937] Fix | Delete
"SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type LIKE %s AND language_code=%s",
[938] Fix | Delete
[ wpml_like_escape( 'post_' ) . '%', $lang->code ]
[939] Fix | Delete
)
[940] Fix | Delete
);
[941] Fix | Delete
remove_action( 'delete_post', [ $sitepress, 'delete_post_actions' ] );
[942] Fix | Delete
foreach ( $post_ids as $post_id ) {
[943] Fix | Delete
wp_delete_post( $post_id, true );
[944] Fix | Delete
}
[945] Fix | Delete
add_action( 'delete_post', [ $sitepress, 'delete_post_actions' ] );
[946] Fix | Delete
[947] Fix | Delete
// delete terms
[948] Fix | Delete
remove_action( 'delete_term', [ $sitepress, 'delete_term' ], 1, 3 );
[949] Fix | Delete
$tax_ids = $wpdb->get_col(
[950] Fix | Delete
$wpdb->prepare(
[951] Fix | Delete
"SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type LIKE %s AND language_code=%s",
[952] Fix | Delete
[ wpml_like_escape( 'tax_' ) . '%', $lang->code ]
[953] Fix | Delete
)
[954] Fix | Delete
);
[955] Fix | Delete
foreach ( $tax_ids as $tax_id ) {
[956] Fix | Delete
$row = $wpdb->get_row( $wpdb->prepare( "SELECT term_id, taxonomy FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d", $tax_id ) );
[957] Fix | Delete
if ( $row ) {
[958] Fix | Delete
wp_delete_term( $row->term_id, $row->taxonomy );
[959] Fix | Delete
}
[960] Fix | Delete
}
[961] Fix | Delete
add_action( 'delete_term', [ $sitepress, 'delete_term' ], 1, 3 );
[962] Fix | Delete
[963] Fix | Delete
// delete comments
[964] Fix | Delete
global $IclCommentsTranslation;
[965] Fix | Delete
remove_action( 'delete_comment', [ $IclCommentsTranslation, 'delete_comment_actions' ] );
[966] Fix | Delete
foreach ( $post_ids as $post_id ) {
[967] Fix | Delete
wp_delete_post( $post_id, true );
[968] Fix | Delete
}
[969] Fix | Delete
add_action( 'delete_comment', [ $IclCommentsTranslation, 'delete_comment_actions' ] );
[970] Fix | Delete
[971] Fix | Delete
do_action(
[972] Fix | Delete
'wpml_translation_update',
[973] Fix | Delete
[
[974] Fix | Delete
'type' => 'before_language_delete',
[975] Fix | Delete
'language' => $lang->code,
[976] Fix | Delete
]
[977] Fix | Delete
);
[978] Fix | Delete
[979] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_translations WHERE language_code=%s", $lang->code ) );
[980] Fix | Delete
[981] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_strings WHERE language=%s", $lang->code ) );
[982] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_string_translations WHERE language=%s", $lang->code ) );
[983] Fix | Delete
[984] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_locale_map WHERE code=%s", $lang->code ) );
[985] Fix | Delete
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}icl_flags WHERE lang_code=%s", $lang->code ) );
[986] Fix | Delete
[987] Fix | Delete
icl_cache_clear( false );
[988] Fix | Delete
[989] Fix | Delete
$sitepress->get_translations_cache()->clear();
[990] Fix | Delete
$sitepress->clear_flags_cache();
[991] Fix | Delete
$sitepress->get_language_name_cache()->clear();
[992] Fix | Delete
[993] Fix | Delete
$this->set_messages( sprintf( esc_html__( 'The language %s was deleted.', 'sitepress' ), '<strong>' . $lang->code . '</strong>' ) );
[994] Fix | Delete
[995] Fix | Delete
$this->update_language_packs( $sitepress );
[996] Fix | Delete
}
[997] Fix | Delete
} else {
[998] Fix | Delete
$error = __( 'Error: Language not found.', 'sitepress' );
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function