public function bootstrap(Container $container)
{
$properties = $container['multilingualpress.properties'];
$plugin_dir_path = rtrim($properties->plugin_dir_path(), '/');
$plugin_dir_url = rtrim($properties->plugin_dir_url(), '/');
$container['multilingualpress.internal_locations']->add('plugin', $plugin_dir_path, $plugin_dir_url)->add('css', "{$plugin_dir_path}/assets/css", "{$plugin_dir_url}/assets/css")->add('js', "{$plugin_dir_path}/assets/js", "{$plugin_dir_url}/assets/js")->add('images', "{$plugin_dir_path}/assets/images", "{$plugin_dir_url}/assets/images")->add('flags', "{$plugin_dir_path}/assets/images/flags", "{$plugin_dir_url}/assets/images/flags");
$setting_page = $container['multilingualpress.plugin_settings_page'];
add_action('plugins_loaded', [$setting_page, 'register'], 8);
add_action('admin_post_' . PluginSettingsPage\PluginSettingsUpdater::ACTION, [$container['multilingualpress.plugin_settings_updater'], 'update_settings']);
add_action('network_admin_notices', function () use($setting_page) {
if (isset($_GET['message']) && isset($GLOBALS['hook_suffix']) && $setting_page->hookname() === $GLOBALS['hook_suffix']) {
(new AdminNotice('<p>' . __('Settings saved.', 'multilingual-press') . '</p>'))->render();
}
});
(new ActionLink('settings', '<a href="' . esc_url($setting_page->url()) . '">' . __('Settings', 'multilingual-press') . '</a>'))->register('network_admin_plugin_action_links_' . $properties->plugin_base_name());
if (isset($_SERVER['REQUEST_METHOD']) && 'POST' === strtoupper($_SERVER['REQUEST_METHOD'])) {
$post_request_data_manipulator = $container['multilingualpress.post_request_data_manipulator'];
add_action('mlp_before_post_synchronization', [$post_request_data_manipulator, 'clear_data']);
add_action('mlp_after_post_synchronization', [$post_request_data_manipulator, 'restore_data']);
add_action('mlp_before_term_synchronization', [$post_request_data_manipulator, 'clear_data']);
add_action('mlp_after_term_synchronization', [$post_request_data_manipulator, 'restore_data']);
}
if (is_admin()) {
$relationship_control_view = $container['multilingualpress.relationship_control_view'];
add_action('mlp_translation_meta_box_bottom', function (WP_Post $post, $remote_site_id, WP_Post $remote_post) use($relationship_control_view) {
global $pagenow;
if ('post.php' === $pagenow) {
$relationship_control_view->render(new RelationshipContext([RelationshipContext::KEY_REMOTE_POST_ID => $remote_post->ID, RelationshipContext::KEY_REMOTE_SITE_ID => $remote_site_id, RelationshipContext::KEY_SOURCE_POST_ID => $post->ID, RelationshipContext::KEY_SOURCE_SITE_ID => get_current_blog_id()]));
}
}, 200, 3);
if (defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case SearchController::ACTION:
$container['multilingualpress.relationship_control_search_controller']->initialize();
break;
case RelationshipController::ACTION_CONNECT_EXISTING:
case RelationshipController::ACTION_CONNECT_NEW:
case RelationshipController::ACTION_DISCONNECT:
$container['multilingualpress.relationship_controller']->initialize();
break;
}
}
}
}