PluginProbe
HAL / 2.4.1
HAL v2.4.1
trunk 1.0 1.1 1.2 1.3 1.4 1.4.2 1.4.3 1.4.4 2.0 2.0.1 2.0.10 2.0.2 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.2 2.3 2.4 2.4.1 2.4.2 2.5 All 30 releases
hal / wp-hal.php

wp-hal.php in HAL 2.4.1, at wp-hal.php

1,438 lines 82.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: HAL
4 * Plugin URI: http://www.ccsd.cnrs.fr
5 * Description: Crée une page qui remonte les publications d'un auteur ou d'une structure en relation avec HAL et un widget des dernières publications d'un auteur ou d'une structure.
6 * Version: 2.4.1
7 * Author: CCSD
8 * Author URI: http://www.ccsd.cnrs.fr
9 * Text Domain: wp-hal
10 * Domain Path: /lang/
11 */
12
13
14 // Traduction de la description
15 __("Crée une page qui remonte les publications d'un auteur ou d'une structure en relation avec HAL et un widget des dernières publications d'un auteur ou d'une structure.", "wp-hal");
16
17 //Récupère les constantes
18 require_once("constantes.php");
19
20
21 if (wphal_locale == 'fr_FR') {
22 define('wphal_lang', 'fr');
23 } elseif (wphal_locale == 'es_ES') {
24 define('wphal_lang', 'es');
25 } else {
26 define('wphal_lang', 'en');
27 }
28
29 function wphal_is_curl_installed() {
30 $loaded_extentions = get_loaded_extensions();
31 if (in_array ('curl', $loaded_extentions)) {
32 return true;
33 }
34 else {
35 return false;
36 }
37 }
38
39 // Création du shortcode ('nom du shortcode', 'fonction appelée')
40 add_shortcode( 'cv-hal', 'wphal_cv_hal' );
41 add_shortcode( 'nb-doc', 'wphal_nb_doc' );
42
43
44 function wphal_charger_languages() {
45 load_plugin_textdomain('wp-hal', false, dirname(plugin_basename(__FILE__)) . '/lang/');
46 }
47
48 add_action('plugins_loaded', 'wphal_charger_languages');
49
50 function wphal_action_links( $links, $file ) {
51 if ( $file != plugin_basename( __FILE__ ))
52 return $links;
53
54 $settings_link = '<a href="admin.php?page=wp-hal.php">' . __( 'Paramètres', 'wp-hal' ) . '</a>';
55
56 array_unshift( $links, $settings_link );
57
58 return $links;
59 }
60
61 add_filter( 'query_vars', 'wphal_query_vars' );
62 function wphal_query_vars( $query_vars ) {
63 $query_vars[] = 'hal_page';
64 return $query_vars;
65 }
66
67 add_filter( 'plugin_action_links', 'wphal_action_links',10,2);
68 /**
69 * @param $url
70 * @return object
71 */
72 function wphal_do_common_curl_call($url) {
73 $response = wp_remote_get($url, [
74 'timeout'=>20,
75 'user-agent'=>"HAL Plugin Wordpress " . wphal_version,
76 'headers' => ['Content-type'=> 'application/json']
77 ]);
78 // we could ve parsed the response but if in general if no results then we get empty content
79 $body = wp_remote_retrieve_body($response);
80 // Récupération du résultat JSON
81 $json = json_decode($body);
82 return $json;
83 }
84
85 function wphal_clear_transients()
86 {
87 global $wpdb;
88 // delete all "hal namespace" transients
89 $sql = "
90 DELETE
91 FROM {$wpdb->options}
92 WHERE option_name like '\_transient\_hal\_%'
93 OR option_name like '\_transient\_timeout\_hal\_%'
94 ";
95
96 $wpdb->query($sql);
97 }
98
99 /**
100 * fetches data from cache or download data from HAL API
101 * @param $url
102 * @return object
103 */
104 function wphal_do_get_data($url) {
105 $transient_id = 'hal_'.md5($url);
106 if(!empty(get_option('option_erase_cache'))){
107 // we reset cache transient for hal namespace
108 wphal_clear_transients();
109 update_option('option_erase_cache', '');
110 }
111 $cache_expiration = empty(get_option('option_cache_timeout')) ? 1 * DAY_IN_SECONDS : intval(get_option('option_cache_timeout')) * MINUTE_IN_SECONDS;
112 if ( false === ( $value = get_transient( $transient_id ) ) ) {
113 $json = wphal_do_common_curl_call($url);
114 if($json)
115 set_transient( $transient_id, $json, $cache_expiration);
116 return $json;
117 } else{
118 return $value;
119 }
120 }
121
122 /**
123 * PLUGIN SHORTCODE ND-DOC
124 * @param $param
125 * @return int
126 */
127 function wphal_nb_doc($param)
128 {
129 $idhal = wphal_verifSolr(get_option('option_idhal'));
130 extract(shortcode_atts(array(
131 'type' => get_option('option_type'),
132 'id' => $idhal
133 ),
134 $param
135 ));
136 /**
137 * @var $id : defined by extract
138 * @var string $type : defined by extract
139 */
140 $id = wphal_verifSolr($id);
141
142 $url = wphal_api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&rows=0&wt=json';
143
144 $json =wphal_do_get_data($url);
145 return $json->response->numFound;
146 }
147 /**
148 * PLUGIN SHORTCODE CV-HAL
149 * @param $param
150 * @return string
151 */
152 function wphal_cv_hal($param){
153 $content = '';
154 if ( !wphal_is_curl_installed() ) {
155 $content = 'CURL not installed, please check the <a href="https://wordpress.org/plugins/hal/faq/" target="_blank" id="curl">FAQ</a> with the code : CURL';
156 } else {
157 $possible_ids = ["authIdHal_s", "structId_i", "anrProjectId_i", "europeanProjectId_i", "collCode_s"];
158 $option_choix = !empty(get_option('option_choix')) ? get_option('option_choix') : [];
159 if(in_array('disciplines', $option_choix)){ //Lance les scripts pour le Graphique
160 wp_enqueue_style('wp-hal-style2');
161
162 wp_enqueue_script('wp-hal-script1');
163 wp_enqueue_script('wp-hal-script2');
164 wp_enqueue_script('wp-hal-script3');
165 }
166 $facetdomain = null;
167
168 // those parameters are configured from plusing settings
169 $default_id = wphal_verifSolr(get_option('option_idhal'));
170 $default_type = get_option('option_type');
171 $default_contact = get_option('option_infocontact');
172 // here we merge with shortcode parameters
173 extract(shortcode_atts(array(
174 'type' => $default_type,
175 'id' => $default_id,
176 'contact' => $default_contact
177 ),
178 $param
179 ));
180
181 /** @var $id : defined by extract
182 * @var string $type : defined by extract
183 * @var string $contact : defined by extract
184 */
185 if (!empty($id) && in_array($type, $possible_ids)) {
186 $id = wphal_verifSolr($id);
187
188 $facets = wphal_buildfacet($option_choix);
189 $facetQuery = !empty($facets) ? 'facet.field='.implode("&facet.field=", $facets).'&facet.mincount=1&facet=true':'';
190
191 if (get_option('option_groupe') == 'grouper') {
192 //cURL sur l'API pour récupérer les données
193 $url = wphal_api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&group=true&group.field=docType_s&group.limit=1000&fl=docid,citationFull_s&'.$facetQuery.'&sort=' . wphal_producedDateY . '&wt=json&json.nl=arrarr';
194 } elseif (get_option('option_groupe') == 'paginer') {
195 $url = wphal_api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&fl=docid,citationFull_s&'.$facetQuery.'&sort=' . wphal_producedDateY . '&wt=json&json.nl=arrarr';
196 }
197
198 $json = wphal_do_get_data($url);
199 $hal_page = (get_query_var('hal_page')) ? get_query_var('hal_page') : 1;
200
201 $content = '<div id="wphal-content">';
202 if (is_array($option_choix) && !empty($option_choix)){
203 $content .= '<ul id="wphal-menu">';
204 $content .= '<li><a href="#publications" onclick="displayElem(\'publications\'); return false;" style="font-size:18px; text-decoration: none;">' . __('Publications', 'wp-hal') . '</a></li>';
205
206 $content .= '<li><a href="#filtres" onclick="return false;" style="font-size:18px; text-decoration: none; cursor:default;">' . __('Filtres', 'wp-hal') . '</a>';
207 $content .= '<ul id="wphal-filtres">';
208 foreach ($option_choix as $option) {
209 if ($option == 'contact') {
210 $content .= '<li><a href="#contact" onclick="displayElem(\'wphal-contact\'); return false;" style="margin:1px; text-decoration: none;">' . __('Contact', 'wp-hal');
211 $content .= '</a></li>';
212 }
213 if ($option == 'disciplines') {
214 $content .= '<li><a href="#disciplines" onclick="displayElem(\'wphal-disciplines\'); return false;" style="margin:1px; text-decoration: none;">' . __('Disciplines', 'wp-hal');
215 $content .= '</a></li>';
216 }
217 if ($option == 'mots-clefs') {
218 $content .= '<li><a href="#keywords" onclick="displayElem(\'wphal-keywords\'); return false;" style="margin:1px; text-decoration: none;">' . __('Mots-clefs', 'wp-hal');
219 $content .= '</a></li>';
220 }
221 if ($option == 'auteurs') {
222 $content .= '<li><a href="#auteurs" onclick="displayElem(\'wphal-auteurs\'); return false;" style="margin:1px; text-decoration: none;">' . __('Auteurs', 'wp-hal');
223 $content .= '</a></li>';
224 }
225 if ($option == 'revues') {
226 $content .= '<li><a href="#revues" onclick="displayElem(\'wphal-revues\'); return false;" style="margin:1px; text-decoration: none;">' . __('Revues', 'wp-hal');
227 $content .= '</a></li>';
228 }
229 if ($option == 'annee') {
230 $content .= '<li><a href="#annees" onclick="displayElem(\'wphal-annees\'); return false;" style="margin:1px; text-decoration: none;">' . __('Année de production', 'wp-hal');
231 $content .= '</a></li>';
232 }
233 if ($option == 'institution') {
234 $content .= '<li><a href="#insts" onclick="displayElem(\'wphal-insts\'); return false;" style="margin:1px; text-decoration: none;">' . __('Institutions', 'wp-hal');
235 $content .= '</a></li>';
236 }
237 if ($option == 'laboratoire') {
238 $content .= '<li><a href="#labs" onclick="displayElem(\'wphal-labs\'); return false;" style="margin:1px; text-decoration: none;">' . __('Laboratoires', 'wp-hal');
239 $content .= '</a></li>';
240 }
241 if ($option == 'departement') {
242 $content .= '<li><a href="#depts" onclick="displayElem(\'wphal-depts\'); return false;" style="margin:1px; text-decoration: none;">' . __('Départements', 'wp-hal');
243 $content .= '</a></li>';
244 }
245 if ($option == 'equipe') {
246 $content .= '<li><a href="#equipes" onclick="displayElem(\'wphal-equipes\'); return false;" style="margin:1px; text-decoration: none;">' . __('Équipes de recherche', 'wp-hal');
247 $content .= '</a></li>';
248 }
249 }
250 $content .= '</ul></li>';
251
252 $content .= '</ul><br/><hr>';
253 }
254
255 $content .= '<div id="meta">
256 <div class="display" id="wphal-contact" style="display: none;">
257 <h3 class="wphal-titre">' . __('Contact', 'wp-hal');
258 $content .= '</h3>
259
260 <ul id="wphal-cont" style="list-style-type: none;">';
261
262 if ($contact == 'yes' && $type == 'authIdHal_s') {
263 $urlauthor = wphal_urlauthor . '?indent=true&fq=valid_s:PREFERRED&fl=fullName_s,idHal_s,hasCV_bool,arxivId_s,idrefId_s,isniId_s,orcidId_s,viafId_s&q=idHal_s:' . urlencode($id);
264 $jsonauthor = wphal_do_get_data($urlauthor);
265
266 foreach ($jsonauthor->response->docs as $i=>$doc) {
267 $content .= '<div class="wphal-infocontact" id="wphal-infocontact'.$i.'">';
268 if ($doc->fullName_s != '') {
269 $content .= '<li class="wphal-fullname"><span>Nom : </span><span>'. $doc->fullName_s .'</span></li>';
270 }
271 if ($doc->idHal_s != '') {
272 $content .= '<li class="wphal-idhal"><span>IdHAL : </span><span>' . $doc->idHal_s . '</span></li>';
273 }
274 if ($doc->hasCV_bool == true){
275 $content .= '<li class="wphal-cvhal"><span>CV HAL : </span><a href="'.esc_url(cvhal. $doc->idHal_s).'" target="_blank">CV de '.$doc->fullName_s.'</a></li>';
276 }
277 if (isset($doc->arxivId_s ) && is_array($doc->arxivId_s)) {
278 $content .= '<li class="wphal-"><span>arXiv : </span><span>';
279 foreach($doc->arxivId_s as $arxivId_s){
280 $content .= '<a href="' . esc_url($arxivId_s) . '" target="_blank">' . substr(strrchr($arxivId_s, "/"), 1) . '</a> ,';
281 }
282 $content .= '</span></li>';
283 }
284 if (isset($doc->idrefId_s ) && is_array($doc->idrefId_s)) {
285 $content .= '<li class="wphal-"><span>IdRef : </span><span>';
286 foreach($doc->idrefId_s as $idref){
287 $content .= '<a href="' . esc_url($idref) . '" target="_blank">' . substr(strrchr($idref, "/"), 1) . '</a> ,';
288 }
289 $content .= '</span></li>';
290 }
291 if (isset($doc->orcidId_s ) && $doc->orcidId_s != '') {
292 $content .= '<li class="wphal-"><span>ORCID : </span><span>';
293 foreach($doc->orcidId_s as $orcidId_s){
294 $content .= '<a href="' . esc_url($orcidId_s) . '" target="_blank">' . substr(strrchr($orcidId_s, "/"), 1) . '</a> ,';
295 }
296 $content .= '</span></li>';
297 }
298 if (isset($doc->viafId_s ) && $doc->viafId_s != '') {
299 $content .= '<li class="wphal-"><span>VIAF : </span><span>';
300 foreach($doc->viafId_s as $viafId_s){
301 $content .= '<a href="' . esc_url($viafId_s) . '" target="_blank">' . substr(strrchr($viafId_s, "/"), 1) . '</a> ,';
302 }
303 $content .= '</span></li>';
304 }
305 if (isset($doc->isniId_s ) && $doc->isniId_s != '') {
306 $content .= '<li class="wphal-"><span>ISNI : </span><span>';
307 foreach($doc->isniId_s as $isniId_s){
308 $content .= '<a href="' . esc_url($isniId_s) . '" target="_blank">' . substr(strrchr($isniId_s, "/"), 1) . '</a> ,';
309 }
310 $content .= '</span></li>';
311 }
312 $content .= '</div>';
313 }
314 }
315 if (get_option('option_email') != '') {
316 $content .= '<li><img alt="mail" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/mail.svg').' " style=" width:16px; margin-left:2px; margin-right:2px;"/><a href="'.esc_url('mailto:' . get_option('option_email')) . '" target="_blank">' . get_option('option_email') . '</a></li>';
317 }
318 if (get_option('option_tel') != '') {
319 $content .= '<li><img alt="phone" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/phone.svg'). '" style="width:16px; margin-left:2px; margin-right:2px;"/>' . get_option('option_tel') . '</li>';
320 }
321 if (get_option('option_social0') != '') {
322 $content .= '<li><a href="'.esc_url('http://www.facebook.com/' . get_option('option_social0')) . '" target="_blank"><img
323 alt="Facebook" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/facebook.svg').'" style="width:32px; margin:4px;"/></a></li>';
324 }
325 if (get_option('option_social1') != '') {
326 $content .= '<li><a href="'.esc_url('http://www.twitter.com/' . get_option('option_social1')) . '" target="_blank"><img
327 alt="Twitter" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/twitter.svg').'" style="width:32px; margin:4px;"/></a></li>';
328 }
329 if (get_option('option_social2') != '') {
330 $content .= '<li><a href="'.esc_url('https://plus.google.com/u/0/+' . get_option('option_social2')) . '" target="_blank"><img
331 alt="Google+" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/google-plus.svg').'" style="width:32px; margin:4px;"/></a></li>';
332 }
333 if (get_option('option_social3') != '') {
334 $content .= '<li><a href="'.esc_url('https://www.linkedin.com/in/' . get_option('option_social3')) . '" target="_blank"><img
335 alt="LinkedIn" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/linkedin.svg').'" style="width:32px; margin:4px;"/></a></li>';
336 }
337 $content .= '</ul>
338 </div>
339 <div class="display" id="wphal-disciplines" style="display: none;">
340 <h3 class="wphal-titre">' . __('Disciplines', 'wp-hal') . '</h3>';
341
342 if (wphal_locale == 'fr_FR') {
343 $facetdomain = isset($json->facet_counts->facet_fields->fr_domainAllCodeLabel_fs) ? $json->facet_counts->facet_fields->fr_domainAllCodeLabel_fs:null;
344 } elseif (wphal_locale == 'es_ES') {
345 $facetdomain = isset($json->facet_counts->facet_fields->es_domainAllCodeLabel_fs) ? $json->facet_counts->facet_fields->es_domainAllCodeLabel_fs:null;
346 } else {
347 $facetdomain = isset($json->facet_counts->facet_fields->en_domainAllCodeLabel_fs) ? $json->facet_counts->facet_fields->en_domainAllCodeLabel_fs:null;
348 }
349
350 if (!is_null($facetdomain) && !empty($facetdomain)) {
351 $content .= '<div id="listdisci">';
352 $content .= '<span id="tridisciplines">';
353 $content .= '<button type="button" class="trial" id="tridisci" onclick="toggleSort(this, true, \'wphal-discipline\', \'wphal-discipline\', \'tridisci\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
354 $content .= '<button type="button" class="trioc" id="trinbdisci" onclick="toggleSort(this, false, \'wphal-discipline\', \'wphal-discipline\', \'trinbdisci\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
355 $content .= '</span>';
356 $content .= '<ul id="wphal-discipline" class="wphal-discipline">';
357 foreach ($facetdomain as $res) {
358 $name = explode(wphal_delimiter, $res[0]);
359 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=domainAllCode_s:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
360 }
361 $content .= '</ul>';
362 $content .= '</div>';
363
364 $content .= '<div id="wphal-graph" style="display:none;">';
365 $content .= '<div id="wphal-piedisci"></div>';
366 $content .= '</div>';
367 $content .= '<button type="button" style="text-decoration: none;" id="wphal-disci" onclick="visibilitedisci(\'listdisci\',\'wphal-graph\',\'tridisciplines\'); return false;" >' . __('Graphique', 'wp-hal');
368 $content .= '</button>';
369 }
370 $content .= '</div>
371 <div class="display" id="wphal-keywords" style="display: none;">
372 <h3 class="wphal-titre">' . __('Mots-clefs', 'wp-hal') . '</h3>';
373 if (isset($json->facet_counts->facet_fields->keyword_s) && !is_null($json->facet_counts->facet_fields->keyword_s) && !empty($json->facet_counts->facet_fields->keyword_s)) {
374 $content .= '<div id="wphal-keys">';
375 $r = 0;
376 // CSS Nuage de mots
377 $maxsize = 25;
378 $minsize = 10;
379 $maxval = max(array_values($json->facet_counts->facet_fields->keyword_s[1]));
380 $minval = min(array_values($json->facet_counts->facet_fields->keyword_s[1]));
381 if(!is_numeric($minval)) {$minval = 0;}
382 if(!is_numeric($maxval)) {$maxval = 0;}
383 $spread = ($maxval - $minval);
384 $step = ($maxsize - $minsize) / $spread;
385 $tab = array();
386 foreach ($json->facet_counts->facet_fields->keyword_s as $res) {
387 $r = $r + 1;
388 if ($r > 20) {
389 break;
390 }
391 $tab[] = $res;
392 }
393 asort($tab); // Tri du tableau par ordre alphabétique
394 foreach ($tab as $res) {
395 $size = round($minsize + (($res[1] - $minval) * $step));
396 $content .= '<a style="display: inline-block; font-size:' . $size . 'px" href="' . esc_url(halv3 . '?q=keyword_s:' . urlencode('"' . $res[0] . '"') . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $res[0] . '</a>&nbsp;';
397 }
398 $content .= '</div>';
399 $content .= '<div id="keysuite" style="display:none;">';
400 $content .= '<span id="trikeywords">';
401 $content .= '<button type="button" class="trial" id="trikey" onclick="toggleSort(this, true, \'wphal-keyw\', \'wphal-keyword\', \'trikey\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
402 $content .= '<button type="button" class="trioc" id="trinbkey" onclick="toggleSort(this, false, \'wphal-keyw\', \'wphal-keyword\', \'trinbkey\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
403 $content .= '</span>';
404 $content .= '<ul class="wphal-keyword">';
405 $content .= '<div id="wphal-keyw">';
406 foreach ($json->facet_counts->facet_fields->keyword_s as $res) {
407 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=keyword_s:' . urlencode('"' . $res[0] . '"') . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
408 }
409 $content .= '</div>';
410 $content .= '</ul>';
411 $content .= '</div>';
412 $content .= '<button type="button" style="text-decoration: none;" id="wphal-key" onclick="visibilitekey(\'wphal-keys\',\'keysuite\', \'trikeywords\'); return false;" >' . __('Liste complète', 'wp-hal');
413 $content .= '</button>';
414 }
415 $content .= '</div>
416 <div class="display" id="wphal-auteurs" style="display: none;">
417 <h3 class="wphal-titre">' . __('Auteurs', 'wp-hal') . '</h3>';
418 if (isset($json->facet_counts->facet_fields->authIdLastNameFirstName_fs) && !is_null($json->facet_counts->facet_fields->authIdLastNameFirstName_fs) && !empty($json->facet_counts->facet_fields->authIdLastNameFirstName_fs)) {
419 $content .= '<span id="triauteurs">';
420 $content .= '<button type="button" class="trial" id="triaut" onclick="toggleSort(this, true, \'wphal-aut\', \'auteursuite\', \'triaut\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
421 $content .= '<button type="button" class="trioc" id="trinbaut" onclick="toggleSort(this, false, \'wphal-aut\', \'auteursuite\', \'trinbaut\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
422 $content .= '</span>';
423 $content .= '<ul class="wphal-auteurs" style="list-style-type: none;">';
424 $content .= '<div id="wphal-aut">';
425 $r = 0;
426 foreach ($json->facet_counts->facet_fields->authIdLastNameFirstName_fs as $res) {
427 $r = $r + 1;
428 if ($r > 10) {
429 break;
430 }
431 $name = explode(wphal_delimiter, $res[0]);
432 if($name[0] == 0){
433 $q = 'authLastNameFirstName_s:'.urlencode("\"".$name[1]."\"");
434 }else{
435 $q = "authIdPerson_i:$name[0]";
436 }
437 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><img alt="user" src=" ' . esc_url(plugin_dir_url(__FILE__) . '/img/user.svg').'" style="width:16px; margin-left:2px; margin-right:2px;"/><a href="' . esc_url(halv3 . '?q='. $q . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
438 }
439 $i = 1;
440 $content .= '<div id="auteursuite" style="display:none;">';
441 foreach ($json->facet_counts->facet_fields->authIdLastNameFirstName_fs as $res) {
442 if ($r < 10) {
443 break;
444 }
445 if ($i < $r) {
446 $i = $i + 1;
447 } else {
448 $name = explode(wphal_delimiter, $res[0]);
449 if($name[0] == 0){
450 $q = 'authLastNameFirstName_s:'.urlencode("\"".$name[1]."\"");
451 }else{
452 $q = "authIdPerson_i:$name[0]";
453 }
454 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><img alt="user" src=" ' . esc_url(plugin_dir_url(__FILE__) . '/img/user.svg').'" style="width:16px; margin-left:2px; margin-right:2px;"/><a href="' . esc_url(halv3 . '?q='. $q . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
455 }
456 }
457 $content .= '</div>';
458 $content .= '</div>';
459 $content .= '</ul>';
460 if ($r > 10) {
461 $content .= '<button type="button" style="text-decoration: none;" id="wphal-auteur" onclick="visibilite(\'auteursuite\'); return false;" >' . __('Liste complète', 'wp-hal');
462 $content .= '</button>';
463 }
464 }
465 $content .= '</div>
466 <div class="display" id="wphal-revues" style="display: none;">
467 <h3 class="wphal-titre">' . __('Revues', 'wp-hal') . '</h3>';
468 if (isset($json->facet_counts->facet_fields->journalIdTitle_fs) && !is_null($json->facet_counts->facet_fields->journalIdTitle_fs) && !empty($json->facet_counts->facet_fields->journalIdTitle_fs)) {
469 $content .= '<span id="trirevues">';
470 $content .= '<button type="button" class="trial" id="trirev" onclick="toggleSort(this, true, \'wphal-rev\', \'revuesuite\', \'trirev\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
471 $content .= '<button type="button" class="trioc" id="trinbrev" onclick="toggleSort(this, false, \'wphal-rev\', \'revuesuite\', \'trinbrev\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
472 $content .= '</span>';
473 $content .= '<ul class="wphal-revues">';
474 $content .= '<div id="wphal-rev">';
475 $r = 0;
476 foreach ($json->facet_counts->facet_fields->journalIdTitle_fs as $res) {
477 $r = $r + 1;
478 if ($r > 10) {
479 break;
480 }
481 $name = explode(wphal_delimiter, $res[0]);
482 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=journalId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
483 }
484 $i = 1;
485 $content .= '<div id="revuesuite" style="display:none;">';
486 foreach ($json->facet_counts->facet_fields->journalIdTitle_fs as $res) {
487 if ($r < 10) {
488 break;
489 }
490 if ($i < $r) {
491 $i = $i + 1;
492 } else {
493 $name = explode(wphal_delimiter, $res[0]);
494 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=journalId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
495 }
496 }
497 $content .= '</div>';
498 $content .= '</div>';
499 $content .= '</ul>';
500 if ($r > 10) {
501 $content .= '<button type="button" style="text-decoration: none;" id="wphal-revue" onclick="visibiliterevues(\'revuesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
502 $content .= '</button>';
503 }
504 }
505 $content .= '</div>
506 <div class="display" id="wphal-annees" style="display: none;">
507 <h3 class="wphal-titre">' . __('Année de production', 'wp-hal') . '</h3>';
508 if (isset($json->facet_counts->facet_fields->producedDateY_i) && !is_null($json->facet_counts->facet_fields->producedDateY_i) && !empty($json->facet_counts->facet_fields->producedDateY_i)) {
509 $content .= '<span id="triannees">';
510 $content .= '<button type="button" class="trial" id="trian" onclick="toggleSort(this, true, \'wphal-an\', \'anneesuite\', \'trian\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
511 $content .= '<button type="button" class="trioc" id="trinban" onclick="toggleSort(this, false, \'wphal-an\', \'anneesuite\', \'trinban\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
512 $content .= '</span>';
513 $content .= '<ul class="wphal-annees">';
514 $content .= '<div id="wphal-an">';
515
516 rsort($json->facet_counts->facet_fields->producedDateY_i);
517 $r = 0;
518 foreach ($json->facet_counts->facet_fields->producedDateY_i as $res) {
519 $r = $r + 1;
520 if ($r > 10) {
521 break;
522 }
523 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=producedDateY_i:' . urlencode($res[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
524 }
525 $i = 1;
526 $content .= '<div id="anneesuite" style="display:none;">';
527 foreach ($json->facet_counts->facet_fields->producedDateY_i as $res) {
528 if ($r < 10) {
529 break;
530 }
531 if ($i < $r) {
532 $i = $i + 1;
533 } else {
534 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=producedDateY_i:' . urlencode($res[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
535 }
536 }
537 $content .= '</div>';
538 $content .= '</div>';
539 $content .= '</ul>';
540 if ($r > 10) {
541 $content .= '<button type="button" style="text-decoration: none;" id="wphal-annee" onclick="visibiliteannee(\'anneesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
542 $content .= '</button>';
543 }
544 }
545 $content .= '</div>
546 <div class="display" id="wphal-insts" style="display: none;">
547 <h3 class="wphal-titre">' . __('Institutions', 'wp-hal') . '</h3>';
548 if (isset($json->facet_counts->facet_fields->instStructIdName_fs) && !is_null($json->facet_counts->facet_fields->instStructIdName_fs) && !empty($json->facet_counts->facet_fields->instStructIdName_fs)) {
549 $content .= '<span id="triinsts">';
550 $content .= '<button type="button" class="trial" id="triinst" onclick="toggleSort(this, true, \'wphal-institu\', \'instsuite\', \'triinst\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
551 $content .= '<button type="button" class="trioc" id="trinbinst" onclick="toggleSort(this, false, \'wphal-institu\', \'instsuite\', \'trinbinst\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
552 $content .= '</span>';
553 $content .= '<ul class="wphal-insts">';
554 $content .= '<div id="wphal-institu">';
555 $r = 0;
556 foreach ($json->facet_counts->facet_fields->instStructIdName_fs as $res) {
557 $r = $r + 1;
558 if ($r > 10) {
559 break;
560 }
561 $name = explode(wphal_delimiter, $res[0]);
562 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=instStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
563 }
564 $i = 1;
565 $content .= '<div id="instsuite" style="display:none;">';
566 foreach ($json->facet_counts->facet_fields->instStructIdName_fs as $res) {
567 if ($r < 10) {
568 break;
569 }
570 if ($i < $r) {
571 $i = $i + 1;
572 } else {
573 $name = explode(wphal_delimiter, $res[0]);
574 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=instStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
575 }
576 }
577 $content .= '</div>';
578 $content .= '</div>';
579 $content .= '</ul>';
580 if ($r > 10) {
581 $content .= '<button type="button" style="text-decoration: none;" id="wphal-inst" onclick="visibiliteinst(\'instsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
582 $content .= '</button>';
583 }
584 }
585 $content .= '</div>
586 <div class="display" id="wphal-labs" style="display: none;">
587 <h3 class="wphal-titre">' . __('Laboratoires', 'wp-hal') . '</h3>';
588 if (isset($json->facet_counts->facet_fields->labStructIdName_fs) && !is_null($json->facet_counts->facet_fields->labStructIdName_fs) && !empty($json->facet_counts->facet_fields->labStructIdName_fs)) {
589 $content .= '<span id="trilabs">';
590 $content .= '<button type="button" class="trial" id="trilab" onclick="toggleSort(this, true, \'wphal-labo\', \'labsuite\', \'trilab\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
591 $content .= '<button type="button" class="trioc" id="trinblab" onclick="toggleSort(this, false, \'wphal-labo\', \'labsuite\', \'trinblab\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
592 $content .= '</span>';
593 $content .= '<ul class="wphal-labs">';
594 $content .= '<div id="wphal-labo">';
595
596 $r = 0;
597 foreach ($json->facet_counts->facet_fields->labStructIdName_fs as $res) {
598 $r = $r + 1;
599 if ($r > 10) {
600 break;
601 }
602 $name = explode(wphal_delimiter, $res[0]);
603 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=labStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
604 }
605 $i = 1;
606 $content .= '<div id="labsuite" style="display:none;">';
607 foreach ($json->facet_counts->facet_fields->labStructIdName_fs as $res) {
608 if ($r < 10) {
609 break;
610 }
611 if ($i < $r) {
612 $i = $i + 1;
613 } else {
614 $name = explode(wphal_delimiter, $res[0]);
615 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=labStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
616 }
617 }
618 $content .= '</div>';
619 $content .= '</div>';
620 $content .= '</ul>';
621 if ($r > 10) {
622 $content .= '<button type="button" style="text-decoration: none;" id="wphal-lab" onclick="visibilitelab(\'labsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
623 $content .= '</button>';
624 }
625 }
626 $content .= '</div>
627 <div class="display" id="wphal-depts" style="display: none;">
628 <h3 class="wphal-titre">' . __('Départements', 'wp-hal') . '</h3>';
629 if (isset($json->facet_counts->facet_fields->deptStructIdName_fs) && !is_null($json->facet_counts->facet_fields->deptStructIdName_fs) && !empty($json->facet_counts->facet_fields->deptStructIdName_fs)) {
630 $content .= '<span id="tridept">';
631 $content .= '<button type="button" class="trial" id="tridept" onclick="toggleSort(this, true, \'wphal-dpt\', \'deptsuite\', \'tridept\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
632 $content .= '<button type="button" class="trioc" id="trinbdept" onclick="toggleSort(this, false, \'wphal-dpt\', \'deptsuite\', \'trinbdept\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
633 $content .= '</span>';
634 $content .= '<ul class="wphal-depts">';
635 $content .= '<div id="wphal-dpt">';
636 $r = 0;
637 foreach ($json->facet_counts->facet_fields->deptStructIdName_fs as $res) {
638 $r = $r + 1;
639 if ($r > 10) {
640 break;
641 }
642 $name = explode(wphal_delimiter, $res[0]);
643 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=deptStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
644 }
645 $i = 1;
646 $content .= '<div id="deptsuite" style="display:none;">';
647 foreach ($json->facet_counts->facet_fields->deptStructIdName_fs as $res) {
648 if ($r < 10) {
649 break;
650 }
651 if ($i < $r) {
652 $i = $i + 1;
653 } else {
654 $name = explode(wphal_delimiter, $res[0]);
655 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=deptStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
656 }
657 }
658 $content .= '</div>';
659 $content .= '</div>';
660 $content .= '</ul>';
661 if ($r > 10) {
662 $content .= '<button type="button" style="text-decoration: none;" id="wphal-dept" onclick="visibilitedept(\'deptsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
663 $content .= '</button>';
664 }
665 }
666 $content .= '</div>
667 <div class="display" id="wphal-equipes" style="display: none;">
668 <h3 class="wphal-titre">' . __('Équipes de recherche', 'wp-hal') . '</h3>';
669 if (isset($json->facet_counts->facet_fields->rteamStructIdName_fs) && !is_null($json->facet_counts->facet_fields->rteamStructIdName_fs) && !empty($json->facet_counts->facet_fields->rteamStructIdName_fs)) {
670 $content .= '<span id="triequipe">';
671 $content .= '<button type="button" class="trial" id="triequipe" onclick="toggleSort(this, true, \'wphal-rteam\', \'equipesuite\', \'triequipe\'); return false;" style="font-size:16px;text-decoration: none;" >Tri Alphabétique</button>';
672 $content .= '<button type="button" class="trioc" id="trinbequipe" onclick="toggleSort(this, false, \'wphal-rteam\', \'equipesuite\', \'trinbequipe\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
673 $content .= '</span>';
674 $content .= '<ul class="wphal-equipes">';
675 $content .= '<div id="wphal-rteam">';
676
677 $r = 0;
678 $name=[];
679 foreach ($json->facet_counts->facet_fields->rteamStructIdName_fs as $res) {
680 $r = $r + 1;
681 if ($r > 10) {
682 break;
683 }
684 $name = explode(wphal_delimiter, $res[0]);
685 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=rteamStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
686 }
687 $i = 1;
688 $content .= '<div id="equipesuite" style="display:none;">';
689 foreach ($json->facet_counts->facet_fields->rteamStructIdName_fs as $res) {
690 if ($r < 10) {
691 break;
692 }
693 if ($i < $r) {
694 $i = $i + 1;
695 } else {
696 $name = explode(wphal_delimiter, $res[0]);
697 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . esc_url(halv3 . '?q=rteamStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')').'" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
698 }
699 }
700 $content .= '</div>';
701 $content .= '</div>';
702 $content .= '</ul>';
703 if ($r > 10) {
704 $content .= '<button type="button" style="text-decoration: none;" id="wphal-equipe" onclick="visibiliteequipe(\'equipesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
705 $content .= '</button>';
706 }
707 }
708 $content .= '</div>
709 <div class="display" id="publications">';
710 if (get_option('option_groupe') == 'grouper') {
711 $doctype = file_get_contents(plugin_dir_path( __FILE__ ).'json'. DIRECTORY_SEPARATOR .'doctype_fr.json');
712 $jsontype = json_decode($doctype);
713
714 //LISTE DES DOCUMENTS PAR GROUPE
715
716 $content .= '<div class="counter-doc"><span class="wphal-nbtot">' . $json->grouped->docType_s->matches . ' </span>';
717 $content .= __('documents', 'wp-hal'). '</div><br>';
718 for ($i = 0; !empty($jsontype->response->result->doc[$i]); $i++) {
719 for ($d = 0; !empty($json->grouped->docType_s->groups[$d]); $d++) {
720 if ($json->grouped->docType_s->groups[$d]->groupValue == $jsontype->response->result->doc[$i]->str[0]){
721 $titre = $jsontype->response->result->doc[$i]->str[1];
722 $content .= '<div class="grp-div"><h3 class="wphal-titre-groupe">' . __($titre, 'wp-hal') . '<span class="wphal-nbmetadata" style="margin-left:10px;">' . $json->grouped->docType_s->groups[$d]->doclist->numFound . ' ' . _n('document', 'documents', $json->grouped->docType_s->groups[$d]->doclist->numFound, 'wp-hal') . '</span></h3>';
723 $content .= '<div class="grp-content">';
724 $content .= '<ul>';
725 foreach ($json->grouped->docType_s->groups[$d]->doclist->docs as $result) {
726 $content .= '<li>' . $result->citationFull_s . '</li>';
727 }
728 $content .= '</ul></div>';
729 $content .= '</div><br>';
730 break;
731 }
732 }
733 }
734 } elseif (get_option('option_groupe') == 'paginer') {
735
736 //LISTE DES DOCUMENTS AVEC PAGINATION
737 $content .= '<div class="counter-doc"><span class="wphal-nbtot">' . $json->response->numFound . ' </span>';
738 $content .= __('documents', 'wp-hal'). '</div><br>';
739
740 //--MODULE PAGINATION--//
741 $messagesParPage = 10;
742
743 $total = $json->response->numFound;
744
745 $nombreDePages = ceil($total / $messagesParPage);
746
747 if (isset($hal_page)) {
748 $pageActuelle = intval($hal_page);
749
750 if ($pageActuelle > $nombreDePages) {
751 $pageActuelle = $nombreDePages;
752 }
753 } else {
754 $pageActuelle = 1;
755 }
756 $premiereEntree = ($pageActuelle - 1) * $messagesParPage;
757
758 $url = wphal_api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&fl=docid,citationFull_s,keyword_s,bookTitle_s,producedDate_s,authFullName_s&start=' . $premiereEntree . '&rows=' . $messagesParPage . '&sort=' . wphal_producedDateY . '&wt=json';
759 $json = wphal_do_get_data($url);
760
761 //--MODULE PAGINATION--//
762 $count_results = count($json->response->docs);
763 if($count_results>0) {
764 $content .= '<ul>';
765 for ( $i = 0; $i <= $count_results - 1; $i ++ ) {
766 $content .= '<li>' . $json->response->docs[ $i ]->citationFull_s . '</li>';
767 }
768 $content .= '</ul>';
769 } else {
770 $content = '<div> no results !</div>';
771 }
772 if($total> $messagesParPage) {
773 $base_url = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'];
774 $url = $base_url . $_SERVER["REQUEST_URI"];
775 $explodedURL= explode('?', $url);
776 $queryString = isset($explodedURL[1])?$explodedURL[1]:"";
777 $pagedHref = $explodedURL[0];
778 if(!empty($queryString)){
779 $parsedQueryString = [];
780 parse_str($queryString, $parsedQueryString);
781 if(isset($parsedQueryString["hal_page"])){
782 unset($parsedQueryString["hal_page"]);
783 }
784 $pagedHref .= '?';
785 foreach($parsedQueryString as $name => $value){
786 $pagedHref .= $name.'='.$value.'&';
787 }
788 // we add it back..
789 $pagedHref .= 'hal_page=';
790 }else {
791 $pagedHref .= '?hal_page=';
792 }
793
794 //--AFFICHAGE PAGINATION--//
795 $precedents = $pageActuelle - 2;
796 $suivants = $pageActuelle + 2;
797 $precedent = $pageActuelle - 1;
798 $suivant = $pageActuelle + 1;
799 $penultimate = $nombreDePages - 1;
800
801 $content .= '<ul class="wphal-pagination">';
802 //--BOUTON PRECEDENT--//
803 if ( $pageActuelle != 1 ) {
804 $content .= '<li><a href="'. $pagedHref . $precedent . '">&laquo;</a></li>';
805 }
806 if ( $nombreDePages <= 6 ) {// Cas 1 : 6 pages ou moins - Pas de troncature
807 for ( $i = 1; $i <= $nombreDePages; $i ++ ) {
808 if ( $i == $pageActuelle ) {
809 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
810 } else {
811 $content .= ' <li><a href="'. $pagedHref . $i . '">' . $i . '</a></li> ';
812 }
813 }
814 } elseif ( $nombreDePages >= 7 ) {// Cas 2 : 7 pages ou plus - Troncature
815 if ( $pageActuelle <= 3 ) {// Lorsque l'on est sur les trois premières pages
816 for ( $i = 1; $i <= 4; $i ++ ) {
817 if ( $i == $pageActuelle ) {
818 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
819 } else {
820 $content .= '<li><a href="'. $pagedHref . $i . '">' . $i . '</a></li>';
821 }
822 }
823 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
824 $content .= '<li><a href="'. $pagedHref . $penultimate . '">' . $penultimate . '</a></li>';
825 $content .= '<li><a href="'. $pagedHref . $nombreDePages . '">' . $nombreDePages . '</a></li>';
826 }
827 if ( $pageActuelle >= 4 && $pageActuelle <= $penultimate - 2 ) {//Lorsque l'on arrive sur la quatrième page
828 $content .= '<li><a href="'.$pagedHref.'1">1</a></li>';
829 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
830 $content .= '<li><a href="'. $pagedHref . $precedents . '">' . $precedents . '</a></li>';
831 $content .= '<li><a href="'. $pagedHref . $precedent . '">' . $precedent . '</a></li>';
832 $content .= '<li class="active"><a href="#">' . $pageActuelle . '</a></li>';
833 $content .= '<li><a href="'. $pagedHref . $suivant . '">' . $suivant . '</a></li>';
834 $content .= '<li><a href="'. $pagedHref . $suivants . '">' . $suivants . '</a></li>';
835 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
836 $content .= '<li><a href="'. $pagedHref . $nombreDePages . '">' . $nombreDePages . '</a></li>';
837 }
838 if ( $pageActuelle >= $penultimate - 1 ) {
839 $content .= '<li><a href="'.$pagedHref.'1">1</a></li>';
840 $content .= '<li><a href="'.$pagedHref.'2">2</a></li>';
841 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
842 for ( $i = $penultimate - 2; $i <= $nombreDePages; $i ++ ) {
843 if ( $i == $pageActuelle ) {
844 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
845 } else {
846 $content .= '<li><a href="'. $pagedHref . $i . '">' . $i . '</a></li>';
847 }
848 }
849 }
850 }
851 //--BOUTON SUIVANT--//
852 if ( $pageActuelle < $nombreDePages ) {
853 $content .= '<li><a href="'. $pagedHref . $suivant . '">&raquo;</a></li>';
854 }
855 $content .= '</ul>';
856 //--AFFICHAGE PAGINATION--//
857 }
858 }
859 $content .= '</div>
860 </div>
861 </div>';
862 }else{
863 $content = 'Plugin is not configured correctly or shortcode parameters are not valid, please check the <a href="https://doc.archives-ouvertes.fr/afficher-une-liste-de-publications-dans-wordpress/" target="_blank" id="wrong_params">documentation</a>';
864 }
865 $content .= '<div class="wphal-footer">';
866 $content .= '<p style="color:#B3B2B0">' . __("Documents récupérés de l'archive ouverte HAL", 'wp-hal') . '&nbsp;<a href="' . wphal_site . '" target="_blank"><img alt="logo" src=" ' . esc_url(plugin_dir_url(__FILE__) . 'img/logo-hal.png').'" style="width:90px;"></a></p>';
867 $content .= '</div>';
868
869 //--AFFICHAGE GRAPHIQUE DOMAINE--//
870 if (!is_null($facetdomain)) {
871 foreach ($facetdomain as $res) {
872 $name = explode(wphal_delimiter, $res[0])[1];
873 $value = $res[1];
874 $array[] = array($name, $value);
875 }
876 wp_localize_script('wp-hal-script4', 'WPWallSettings', $array);
877 }
878 $translation = array('liste' => __('Liste', 'wp-hal'), 'compl' => __('Liste complète', 'wp-hal'), 'princ' => __('Liste principale', 'wp-hal'), 'graph' => __('Graphique', 'wp-hal'), 'nuage' => __('Nuage de mots', 'wp-hal'));
879 wp_localize_script('wp-hal-script4', 'translate', $translation);
880 }
881 // tags other that those will be stripped
882 $allowed_html_tags = array(
883 'div' => array(
884 'class' => array(),
885 'id' => array(),
886 'style' => array(),
887 ),
888 "span"=> array(
889 'class' => array(),
890 'id' => array(),
891 'style' => array(),
892 ),
893 "img"=> array(
894 'alt' => array(),
895 'src' => array(),
896 'style' => array(),
897
898 ),
899 'p' => array(
900 'style' => array(),
901 'id' => array(),
902 ),
903 'h3' => array(
904 'id' => array(),
905 'class' => array(),
906 'style' => array()
907 ),
908 'a' => array(
909 'href' => array(),
910 'target' => array(),
911 'title' => array(),
912 'id' => array(),
913 'class' => array(),
914 'style' => array(),
915 'onclick' => array(),
916 ),
917 'ul' => array(
918 'class' => array(),
919 'id' => array(),
920 'style' => array(),
921 ),
922 'li' => array(
923 'class' => array(),
924 'id' => array(),
925 'data-percentage' => array()
926 ),
927 'button' => array(
928 'class' => array(),
929 'id' => array(),
930 'type' => array(),
931 'style' => array(),
932 'onclick' => array()
933 )
934 ,'br' => array()
935 ,'hr' => array()
936 ,'i' => array(),
937 );
938 add_filter( 'safe_style_css', function( $styles ) {
939 $styles[] = 'display';
940 return $styles;
941 } );
942 return wp_kses($content, $allowed_html_tags);
943 }
944
945 /**
946 * build facet query based on the option choice
947 *
948 * @param array $option_choix
949 * @return array
950 */
951 function wphal_buildfacet($option_choix)
952 {
953 $facetQuery = [];
954 if (is_array($option_choix) && !empty($option_choix)) {
955 foreach ($option_choix as $option) {
956 if ($option == 'disciplines') {
957 $facetQuery[] = wphal_lang . '_domainAllCodeLabel_fs';
958 }
959 if ($option == 'mots-clefs') {
960 $facetQuery[] = 'keyword_s';
961 }
962 if ($option == 'auteurs') {
963 $facetQuery[] = 'authIdLastNameFirstName_fs';
964 }
965 if ($option == 'revues') {
966 $facetQuery[] = 'journalIdTitle_fs';
967 }
968 if ($option == 'annee') {
969 $facetQuery[] = 'producedDateY_i';
970 }
971 if ($option == 'institution') {
972 $facetQuery[] = 'instStructIdName_fs';
973 }
974 if ($option == 'laboratoire') {
975 $facetQuery[] = 'labStructIdName_fs';
976 }
977 if ($option == 'departement') {
978 $facetQuery[] = 'deptStructIdName_fs';
979 }
980 if ($option == 'equipe') {
981 $facetQuery[] = 'rteamStructIdName_fs';
982 }
983 }
984 }
985 return $facetQuery;
986 }
987 function wphal_verifSolr($values){
988 $verifsolr = explode(',',$values);
989 $numverif = count($verifsolr);
990 $solrsql = '';
991 if ($numverif<1024){
992 $solrsql = str_replace(',',' OR ',$values);
993 } else {
994 $listsolrsql = explode(',',$values);
995 for($i=0;$i<1024;$i++){
996 if ($i == 0){
997 $solrsql = $listsolrsql[$i];
998 } else {
999 $solrsql .= ' OR ';
1000 $solrsql .= $listsolrsql[$i];
1001 }
1002 }
1003 }
1004
1005 return $solrsql;
1006 }
1007
1008 function wphal_adding_style() {
1009 wp_register_style('wp-hal-style1', plugins_url('/css/style.css', __FILE__));
1010 wp_register_style('wp-hal-style2', plugins_url('/css/jquery.jqplot.css', __FILE__));
1011
1012 wp_enqueue_style('wp-hal-style1');
1013 }
1014
1015 function wphal_adding_script() {
1016 wp_register_script('wp-hal-script1',plugins_url('/js/jquery.jqplot.js', __FILE__));
1017 wp_register_script('wp-hal-script2',plugins_url('/js/jqplot.highlighter.js', __FILE__));
1018 wp_register_script('wp-hal-script3',plugins_url('/js/jqplot.pieRenderer.js', __FILE__));
1019 wp_register_script('wp-hal-script4',plugins_url('/js/cv-hal.js', __FILE__));
1020
1021
1022 wp_enqueue_script("jquery");
1023 wp_enqueue_script('wp-hal-script4', false, array(), false, true);
1024 }
1025
1026 /**
1027 * Récupère les fichiers css et js
1028 */
1029 if ( wphal_is_curl_installed() ) {
1030 add_action('wp_enqueue_scripts', 'wphal_adding_style');
1031 add_action('wp_enqueue_scripts', 'wphal_adding_script');
1032 }
1033
1034 /**
1035 * Charge lorsque le plugin est désactivé
1036 */
1037 register_deactivation_hook( __FILE__, 'wphal_reset_option' );
1038
1039 /**
1040 * Ajoute le widget wphal à l'initialisation des widgets
1041 */
1042 add_action('widgets_init','wphal_init');
1043
1044 /**
1045 * Ajoute le menu à l'initialisation du menu admin
1046 */
1047 add_action( 'admin_menu', 'wphal_menu' );
1048
1049 /**
1050 * Fonction de création du menu
1051 */
1052 function wphal_menu() {
1053 add_menu_page( 'Options', 'Hal', 'manage_options', 'wp-hal.php', 'wphal_option' , '', 21);
1054
1055 add_action( 'admin_init', 'wphal_register_settings' );
1056 }
1057
1058
1059 /**
1060 * Initialise le nouveau widget
1061 */
1062 function wphal_init(){
1063 register_widget("wphal_widget");
1064 }
1065
1066 /***********************************************************************************************************************
1067 * PLUGIN WIDGET
1068 **********************************************************************************************************************/
1069
1070 /**
1071 * Classe du widget wphal
1072 */
1073
1074 class wphal_widget extends WP_widget{
1075 /**
1076 * Défini les propriétés du widget
1077 */
1078 function __construct(){
1079 $options = array(
1080 "classname" => "wphal-publications",
1081 "description" => __("Afficher les dernières publications d'un auteur ou d'une structure.", 'wp-hal')
1082 );
1083
1084 parent::__construct(
1085 'hal-publications',
1086 __("Publications HAL", 'wp-hal'),
1087 $options
1088 );
1089 }
1090
1091 /**
1092 * Crée le widget
1093 * @param $args
1094 * @param $instance
1095 */
1096 function widget($args, $instance){
1097 if(isset($instance['idhal']) && !empty($instance['idhal'])) {
1098 $content = '';
1099 extract($args);
1100 /**
1101 * @var $before_widget : defined by extract
1102 * @var $before_title : defined by extract
1103 * @var $after_title : defined by extract
1104 * @var $after_widget : defined by extract
1105 */
1106 if (!wphal_is_curl_installed()) {
1107 $content = 'Please check the <a href="https://wordpress.org/plugins/hal/faq/" target="_blank" id="FAQ">FAQ</a> with the code : CURL';
1108
1109 } else {
1110 $instance['idhal'] = wphal_verifSolr($instance['idhal']);
1111 $fieldName = $instance['typetext'] == 'title_s' ? 'title_s':'citationFull_s';
1112
1113 $url = wphal_api . '?q=*:*&fq=' . $instance['select'] . ':' . urlencode($instance['idhal']) . '&fl=uri_s,' . $fieldName . '&sort=' . wphal_producedDateY . '&rows=' . $instance['nbdoc'] . '&wt=json';
1114 $json = wphal_do_get_data($url);
1115
1116 $count_results = count($json->response->docs);
1117 if ($count_results > 0) {
1118 $content = '<ul class="widhal-ul">';
1119 for ($i = 0; $i < $count_results - 1; $i++) {
1120 if ($fieldName == 'title_s') {
1121 $typetext = $json->response->docs[$i]->title_s[0];
1122 } else {
1123 $typetext = $json->response->docs[$i]->citationFull_s;
1124 }
1125 $content .= '<li class="widhal-li"><a href="' . esc_url($json->response->docs[$i]->uri_s) . '" target="_blank">' . $typetext . '</a></li>';
1126 }
1127 $content .= '</ul>';
1128 } else {
1129 $content = '<div> no results !</div>';
1130 }
1131 }
1132 // tags other that those will be stripped
1133 $allowed_html_tags = array(
1134 'div' => array(
1135 'class' => array(),
1136 'id' => array(),
1137 ),
1138 'h2' => array(),
1139 'section' => array(),
1140 'a' => array(
1141 'href' => array(),
1142 'target' => array(),
1143 'title' => array(),
1144 'id' => array(),
1145 'class' => array(),
1146 ),
1147 'ul' => array(
1148 'class' => array(),
1149 'id' => array(),
1150 ),
1151 'li' => array(
1152 'class' => array(),
1153 'id' => array(),
1154 )
1155 );
1156 $widget_block = $before_widget;
1157 $widget_block .= $before_title . $instance['titre'] . $after_title;
1158 $widget_block .= $content;
1159 $widget_block .= $after_widget;
1160 echo wp_kses($widget_block, $allowed_html_tags);
1161 }
1162 }
1163
1164 /**
1165 * Sauvegarde des données
1166 * @param $new
1167 * @param $old
1168 */
1169 function update($new, $old){
1170 //the id must be provided
1171 if(isset($new['idhal']) && !empty($new['idhal'])) {
1172 $new['idhal'] = wphal_sanitize_username($new['idhal']);
1173 $new['nbdoc'] = wphal_sanitize_id($new['nbdoc']);
1174 return $new;
1175 }else
1176 return false;
1177 }
1178
1179 /**
1180 * Formulaire du widget
1181 * @param $instance
1182 */
1183 function form($instance){
1184
1185 $defaut = array(
1186 'titre' => __("Publications Hal", 'wp-hal'),
1187 'select' => "authIdHal_s",
1188 'typetext' => "title_s",
1189 'idhal' => "",
1190 'nbdoc' => 5
1191 );
1192 $instance = wp_parse_args($instance,$defaut);
1193 ?>
1194 <p>
1195 <label for="<?php echo esc_attr($this->get_field_id("titre"));?>"><?php echo esc_html(__('Titre','wp-hal')) .' :'?></label>
1196 <input value="<?php echo esc_js($instance['titre']);?>" name="<?php echo esc_attr($this->get_field_name("titre"));?>" id="<?php echo esc_attr($this->get_field_id("titre"));?>" class="widefat" type="text"/>
1197 </p>
1198 <p>
1199 <label for="<?php echo esc_attr($this->get_field_id("nbdoc"));?>"><?php echo esc_html(__("Nombre de documents affichés",'wp-hal')) .' :'?></label>
1200 <input class="tiny-text" id="<?php echo esc_attr($this->get_field_id("nbdoc"));?>" name="<?php echo esc_attr($this->get_field_name("nbdoc"));?>" type="number" step="1" min="1" max="10" value="<?php echo esc_js($instance['nbdoc']);?>" size="3">
1201 </p>
1202 <p>
1203 <label for="<?php echo esc_attr($this->get_field_id("typetext"));?>"><?php echo esc_html(__("Type d'affichage",'wp-hal')) .' :'?></label>
1204 <select id="<?php echo esc_attr($this->get_field_id("typetext"));?>" name="<?php echo esc_attr($this->get_field_name("typetext"));?>">
1205 <option id="<?php echo esc_attr($this->get_field_id("Title"));?>" value="title_s" <?php echo esc_attr(($instance["typetext"] == "title_s")?'selected':''); ?>><label for="<?php echo wp_kses($this->get_field_id("Title"), []);?>"><?php echo esc_html(__("Titre", 'wp-hal'))?></label></option>
1206 <option id="<?php echo esc_attr($this->get_field_id("Citation"));?>" value="citationFull_s" <?php echo esc_attr(($instance["typetext"] == "citationFull_s")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("Citation"));?>"><?php echo esc_html(__("Citation", 'wp-hal'), [])?></label></option>
1207 </select>
1208 </p>
1209 <p>
1210 <label for="<?php echo esc_attr($this->get_field_id("select"));?>"><?php echo esc_html(__("Type d'Id",'wp-hal') .' :')?></label>
1211 <select id="<?php echo esc_attr($this->get_field_id("select"));?>" name="<?php echo esc_attr($this->get_field_name("select"));?>">
1212 <option id="<?php echo esc_attr($this->get_field_id("Idhal"));?>" value="authIdHal_s" <?php echo esc_attr(($instance["select"] == "authIdHal_s")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("Idhal"));?>">Id Hal</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : laurent-capelli)','wp-hal'));?></span></option>
1213 <option id="<?php echo esc_attr($this->get_field_id("StructId"));?>" value="structId_i" <?php echo esc_attr(($instance["select"] == "structId_i")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("StructId"));?>">Struct Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 413106)','wp-hal'));?></span></option>
1214 <option id="<?php echo esc_attr($this->get_field_id("Anrproject"));?>" value="anrProjectId_i" <?php echo esc_attr(($instance["select"] == "anrProjectId_i")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("Anrproject"));?>">anrProject Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 1646)','wp-hal'));?></span></option>
1215 <option id="<?php echo esc_attr($this->get_field_id("Europeanproject"));?>" value="europeanProjectId_i" <?php echo esc_attr(($instance["select"] == "europeanProjectId_i")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("Europeanproject"));?>">europeanProject Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 17877)','wp-hal'));?></span></option>
1216 <option id="<?php echo esc_attr($this->get_field_id("Collection"));?>" value="collCode_s" <?php echo esc_attr(($instance["select"] == "collCode_s")?'selected':''); ?>><label for="<?php echo esc_attr($this->get_field_id("Collection"));?>">Collection</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : TICE2014)','wp-hal'));?></span></option>
1217 </select>
1218 </p>
1219 <p>
1220 <label for="<?php echo esc_attr($this->get_field_id("idhal"));?>"><?php echo esc_html(__("Id",'wp-hal')) .' :'?></label>
1221 <input value="<?php echo esc_js($instance['idhal']);?>" name="<?php echo esc_attr($this->get_field_name("idhal"));?>" id="<?php echo esc_attr($this->get_field_id("idhal"));?>" type="text"/>
1222 </p>
1223 <?php
1224 }
1225 }
1226
1227
1228 function wphal_sanitize_id( $input ){
1229 if(is_numeric($input)){
1230 return $input;
1231 }
1232 }
1233
1234 function wphal_sanitize_username($input)
1235 {
1236 $allowed = array(".", "-", "_"); // you can add here more value, you want to allow.
1237 if(ctype_alnum(str_replace($allowed, '', $input ))) {
1238 return $input;
1239 }
1240 }
1241
1242 function wphal_sanitize_phone( $input ){
1243 $phone_num = $input;
1244 $phone_num = preg_replace('/[^0-9]/', '', $phone_num);
1245 if(strlen($phone_num) === 10) {
1246 //Phone is 10 characters in length
1247 return $input;
1248 }
1249 }
1250
1251
1252 function wphal_register_settings() {
1253 register_setting( 'wphal_option', 'option_choix' );
1254 register_setting( 'wphal_option', 'option_type' );
1255 register_setting( 'wphal_option', 'option_groupe' );
1256 register_setting( 'wphal_option', 'option_idhal' , array(
1257 'type' => 'string',
1258 'sanitize_callback' => 'wphal_sanitize_username',
1259 'default' => NULL,
1260 ));
1261 register_setting( 'wphal_option', 'option_lang' );
1262 register_setting( 'wphal_option', 'option_infocontact' );
1263 register_setting( 'wphal_option', 'option_email' , array(
1264 'type' => 'string',
1265 'sanitize_callback' => 'sanitize_email',
1266 'default' => NULL,
1267 ));
1268 register_setting( 'wphal_option', 'option_tel' , array(
1269 'type' => 'string',
1270 'sanitize_callback' => 'wphal_sanitize_phone',
1271 'default' => NULL,
1272 ));
1273 register_setting( 'wphal_option', 'option_social0' , array(
1274 'type' => 'string',
1275 'sanitize_callback' => 'wphal_sanitize_username',
1276 'default' => NULL,
1277 ));
1278 register_setting( 'wphal_option', 'option_social1' , array(
1279 'type' => 'string',
1280 'sanitize_callback' => 'wphal_sanitize_username',
1281 'default' => NULL,
1282 ));
1283 register_setting( 'wphal_option', 'option_social2' , array(
1284 'type' => 'string',
1285 'sanitize_callback' => 'wphal_sanitize_username',
1286 'default' => NULL,
1287 ));
1288 register_setting( 'wphal_option', 'option_social3' , array(
1289 'type' => 'string',
1290 'sanitize_callback' => 'wphal_sanitize_username',
1291 'default' => NULL,
1292 ));
1293 register_setting( 'wphal_option', 'option_cache_timeout' , array(
1294 'type' => 'string',
1295 'sanitize_callback' => 'wphal_sanitize_id',
1296 'default' => NULL,
1297 ));
1298 register_setting( 'wphal_option', 'option_erase_cache' );
1299 }
1300
1301 /**
1302 * Crée le menu d'option du plugin
1303 */
1304 function wphal_option() {
1305
1306 if (get_option('option_type')==''){
1307 update_option('option_type', 'authIdHal_s');
1308 }
1309 if (get_option('option_groupe')==''){
1310 update_option('option_groupe', 'paginer');
1311 }
1312 ?>
1313 <div class="wrap">
1314 <h2><?php echo esc_html(__('Plugin HAL','wp-hal'));?></h2>
1315 <form method="post" enctype="multipart/form-data" action="options.php">
1316 <div id="poststuff">
1317 <div id="post-body" class="metabox-holder columns-2">
1318 <div id="post-body-content">
1319 <?php settings_fields( 'wphal_option' ); ?>
1320 <?php do_settings_sections( 'wphal_option' ); ?>
1321 <table class="form-table">
1322 <tr style="vertical-align:top;">
1323 <th scope="row" style="font-size: 18px;"><?php echo esc_html(__('Paramètre de la page :','wp-hal'));?></th>
1324 </tr>
1325 <tr style="vertical-align:top;">
1326 <th scope="row"><label for="option_type"><?php echo esc_html(__('Type d\'Id','wp-hal'));?></label></th>
1327 <td><select name="option_type">
1328 <option id="Idhal" value="authIdHal_s" <?php echo esc_attr(((get_option('option_type') == "authIdHal_s")?'selected':'')); ?>><label for="Idhal">Id Hal</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : laurent-capelli)','wp-hal'));?></span></option>
1329 <option id="StructId" value="structId_i" <?php echo esc_attr(((get_option('option_type') == "structId_i")?'selected':'')); ?>><label for="StructId">Struct Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 413106)','wp-hal'));?></span></option>
1330 <option id="Anrproject" value="anrProjectId_i" <?php echo esc_attr(((get_option('option_type') == "anrProjectId_i")?'selected':'')); ?>><label for="Anrproject">anrProject Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 1646)','wp-hal'));?></span></option>
1331 <option id="Europeanproject" value="europeanProjectId_i" <?php echo esc_attr(((get_option('option_type') == "europeanProjectId_i")?'selected':'')); ?>><label for="Europeanproject">europeanProject Id</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : 17877)','wp-hal'));?></span></option>
1332 <option id="Collection" value="collCode_s" <?php echo esc_attr(((get_option('option_type') == "collCode_s")?'selected':'')); ?>><label for="Collection">Collection</label><span style="font-style: italic;"> <?php echo esc_html(__('(Exemple : TICE2014)','wp-hal'));?></span></option>
1333 </select>
1334 <input type="text" name="option_idhal" id="option_idhal" value="<?php echo esc_js(get_option('option_idhal')); ?>"/>
1335 </td>
1336 </tr>
1337 <tr style="vertical-align:top;">
1338 <th scope="row"><?php echo esc_html(__('Affichage des documents','wp-hal'));?></th>
1339 <td><input type="radio" name="option_groupe" id="paginer" value="paginer" <?php echo esc_attr((get_option('option_groupe') == "paginer")?'checked':''); ?>><label for="paginer"><?php echo esc_html(__('Documents avec pagination','wp-hal'));?></label><br>
1340 <input type="radio" name="option_groupe" id="grouper" value="grouper" <?php echo esc_js((get_option('option_groupe') == "grouper")?'checked':''); ?>><label for="grouper"><?php echo esc_html(__('Documents groupés par type','wp-hal'));?></label><br>
1341 </td>
1342 </tr>
1343 <tr style="vertical-align:top;">
1344 <th scope="row"><?php echo esc_html(__('Choix des éléments menu','wp-hal'));?></th>
1345 <?php $option_choix = get_option('option_choix'); ?>
1346 <td><input type="checkbox" name="option_choix[1]" id="Contact" value="contact" <?php echo esc_attr((isset($option_choix[1]) && $option_choix[1] == "contact")?'checked':''); ?>><label for="Contact"><?php echo esc_html(__('Contact','wp-hal'));?></label><br/>
1347 <input type="checkbox" name="option_choix[2]" id="Disciplines" value="disciplines" <?php echo esc_attr((isset($option_choix[2]) && $option_choix[2] == "disciplines")?'checked':''); ?>><label for="Disciplines"><?php echo esc_html(__('Disciplines','wp-hal'));?></label><br/>
1348 <input type="checkbox" name="option_choix[3]" id="Mots-clefs" value="mots-clefs" <?php echo esc_attr((isset($option_choix[3]) && $option_choix[3] == "mots-clefs")?'checked':''); ?>><label for="Mots-clefs"><?php echo esc_html(__('Mots-clefs','wp-hal'));?></label><br/>
1349 <input type="checkbox" name="option_choix[4]" id="Auteurs" value="auteurs" <?php echo esc_attr((isset($option_choix[4]) && $option_choix[4] == "auteurs")?'checked':''); ?>><label for="Auteurs"><?php echo esc_html(__('Auteurs','wp-hal'));?></label><br/>
1350 <input type="checkbox" name="option_choix[5]" id="Revues" value="revues" <?php echo esc_attr((isset($option_choix[5]) && $option_choix[5] == "revues")?'checked':''); ?>><label for="Revues"><?php echo esc_html(__('Revues','wp-hal'));?></label><br/>
1351 <input type="checkbox" name="option_choix[6]" id="Annee" value="annee" <?php echo esc_attr((isset($option_choix[6]) && $option_choix[6] == "annee")?'checked':''); ?>><label for="Annee"><?php echo esc_html(__('Année de production','wp-hal'));?></label><br/>
1352 <input type="checkbox" name="option_choix[7]" id="Institution" value="institution" <?php echo esc_attr((isset($option_choix[7]) && $option_choix[7] == "institution")?'checked':''); ?>><label for="Institution"><?php echo esc_html(__('Institutions','wp-hal'));?></label><br/>
1353 <input type="checkbox" name="option_choix[8]" id="Laboratoire" value="laboratoire" <?php echo esc_attr((isset($option_choix[8]) && $option_choix[8] == "laboratoire")?'checked':''); ?>><label for="Laboratoire"><?php echo esc_html(__('Laboratoires','wp-hal'));?></label><br/>
1354 <input type="checkbox" name="option_choix[9]" id="Departement" value="departement" <?php echo esc_attr((isset($option_choix[9]) && $option_choix[9] == "departement")?'checked':''); ?>><label for="Departement"><?php echo esc_html(__('Départements','wp-hal'));?></label><br/>
1355 <input type="checkbox" name="option_choix[10]" id="Equipe" value="equipe" <?php echo esc_attr((isset($option_choix[10]) && $option_choix[10] == "equipe")?'checked':''); ?>><label for="Equipe"><?php echo esc_html(__('Équipes de recherche','wp-hal'));?></label>
1356 </td>
1357 </tr>
1358 <tr style="vertical-align:top;">
1359 <th scope="row" style="font-size: 18px;"><?php echo esc_html(__('Contact :','wp-hal'));?></th>
1360 </tr>
1361 <tr>
1362 <th scope="row"><?php echo esc_html(__("Afficher les informations d'un chercheur ayant un IdHal ?",'wp-hal'));?></th>
1363 <td><input type="radio" name="option_infocontact" id="wphal-yes" value="yes" <?php echo esc_attr((get_option('option_infocontact') == "yes")?'checked':''); ?>><label for="wphal-yes"><?php echo esc_html(__("Oui",'wp-hal'))?></label><br>
1364 <input type="radio" name="option_infocontact" id="wphal-no" value="no" <?php echo esc_attr((get_option('option_infocontact') == "no")?'checked':''); ?>><label for="wphal-no"><?php echo esc_html(__("Non",'wp-hal'))?></label><br>
1365 </td>
1366 </tr>
1367 <tr>
1368 <th scope="row"><label for="option_cache_timeout"><?php echo esc_html(__('Expiration cache (minutes)','wp-hal'));?></label></th>
1369 <td><input type="number" min="1440" style="width:300px;" placeholder="Default(1 day) : 1440" name="option_cache_timeout" id="option_cache_timeout" value="<?php echo esc_js(get_option('option_cache_timeout')); ?>"/><img alt="cache" src="<?php echo esc_url(plugin_dir_url( __FILE__ ).'img/clock.svg'); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1370 </tr>
1371 <tr>
1372 <th scope="row"><label for="option_erase_cache"><?php echo esc_html(__('Reinitialiser le cache','wp-hal'));?></label></th>
1373 <td><input type="checkbox" name="option_erase_cache" id="option_erase_cache" value="1"/><img alt="option_erase_cache" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/groom.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1374 </tr>
1375 <tr>
1376 <th scope="row"><label for="option_email"><?php echo esc_html(__('Email','wp-hal'));?></label></th>
1377 <td><input type="text" style="width:300px;" placeholder="Exemple : hi@mail.com" name="option_email" id="option_email" value="<?php echo esc_js(get_option('option_email')); ?>"/><img alt="email" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/mail.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1378 </tr>
1379 <tr>
1380 <th scope="row"><label for="option_tel"><?php echo esc_html(__('Téléphone','wp-hal'));?></label></th>
1381 <td><input type="text" style="width:300px;" placeholder="Exemple : 06-01-02-03-04" name="option_tel" id="option_tel" value="<?php echo esc_js(get_option('option_tel'));?>"/><img alt="phone" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/phone.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1382 </tr>
1383 <tr>
1384 <th><label for="option_social0">Facebook (http://www.facebook.com/)</label></th>
1385 <td><input type="text" style="width:300px;" placeholder="Exemple : fa.book" name="option_social0" id="option_social0" value="<?php echo esc_js(get_option('option_social0')); ?>"/><img alt="facebook" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/facebook.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1386 </tr>
1387 <tr>
1388 <th><label for="option_social1">Twitter (http://www.twitter.com/)</label></th>
1389 <td><input type="text" style="width:300px;" placeholder="Exemple : tweet_heure" name="option_social1" id="option_social1" value="<?php echo esc_js(get_option('option_social1')); ?>"/><img alt="twitter" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/twitter.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1390 </tr>
1391 <tr>
1392 <th><label for="option_social2">Google + (https://plus.google.com/u/0/+)</label></th>
1393 <td><input type="text" style="width:300px;" placeholder="Exemple : goo.plus" name="option_social2" id="option_social2" value="<?php echo esc_js(get_option('option_social2')); ?>"/><img alt="google" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/google-plus.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1394 </tr>
1395 <tr>
1396 <th><label for="option_social3">LinkedIn (https://www.linkedin.com/in/)</label></th>
1397 <td><input type="text" style="width:300px;" placeholder="Exemple : link.dine" name="option_social3" id="option_social3" value="<?php echo esc_js(get_option('option_social3')); ?>"/><img alt="linkedin" src="<?php echo esc_url(plugin_dir_url( __FILE__ )."img/linkedin.svg"); ?>" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1398 </tr>
1399 </table>
1400 <?php
1401 submit_button(__('Enregistrer','wp-hal'), 'primary large', 'submit', true); ?>
1402 </div>
1403 <div id="postbox-container-1" class="postbox-container">
1404
1405 </div>
1406 </div>
1407 <br class="clear"><br/>
1408 </div>
1409 </form>
1410
1411 </div>
1412
1413 <?php
1414 }
1415
1416
1417 /**
1418 * Reset les données Hal
1419 */
1420 function wphal_reset_option() {
1421 delete_option('option_choix');
1422 delete_option('option_type');
1423 delete_option('option_groupe');
1424 delete_option('option_idhal');
1425 delete_option('option_lang');
1426 delete_option('option_infocontact');
1427 delete_option('option_email');
1428 delete_option('option_tel');
1429 delete_option('option_social0');
1430 delete_option('option_social1');
1431 delete_option('option_social2');
1432 delete_option('option_social3');
1433 delete_option('option_cache_timeout');
1434 delete_option('option_erase_cache');
1435 }
1436
1437 ?>
1438