PluginProbe
HAL / 2.0.8
HAL v2.0.8
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.0.8, at wp-hal.php

1,143 lines 72.7 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.0.8
7 * Author: Baptiste Blondelle
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 (locale == 'fr_FR') {
22 define('lang', 'fr');
23 } elseif (locale == 'es_ES') {
24 define('lang', 'es');
25 } else {
26 define('lang', 'en');
27 }
28
29 // Création du shortcode ('nom du shortcode', 'fonction appelée')
30 add_shortcode( 'cv-hal', 'cv_hal' );
31 add_shortcode( 'nb-doc', 'nb_doc' );
32
33
34 function charger_languages() {
35 load_plugin_textdomain('wp-hal', false, dirname(plugin_basename(__FILE__)) . '/lang/');
36 }
37
38 add_action('plugins_loaded', 'charger_languages');
39
40 function hal_plugin_action_links( $links, $file ) {
41 if ( $file != plugin_basename( __FILE__ ))
42 return $links;
43
44 $settings_link = '<a href="admin.php?page=wp-hal.php">' . __( 'Paramètres', 'wp-hal' ) . '</a>';
45
46 array_unshift( $links, $settings_link );
47
48 return $links;
49 }
50
51
52 add_filter( 'plugin_action_links', 'hal_plugin_action_links',10,2);
53
54
55 /***********************************************************************************************************************
56 * PLUGIN SHORTCODE ND-DOC
57 **********************************************************************************************************************/
58 function nb_doc($param)
59 {
60 $idhal = verifSolr(get_option('option_idhal'));
61 extract(shortcode_atts(array(
62 'type' => get_option('option_type'),
63 'id' => $idhal
64 ),
65 $param
66 ));
67 $id = verifSolr($id);
68
69 $url = api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&rows=0&wt=json';
70 $ch = curl_init($url);
71 // Options
72 $options = array(
73 CURLOPT_RETURNTRANSFER => true,
74 CURLOPT_HTTPHEADER => array('Content-type: application/json'),
75 CURLOPT_TIMEOUT => 10,
76 CURLOPT_USERAGENT => "HAL Plugin Wordpress " . version
77 );
78
79 // Bind des options et de l'objet cURL que l'on va utiliser
80 curl_setopt_array($ch, $options);
81 // Récupération du résultat JSON
82 $json = json_decode(curl_exec($ch));
83 curl_close($ch);
84
85 return $json->response->numFound;
86 }
87 /***********************************************************************************************************************
88 * PLUGIN SHORTCODE CV-HAL
89 **********************************************************************************************************************/
90 function cv_hal($param){
91 if ( !function_exists('curl_init' ) ) {
92 echo 'Please check the';?> <a href="https://wordpress.org/plugins/hal/faq/" target="_blank" id="curl">FAQ</a><?php echo ' with the code : CURL';
93 } else {
94
95 if(in_array('disciplines', get_option('option_choix'))){ //Lance les scripts pour le Graphique
96 wp_enqueue_style('wp-hal-style2');
97
98 wp_enqueue_script('wp-hal-script1');
99 wp_enqueue_script('wp-hal-script2');
100 wp_enqueue_script('wp-hal-script3');
101 }
102
103 if (get_option('option_idhal') != '') {
104 $idhal = verifSolr(get_option('option_idhal'));
105 extract(shortcode_atts(array(
106 'type' => get_option('option_type'),
107 'id' => $idhal,
108 'contact' => get_option('option_infocontact')
109 ),
110 $param
111 ));
112 $id = verifSolr($id);
113
114 if (get_option('option_groupe') == 'grouper') {
115 //cURL sur l'API pour récupérer les données
116 $url = api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&group=true&group.field=docType_s&group.limit=1000&fl=docid,citationFull_s&facet.field=' . lang . '_domainAllCodeLabel_fs&facet.field=keyword_s&facet.field=journalIdTitle_fs&facet.field=producedDateY_i&facet.field=authIdLastNameFirstName_fs&facet.field=instStructIdName_fs&facet.field=labStructIdName_fs&facet.field=deptStructIdName_fs&facet.field=rteamStructIdName_fs&facet.mincount=1&facet=true&sort=' . producedDateY . '&wt=json&json.nl=arrarr';
117 } elseif (get_option('option_groupe') == 'paginer') {
118 $url = api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&fl=docid,citationFull_s&facet.field=' . lang . '_domainAllCodeLabel_fs&facet.field=keyword_s&facet.field=journalIdTitle_fs&facet.field=producedDateY_i&facet.field=authIdLastNameFirstName_fs&facet.field=instStructIdName_fs&facet.field=labStructIdName_fs&facet.field=deptStructIdName_fs&facet.field=rteamStructIdName_fs&facet.mincount=1&facet=true&sort=' . producedDateY . '&wt=json&json.nl=arrarr';
119 }
120
121 $ch = curl_init($url);
122 // Options
123 $options = array(
124 CURLOPT_RETURNTRANSFER => true,
125 CURLOPT_HTTPHEADER => array('Content-type: application/json'),
126 CURLOPT_TIMEOUT => 10,
127 CURLOPT_USERAGENT => "HAL Plugin Wordpress " . version
128 );
129
130 // Bind des options et de l'objet cURL que l'on va utiliser
131 curl_setopt_array($ch, $options);
132 // Récupération du résultat JSON
133 $json = json_decode(curl_exec($ch));
134 curl_close($ch);
135
136 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
137
138 $content = '<div id="wphal-content">
139 <ul id="wphal-menu">';
140 $content .= '<li><a href="#publications" onclick="displayElem(\'publications\'); return false;" style="font-size:18px; text-decoration: none;">' . __('Publications', 'wp-hal') . '</a></li>';
141 if (is_array(get_option('option_choix'))) {
142 $content .= '<li><a href="#filtres" onclick="return false;" style="font-size:18px; text-decoration: none; cursor:default;">' . __('Filtres', 'wp-hal') . '</a>';
143 $content .= '<ul id="wphal-filtres">';
144 foreach (get_option('option_choix') as $option) {
145 if ($option == 'contact') {
146 $content .= '<li><a href="#contact" onclick="displayElem(\'wphal-contact\'); return false;" style="margin:1px; text-decoration: none;">' . __('Contact', 'wp-hal');
147 $content .= '</a></li>';
148 }
149 if ($option == 'disciplines') {
150 $content .= '<li><a href="#disciplines" onclick="displayElem(\'wphal-disciplines\'); return false;" style="margin:1px; text-decoration: none;">' . __('Disciplines', 'wp-hal');
151 $content .= '</a></li>';
152 }
153 if ($option == 'mots-clefs') {
154 $content .= '<li><a href="#keywords" onclick="displayElem(\'wphal-keywords\'); return false;" style="margin:1px; text-decoration: none;">' . __('Mots-clefs', 'wp-hal');
155 $content .= '</a></li>';
156 }
157 if ($option == 'auteurs') {
158 $content .= '<li><a href="#auteurs" onclick="displayElem(\'wphal-auteurs\'); return false;" style="margin:1px; text-decoration: none;">' . __('Auteurs', 'wp-hal');
159 $content .= '</a></li>';
160 }
161 if ($option == 'revues') {
162 $content .= '<li><a href="#revues" onclick="displayElem(\'wphal-revues\'); return false;" style="margin:1px; text-decoration: none;">' . __('Revues', 'wp-hal');
163 $content .= '</a></li>';
164 }
165 if ($option == 'annee') {
166 $content .= '<li><a href="#annees" onclick="displayElem(\'wphal-annees\'); return false;" style="margin:1px; text-decoration: none;">' . __('Année de production', 'wp-hal');
167 $content .= '</a></li>';
168 }
169 if ($option == 'institution') {
170 $content .= '<li><a href="#insts" onclick="displayElem(\'wphal-insts\'); return false;" style="margin:1px; text-decoration: none;">' . __('Institutions', 'wp-hal');
171 $content .= '</a></li>';
172 }
173 if ($option == 'laboratoire') {
174 $content .= '<li><a href="#labs" onclick="displayElem(\'wphal-labs\'); return false;" style="margin:1px; text-decoration: none;">' . __('Laboratoires', 'wp-hal');
175 $content .= '</a></li>';
176 }
177 if ($option == 'departement') {
178 $content .= '<li><a href="#depts" onclick="displayElem(\'wphal-depts\'); return false;" style="margin:1px; text-decoration: none;">' . __('Départements', 'wp-hal');
179 $content .= '</a></li>';
180 }
181 if ($option == 'equipe') {
182 $content .= '<li><a href="#equipes" onclick="displayElem(\'wphal-equipes\'); return false;" style="margin:1px; text-decoration: none;">' . __('Équipes de recherche', 'wp-hal');
183 $content .= '</a></li>';
184 }
185 }
186 $content .= '</ul></li>';
187 }
188 $content .= '</ul><br/><hr>';
189
190 $content .= '<div id="meta">
191 <div class="display" id="wphal-contact" style="display: none;">
192 <h3 class="wphal-titre">' . __('Contact', 'wp-hal');
193 $content .= '</h3>
194
195 <ul id="wphal-cont" style="list-style-type: none;">';
196
197 if ($contact == 'yes' && $type == 'authIdHal_s') {
198 $urlauthor = urlauthor.'?indent=true&fq=valid_s:VALID&fl=idref_s,url_s,email_s,fullName_s,arxiv_s,idHal_s,viaf_s,isni_s,orcid_s,hasCV_bool&q=idHal_s:'.urlencode($id);
199 $ch = curl_init($urlauthor);
200 // Options
201 $options = array(
202 CURLOPT_RETURNTRANSFER => true,
203 CURLOPT_HTTPHEADER => array('Content-type: application/json'),
204 CURLOPT_TIMEOUT => 10,
205 CURLOPT_USERAGENT => "HAL Plugin Wordpress " . version
206 );
207
208 // Bind des options et de l'objet cURL que l'on va utiliser
209 curl_setopt_array($ch, $options);
210 // Récupération du résultat JSON
211 $jsonauthor = json_decode(curl_exec($ch));
212 curl_close($ch);
213
214 for ($i = 0; $jsonauthor->response->docs[$i] != ''; $i++) {
215 $content .= '<div class="wphal-infocontact" id="wphal-infocontact'.$i.'">';
216 if ($jsonauthor->response->docs[$i]->fullName_s != '') {
217 $content .= '<li class="wphal-fullname"><span>Nom : </span><span>'. $jsonauthor->response->docs[$i]->fullName_s .'</span></li>';
218 }
219 if ($jsonauthor->response->docs[$i]->email_s != '') {
220 $content .= '<li class="wphal-email"><span>Email : </span><span><a href="mailto:'. $jsonauthor->response->docs[$i]->email_s .'">' . $jsonauthor->response->docs[$i]->email_s . '</a></span></li>';
221 }
222 if ($jsonauthor->response->docs[$i]->idHal_s != '') {
223 $content .= '<li class="wphal-idhal"><span>IdHAL : </span><span>' . $jsonauthor->response->docs[$i]->idHal_s . '</span></li>';
224 }
225 if ($jsonauthor->response->docs[$i]->hasCV_bool == true){
226 $content .= '<li class="wphal-cvhal"><span>CV HAL : </span><a href="'.cvhal. $jsonauthor->response->docs[$i]->idHal_s.'" target="_blank">CV de '.$jsonauthor->response->docs[$i]->fullName_s.'</a></li>';
227 }
228 if ($jsonauthor->response->docs[$i]->arxiv_s != '') {
229 $content .= '<li class="wphal-"><span>arXiv : </span><span><a href="' . $jsonauthor->response->docs[$i]->arxiv_s . '" target="_blank">' . substr(strrchr($jsonauthor->response->docs[$i]->arxiv_s, "/"), 1) . '</a></span></li>';
230 }
231 if ($jsonauthor->response->docs[$i]->idref_s != '') {
232 $content .= '<li class="wphal-"><span>IdRef : </span><span><a href="' . $jsonauthor->response->docs[$i]->idref_s . '" target="_blank">' . substr(strrchr($jsonauthor->response->docs[$i]->idref_s, "/"), 1) . '</a></span></li>';
233 }
234 if ($jsonauthor->response->docs[$i]->orcid_s != '') {
235 $content .= '<li class="wphal-"><span>ORCID : </span><span><a href="' . $jsonauthor->response->docs[$i]->orcid_s . '" target="_blank">' . substr(strrchr($jsonauthor->response->docs[$i]->orcid_s, "/"), 1) . '</a></span></li>';
236 }
237 if ($jsonauthor->response->docs[$i]->viaf_s != '') {
238 $content .= '<li class="wphal-"><span>VIAF : </span><span><a href="' . $jsonauthor->response->docs[$i]->viaf_s . '" target="_blank">' . substr(strrchr($jsonauthor->response->docs[$i]->viaf_s, "/"), 1) . '</a></span></li>';
239 }
240 if ($jsonauthor->response->docs[$i]->isni_s != '') {
241 $content .= '<li class="wphal-"><span>ISNI : </span><span><a href="' . $jsonauthor->response->docs[$i]->isni_s . '" target="_blank">' . substr(strrchr($jsonauthor->response->docs[$i]->isni_s, "/"), 1) . '</a></span></li>';
242 }
243 $content .= '</div>';
244 }
245 }
246 if (get_option('option_email') != '') {
247 $content .= '<li><img alt="mail" src=" ' . plugin_dir_url(__FILE__) . 'img/mail.svg" style=" width:16px; margin-left:2px; margin-right:2px;"/><a href="mailto:' . get_option('option_email') . '" target="_blank">' . get_option('option_email') . '</a></li>';
248 }
249 if (get_option('option_tel') != '') {
250 $content .= '<li><img alt="phone" src=" ' . plugin_dir_url(__FILE__) . 'img/phone.svg" style="width:16px; margin-left:2px; margin-right:2px;"/>' . get_option('option_tel') . '</li>';
251 }
252 if (get_option('option_social0') != '') {
253 $content .= '<li><a href="http://www.facebook.com/' . get_option('option_social0') . '" target="_blank"><img src=" ' . plugin_dir_url(__FILE__) . 'img/facebook.svg" style="width:32px; margin:4px;"/></a></li>';
254 }
255 if (get_option('option_social1') != '') {
256 $content .= '<li><a href="http://www.twitter.com/' . get_option('option_social1') . '" target="_blank"><img src=" ' . plugin_dir_url(__FILE__) . 'img/twitter.svg" style="width:32px; margin:4px;"/></a></li>';
257 }
258 if (get_option('option_social2') != '') {
259 $content .= '<li><a href="https://plus.google.com/u/0/+' . get_option('option_social2') . '" target="_blank"><img src=" ' . plugin_dir_url(__FILE__) . 'img/google-plus.svg" style="width:32px; margin:4px;"/></a></li>';
260 }
261 if (get_option('option_social3') != '') {
262 $content .= '<li><a href="https://www.linkedin.com/in/' . get_option('option_social3') . '" target="_blank"><img src=" ' . plugin_dir_url(__FILE__) . 'img/linkedin.svg" style="width:32px; margin:4px;"/></a></li>';
263 }
264 $content .= '</ul>
265 </div>
266 <div class="display" id="wphal-disciplines" style="display: none;">
267 <h3 class="wphal-titre">' . __('Disciplines', 'wp-hal') . '</h3>';
268
269 if (locale == 'fr_FR') {
270 $facetdomain = $json->facet_counts->facet_fields->fr_domainAllCodeLabel_fs;
271 } elseif (locale == 'es_ES') {
272 $facetdomain = $json->facet_counts->facet_fields->es_domainAllCodeLabel_fs;
273 } else {
274 $facetdomain = $json->facet_counts->facet_fields->en_domainAllCodeLabel_fs;
275 }
276
277 if (!is_null($facetdomain) && !empty($facetdomain)) {
278 $content .= '<div id="listdisci">';
279 $content .= '<span id="tridisciplines">';
280 $content .= '<button type="button" class="trial" href="" id="tridisci" onclick="toggleSort(this, true, \'wphal-discipline\', \'wphal-discipline\', \'tridisci\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
281 $content .= '<button type="button" class="trioc" href="" id="trinbdisci" onclick="toggleSort(this, false, \'wphal-discipline\', \'wphal-discipline\', \'trinbdisci\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
282 $content .= '</span>';
283 $content .= '<ul id="wphal-discipline" class="wphal-discipline">';
284 foreach ($facetdomain as $res) {
285 $name = explode(delimiter, $res[0]);
286 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=domainAllCode_s:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
287 }
288 $content .= '</ul>';
289 $content .= '</div>';
290
291 $content .= '<div id="wphal-graph" style="display:none;">';
292 $content .= '<div id="wphal-piedisci"></div>';
293 $content .= '</div>';
294 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-disci" onclick="visibilitedisci(\'listdisci\',\'wphal-graph\',\'tridisciplines\'); return false;" >' . __('Graphique', 'wp-hal');
295 $content .= '</button>';
296 }
297 $content .= '</div>
298 <div class="display" id="wphal-keywords" style="display: none;">
299 <h3 class="wphal-titre">' . __('Mots-clefs', 'wp-hal') . '</h3>';
300 if (!is_null($json->facet_counts->facet_fields->keyword_s) && !empty($json->facet_counts->facet_fields->keyword_s)) {
301 $content .= '<div id="wphal-keys">';
302 $r = 0;
303 // CSS Nuage de mots
304 $maxsize = 25;
305 $minsize = 10;
306 $maxval = max(array_values($json->facet_counts->facet_fields->keyword_s[1]));
307 $minval = min(array_values($json->facet_counts->facet_fields->keyword_s[1]));
308 $spread = ($maxval - $minval);
309 $step = ($maxsize - $minsize) / $spread;
310 $tab = array();
311 foreach ($json->facet_counts->facet_fields->keyword_s as $res) {
312 $r = $r + 1;
313 if ($r > 20) {
314 break;
315 }
316 $tab[] = $res;
317 }
318 asort($tab); // Tri du tableau par ordre alphabétique
319 foreach ($tab as $res) {
320 $size = round($minsize + (($res[1] - $minval) * $step));
321 $content .= '<a style="display: inline-block; font-size:' . $size . 'px" href="' . halv3 . '?q=keyword_s:' . urlencode('"' . $res[0] . '"') . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $res[0] . '</a>&nbsp;';
322 }
323 $content .= '</div>';
324 $content .= '<div id="keysuite" style="display:none;">';
325 $content .= '<span id="trikeywords">';
326 $content .= '<button type="button" class="trial" href="" id="trikey" onclick="toggleSort(this, true, \'wphal-keyw\', \'wphal-keyword\', \'trikey\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
327 $content .= '<button type="button" class="trioc" href="" id="trinbkey" onclick="toggleSort(this, false, \'wphal-keyw\', \'wphal-keyword\', \'trinbkey\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
328 $content .= '</span>';
329 $content .= '<ul class="wphal-keyword">';
330 $content .= '<div id="wphal-keyw">';
331 foreach ($json->facet_counts->facet_fields->keyword_s as $res) {
332 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=keyword_s:' . urlencode('"' . $res[0] . '"') . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
333 }
334 $content .= '</div>';
335 $content .= '</ul>';
336 $content .= '</div>';
337 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-key" onclick="visibilitekey(\'wphal-keys\',\'keysuite\', \'trikeywords\'); return false;" >' . __('Liste complète', 'wp-hal');
338 $content .= '</button>';
339 }
340 $content .= '</div>
341 <div class="display" id="wphal-auteurs" style="display: none;">
342 <h3 class="wphal-titre">' . __('Auteurs', 'wp-hal') . '</h3>';
343 if (!is_null($json->facet_counts->facet_fields->authIdLastNameFirstName_fs) && !empty($json->facet_counts->facet_fields->authIdLastNameFirstName_fs)) {
344 $content .= '<span id="triauteurs">';
345 $content .= '<button type="button" class="trial" href="" id="triaut" onclick="toggleSort(this, true, \'wphal-aut\', \'auteursuite\', \'triaut\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
346 $content .= '<button type="button" class="trioc" href="" id="trinbaut" onclick="toggleSort(this, false, \'wphal-aut\', \'auteursuite\', \'trinbaut\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
347 $content .= '</span>';
348 $content .= '<ul class="wphal-auteurs" style="list-style-type: none;">';
349 $content .= '<div id="wphal-aut">';
350 $r = 0;
351 foreach ($json->facet_counts->facet_fields->authIdLastNameFirstName_fs as $res) {
352 $r = $r + 1;
353 if ($r > 10) {
354 break;
355 }
356 $name = explode(delimiter, $res[0]);
357 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><img alt="user" src=" ' . plugin_dir_url(__FILE__) . '/img/user.svg" style="width:16px; margin-left:2px; margin-right:2px;"/><a href="' . halv3 . '?q=authId_i:' . $name[0] . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
358 }
359 $i = 1;
360 $content .= '<div id="auteursuite" style="display:none;">';
361 foreach ($json->facet_counts->facet_fields->authIdLastNameFirstName_fs as $res) {
362 if ($r < 10) {
363 break;
364 }
365 if ($i < $r) {
366 $i = $i + 1;
367 } else {
368 $name = explode(delimiter, $res[0]);
369 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><img alt="user" src=" ' . plugin_dir_url(__FILE__) . '/img/user.svg" style="width:16px; margin-left:2px; margin-right:2px;"/><a href="' . halv3 . '?q=authId_i:' . $name[0] . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
370 }
371 }
372 $content .= '</div>';
373 $content .= '</div>';
374 $content .= '</ul>';
375 if ($r > 10) {
376 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-auteur" onclick="visibilite(\'auteursuite\'); return false;" >' . __('Liste complète', 'wp-hal');
377 $content .= '</button>';
378 }
379 }
380 $content .= '</div>
381 <div class="display" id="wphal-revues" style="display: none;">
382 <h3 class="wphal-titre">' . __('Revues', 'wp-hal') . '</h3>';
383 if (!is_null($json->facet_counts->facet_fields->journalIdTitle_fs) && !empty($json->facet_counts->facet_fields->journalIdTitle_fs)) {
384 $content .= '<span id="trirevues">';
385 $content .= '<button type="button" class="trial" href="" id="trirev" onclick="toggleSort(this, true, \'wphal-rev\', \'revuesuite\', \'trirev\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
386 $content .= '<button type="button" class="trioc" href="" id="trinbrev" onclick="toggleSort(this, false, \'wphal-rev\', \'revuesuite\', \'trinbrev\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
387 $content .= '</span>';
388 $content .= '<ul class="wphal-revues">';
389 $content .= '<div id="wphal-rev">';
390 $r = 0;
391 foreach ($json->facet_counts->facet_fields->journalIdTitle_fs as $res) {
392 $r = $r + 1;
393 if ($r > 10) {
394 break;
395 }
396 $name = explode(delimiter, $res[0]);
397 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=journalId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
398 }
399 $i = 1;
400 $content .= '<div id="revuesuite" style="display:none;">';
401 foreach ($json->facet_counts->facet_fields->journalIdTitle_fs as $res) {
402 if ($r < 10) {
403 break;
404 }
405 if ($i < $r) {
406 $i = $i + 1;
407 } else {
408 $name = explode(delimiter, $res[0]);
409 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=journalId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
410 }
411 }
412 $content .= '</div>';
413 $content .= '</div>';
414 $content .= '</ul>';
415 if ($r > 10) {
416 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-revue" onclick="visibiliterevues(\'revuesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
417 $content .= '</button>';
418 }
419 }
420 $content .= '</div>
421 <div class="display" id="wphal-annees" style="display: none;">
422 <h3 class="wphal-titre">' . __('Année de production', 'wp-hal') . '</h3>';
423 if (!is_null($json->facet_counts->facet_fields->producedDateY_i) && !empty($json->facet_counts->facet_fields->producedDateY_i)) {
424 $content .= '<span id="triannees">';
425 $content .= '<button type="button" class="trial" href="" id="trian" onclick="toggleSort(this, true, \'wphal-an\', \'anneesuite\', \'trian\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
426 $content .= '<button type="button" class="trioc" href="" id="trinban" onclick="toggleSort(this, false, \'wphal-an\', \'anneesuite\', \'trinban\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
427 $content .= '</span>';
428 $content .= '<ul class="wphal-annees">';
429 $content .= '<div id="wphal-an">';
430
431 rsort($json->facet_counts->facet_fields->producedDateY_i);
432 $r = 0;
433 foreach ($json->facet_counts->facet_fields->producedDateY_i as $res) {
434 $r = $r + 1;
435 if ($r > 10) {
436 break;
437 }
438 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=producedDateY_i:' . urlencode($res[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
439 }
440 $i = 1;
441 $content .= '<div id="anneesuite" style="display:none;">';
442 foreach ($json->facet_counts->facet_fields->producedDateY_i as $res) {
443 if ($r < 10) {
444 break;
445 }
446 if ($i < $r) {
447 $i = $i + 1;
448 } else {
449 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=producedDateY_i:' . urlencode($res[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $res[0] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
450 }
451 }
452 $content .= '</div>';
453 $content .= '</div>';
454 $content .= '</ul>';
455 if ($r > 10) {
456 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-annee" onclick="visibiliteannee(\'anneesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
457 $content .= '</button>';
458 }
459 }
460 $content .= '</div>
461 <div class="display" id="wphal-insts" style="display: none;">
462 <h3 class="wphal-titre">' . __('Institutions', 'wp-hal') . '</h3>';
463 if (!is_null($json->facet_counts->facet_fields->instStructIdName_fs) && !empty($json->facet_counts->facet_fields->instStructIdName_fs)) {
464 $content .= '<span id="triinsts">';
465 $content .= '<button type="button" class="trial" href="" id="triinst" onclick="toggleSort(this, true, \'wphal-institu\', \'instsuite\', \'triinst\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
466 $content .= '<button type="button" class="trioc" href="" id="trinbinst" onclick="toggleSort(this, false, \'wphal-institu\', \'instsuite\', \'trinbinst\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
467 $content .= '</span>';
468 $content .= '<ul class="wphal-insts">';
469 $content .= '<div id="wphal-institu">';
470 $r = 0;
471 foreach ($json->facet_counts->facet_fields->instStructIdName_fs as $res) {
472 $r = $r + 1;
473 if ($r > 10) {
474 break;
475 }
476 $name = explode(delimiter, $res[0]);
477 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=instStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
478 }
479 $i = 1;
480 $content .= '<div id="instsuite" style="display:none;">';
481 foreach ($json->facet_counts->facet_fields->instStructIdName_fs as $res) {
482 if ($r < 10) {
483 break;
484 }
485 if ($i < $r) {
486 $i = $i + 1;
487 } else {
488 $name = explode(delimiter, $res[0]);
489 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=instStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
490 }
491 }
492 $content .= '</div>';
493 $content .= '</div>';
494 $content .= '</ul>';
495 if ($r > 10) {
496 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-inst" onclick="visibiliteinst(\'instsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
497 $content .= '</button>';
498 }
499 }
500 $content .= '</div>
501 <div class="display" id="wphal-labs" style="display: none;">
502 <h3 class="wphal-titre">' . __('Laboratoires', 'wp-hal') . '</h3>';
503 if (!is_null($json->facet_counts->facet_fields->labStructIdName_fs) && !empty($json->facet_counts->facet_fields->labStructIdName_fs)) {
504 $content .= '<span id="trilabs">';
505 $content .= '<button type="button" class="trial" href="" id="trilab" onclick="toggleSort(this, true, \'wphal-labo\', \'labsuite\', \'trilab\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
506 $content .= '<button type="button" class="trioc" href="" id="trinblab" onclick="toggleSort(this, false, \'wphal-labo\', \'labsuite\', \'trinblab\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
507 $content .= '</span>';
508 $content .= '<ul class="wphal-labs">';
509 $content .= '<div id="wphal-labo">';
510
511 $r = 0;
512 foreach ($json->facet_counts->facet_fields->labStructIdName_fs as $res) {
513 $r = $r + 1;
514 if ($r > 10) {
515 break;
516 }
517 $name = explode(delimiter, $res[0]);
518 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=labStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
519 }
520 $i = 1;
521 $content .= '<div id="labsuite" style="display:none;">';
522 foreach ($json->facet_counts->facet_fields->labStructIdName_fs as $res) {
523 if ($r < 10) {
524 break;
525 }
526 if ($i < $r) {
527 $i = $i + 1;
528 } else {
529 $name = explode(delimiter, $res[0]);
530 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=labStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
531 }
532 }
533 $content .= '</div>';
534 $content .= '</div>';
535 $content .= '</ul>';
536 if ($r > 10) {
537 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-lab" onclick="visibilitelab(\'labsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
538 $content .= '</button>';
539 }
540 }
541 $content .= '</div>
542 <div class="display" id="wphal-depts" style="display: none;">
543 <h3 class="wphal-titre">' . __('Départements', 'wp-hal') . '</h3>';
544 if (!is_null($json->facet_counts->facet_fields->deptStructIdName_fs) && !empty($json->facet_counts->facet_fields->deptStructIdName_fs)) {
545 $content .= '<span id="tridept">';
546 $content .= '<button type="button" class="trial" href="" id="tridept" onclick="toggleSort(this, true, \'wphal-dpt\', \'deptsuite\', \'tridept\'); return false;" style="font-size:16px; text-decoration: none;" >Tri Alphabétique</button>';
547 $content .= '<button type="button" class="trioc" href="" id="trinbdept" onclick="toggleSort(this, false, \'wphal-dpt\', \'deptsuite\', \'trinbdept\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
548 $content .= '</span>';
549 $content .= '<ul class="wphal-depts">';
550 $content .= '<div id="wphal-dpt">';
551 $r = 0;
552 foreach ($json->facet_counts->facet_fields->deptStructIdName_fs as $res) {
553 $r = $r + 1;
554 if ($r > 10) {
555 break;
556 }
557 $name = explode(delimiter, $res[0]);
558 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=deptStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
559 }
560 $i = 1;
561 $content .= '<div id="deptsuite" style="display:none;">';
562 foreach ($json->facet_counts->facet_fields->deptStructIdName_fs as $res) {
563 if ($r < 10) {
564 break;
565 }
566 if ($i < $r) {
567 $i = $i + 1;
568 } else {
569 $name = explode(delimiter, $res[0]);
570 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=deptStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
571 }
572 }
573 $content .= '</div>';
574 $content .= '</div>';
575 $content .= '</ul>';
576 if ($r > 10) {
577 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-dept" onclick="visibilitedept(\'deptsuite\'); return false;" >' . __('Liste complète', 'wp-hal');
578 $content .= '</button>';
579 }
580 }
581 $content .= '</div>
582 <div class="display" id="wphal-equipes" style="display: none;">
583 <h3 class="wphal-titre">' . __('Équipes de recherche', 'wp-hal') . '</h3>';
584 if (!is_null($json->facet_counts->facet_fields->rteamStructIdName_fs) && !empty($json->facet_counts->facet_fields->rteamStructIdName_fs)) {
585 $content .= '<span id="triequipe">';
586 $content .= '<button type="button" class="trial" href="" id="triequipe" onclick="toggleSort(this, true, \'wphal-rteam\', \'equipesuite\', \'triequipe\'); return false;" style="font-size:16px;text-decoration: none;" >Tri Alphabétique</button>';
587 $content .= '<button type="button" class="trioc" href="" id="trinbequipe" onclick="toggleSort(this, false, \'wphal-rteam\', \'equipesuite\', \'trinbequipe\'); return false;" style="font-size:16px; text-decoration: none;">Tri Occurrence</button>';
588 $content .= '</span>';
589 $content .= '<ul class="wphal-equipes">';
590 $content .= '<div id="wphal-rteam">';
591
592 $r = 0;
593 foreach ($json->facet_counts->facet_fields->rteamStructIdName_fs as $res) {
594 $r = $r + 1;
595 if ($r > 10) {
596 break;
597 }
598 $name = explode(delimiter, $res[0]);
599 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=rteamStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
600 }
601 $i = 1;
602 $content .= '<div id="equipesuite" style="display:none;">';
603 foreach ($json->facet_counts->facet_fields->rteamStructIdName_fs as $res) {
604 if ($r < 10) {
605 break;
606 }
607 if ($i < $r) {
608 $i = $i + 1;
609 } else {
610 $content .= '<li class="metadata" data-percentage="' . $res[1] . '"><a href="' . halv3 . '?q=rteamStructId_i:' . urlencode($name[0]) . "+AND+" . $type . ':(' . $id . ')" target="_blank">' . $name[1] . '</a><span class="wphal-nbmetadata">' . $res[1] . '</span></li>';
611 }
612 }
613 $content .= '</div>';
614 $content .= '</div>';
615 $content .= '</ul>';
616 if ($r > 10) {
617 $content .= '<button type="button" href="" style="text-decoration: none;" id="wphal-equipe" onclick="visibiliteequipe(\'equipesuite\'); return false;" >' . __('Liste complète', 'wp-hal');
618 $content .= '</button>';
619 }
620 }
621 $content .= '</div>
622 <div class="display" id="publications">';
623 if (get_option('option_groupe') == 'grouper') {
624 $doctype = file_get_contents(plugin_dir_path( __FILE__ ).'json'. DIRECTORY_SEPARATOR .'doctype_'.lang.'.json');
625 $jsontype = json_decode($doctype);
626
627 //LISTE DES DOCUMENTS PAR GROUPE
628
629 $content .= '<div class="counter-doc"><span class="wphal-nbtot">' . $json->grouped->docType_s->matches . ' </span>';
630 $content .= __('documents', 'wp-hal'). '</div><br>';
631 for ($i = 0; $jsontype->response->result->doc[$i] != null; $i++) {
632 for ($d = 0; $json->grouped->docType_s->groups[$d] != null; $d++) {
633 if ($json->grouped->docType_s->groups[$d]->groupValue == $jsontype->response->result->doc[$i]->str[0]){
634 $titre = $jsontype->response->result->doc[$i]->str[1];
635 $content .= '<div class="grp-div"><h3 class="wphal-titre-groupe">' . $titre . '<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>';
636 $content .= '<div class="grp-content">';
637 $content .= '<ul>';
638 foreach ($json->grouped->docType_s->groups[$d]->doclist->docs as $result) {
639 $content .= '<li>' . $result->citationFull_s . '</li>';
640 }
641 $content .= '</ul></div>';
642 $content .= '</div><br>';
643 break;
644 }
645 }
646 }
647 } elseif (get_option('option_groupe') == 'paginer') {
648
649 //LISTE DES DOCUMENTS AVEC PAGINATION
650 $content .= '<div class="counter-doc"><span class="wphal-nbtot">' . $json->response->numFound . ' </span>';
651 $content .= __('documents', 'wp-hal'). '</div><br>';
652
653 //--MODULE PAGINATION--//
654 $messagesParPage = 10;
655
656 $total = $json->response->numFound;
657
658 $nombreDePages = ceil($total / $messagesParPage);
659
660 if (isset($paged)) {
661 $pageActuelle = intval($paged);
662
663 if ($pageActuelle > $nombreDePages) {
664 $pageActuelle = $nombreDePages;
665 }
666 } else {
667 $pageActuelle = 1;
668 }
669 $premiereEntree = ($pageActuelle - 1) * $messagesParPage;
670
671 $url = api . '?q=*:*&fq=' . $type . ':(' . urlencode($id) . ')&fl=docid,citationFull_s,keyword_s,bookTitle_s,producedDate_s,authFullName_s&start=' . $premiereEntree . '&rows=' . $messagesParPage . '&sort=' . producedDateY . '&wt=json';
672 $ch = curl_init($url);
673 // Options
674 $options = array(
675 CURLOPT_RETURNTRANSFER => true,
676 CURLOPT_HTTPHEADER => array('Content-type: application/json'),
677 CURLOPT_TIMEOUT => 10,
678 CURLOPT_USERAGENT => "HAL Plugin Wordpress " . version
679 );
680
681 // Bind des options et de l'objet cURL que l'on va utiliser
682 curl_setopt_array($ch, $options);
683 // Récupération du résultat JSON
684 $json = json_decode(curl_exec($ch));
685 curl_close($ch);
686
687 //--MODULE PAGINATION--//
688
689 $content .= '<ul>';
690 for ($i = 0; $json->response->docs[$i] != ''; $i++) {
691 $content .= '<li>' . $json->response->docs[$i]->citationFull_s . '</li>';
692 }
693 $content .= '</ul>';
694
695 //--AFFICHAGE PAGINATION--//
696 $precedents = $pageActuelle - 2;
697 $suivants = $pageActuelle + 2;
698 $precedent = $pageActuelle - 1;
699 $suivant = $pageActuelle + 1;
700 $penultimate = $nombreDePages - 1;
701
702 $content .= '<ul class="wphal-pagination">';
703 //--BOUTON PRECEDENT--//
704 if ($pageActuelle == 1) {
705 $content .= '<li class="disabled"><a href="#">&laquo;</a></li>';
706 } else {
707 $content .= '<li><a href="?paged=' . $precedent . '">&laquo;</a></li>';
708 }
709 if ($nombreDePages <= 6) {// Cas 1 : 6 pages ou moins - Pas de troncature
710 for ($i = 1; $i <= $nombreDePages; $i++) {
711 if ($i == $pageActuelle) {
712 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
713 } else {
714 $content .= ' <li><a href="?paged=' . $i . '">' . $i . '</a></li> ';
715 }
716 }
717 } elseif ($nombreDePages >= 7) {// Cas 2 : 7 pages ou plus - Troncature
718 if ($pageActuelle <= 3) {// Lorsque l'on est sur les trois premières pages
719 for ($i = 1; $i <= 4; $i++) {
720 if ($i == $pageActuelle) {
721 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
722 } else {
723 $content .= '<li><a href="?paged=' . $i . '">' . $i . '</a></li>';
724 }
725 }
726 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
727 $content .= '<li><a href="?paged=' . $penultimate . '">' . $penultimate . '</a></li>';
728 $content .= '<li><a href="?paged=' . $nombreDePages . '">' . $nombreDePages . '</a></li>';
729 }
730 if ($pageActuelle >= 4 && $pageActuelle <= $penultimate - 2) {//Lorsque l'on arrive sur la quatrième page
731 $content .= '<li><a href="?paged=">1</a></li>';
732 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
733 $content .= '<li><a href="?paged=' . $precedents . '">' . $precedents . '</a></li>';
734 $content .= '<li><a href="?paged=' . $precedent . '">' . $precedent . '</a></li>';
735 $content .= '<li class="active"><a href="#">' . $pageActuelle . '</a></li>';
736 $content .= '<li><a href="?paged=' . $suivant . '">' . $suivant . '</a></li>';
737 $content .= '<li><a href="?paged=' . $suivants . '">' . $suivants . '</a></li>';
738 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
739 $content .= '<li><a href="?paged=' . $nombreDePages . '">' . $nombreDePages . '</a></li>';
740 }
741 if ($pageActuelle >= $penultimate - 1) {
742 $content .= '<li><a href="?paged=1">1</a></li>';
743 $content .= '<li><a href="?paged=2">2</a></li>';
744 $content .= '<li class="disabled"><a href="#">&hellip;</a></li>';
745 for ($i = $penultimate - 2; $i <= $nombreDePages; $i++) {
746 if ($i == $pageActuelle) {
747 $content .= '<li class="active"><a href="#">' . $i . '</a></li>';
748 } else {
749 $content .= '<li><a href="?paged=' . $i . '">' . $i . '</a></li>';
750 }
751 }
752 }
753 }
754 //--BOUTON SUIVANT--//
755 if ($pageActuelle < $nombreDePages) {
756 $content .= '<li><a href="?paged=' . $suivant . '">&raquo;</a></li>';
757 } else {
758 $content .= '<li class="disabled"><a href="#">&raquo;</a></li>';
759 }
760 $content .= '</ul>';
761 //--AFFICHAGE PAGINATION--//
762 }
763 $content .= '</div>
764 </div>
765 </div>';
766 }
767 $content .= '<div class="wphal-footer">';
768 $content .= '<p style="color:#B3B2B0">' . __("Documents récupérés de l'archive ouverte HAL", 'wp-hal') . '&nbsp;<a href="' . site . '" target="_blank"><img alt="logo" src=" ' . plugin_dir_url(__FILE__) . 'img/logo-hal.svg" style="width:32px;"></a></p>';
769 $content .= '</div>';
770
771 //--AFFICHAGE GRAPHIQUE DOMAINE--//
772 if (!is_null($facetdomain)) {
773 foreach ($facetdomain as $res) {
774 $name = explode(delimiter, $res[0])[1];
775 $value = $res[1];
776 $array[] = array($name, $value);
777 }
778 }
779 wp_localize_script('wp-hal-script4', 'WPWallSettings', json_encode($array));
780 $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'));
781 wp_localize_script('wp-hal-script4', 'translate', $translation);
782 }
783 return $content;
784 }
785
786 function verifSolr($values){
787 $verifsolr = explode(',',$values);
788 $numverif = count($verifsolr);
789 $solrsql = '';
790 if ($numverif<1024){
791 $solrsql = str_replace(',',' OR ',$values);
792 } else {
793 $listsolrsql = explode(',',$values);
794 for($i=0;$i<1024;$i++){
795 if ($i == 0){
796 $solrsql = $listsolrsql[$i];
797 } else {
798 $solrsql .= ' OR ';
799 $solrsql .= $listsolrsql[$i];
800 }
801 }
802 }
803
804 return $solrsql;
805 }
806
807 function wp_adding_style() {
808 wp_register_style('wp-hal-style1', plugins_url('/css/style.css', __FILE__));
809 wp_register_style('wp-hal-style2', plugins_url('/css/jquery.jqplot.css', __FILE__));
810
811 wp_enqueue_style('wp-hal-style1');
812 }
813
814 function wp_adding_script() {
815 wp_register_script('wp-hal-script1',plugins_url('/js/jquery.jqplot.js', __FILE__));
816 wp_register_script('wp-hal-script2',plugins_url('/js/jqplot.highlighter.js', __FILE__));
817 wp_register_script('wp-hal-script3',plugins_url('/js/jqplot.pieRenderer.js', __FILE__));
818 wp_register_script('wp-hal-script4',plugins_url('/js/cv-hal.js', __FILE__));
819
820
821 wp_enqueue_script("jquery");
822 wp_enqueue_script('wp-hal-script4', false, array(), false, true);
823 }
824
825 /**
826 * Récupère les fichiers css et js
827 */
828 if ( function_exists('curl_init' ) ) {
829 add_action('wp_enqueue_scripts', 'wp_adding_style');
830 add_action('wp_enqueue_scripts', 'wp_adding_script');
831 }
832
833 /**
834 * Charge lorsque le plugin est désactivé
835 */
836 register_deactivation_hook( __FILE__, 'reset_option' );
837
838 /**
839 * Ajoute le widget wphal à l'initialisation des widgets
840 */
841 add_action('widgets_init','wphal_init');
842
843 /**
844 * Ajoute le menu à l'initialisation du menu admin
845 */
846 add_action( 'admin_menu', 'wphal_menu' );
847
848 /**
849 * Fonction de création du menu
850 */
851 function wphal_menu() {
852 add_menu_page( 'Options', 'Hal', 'manage_options', 'wp-hal.php', 'wphal_option' , '', 21);
853
854 add_action( 'admin_init', 'register_settings' );
855 }
856
857
858 /**
859 * Initialise le nouveau widget
860 */
861 function wphal_init(){
862 register_widget("wphal_widget");
863 }
864
865 /***********************************************************************************************************************
866 * PLUGIN WIDGET
867 **********************************************************************************************************************/
868
869 /**
870 * Classe du widget wphal
871 */
872
873 class wphal_widget extends WP_widget{
874
875
876 /**
877 * Défini les propriétés du widget
878 */
879 function __construct(){
880 $options = array(
881 "classname" => "wphal-publications",
882 "description" => __("Afficher les dernières publications d'un auteur ou d'une structure.", 'wp-hal')
883 );
884
885 parent::__construct(
886 'hal-publications',
887 __("Publications récentes", 'wp-hal'),
888 $options
889 );
890 }
891
892 /**
893 * Crée le widget
894 * @param $args
895 * @param $instance
896 */
897 function widget($args, $instance){
898 if ( !function_exists('curl_init' ) ) {
899 $content = 'Please check the <a href="https://wordpress.org/plugins/hal/faq/" target="_blank" id="FAQ">FAQ</a> with the code : CURL';
900 extract($args);
901 echo $before_widget;
902 echo $before_title . $instance['titre'] . $after_title;
903 echo $content;
904 echo $after_widget;
905 } else {
906 $instance['idhal'] = verifSolr($instance['idhal']);
907
908 $url = api . '?q=*:*&fq=' . $instance['select'] . ':' . urlencode($instance['idhal']) . '&fl=uri_s,'. $instance['typetext'] .'&sort=' . producedDateY . '&rows=' . $instance['nbdoc'] . '&wt=json';
909
910 $ch = curl_init($url);
911 // Options
912 $options = array(
913 CURLOPT_RETURNTRANSFER => true,
914 CURLOPT_HTTPHEADER => array('Content-type: application/json'),
915 CURLOPT_TIMEOUT => 10,
916 CURLOPT_USERAGENT => "HAL Plugin Wordpress " . version
917 );
918
919 // Bind des options et de l'objet cURL que l'on va utiliser
920 curl_setopt_array($ch, $options);
921 // Récupération du résultat JSON
922 $json = json_decode(curl_exec($ch));
923 curl_close($ch);
924
925 $content = '<ul class="widhal-ul">';
926 for ($i = 0; $i < $instance['nbdoc']; $i++) {
927 if ($instance['typetext']=='citationRef_s') {
928 $typetext = $json->response->docs[$i]->citationRef_s;
929 } else {
930 $typetext = $json->response->docs[$i]->title_s[0];
931 }
932 $content .= '<li class="widhal-li"><a href="' . $json->response->docs[$i]->uri_s . '" target="_blank">' . $typetext . '</a></li>';
933 }
934 $content .= '</ul>';
935
936 extract($args);
937 echo $before_widget;
938 echo $before_title . $instance['titre'] . $after_title;
939 echo $content;
940 echo $after_widget;
941 }
942 }
943
944 /**
945 * Sauvegarde des données
946 * @param $new
947 * @param $old
948 */
949 function update($new, $old){
950 return $new;
951 }
952
953 /**
954 * Formulaire du widget
955 * @param $instance
956 */
957 function form($instance){
958
959 $defaut = array(
960 'titre' => __("Publications récentes", 'wp-hal'),
961 'select' => "authIdHal_s",
962 'typetext' => "title_s",
963 'nbdoc' => 5
964 );
965 $instance = wp_parse_args($instance,$defaut);
966 ?>
967 <p>
968 <label for="<?php echo $this->get_field_id("titre");?>"><?php echo __('Titre','wp-hal') .' :'?></label>
969 <input value="<?php echo $instance['titre'];?>" name="<?php echo $this->get_field_name("titre");?>" id="<?php echo $this->get_field_id("titre");?>" class="widefat" type="text"/>
970 </p>
971 <p>
972 <label for="<?php echo $this->get_field_id("nbdoc");?>"><?php echo __("Nombre de documents affichés",'wp-hal') .' :'?></label>
973 <input class="tiny-text" id="<?php echo $this->get_field_id("nbdoc");?>" name="<?php echo $this->get_field_name("nbdoc");?>" type="number" step="1" min="1" max="10" value="<?php echo $instance['nbdoc'];?>" size="3">
974 </p>
975 <p>
976 <label for="<?php echo $this->get_field_id("typetext");?>"><?php echo __("Type d'affichage",'wp-hal') .' :'?></label>
977 <select id="<?php echo $this->get_field_id("typetext");?>" name="<?php echo $this->get_field_name("typetext");?>">
978 <option id="<?php echo $this->get_field_id("Title");?>" value="title_s" <?php echo ($instance["typetext"] == "title_s")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Title");?>"><?php echo __("Titre", 'wp-hal')?></label></option>
979 <option id="<?php echo $this->get_field_id("Citation");?>" value="citationRef_s" <?php echo ($instance["typetext"] == "citationRef_s")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Citation");?>"><?php echo __("Citation", 'wp-hal')?></label></option>
980 </select>
981 </p>
982 <p>
983 <label for="<?php echo $this->get_field_id("select");?>"><?php echo __("Type d'Id",'wp-hal') .' :'?></label>
984 <select id="<?php echo $this->get_field_id("select");?>" name="<?php echo $this->get_field_name("select");?>">
985 <option id="<?php echo $this->get_field_id("Idhal");?>" value="authIdHal_s" <?php echo ($instance["select"] == "authIdHal_s")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Idhal");?>">Id Hal</label><span style="font-style: italic;"> <?php echo __('(Exemple : laurent-capelli)','wp-hal');?></span></option>
986 <option id="<?php echo $this->get_field_id("StructId");?>" value="structId_i" <?php echo ($instance["select"] == "structId_i")?'selected':''; ?>><label for="<?php echo $this->get_field_id("StructId");?>">Struct Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
987 <option id="<?php echo $this->get_field_id("AuthorStructId");?>" value="authStructId_i" <?php echo ($instance["select"] == "authStructId_i")?'selected':''; ?>><label for="<?php echo $this->get_field_id("AuthorStructId");?>">AuthorStruct Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
988 <option id="<?php echo $this->get_field_id("AuthorId");?>" value="authId_i" <?php echo ($instance["select"] == "authId_i")?'selected':''; ?>><label for="<?php echo $this->get_field_id("AuthorId");?>">Author Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
989 <option id="<?php echo $this->get_field_id("Anrproject");?>" value="anrProjectId_i" <?php echo ($instance["select"] == "anrProjectId_i")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Anrproject");?>">anrProject Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 1646)','wp-hal');?></span></option>
990 <option id="<?php echo $this->get_field_id("Europeanproject");?>" value="europeanProjectId_i" <?php echo ($instance["select"] == "europeanProjectId_i")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Europeanproject");?>">europeanProject Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 17877)','wp-hal');?></span></option>
991 <option id="<?php echo $this->get_field_id("Collection");?>" value="collCode_s" <?php echo ($instance["select"] == "collCode_s")?'selected':''; ?>><label for="<?php echo $this->get_field_id("Collection");?>">Collection</label><span style="font-style: italic;"> <?php echo __('(Exemple : TICE2014)','wp-hal');?></span></option>
992 </select>
993 </p>
994 <p>
995 <label for="<?php echo $this->get_field_id("idhal");?>"><?php echo __("Id",'wp-hal') .' :'?></label>
996 <input value="<?php echo $instance['idhal'];?>" name="<?php echo $this->get_field_name("idhal");?>" id="<?php echo $this->get_field_id("idhal");?>" type="text"/>
997 </p>
998 <?php
999 }
1000 }
1001
1002
1003 function register_settings() {
1004 register_setting( 'wphal_option', 'option_choix' );
1005 register_setting( 'wphal_option', 'option_type' );
1006 register_setting( 'wphal_option', 'option_groupe' );
1007 register_setting( 'wphal_option', 'option_idhal' );
1008 register_setting( 'wphal_option', 'option_lang' );
1009 register_setting( 'wphal_option', 'option_infocontact' );
1010 register_setting( 'wphal_option', 'option_email' );
1011 register_setting( 'wphal_option', 'option_tel' );
1012 register_setting( 'wphal_option', 'option_social0' );
1013 register_setting( 'wphal_option', 'option_social1' );
1014 register_setting( 'wphal_option', 'option_social2' );
1015 register_setting( 'wphal_option', 'option_social3' );
1016 }
1017
1018 /**
1019 * Crée le menu d'option du plugin
1020 */
1021 function wphal_option() {
1022
1023 if (get_option('option_type')==''){
1024 update_option('option_type', 'authIdHal_s');
1025 }
1026 if (get_option('option_groupe')==''){
1027 update_option('option_groupe', 'paginer');
1028 }
1029 ?>
1030 <div class="wrap">
1031 <h2><?php echo __('Plugin HAL','wp-hal');?></h2>
1032 <form method="post" enctype="multipart/form-data" action="options.php">
1033 <div id="poststuff">
1034 <div id="post-body" class="metabox-holder columns-2">
1035 <div id="post-body-content">
1036 <?php settings_fields( 'wphal_option' ); ?>
1037 <?php do_settings_sections( 'wphal_option' ); ?>
1038 <table class="form-table">
1039 <tr valign="top">
1040 <th scope="row" style="font-size: 18px;"><?php echo __('Paramètre de la page :','wp-hal');?></th>
1041 </tr>
1042 <tr valign="top">
1043 <th scope="row"><?php echo __('Type d\'Id','wp-hal');?></th>
1044 <td><select name="option_type">
1045 <option id="Idhal" value="authIdHal_s" <?php echo (get_option('option_type') == "authIdHal_s")?'selected':''; ?>><label for="Idhal">Id Hal</label><span style="font-style: italic;"> <?php echo __('(Exemple : laurent-capelli)','wp-hal');?></span></option>
1046 <option id="StructId" value="structId_i" <?php echo (get_option('option_type') == "structId_i")?'selected':''; ?>><label for="StructId">Struct Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
1047 <option id="AuthorStructId" value="authStructId_i" <?php echo (get_option('option_type') == "authStructId_i")?'selected':''; ?>><label for="AuthorStructId">AuthorStruct Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
1048 <option id="AuthorId" value="authId_i" <?php echo (get_option('option_type') == "authId_i")?'selected':''; ?>><label for="AuthorId">Author Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 413106)','wp-hal');?></span></option>
1049 <option id="Anrproject" value="anrProjectId_i" <?php echo (get_option('option_type') == "anrProjectId_i")?'selected':''; ?>><label for="Anrproject">anrProject Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 1646)','wp-hal');?></span></option>
1050 <option id="Europeanproject" value="europeanProjectId_i" <?php echo (get_option('option_type') == "europeanProjectId_i")?'selected':''; ?>><label for="Europeanproject">europeanProject Id</label><span style="font-style: italic;"> <?php echo __('(Exemple : 17877)','wp-hal');?></span></option>
1051 <option id="Collection" value="collCode_s" <?php echo (get_option('option_type') == "collCode_s")?'selected':''; ?>><label for="Collection">Collection</label><span style="font-style: italic;"> <?php echo __('(Exemple : TICE2014)','wp-hal');?></span></option>
1052 </select>
1053 <input type="text" name="option_idhal" id="option_idhal" value="<?php echo get_option('option_idhal'); ?>"/>
1054 </td>
1055 </tr>
1056 <tr valign="top">
1057 <th scope="row"><?php echo __('Affichage des documents','wp-hal');?></th>
1058 <td><input type="radio" name="option_groupe" id="paginer" value="paginer" <?php echo (get_option('option_groupe') == "paginer")?'checked':''; ?>><label for="paginer"><?php echo __('Documents avec pagination','wp-hal');?></label><br>
1059 <input type="radio" name="option_groupe" id="grouper" value="grouper" <?php echo (get_option('option_groupe') == "grouper")?'checked':''; ?>><label for="grouper"><?php echo __('Documents groupés par type','wp-hal');?></label><br>
1060 </td>
1061 </tr>
1062 <tr valign="top">
1063 <th scope="row"><?php echo __('Choix des éléments menu','wp-hal');?></th>
1064 <td><input type="checkbox" name="option_choix[1]" id="Contact" value="contact" <?php echo (get_option('option_choix')[1] == "contact")?'checked':''; ?>><label for="Contact"><?php echo __('Contact','wp-hal');?></label><br/>
1065 <input type="checkbox" name="option_choix[2]" id="Disciplines" value="disciplines" <?php echo (get_option('option_choix')[2] == "disciplines")?'checked':''; ?>><label for="Disciplines"><?php echo __('Disciplines','wp-hal');?></label><br/>
1066 <input type="checkbox" name="option_choix[3]" id="Mots-clefs" value="mots-clefs" <?php echo (get_option('option_choix')[3] == "mots-clefs")?'checked':''; ?>><label for="Mots-clefs"><?php echo __('Mots-clefs','wp-hal');?></label><br/>
1067 <input type="checkbox" name="option_choix[4]" id="Auteurs" value="auteurs" <?php echo (get_option('option_choix')[4] == "auteurs")?'checked':''; ?>><label for="Auteurs"><?php echo __('Auteurs','wp-hal');?></label><br/>
1068 <input type="checkbox" name="option_choix[5]" id="Revues" value="revues" <?php echo (get_option('option_choix')[5] == "revues")?'checked':''; ?>><label for="Revues"><?php echo __('Revues','wp-hal');?></label><br/>
1069 <input type="checkbox" name="option_choix[6]" id="Annee" value="annee" <?php echo (get_option('option_choix')[6] == "annee")?'checked':''; ?>><label for="Annee"><?php echo __('Année de production','wp-hal');?></label><br/>
1070 <input type="checkbox" name="option_choix[7]" id="Institution" value="institution" <?php echo (get_option('option_choix')[7] == "institution")?'checked':''; ?>><label for="Institution"><?php echo __('Institutions','wp-hal');?></label><br/>
1071 <input type="checkbox" name="option_choix[8]" id="Laboratoire" value="laboratoire" <?php echo (get_option('option_choix')[8] == "laboratoire")?'checked':''; ?>><label for="Laboratoire"><?php echo __('Laboratoires','wp-hal');?></label><br/>
1072 <input type="checkbox" name="option_choix[9]" id="Departement" value="departement" <?php echo (get_option('option_choix')[9] == "departement")?'checked':''; ?>><label for="Departement"><?php echo __('Départements','wp-hal');?></label><br/>
1073 <input type="checkbox" name="option_choix[10]" id="Equipe" value="equipe" <?php echo (get_option('option_choix')[10] == "equipe")?'checked':''; ?>><label for="Equipe"><?php echo __('Équipes de recherche','wp-hal');?></label>
1074 </td>
1075 </tr>
1076 <tr valign="top">
1077 <th scope="row" style="font-size: 18px;"><?php echo __('Contact :','wp-hal');?></th>
1078 </tr>
1079 <tr>
1080 <th scope="row"><?php echo __("Afficher les informations d'un chercheur ayant un IdHal ?",'wp-hal');?></th>
1081 <td><input type="radio" name="option_infocontact" id="wphal-yes" value="yes" <?php echo (get_option('option_infocontact') == "yes")?'checked':''; ?>><label for="wphal-yes"><?php echo __("Oui",'wp-hal')?></label><br>
1082 <input type="radio" name="option_infocontact" id="wphal-no" value="no" <?php echo (get_option('option_infocontact') == "no")?'checked':''; ?>><label for="wphal-no"><?php echo __("Non",'wp-hal')?></label><br>
1083 </td>
1084 <tr>
1085 <th scope="row"><?php echo __('Email','wp-hal');?></th>
1086 <td><input type="text" style="width:300px;" placeholder="Exemple : hi@mail.com" name="option_email" id="option_email" value="<?php echo get_option('option_email'); ?>"/><img alt="email" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/mail.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1087 </tr>
1088 <tr>
1089 <th scope="row"><?php echo __('Téléphone','wp-hal');?></th>
1090 <td><input type="text" style="width:300px;" placeholder="Exemple : 06-01-02-03-04" name="option_tel" id="option_tel" value="<?php echo get_option('option_tel');?>"/><img alt="phone" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/phone.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1091 </tr>
1092 <tr>
1093 <th>Facebook (http://www.facebook.com/)</th>
1094 <td><input type="text" style="width:300px;" placeholder="Exemple : fa.book" name="option_social0" id="option_social0" value="<?php echo get_option('option_social0'); ?>"/><img alt="facebook" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/facebook.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1095 </tr>
1096 <tr>
1097 <th>Twitter (http://www.twitter.com/)</th>
1098 <td><input type="text" style="width:300px;" placeholder="Exemple : tweet_heure" name="option_social1" id="option_social1" value="<?php echo get_option('option_social1'); ?>"/><img alt="twitter" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/twitter.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1099 </tr>
1100 <tr>
1101 <th>Google + (https://plus.google.com/u/0/+)</th>
1102 <td><input type="text" style="width:300px;" placeholder="Exemple : goo.plus" name="option_social2" id="option_social2" value="<?php echo get_option('option_social2'); ?>"/><img alt="google" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/google-plus.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1103 </tr>
1104 <tr>
1105 <th>LinkedIn (https://www.linkedin.com/in/)</th>
1106 <td><input type="text" style="width:300px;" placeholder="Exemple : link.dine" name="option_social3" id="option_social3" value="<?php echo get_option('option_social3'); ?>"/><img alt="linkedin" src="<?php echo plugin_dir_url( __FILE__ ) ?>img/linkedin.svg" style="vertical-align:middle; width:32px; margin-left:2px; margin-right:2px;"/></td>
1107 </tr>
1108 </table>
1109 <?php
1110 submit_button(__('Enregistrer','wp-hal'), 'primary large', 'submit', true); ?>
1111 </div>
1112 <div id="postbox-container-1" class="postbox-container">
1113
1114 </div>
1115 </div>
1116 <br class="clear"><br/>
1117 </div>
1118 </form>
1119
1120 </div>
1121
1122 <?php
1123 }
1124
1125
1126 /**
1127 * Reset les données Hal
1128 */
1129 function reset_option() {
1130 delete_option('option_choix');
1131 delete_option('option_type');
1132 delete_option('option_groupe');
1133 delete_option('option_idhal');
1134 delete_option('option_lang');
1135 delete_option('option_infocontact');
1136 delete_option('option_email');
1137 delete_option('option_tel');
1138 delete_option('option_social0');
1139 delete_option('option_social1');
1140 delete_option('option_social2');
1141 delete_option('option_social3');
1142 }
1143 ?>