Completed
Push — master ( c336cf...9cad87 )
by David
30:41
created

Wordlift_Admin::__construct()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 29
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 17
nc 6
nop 5
dl 0
loc 29
rs 8.5806
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * The admin-specific functionality of the plugin.
5
 *
6
 * @link       https://wordlift.io
7
 * @since      1.0.0
8
 *
9
 * @package    Wordlift
10
 * @subpackage Wordlift/admin
11
 */
12
13
/**
14
 * The admin-specific functionality of the plugin.
15
 *
16
 * Defines the plugin name, version, and two examples hooks for how to
17
 * enqueue the admin-specific stylesheet and JavaScript.
18
 *
19
 * @package    Wordlift
20
 * @subpackage Wordlift/admin
21
 * @author     WordLift <[email protected]>
22
 */
23
class Wordlift_Admin {
24
25
	/**
26
	 * The ID of this plugin.
27
	 *
28
	 * @since    1.0.0
29
	 * @access   private
30
	 * @var      string $plugin_name The ID of this plugin.
31
	 */
32
	private $plugin_name;
33
34
	/**
35
	 * The version of this plugin.
36
	 *
37
	 * @since    1.0.0
38
	 * @access   private
39
	 * @var      string $version The current version of this plugin.
40
	 */
41
	private $version;
42
43
	/**
44
	 * The {@link Wordlift_Configuration_Service} instance.
45
	 *
46
	 * @since  3.14.0
47
	 * @access private
48
	 * @var \Wordlift_Configuration_Service $configuration_service The {@link Wordlift_Configuration_Service} instance.
49
	 */
50
	private $configuration_service;
51
52
	/**
53
	 * The {@link Wordlift_User_Service} instance.
54
	 *
55
	 * @since  3.14.0
56
	 * @access private
57
	 * @var \Wordlift_User_Service $user_service The {@link Wordlift_User_Service} instance.
58
	 */
59
	private $user_service;
60
61
	/**
62
	 * Initialize the class and set its properties.
63
	 *
64
	 * @since  1.0.0
65
	 *
66
	 * @param string $plugin_name The name of this plugin.
67
	 * @param string $version The version of this plugin.
68
	 * @param \Wordlift_Configuration_Service $configuration_service The configuration service.
69
	 * @param \Wordlift_Notice_Service $notice_service The notice service.
70
	 * @param \Wordlift_User_Service $user_service The {@link Wordlift_User_Service} instance.
71
	 */
72
	public function __construct( $plugin_name, $version, $configuration_service, $notice_service, $user_service ) {
73
74
		$this->plugin_name = $plugin_name;
75
		$this->version     = $version;
76
77
		$this->configuration_service = $configuration_service;
78
		$this->user_service          = $user_service;
79
80
		$dataset_uri = $configuration_service->get_dataset_uri();
81
		$key         = $configuration_service->get_key();
82
83
		if ( empty( $dataset_uri ) ) {
84
			$settings_page = Wordlift_Admin_Settings_Page::get_instance();
85
			if ( empty( $key ) ) {
86
				$error = sprintf( esc_html__( "WordLift's key isn't set, please open the %s to set WordLift's key.", 'wordlift' ), '<a href="' . $settings_page->get_url() . '">' . esc_html__( 'settings page', 'wordlift' ) . '</a>' );
0 ignored issues
show
Bug introduced by
The method get_url() does not seem to exist on object<Wordlift_Notice_Service>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
87
			} else {
88
				$error = sprintf( esc_html__( "WordLift's dataset URI is not configured: please open the %s to set WordLift's key again.", 'wordlift' ), '<a href="' . $settings_page->get_url() . '">' . esc_html__( 'settings page', 'wordlift' ) . '</a>' );
0 ignored issues
show
Bug introduced by
The method get_url() does not seem to exist on object<Wordlift_Notice_Service>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
89
			}
90
			$notice_service->add_error( $error );
91
		}
92
93
		// Load additional code if we're in the admin UI.
94
		if ( is_admin() ) {
95
			require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-wordlift-admin-dashboard-latest-news.php';
96
97
			new Wordlift_Dashboard_Latest_News();
98
		}
99
100
	}
101
102
	/**
103
	 * Register the stylesheets for the admin area.
104
	 *
105
	 * @since    1.0.0
106
	 */
107
	public function enqueue_styles() {
108
109
		/**
110
		 * This function is provided for demonstration purposes only.
111
		 *
112
		 * An instance of this class should be passed to the run() function
113
		 * defined in Wordlift_Loader as all of the hooks are defined
114
		 * in that particular class.
115
		 *
116
		 * The Wordlift_Loader will then create the relationship
117
		 * between the defined hooks and the functions defined in this
118
		 * class.
119
		 */
120
121
		wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/wordlift-admin.css', array(), $this->version, 'all' );
122
123
	}
124
125
	/**
126
	 * Register the JavaScript for the admin area.
127
	 *
128
	 * @since    1.0.0
129
	 */
130
	public function enqueue_scripts() {
131
132
		/**
133
		 * This function is provided for demonstration purposes only.
134
		 *
135
		 * An instance of this class should be passed to the run() function
136
		 * defined in Wordlift_Loader as all of the hooks are defined
137
		 * in that particular class.
138
		 *
139
		 * The Wordlift_Loader will then create the relationship
140
		 * between the defined hooks and the functions defined in this
141
		 * class.
142
		 */
143
144
		// Enqueue the admin scripts.
145
		wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/1/admin.js', array(
146
			'jquery',
147
			'underscore',
148
			'backbone',
149
		), $this->version, false );
