Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1 from juba/idhal
Browse files Browse the repository at this point in the history
Gestion du référencement des dépôts par un idHal
  • Loading branch information
kent1D committed Jan 6, 2015
2 parents dab39bf + ce096d3 commit 4d8a1d2
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 29 deletions.
72 changes: 45 additions & 27 deletions hal_auteurs_pipelines.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,20 @@ function hal_auteurs_formulaire_verifier($flux){
if($flux['args']['form'] == "editer_auteur"){
if(($hal = _request('hal')) && strlen($hal) > 1){
if(!is_numeric($hal)){
$hals = explode(',',$hal);
foreach($hals as $hal){
if(!is_numeric($hal) || $hal <= 0){
$flux['hal'] = _T('hal_auteurs:erreur_champ_hal');
break;
if (preg_match('/^[0-9]+( *, *[0-9]*)*$/', $hal)==1) {
$hals = explode(',',$hal);
foreach($hals as $hal){
$hal = trim($hal);
if(!is_numeric($hal) || $hal <= 0){
$flux['hal'] = _T('hal_auteurs:erreur_champ_hal_numeric');
}
}
}
else {
if (preg_match("/[,'éèàù]/", $hal)==1) {
$flux['hal'] = _T('hal_auteurs:erreur_champ_hal_idhal');
}
}
}
}
}
Expand All @@ -92,11 +99,12 @@ function hal_auteurs_post_edition($flux){
if($flux['args']['table'] == "spip_auteurs" && isset($flux['data']['hal'])){
if(isset($flux['data']['hal'])){
$hals = array();
if(is_numeric($flux['data']['hal']) && $flux['data']['hal'] > 0)
$hals[] = $flux['data']['hal'];
else
$hals = explode(',',$flux['data']['hal']);

// si hals est sous la forme de plusieurs identifiants numériques
if(preg_match('/^[0-9]+( *, *[0-9]*)*$/', $flux['data']['hal'])==1) {
$hals = explode(',',$flux['data']['hal']);
}
else $hals[] = $flux['data']['hal'];

$hals_auteurs = array();
$hals_test = sql_select('hal.id_hal','spip_hals as hal LEFT JOIN spip_auteurs_liens as lien ON lien.objet="hal" AND lien.id_objet=hal.id_hal','lien.id_auteur='.intval($flux['args']['id_objet']));
while($hal = sql_fetch($hals_test)){
Expand All @@ -105,23 +113,33 @@ function hal_auteurs_post_edition($flux){
include_spip('action/editer_hal');
include_spip('action/editer_liens');
foreach($hals as $hal){
if(is_numeric($hal) && $hal > 0){
$id_hal = sql_fetsel('statut,id_hal','spip_hals','authid = '.intval($hal));
$set=array('authid'=>$hal,'statut'=>'publie');
if(!$id_hal){
$set['titre'] = sql_getfetsel('nom','spip_auteurs','id_auteur='.intval($flux['args']['id_objet']));
$id_hal = hal_inserer();
if(isset($hals_auteurs[$hal['id_hal']]))
unset($hals_auteurs[$hal['id_hal']]);
}
else{
$id_hal = $id_hal['id_hal'];
if(isset($hals_auteurs[$id_hal]))
unset($hals_auteurs[$id_hal]);
}
$err = hal_modifier($id_hal,$set);
objet_associer(array('auteur'=>$flux['args']['id_objet']), array('hal'=>$id_hal));
}
// authid
$hal = trim($hal);
if(is_numeric($hal) && $hal > 0){
$id_hal = sql_fetsel('statut,id_hal','spip_hals','authid = '.intval($hal));
$set=array('authid'=>$hal,'statut'=>'publie');
}
// idhal
else if ($hal != ''){
$id_hal = sql_fetsel('statut,id_hal','spip_hals','idhal = "'.$hal.'"');
$set=array('idhal'=>$hal,'statut'=>'publie');
}
// Dans tous les cas
if ($hal != '') {
if(!$id_hal){
$set['titre'] = sql_getfetsel('nom','spip_auteurs','id_auteur='.intval($flux['args']['id_objet']));
$id_hal = hal_inserer();
if(isset($hal['id_hal']) && isset($hals_auteurs[$hal['id_hal']]))
unset($hals_auteurs[$hal['id_hal']]);
}
else{
$id_hal = $id_hal['id_hal'];
if(isset($hals_auteurs[$id_hal]))
unset($hals_auteurs[$id_hal]);
}
$err = hal_modifier($id_hal,$set);
objet_associer(array('auteur'=>$flux['args']['id_objet']), array('hal'=>$id_hal));
}
}
if(count($hals_auteurs) > 0){
$set = array('statut' => 'poubelle');
Expand Down
5 changes: 3 additions & 2 deletions lang/hal_auteurs_fr.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@

$GLOBALS[$GLOBALS['idx_lang']] = array(
// E
'erreur_champ_hal' => 'Ce champ doit soit être numérique, soit plusieurs valeurs numériques séparées par des virgules',
'explication_hal' => 'L\'identifiant numérique de l\'auteur dans HAL. Plusieurs peuvent être insérés, séparés par des virgules.',
'erreur_champ_hal_numeric' => 'Les identifiants numériques d\'auteur doivent être des nombres positifs.',
'erreur_champ_hal_idhal' => 'L\'idHal d\'un auteur ne peut pas comporter d\'accent, d\'apostrophe ou de virgule.',
'explication_hal' => 'L\'identifiant numérique de l\'auteur dans HAL, ou son idHal. Plusieurs identifiants numériques peuvent être insérés, séparés par des virgules. ',

// L
'label_hal' => 'Identifiant(s) HAL',
Expand Down

0 comments on commit 4d8a1d2

Please sign in to comment.