/home/fdhrevqn/public_html/wp-content/plugins.disabled/lingotek-translation/admin/view-network.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit();
$sites = get_sites();
$site_data = array();
foreach ( $sites as $site ) {
switch_to_blog( $site['blog_id'] );
$details = get_blog_details( $site['blog_id'] )->blogname;
$temp = array(
'blog_id' => $site['blog_id'],
'blogname' => $details,
);
array_push( $site_data, $temp );
$ltk = new Lingotek();
$ltk->admin_init();
restore_current_blog();
}
if ( ! empty( $_POST ) ) {
$source_site = sanitize_text_field( $_POST['source'] );
if ( isset( $_POST['destination'] ) ) {
$destination_site = $_POST['destination'];
foreach ( $destination_site as $destination ) {
$destination = sanitize_text_field( $destination );
if ( ! empty( $_POST['settings'] ) ) {
$selected_settings = array_map( 'sanitize_text_field', $_POST['settings'] );
foreach ( $selected_settings as $setting ) {
//Updates account options for access token and the base url to connect to Lingotek
if ( $setting == 'token' ) {
$lingotek_option = 'lingotek_' . $setting;
$source_options = get_blog_option( $source_site, $lingotek_option );
update_blog_option( $destination, $lingotek_option, $source_options );
$source_options = get_blog_option( $source_site, 'lingotek_base_url' );
update_blog_option( $destination, 'lingotek_base_url', $source_options );
}
//Updates the chosen option
$lingotek_option = 'lingotek_' . $setting;
$source_options = get_blog_option( $source_site, $lingotek_option );
update_blog_option( $destination, $lingotek_option, $source_options );
}
}//end if
//Creates a new project based on the name of the selected site
if ( isset( $_POST['new_project'] ) ) {
$options = get_blog_option( $destination, 'lingotek_defaults', array() );
$client = new Lingotek_API();
$title = htmlspecialchars_decode( get_blog_details( $destination )->blogname, ENT_QUOTES );
if ( $new_id = $client->create_project( $title, $community_id = get_blog_option( $destination, 'lingotek_community' ) ) ) {
$options['project_id'] = $new_id;
// Adds correct callback URL for new project
$args = array( 'callback_url' => add_query_arg( 'lingotek', 1, get_blog_details( $destination )->siteurl ) );
$response = $client->patch( $client->get_api_url() . '/project/' . $new_id, $args );
update_blog_option( $destination, 'lingotek_defaults', $options );
}
}
if ( isset( $_POST['preferences'] ) ) {
switch_to_blog( $source_site );
$preferences = Lingotek_Model::get_prefs();
update_blog_option( $destination, 'lingotek_prefs', $preferences );
restore_current_blog();
}
if ( isset( $_POST['utility_set_default_language'] ) ) {
switch_to_blog( $destination );
$GLOBALS['wp_lingotek']->utilities->run_utility( 'utility_set_default_language' );
restore_current_blog();
}
}//end foreach
if ( isset( $_POST['utility_set_default_language'] ) ) {
add_settings_error( 'network', 'utilities', __( 'The language utility ran successfully.', 'lingotek-translation' ), 'updated' );
}
add_settings_error( 'network', 'destination', __( 'Your chosen settings have updated successfully for all selected sites.', 'lingotek-translation' ), 'updated' );
} else {
add_settings_error( 'network', 'destination', __( 'Please choose at least one destination site.', 'lingotek-translation' ), 'error' );
}//end if
//Refreshes community resources so that the defaults are set when you visit the sites translation settings
if ( isset( $_POST['new_project'] ) && isset( $_POST['destination'] ) ) {
$this->set_community_resources( get_option( 'lingotek_community' ) );
foreach ( $destination_site as $destination ) {
$source_options = get_option( 'lingotek_community_resources' );
update_blog_option( $destination, 'lingotek_community_resources', $source_options );
}
$num = count( $destination_site );
if ( $num > 1 ) {
add_settings_error( 'network', 'projects', __( 'Your new projects were successfully created.', 'lingotek-translation' ), 'updated' );
} else {
add_settings_error( 'network', 'projects', __( 'Your new project was successfully created.', 'lingotek-translation' ), 'updated' );
}
}
}//end if
settings_errors( 'network' );
?>
<style>
input[type=checkbox] {
margin: 0px 7px;
}
</style>
<div class="wrap">
<h2><?php esc_html_e( 'Lingotek Network Settings', 'lingotek-translation' ); ?></h2>
<p><?php esc_html_e( 'Copy Lingotek settings from the source site to multiple sites', 'lingotek-translation' ); ?></p>
<form id="network-settings" method="post" action="admin.php?page=lingotek-translation_network" class="validate" onsubmit="return confirm('Are you sure you want to submit this request? It will overwrite any current settings you have for the destination sites.');">
<?php wp_nonce_field( 'lingotek_network_settings' ); ?>
<table class="form-table">
<tr>
<th><?php echo esc_html_e( 'Source Site', 'lingotek-translation' ); ?></th>
<td>
<select name="source" id="source">
<?php
foreach ( $site_data as $site ) {
echo "\n\t<option value='" . esc_attr( $site['blog_id'] ) . "'>" . esc_attr( $site['blogname'] ) . '</option>';
}
?>
</select>
</td>
</tr>
<tr>
<th><?php echo esc_html_e( 'Destination Site', 'lingotek-translation' ); ?></th>
<td>
<select multiple="multiple" name="destination[]" id="destination">
<?php
foreach ( $site_data as $site ) {
echo "\n\t<option value='" . esc_attr( $site['blog_id'] ) . "'>" . esc_attr( $site['blogname'] ) . '</option>';
}
?>
</select>
</td>
</tr>
<tr>
<th><?php echo esc_html_e( 'Settings to copy', 'lingotek-translation' ); ?></th>
<td>
<input checked type="checkbox" id="account" name="settings[]" value="token"><label for="account"><?php echo esc_html_e( 'Account', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="community" name="settings[]" value="community"><label for="community"><?php echo esc_html_e( 'Community', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="defaults" name="settings[]" value="defaults"><label for="defaults"><?php echo esc_html_e( 'Defaults', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="resources" name="settings[]" value="community_resources"><label for="resources"><?php echo esc_html_e( 'Resources', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="profiles" name="settings[]" value="profiles"><label for="profiles"><?php echo esc_html_e( 'Profiles', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="content_types" name="settings[]" value="content_type"><label for="content_types"><?php echo esc_html_e( 'Content Types', 'lingotek-translation' ); ?></label>
<input checked type="checkbox" id="preferences" name="preferences" value="preferences"><label for="preferences"><?php echo esc_html_e( 'Preferences', 'lingotek-translation' ); ?></label>
</td>
</tr>
<tr>
<th><?php echo esc_html_e( 'New Project', 'lingotek-translation' ); ?></th>
<td>
<input checked type="checkbox" name="new_project" id="new_project" ><label for="new_project"><?php echo esc_html_e( 'Create a new project using the name of the selected site (Recommended for a newly created site)', 'lingotek-translation' ); ?></label>
</td>
</tr>
<tr>
<th><?php echo esc_html_e( 'Language', 'lingotek-translation' ); ?></th>
<td>
<input checked type="checkbox" name="utility_set_default_language" id="utility_set_default_language" ><label for="utility_set_default_language"><?php echo esc_html_e( 'Set <i>default language</i> as the language for all existing content that has not been assigned a language.', 'lingotek-translation' ); ?></label>
</td>
</tr>
</table>
<p>
<?php submit_button( esc_html__( 'Update Options', 'lingotek-translation' ), 'primary', 'submit', false ); ?>
</p>
</form>
</div>