";
$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
// ---------------------------------------------------------------
public function delete() {
global $dbh;
global $msg;
if(!$this->indexint_id)
// impossible d'accéder à cette indexation
return $msg[indexint_unable];
if(($usage=aut_pperso::delete_pperso(AUT_TABLE_INDEXINT, $this->indexint_id,0) )){
// Cette autorité est utilisée dans des champs perso, impossible de supprimer
return ''.$this->display.' '.$msg['autority_delete_error'].'
'.$usage['display'];
}
// récupération du nombre de notices affectées
$requete = "SELECT COUNT(1) FROM notices WHERE ";
$requete .= "indexint=".$this->indexint_id;
$res = pmb_mysql_query($requete, $dbh);
$nbr_lignes = pmb_mysql_result($res, 0, 0);
if(!$nbr_lignes) {
// On regarde si l'autorité est utilisée dans des vedettes composées
$attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->indexint_id, "indexint");
if (count($attached_vedettes)) {
// Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
return ''.$this->name." ".$msg["vedette_dont_del_autority"].' '.vedette_composee::get_vedettes_display($attached_vedettes);
}
// 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 = pmb_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();
// nettoyage indexation concepts
$index_concept = new index_concept($this->indexint_id, TYPE_INDEXINT);
$index_concept->delete();
// nettoyage indexation
indexation_authority::delete_all_index($this->indexint_id, "authorities", "id_authority", AUT_TABLE_INDEXINT);
// effacement de l'identifiant unique d'autorité
$authority = new authority(0, $this->indexint_id, AUT_TABLE_INDEXINT);
$authority->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
// ---------------------------------------------------------------
public 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();
vedette_composee::replace(AUT_TABLE_INDEXINT, $this->indexint_id, $by);
// a) remplacement dans les notices
$requete = "UPDATE notices SET indexint=$by WHERE indexint='".$this->indexint_id."' ";
$res = pmb_mysql_query($requete, $dbh);
// b) suppression de l'indexation à remplacer
$requete = "DELETE FROM indexint WHERE indexint_id=".$this->indexint_id;
$res = pmb_mysql_query($requete, $dbh);
//Remplacement dans les champs persos sélecteur d'autorité
aut_pperso::replace_pperso(AUT_TABLE_INDEXINT, $this->id, $by);
audit::delete_audit(AUDIT_INDEXINT,$this->indexint_id);
// nettoyage indexation
indexation_authority::delete_all_index($this->indexint_id, "authorities", "id_authority", AUT_TABLE_INDEXINT);
// effacement de l'identifiant unique d'autorité
$authority = new authority(0, $this->indexint_id, AUT_TABLE_INDEXINT);
$authority->delete();
indexint::update_index($by);
return FALSE;
}
// ---------------------------------------------------------------
// update($value) : mise à jour de l'indexation
// ---------------------------------------------------------------
public function update($nom, $comment,$id_pclass=0, $statut=1, $thumbnail_url='') {
global $dbh;
global $msg;
global $include_path;
global $thesaurus_classement_mode_pmb,$thesaurus_classement_defaut;
global $thesaurus_concepts_active;
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(pmb_mysql_query($requete, $dbh)) {
indexint::update_index($this->indexint_id);
audit::insert_modif(AUDIT_INDEXINT,$this->indexint_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);
if($aut_pperso->save_form()){
$this->cp_error_message = $aut_pperso->error_message;
return false;
}
}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 = pmb_mysql_query($dummy, $dbh);
if(pmb_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(pmb_mysql_query($requete, $dbh)) {
$this->indexint_id=pmb_mysql_insert_id();
audit::insert_creation(AUDIT_INDEXINT,$this->indexint_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);
if($aut_pperso->save_form()){
$this->cp_error_message = $aut_pperso->error_message;
return false;
}
}
else {
require_once("$include_path/user_error.inc.php");
warning($msg[indexint_create], $msg[indexint_unable_create]);
return FALSE;
}
}
//update authority informations
$authority = new authority(0, $this->indexint_id, AUT_TABLE_INDEXINT);
$authority->set_num_statut($statut);
$authority->set_thumbnail_url($thumbnail_url);
$authority->update();
// Indexation concepts
if($thesaurus_concepts_active == 1){
$index_concept = new index_concept($this->indexint_id, TYPE_INDEXINT);
$index_concept->save();
}
// Mise à jour des vedettes composées contenant cette autorité
vedette_composee::update_vedettes_built_with_element($this->indexint_id, "indexint");
indexint::update_index($this->indexint_id);
return TRUE;
}
// ---------------------------------------------------------------
// import() : import d'une indexation
// ---------------------------------------------------------------
// fonction d'import de notice : indexation interne : INUTILISEE à la date du 12/02/04
public static function import($name,$comment="",$id_pclassement="", $statut=1, $thumbnail_url='') {
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 = @pmb_mysql_query($query, $dbh);
if(!$result) die("can't SELECT pclassement ".$query);
if(!pmb_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 = @pmb_mysql_query($query, $dbh);
if(!$result) die("can't SELECT indexint ".$query);
// résultat
// récupération du résultat de la recherche
$tindexint = pmb_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 = @pmb_mysql_query($query, $dbh);
if(!$result) die("can't INSERT into indexint ".$query);
$id=pmb_mysql_insert_id($dbh);
audit::insert_creation(AUDIT_INDEXINT,$id);
//update authority informations
$authority = new authority(0, $id, AUT_TABLE_INDEXINT);
$authority->set_num_statut($statut);
$authority->set_thumbnail_url($thumbnail_url);
$authority->update();
indexint::update_index($id);
return $id;
}
// ---------------------------------------------------------------
// search_form() : affichage du form de recherche
// ---------------------------------------------------------------
public static function search_form($id_pclass=0) {
global $user_query, $user_input;
global $msg;
global $dbh;
global $thesaurus_classement_mode_pmb;
global $charset ;
global $authority_statut ;
// 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 = pmb_mysql_query($requete, $dbh) or die ($requete." ".pmb_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);
} else {
$pclass_url="";
}
$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('', authorities_statuts::get_form_for(AUT_TABLE_INDEXINT, $authority_statut, true), $user_query);
$user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query);
print pmb_bidi($user_query) ;
}
public function has_notices() {
global $dbh;
$query = "select count(1) from notices where indexint=".$this->indexint_id;
$result = pmb_mysql_query($query, $dbh);
return (@pmb_mysql_result($result, 0, 0));
}
//---------------------------------------------------------------
// update_index($id) : maj des index
//---------------------------------------------------------------
public static function update_index($id, $datatype = 'all') {
$indexation_authority = indexations_collection::get_indexation(AUT_TABLE_INDEXINT);
$indexation_authority->maj($id, $datatype);
// On cherche tous les n-uplet de la table notice correspondant à cette index. décimale.
$query = "select distinct notice_id from notices where indexint='".$id."'";
authority::update_records_index($query, 'indexint');
}
public function get_header() {
return $this->display;
}
public function get_cp_error_message(){
return $this->cp_error_message;
}
public function get_gestion_link(){
return './autorites.php?categ=see&sub=indexint&id='.$this->indexint_id;
}
public function get_isbd() {
global $thesaurus_classement_mode_pmb;
if ($this->comment) $isbd = $this->name." - ".$this->comment;
else $isbd = $this->name ;
if ($thesaurus_classement_mode_pmb != 0) {
$isbd = "[".$this->name_pclass."] ".$isbd;
}
return $isbd;
}
public static function get_format_data_structure($antiloop = false) {
global $msg;
$main_fields = array();
$main_fields[] = array(
'var' => "name",
'desc' => $msg['indexint_nom']
);
$main_fields[] = array(
'var' => "comment",
'desc' => $msg['indexint_comment']
);
$authority = new authority(0, 0, AUT_TABLE_INDEXINT);
$main_fields = array_merge($authority->get_format_data_structure(), $main_fields);
return $main_fields;
}
public function format_datas($antiloop = false){
$formatted_data = array(
'name' => $this->name,
'comment' => $this->comment
);
$authority = new authority(0, $this->indexint_id, AUT_TABLE_INDEXINT);
$formatted_data = array_merge($authority->format_datas(), $formatted_data);
return $formatted_data;
}
} # fin de définition de la classe indexint
} # fin de délaration