";
$indexint_replace=str_replace('!!id!!', $this->indexint_id, $indexint_replace);
$indexint_replace=str_replace('!!id_pclass!!', $this->id_pclass, $indexint_replace);
$indexint_replace=str_replace('!!indexint_name!!', htmlentities($this->name,ENT_QUOTES, $charset), $indexint_replace);
$indexint_replace=str_replace('!!liste_remplacantes!!', $liste_remplacantes, $indexint_replace);
print $indexint_replace;
}
// ---------------------------------------------------------------
// delete() : suppression
// ---------------------------------------------------------------
function delete() {
global $dbh;
global $msg;
if(!$this->indexint_id)
// impossible d'accéder à cette indexation
return $msg[indexint_unable];
// récupération du nombre de notices affectées
$requete = "SELECT COUNT(1) FROM notices WHERE ";
$requete .= "indexint=".$this->indexint_id;
$res = mysql_query($requete, $dbh);
$nbr_lignes = mysql_result($res, 0, 0);
if(!$nbr_lignes) {
// indexation non-utilisé dans les notices : Suppression OK
// effacement dans la table des indexations internes
$requete = "DELETE FROM indexint WHERE indexint_id=".$this->indexint_id;
$result = mysql_query($requete, $dbh);
// liens entre autorités
$aut_link= new aut_link(AUT_TABLE_INDEXINT,$this->indexint_id);
$aut_link->delete();
$aut_pperso= new aut_pperso("indexint",$this->indexint_id);
$aut_pperso->delete();
audit::delete_audit(AUDIT_INDEXINT,$this->indexint_id);
return false;
} else {
// Cette indexation est utilisée dans des notices, impossible de la supprimer
return ''.$this->name." ${msg[indexint_used]}";
}
}
// ---------------------------------------------------------------
// replace($by) : remplacement
// ---------------------------------------------------------------
function replace($by,$link_save) {
global $msg;
global $dbh;
if(!$by) {
// pas de valeur de remplacement !!!
return "serious error occured, please contact admin...";
}
if (($this->indexint_id == $by) || (!$this->indexint_id)) {
// impossible de remplacer une autorité par elle-même
return $msg[indexint_self];
}
$aut_link= new aut_link(AUT_TABLE_INDEXINT,$this->indexint_id);
// "Conserver les liens entre autorités" est demandé
if($link_save) {
// liens entre autorités
$aut_link->add_link_to(AUT_TABLE_INDEXINT,$by);
}
$aut_link->delete();
// a) remplacement dans les notices
$requete = "UPDATE notices SET indexint=$by WHERE indexint='".$this->indexint_id."' ";
$res = mysql_query($requete, $dbh);
// b) suppression de l'indexation à remplacer
$requete = "DELETE FROM indexint WHERE indexint_id=".$this->indexint_id;
$res = mysql_query($requete, $dbh);
audit::delete_audit(AUDIT_INDEXINT,$this->indexint_id);
indexint::update_index($by);
return FALSE;
}
// ---------------------------------------------------------------
// update($value) : mise à jour de l'indexation
// ---------------------------------------------------------------
function update($nom, $comment,$id_pclass=0) {
global $dbh;
global $msg;
global $include_path;
global $thesaurus_classement_mode_pmb,$thesaurus_classement_defaut;
if(!$nom)
return false;
// nettoyage de la chaîne en entrée
$nom = clean_string($nom);
if ($thesaurus_classement_mode_pmb == 0 || $id_pclass==0) {
$id_pclass=$thesaurus_classement_defaut;
}
$requete = "SET indexint_name='$nom', ";
$requete .= "indexint_comment='$comment', ";
$requete .= "num_pclass='$id_pclass', ";
$requete .= "index_indexint=' ".strip_empty_words($nom." ".$comment)." '";
if($this->indexint_id) {
// update
$requete = 'UPDATE indexint '.$requete;
$requete .= ' WHERE indexint_id='.$this->indexint_id.' LIMIT 1;';
if(mysql_query($requete, $dbh)) {
$aut_link= new aut_link(AUT_TABLE_INDEXINT,$this->indexint_id);
$aut_link->save_form();
$aut_pperso= new aut_pperso("indexint",$this->indexint_id);
$aut_pperso->save_form();
indexint::update_index($this->indexint_id);
audit::insert_modif(AUDIT_INDEXINT,$this->indexint_id);
return TRUE;
}else {
require_once("$include_path/user_error.inc.php");
warning($msg[indexint_update], $msg[indexint_unable]);
return FALSE;
}
} else {
// création : s'assurer que le nom n'existe pas déjà
$dummy = "SELECT * FROM indexint WHERE indexint_name = '".$nom."' and num_pclass='".$id_pclass."' LIMIT 1 ";
$check = mysql_query($dummy, $dbh);
if(mysql_num_rows($check)) {
require_once("$include_path/user_error.inc.php");
warning($msg[indexint_create], $msg[indexint_exists]);
return FALSE;
}
$requete = 'INSERT INTO indexint '.$requete.';';
if(mysql_query($requete, $dbh)) {
$this->indexint_id=mysql_insert_id();
$aut_link= new aut_link(AUT_TABLE_INDEXINT,$this->indexint_id);
$aut_link->save_form();
$aut_pperso= new aut_pperso("indexint",$this->indexint_id);
$aut_pperso->save_form();
audit::insert_creation(AUDIT_INDEXINT,$this->indexint_id);
return TRUE;
}
else {
require_once("$include_path/user_error.inc.php");
warning($msg[indexint_create], $msg[indexint_unable_create]);
return FALSE;
}
}
}
// ---------------------------------------------------------------
// import() : import d'une indexation
// ---------------------------------------------------------------
// fonction d'import de notice : indexation interne : INUTILISEE à la date du 12/02/04
function import($name,$comment="",$id_pclassement="") {
global $dbh;
global $pmb_limitation_dewey ;
global $thesaurus_classement_defaut;
// check sur la variable passée en paramètre
if (!$name) return 0;
if ($pmb_limitation_dewey<0) return 0;
if ($pmb_limitation_dewey) $name=substr($name,0,$pmb_limitation_dewey) ;
// tentative de récupérer l'id associée dans la base (implique que l'autorité existe)
// préparation de la requête
$key = addslashes($name);
$comment = addslashes($comment);
if (!$id_pclassement) {
$num_pclass=$thesaurus_classement_defaut;
} else {
$num_pclass=$id_pclassement;
}
//On regarde si le plan de classement existe
$query = "SELECT name_pclass FROM pclassement WHERE id_pclass='".addslashes($num_pclass)."' LIMIT 1 ";
$result = @mysql_query($query, $dbh);
if(!$result) die("can't SELECT pclassement ".$query);
if(!mysql_num_rows($result)){//Le plan de classement demandé n'existe pas
return 0;// -> pas d'import
}
$query = "SELECT indexint_id FROM indexint WHERE indexint_name='".rtrim(substr($key,0,255))."' and num_pclass='$num_pclass' LIMIT 1 ";
$result = @mysql_query($query, $dbh);
if(!$result) die("can't SELECT indexint ".$query);
// résultat
// récupération du résultat de la recherche
$tindexint = mysql_fetch_object($result);
// du résultat et récupération éventuelle de l'id
if ($tindexint->indexint_id) return $tindexint->indexint_id;
// id non-récupérée >> création
if (!$id_pclassement) {
$num_pclass=$thesaurus_classement_defaut;
} else {
$num_pclass=$id_pclassement;
}
$query = "INSERT INTO indexint SET indexint_name='$key', indexint_comment='$comment', index_indexint=' ".strip_empty_words($key." ".$comment)." ', num_pclass=$num_pclass ";
$result = @mysql_query($query, $dbh);
if(!$result) die("can't INSERT into indexint ".$query);
$id=mysql_insert_id($dbh);
audit::insert_creation(AUDIT_INDEXINT,$id);
return $id;
}
// ---------------------------------------------------------------
// search_form() : affichage du form de recherche
// ---------------------------------------------------------------
static function search_form($id_pclass=0) {
global $user_query, $user_input;
global $msg;
global $dbh;
global $thesaurus_classement_mode_pmb;
global $charset ;
// Gestion Indexation décimale multiple
if ($thesaurus_classement_mode_pmb != 0) { //la liste des pclassement n'est pas affichée en mode monopclassement
$base_url = "./autorites.php?categ=indexint&sub=&id=";
$sel_pclassement = '';
$requete = "SELECT id_pclass, name_pclass, typedoc FROM pclassement order by id_pclass" ;
$result = mysql_query($requete, $dbh) or die ($requete." ".mysql_error());
$sel_pclassement = " ";
$pclass_url="&id_pclass=".$id_pclass;
$user_query = str_replace ('', $sel_pclassement , $user_query);
$user_query = str_replace ('', "".$msg['pclassement_link_edition']." ", $user_query);
}
$user_query = str_replace ('!!user_query_title!!', $msg[357]." : ".$msg[indexint_menu_title] , $user_query);
$user_query = str_replace ('!!action!!', './autorites.php?categ=indexint&sub=reach&id=', $user_query);
$user_query = str_replace ('!!add_auth_msg!!', $msg["indexint_create_button"] , $user_query);
$user_query = str_replace ('!!add_auth_act!!', './autorites.php?categ=indexint&sub=indexint_form'.$pclass_url, $user_query);
$user_query = str_replace ('', "$msg[indexint_last]", $user_query);
$user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query);
print pmb_bidi($user_query) ;
}
function has_notices() {
global $dbh;
$query = "select count(1) from notices where indexint=".$this->indexint_id;
$result = mysql_query($query, $dbh);
return (@mysql_result($result, 0, 0));
}
//---------------------------------------------------------------
// update_index($id) : maj des n-uplets la table notice_global_index en rapport avec cet indexint
//---------------------------------------------------------------
function update_index($id) {
global $dbh;
// On cherche tous les n-uplet de la table notice correspondant à cet auteur.
$found = mysql_query("select distinct notice_id from notices where indexint='".$id."'",$dbh);
// Pour chaque n-uplet trouvés on met a jour la table notice_global_index avec l'auteur modifié :
while($mesNotices = mysql_fetch_object($found)) {
$notice_id = $mesNotices->notice_id;
notice::majNoticesGlobalIndex($notice_id);
notice::majNoticesMotsGlobalIndex($notice_id,'indexint');
}
}
} # fin de définition de la classe indexint
} # fin de délaration