150
151
		// Set the basic params.
152
		$params = array(
153
			// @todo scripts in admin should use wp.post.
154
			'ajax_url'              => admin_url( 'admin-ajax.php' ),
155
			// @todo remove specific actions from settings.
156
			'action'                => 'entity_by_title',
157
			'datasetUri'            => $this->configuration_service->get_dataset_uri(),
158
			'language'              => $this->configuration_service->get_language_code(),
159
			'link_by_default'       => $this->configuration_service->is_link_by_default(),
160
			// Whether the current user is allowed to create new entities.
161
			//
162
			// @see https://github.com/insideout10/wordlift-plugin/issues/561
163
			'can_create_entities'   => current_user_can( 'edit_wordlift_entities' ) ? 'yes' : 'no',
164
			'l10n'                  => array(
165
				'You already published an entity with the same name'                 => __( 'You already published an entity with the same name: ', 'wordlift' ),
166
				'logo_selection_title'                                               => __( 'WordLift Choose Logo', 'wordlift' ),
167
				'logo_selection_button'                                              => array( 'text' => __( 'Choose Logo', 'wordlift' ) ),
168
				'Type at least 3 characters to search...'                            => _x( 'Type at least 3 characters to search...', 'Autocomplete Select', 'wordlift' ),
169
				'No results found for your search.'                                  => _x( 'No results found: try changing or removing some words.', 'Autocomplete Select', 'wordlift' ),
170
				'Please wait while we look for entities in the linked data cloud...' => _x( 'Please wait while we look for entities in the linked data cloud...', 'Autocomplete Select', 'wordlift' ),
171
			),
172
			'wl_autocomplete_nonce' => wp_create_nonce( 'wordlift_autocomplete' ),
173
		);
174
175
		// Set post-related values if there's a current post.
176
		if ( null !== $post = $entity_being_edited = get_post() ) {
177
178
			$params['post_id']           = $entity_being_edited->ID;
179
			$entity_service              = Wordlift_Entity_Service::get_instance();
180
			$params['entityBeingEdited'] = isset( $entity_being_edited->post_type ) && $entity_service->is_entity( $post->ID ) && is_numeric( get_the_ID() );
181
			// We add the `itemId` here to give a chance to the analysis to use it in order to tell WLS to exclude it
182
			// from the results, since we don't want the current entity to be discovered by the analysis.
183
			//
184
			// See https://github.com/insideout10/wordlift-plugin/issues/345
185
			$params['itemId'] = $entity_service->get_uri( $entity_being_edited->ID );
186
187
		}
188
189
		// Finally output the params as `wlSettings` for JavaScript code.
190
		wp_localize_script( $this->plugin_name, 'wlSettings', $params );
191
192
	}
193
194
}
195