Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/notices/translation-service-instruction/class-wpml-tm-ts-instructions-hooks.php
2023-09-12 21:41:04 +02:00

82 lines
2.2 KiB
PHP

<?php
class WPML_TM_TS_Instructions_Hooks implements IWPML_Action {
/** @var WPML_TM_TS_Instructions_Notice */
private $notice;
/**
* WPML_TM_TS_Instructions_Hooks constructor.
*
* @param WPML_TM_TS_Instructions_Notice $notice
*/
public function __construct( WPML_TM_TS_Instructions_Notice $notice ) {
$this->notice = $notice;
}
public function add_hooks() {
add_action( 'wpml_tp_project_created', array( $this, 'display_message' ), 10, 3 );
add_action( 'init', array( $this, 'add_hooks_on_init' ), 10, 0 );
add_action( 'wpml_tp_service_de_authorized', array( $this, 'dismiss' ), 10, 0 );
add_action( 'wpml_tp_service_dectivated', array( $this, 'dismiss' ), 10, 0 );
}
/**
* @param stdClass $service
* @param stdClass $project
* @param array $icl_translation_projects
*/
public function display_message( $service, $project, array $icl_translation_projects ) {
$is_first_project_ever = empty( $icl_translation_projects );
if ( $is_first_project_ever || ! $this->has_completed_remote_jobs() ) {
$this->notice->add_notice( $service );
}
}
public function add_hooks_on_init() {
if ( $this->notice->exists() ) {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 10, 0 );
add_action( 'wp_ajax_translation_service_instruction_dismiss', array( $this, 'dismiss' ), 10, 0 );
}
}
public function enqueue_scripts() {
$handle = 'wpml-tm-translation-service-instruction';
wp_register_script(
$handle,
WPML_TM_URL . '/dist/js/translationServiceInstruction/app.js',
array(),
WPML_TM_VERSION
);
$data = array(
'restUrl' => untrailingslashit( rest_url() ),
'restNonce' => wp_create_nonce( 'wp_rest' ),
'ate' => null,
'currentUser' => wp_get_current_user(),
);
wp_localize_script( $handle, 'WPML_TM_SETTINGS', $data );
wp_enqueue_script( $handle );
}
public function dismiss() {
$this->notice->remove_notice();
}
/**
* @return bool
*/
private function has_completed_remote_jobs() {
$search_params = new WPML_TM_Jobs_Search_Params();
$search_params->set_status( array( ICL_TM_COMPLETE ) );
$search_params->set_scope( WPML_TM_Jobs_Search_Params::SCOPE_REMOTE );
return wpml_tm_get_jobs_repository()->get_count( $search_params ) > 0;
}
}