par
Elie » 22 août 2014, 11:24
J'ai l'impression que sql_affichage($objet["contact"], $_REQUEST["id_dossier"]) permettait de selectionner les iD des contacts d'un dossier. Il aurait peut-etre fallu bosser la dessus.
En tout cas pour tout exporter ou que ceux selectionnés (J'ai pas fait le système pour éviter le fiche en doublon) :
<?php
//// INIT
if($_REQUEST["type_export_import"]=="users") {require "../module_utilisateurs/commun.inc.php";}
else{
require "../module_contact/commun.inc.php";
droit_acces_controler($objet["contact_dossier"], $_GET["id_dossier"], 1);
}
require "contact_import_export.inc.php";
//// EXPORTE LES CONTACTS / UTILISATEURS
////
if(isset($_REQUEST["type_export_import"]) && isset($_POST["export_format"]))
{
//// LISTE DES CONTACTS
$contenu_export = "";
if($_REQUEST["type_export_import"]=="users") {
$liste_contacts = db_tableau("SELECT * FROM gt_utilisateur WHERE 1 ".sql_utilisateurs_espace());
} else {
$sql = "SELECT * FROM gt_contact WHERE 1 = 1";
$sql .= !empty($_POST['id_dossier']) ? " AND id_dossier = ".intval($_REQUEST["id_dossier"]) : NULL;
$sql .= !empty($_POST['id_dossier']) && !empty($_POST['id_to_export']) ? " AND `id_contact` IN (".$_POST['id_to_export'].")" : NULL;
$liste_contacts = db_tableau($sql);
}
//// EXPORT CSV
if(preg_match("/csv/i",$_POST["export_format"]))
{
// INIT
$tab_csv = $formats_csv[$_POST["export_format"]];
$nom_fichier = $_POST["export_format"].".csv";
// ENTETE DU FICHIER CSV
foreach($tab_csv["champs"] as $champ_agora => $champ_csv) { $contenu_export .= $tab_csv["delimiteur"].$champ_csv.$tab_csv["delimiteur"].$tab_csv["separateur"]; }
$contenu_export .= "\n";
// AJOUT DE CHAQUE CONTACT (exporte les champs de chaque contacts)
foreach($liste_contacts as $contact)
{
foreach($tab_csv["champs"] as $champ_agora => $champ_csv)
{
if($tab_csv["delimiteur"]=="'") {$contact[$champ_agora] = addslashes($contact[$champ_agora]);}
if(isset($contact[$champ_agora]) && $contact[$champ_agora]!="") {$contenu_export .= $tab_csv["delimiteur"].$contact[$champ_agora].$tab_csv["delimiteur"].$tab_csv["separateur"];}
else {$contenu_export .= $tab_csv["separateur"];}
}
$contenu_export .= "\n";
}
}
//// EXPORT LDIF
elseif($_POST["export_format"]=="ldif")
{
// INIT
$nom_fichier = "contact.ldif";
// AJOUT DE CHAQUE CONTACT
foreach($liste_contacts as $contact)
{
$contenu_export .= "dn: cn=".$contact["prenom"]." ".$contact["nom"]."\n";
$contenu_export .= "objectclass: top\n";
$contenu_export .= "objectclass: person\n";
$contenu_export .= "objectclass: organizationalPerson\n";
$contenu_export .= "cn: ".$contact["prenom"]." ".$contact["nom"]."\n";
$contenu_export .= "givenName: ".$contact["prenom"]."\n";
$contenu_export .= "sn: ".$contact["nom"]."\n";
if($contact["mail"]!="") {$contenu_export .= "mail: ".$contact["mail"]."\n";}
if($contact["telephone"]!="") {$contenu_export .= "homePhone: ".$contact["telephone"]."\n";}
if($contact["telephone"]!="") {$contenu_export .= "telephonenumber: ".$contact["telephone"]."\n";}
if($contact["fax"]!="") {$contenu_export .= "fax: ".$contact["fax"]."\n";}
if($contact["telmobile"]!="") {$contenu_export .= "mobile: ".$contact["telmobile"]."\n";}
if($contact["adresse"]!="") {$contenu_export .= "homeStreet: ".$contact["adresse"]."\n";}
if($contact["ville"]!="") {$contenu_export .= "mozillaHomeLocalityName: ".$contact["ville"]."\n";}
if($contact["codepostal"]!="") {$contenu_export .= "mozillaHomePostalCode: ".$contact["codepostal"]."\n";}
if($contact["pays"]!="") {$contenu_export .= "mozillaHomeCountryName: ".$contact["pays"]."\n";}
if($contact["societe_organisme"]!="") {$contenu_export .= "company: ".$contact["societe_organisme"]."\n";}
if($contact["fonction"]!="") {$contenu_export .= "title: ".$contact["fonction"]."\n";}
if($contact["commentaire"]!="") {$contenu_export .= "description: ".$contact["commentaire"]."\n";}
$contenu_export .= "\n";
}
}
///// LANCEMENT DU TELECHARGEMENT
telecharger($nom_fichier, null, $contenu_export);
exit;
}
//// HEADER & TITRE DU POPUP
////
require_once PATH_INC."header.inc.php";
titre_popup(menu_import_export());
?>
<script type="text/javascript">
resizePopupLightbox(500,250);
$(document).ready(function(){
var id = Array();
$("#contenu_principal_table .div_elem_select input[type=checkbox]", opener.document).each(function() {
id.push($(this).attr('value').substr(8));
});
$('#id_to_export').val(id);
});
</script>
<style type="text/css">
body { background-image:url('<?php echo PATH_TPL; ?>module_utilisateurs/fond_popup.png'); font-weight:bold; }
</style>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" style="text-align:center;">
<?php echo $trad["export_format"]; ?>
<select name="export_format">
<?php
foreach($formats_csv as $format_csv=>$infos_csv) { echo "<option value='".$format_csv."'>".strtoupper($format_csv)."</option>"; }
?>
<option value='ldif'>LDIF</option>
</select> <br /> <select name="id_dossier">
<option value="<?php echo $_REQUEST["id_dossier"]; ?>" selected="selected">Tous les contacts selectionnés du dossier #<?php echo $_REQUEST["id_dossier"]; ?></option>
<option value="0">Tous les contacts de tous les dossiers !</option>
</select> <br />
<input type="submit" value="<?php echo $trad["valider"]; ?>" class="button" />
<input type="hidden" name="type_export_import" value="<?php echo $_REQUEST["type_export_import"]; ?>" />
<input type="hidden" name="id_to_export" id="id_to_export" value="" />
</form>
<?php require PATH_INC."footer.inc.php"; ?>
Dans commun voici la nouvelle fonction pour deplacer ou dupliquer un membre :
//// DEPLACEMENT D'UN CONTACT
////
function deplacer_contact($id_contact, $id_dossier_destination)
{
global $objet;
//// Accès en écriture au contact et au dossier de destination
if(droit_acces($objet["contact"],$id_contact)>=2 && droit_acces($objet["contact_dossier"],$id_dossier_destination)>=2)
{
//// Deplace à la racine : donne les droits d'accès de l'ancien dossier
racine_copie_droits_acces($objet["contact"], $id_contact, $objet["contact_dossier"], $id_dossier_destination);
//// On déplace le contact
if(!empty($_POST['dupliquer'])) {
// On récupere les informations du membre
$row = objet_infos($objet["contact"], $id_contact);
//// AJOUT
$corps_sql = " civilite=".db_format($row["civilite"]).", nom=".db_format($row["nom"]).", prenom=".db_format($row["prenom"]).", adresse=".db_format($row["adresse"]).", codepostal=".db_format($row["codepostal"]).", ville=".db_format($row["ville"]).", pays=".db_format($row["pays"]).", telephone=".db_format($row["telephone"]).", telmobile=".db_format($row["telmobile"]).", fax=".db_format($row["fax"]).", mail=".db_format($row["mail"]).", siteweb=".db_format($row["siteweb"]).", competences=".db_format($row["competences"]).", hobbies=".db_format($row["hobbies"]).", fonction=".db_format($row["fonction"]).", societe_organisme=".db_format($row["societe_organisme"]).", commentaire=".db_format($row["commentaire"]).", raccourci=".db_format(@$row["raccourci"],"bool")." ";
db_query("INSERT INTO gt_contact SET id_dossier=".db_format($id_dossier_destination).", date_crea=NOW(), id_utilisateur='".$_SESSION["user"]["id_utilisateur"]."', invite=".db_format(@$_POST["invite"]).", ".$corps_sql);
$_POST["id_contact"] = db_last_id();
add_logs("ajout", $objet["contact"], $_POST["id_contact"]);
} else {
db_query("UPDATE gt_contact SET id_dossier=".db_format($id_dossier_destination)." WHERE id_contact=".db_format($id_contact));
}
}
//// Logs
add_logs("modif", $objet["contact"], $id_contact);
}
Et dans divers, il faut remplacer le fichier deplacer.php par ca pour avoir la petite checkbox :
<?php
//// INIT
require_once "../".$_GET["module_path"]."/commun.inc.php";
require_once PATH_INC."header.inc.php";
?>
<script type="text/javascript">
//// On redimensionne
resizePopupLightbox(450,400);
//// On indique le dossier sélectionné dans le formulaire
function select_dossier_action(id_dossier) { set_value("id_dossier",id_dossier); }
</script>
<form action="<?php echo ROOT_PATH.$_GET["module_path"]."/deplacer.php"; ?>" method="post">
<fieldset class="fieldset_titre"><?php echo $trad["deplacer_autre_dossier"]; ?></fieldset>
<?php
//// MENU D'ARBORESCENCE
$cfg_menu_arbo = array("objet"=>$objet[$_GET["type_objet_dossier"]], "id_objet"=>$_GET["id_dossier_parent"], "is_menu_deplacer"=>true);
require_once PATH_INC."menu_arborescence.inc.php";
?>
<div style="text-align:right;">
<input type="hidden" name="id_dossier" id="id_dossier" value="<?php echo $_GET["id_dossier_parent"]; ?>">
<?php
// Mets en mémoire les elements à déplacer
foreach($_GET["SelectedElems"] as $type_elem => $ids_elems){
echo "<input type='hidden' name='SelectedElems[".$type_elem."]' value=\"".$ids_elems."\" />";
}
?>
<input type="checkbox" name="dupliquer" id="dupliquer" value="1" /> <label for="dupliquer">Dupliquer la fiche</label>
<input type="submit" value="<?php echo $trad["modifier"]; ?>" class="button_big" />
</div>
</form>
<?php require PATH_INC."footer.inc.php"; ?>
Dis moi si ca te va !
J'ai l'impression que sql_affichage($objet["contact"], $_REQUEST["id_dossier"]) permettait de selectionner les iD des contacts d'un dossier. Il aurait peut-etre fallu bosser la dessus.
En tout cas pour tout exporter ou que ceux selectionnés (J'ai pas fait le système pour éviter le fiche en doublon) :
[php]<?php
//// INIT
if($_REQUEST["type_export_import"]=="users") {require "../module_utilisateurs/commun.inc.php";}
else{
require "../module_contact/commun.inc.php";
droit_acces_controler($objet["contact_dossier"], $_GET["id_dossier"], 1);
}
require "contact_import_export.inc.php";
//// EXPORTE LES CONTACTS / UTILISATEURS
////
if(isset($_REQUEST["type_export_import"]) && isset($_POST["export_format"]))
{
//// LISTE DES CONTACTS
$contenu_export = "";
if($_REQUEST["type_export_import"]=="users") {
$liste_contacts = db_tableau("SELECT * FROM gt_utilisateur WHERE 1 ".sql_utilisateurs_espace());
} else {
$sql = "SELECT * FROM gt_contact WHERE 1 = 1";
$sql .= !empty($_POST['id_dossier']) ? " AND id_dossier = ".intval($_REQUEST["id_dossier"]) : NULL;
$sql .= !empty($_POST['id_dossier']) && !empty($_POST['id_to_export']) ? " AND `id_contact` IN (".$_POST['id_to_export'].")" : NULL;
$liste_contacts = db_tableau($sql);
}
//// EXPORT CSV
if(preg_match("/csv/i",$_POST["export_format"]))
{
// INIT
$tab_csv = $formats_csv[$_POST["export_format"]];
$nom_fichier = $_POST["export_format"].".csv";
// ENTETE DU FICHIER CSV
foreach($tab_csv["champs"] as $champ_agora => $champ_csv) { $contenu_export .= $tab_csv["delimiteur"].$champ_csv.$tab_csv["delimiteur"].$tab_csv["separateur"]; }
$contenu_export .= "\n";
// AJOUT DE CHAQUE CONTACT (exporte les champs de chaque contacts)
foreach($liste_contacts as $contact)
{
foreach($tab_csv["champs"] as $champ_agora => $champ_csv)
{
if($tab_csv["delimiteur"]=="'") {$contact[$champ_agora] = addslashes($contact[$champ_agora]);}
if(isset($contact[$champ_agora]) && $contact[$champ_agora]!="") {$contenu_export .= $tab_csv["delimiteur"].$contact[$champ_agora].$tab_csv["delimiteur"].$tab_csv["separateur"];}
else {$contenu_export .= $tab_csv["separateur"];}
}
$contenu_export .= "\n";
}
}
//// EXPORT LDIF
elseif($_POST["export_format"]=="ldif")
{
// INIT
$nom_fichier = "contact.ldif";
// AJOUT DE CHAQUE CONTACT
foreach($liste_contacts as $contact)
{
$contenu_export .= "dn: cn=".$contact["prenom"]." ".$contact["nom"]."\n";
$contenu_export .= "objectclass: top\n";
$contenu_export .= "objectclass: person\n";
$contenu_export .= "objectclass: organizationalPerson\n";
$contenu_export .= "cn: ".$contact["prenom"]." ".$contact["nom"]."\n";
$contenu_export .= "givenName: ".$contact["prenom"]."\n";
$contenu_export .= "sn: ".$contact["nom"]."\n";
if($contact["mail"]!="") {$contenu_export .= "mail: ".$contact["mail"]."\n";}
if($contact["telephone"]!="") {$contenu_export .= "homePhone: ".$contact["telephone"]."\n";}
if($contact["telephone"]!="") {$contenu_export .= "telephonenumber: ".$contact["telephone"]."\n";}
if($contact["fax"]!="") {$contenu_export .= "fax: ".$contact["fax"]."\n";}
if($contact["telmobile"]!="") {$contenu_export .= "mobile: ".$contact["telmobile"]."\n";}
if($contact["adresse"]!="") {$contenu_export .= "homeStreet: ".$contact["adresse"]."\n";}
if($contact["ville"]!="") {$contenu_export .= "mozillaHomeLocalityName: ".$contact["ville"]."\n";}
if($contact["codepostal"]!="") {$contenu_export .= "mozillaHomePostalCode: ".$contact["codepostal"]."\n";}
if($contact["pays"]!="") {$contenu_export .= "mozillaHomeCountryName: ".$contact["pays"]."\n";}
if($contact["societe_organisme"]!="") {$contenu_export .= "company: ".$contact["societe_organisme"]."\n";}
if($contact["fonction"]!="") {$contenu_export .= "title: ".$contact["fonction"]."\n";}
if($contact["commentaire"]!="") {$contenu_export .= "description: ".$contact["commentaire"]."\n";}
$contenu_export .= "\n";
}
}
///// LANCEMENT DU TELECHARGEMENT
telecharger($nom_fichier, null, $contenu_export);
exit;
}
//// HEADER & TITRE DU POPUP
////
require_once PATH_INC."header.inc.php";
titre_popup(menu_import_export());
?>
<script type="text/javascript">
resizePopupLightbox(500,250);
$(document).ready(function(){
var id = Array();
$("#contenu_principal_table .div_elem_select input[type=checkbox]", opener.document).each(function() {
id.push($(this).attr('value').substr(8));
});
$('#id_to_export').val(id);
});
</script>
<style type="text/css">
body { background-image:url('<?php echo PATH_TPL; ?>module_utilisateurs/fond_popup.png'); font-weight:bold; }
</style>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" style="text-align:center;">
<?php echo $trad["export_format"]; ?>
<select name="export_format">
<?php
foreach($formats_csv as $format_csv=>$infos_csv) { echo "<option value='".$format_csv."'>".strtoupper($format_csv)."</option>"; }
?>
<option value='ldif'>LDIF</option>
</select> <br /> <select name="id_dossier">
<option value="<?php echo $_REQUEST["id_dossier"]; ?>" selected="selected">Tous les contacts selectionnés du dossier #<?php echo $_REQUEST["id_dossier"]; ?></option>
<option value="0">Tous les contacts de tous les dossiers !</option>
</select> <br />
<input type="submit" value="<?php echo $trad["valider"]; ?>" class="button" />
<input type="hidden" name="type_export_import" value="<?php echo $_REQUEST["type_export_import"]; ?>" />
<input type="hidden" name="id_to_export" id="id_to_export" value="" />
</form>
<?php require PATH_INC."footer.inc.php"; ?>[/php]
Dans commun voici la nouvelle fonction pour deplacer ou dupliquer un membre :
[php]//// DEPLACEMENT D'UN CONTACT
////
function deplacer_contact($id_contact, $id_dossier_destination)
{
global $objet;
//// Accès en écriture au contact et au dossier de destination
if(droit_acces($objet["contact"],$id_contact)>=2 && droit_acces($objet["contact_dossier"],$id_dossier_destination)>=2)
{
//// Deplace à la racine : donne les droits d'accès de l'ancien dossier
racine_copie_droits_acces($objet["contact"], $id_contact, $objet["contact_dossier"], $id_dossier_destination);
//// On déplace le contact
if(!empty($_POST['dupliquer'])) {
// On récupere les informations du membre
$row = objet_infos($objet["contact"], $id_contact);
//// AJOUT
$corps_sql = " civilite=".db_format($row["civilite"]).", nom=".db_format($row["nom"]).", prenom=".db_format($row["prenom"]).", adresse=".db_format($row["adresse"]).", codepostal=".db_format($row["codepostal"]).", ville=".db_format($row["ville"]).", pays=".db_format($row["pays"]).", telephone=".db_format($row["telephone"]).", telmobile=".db_format($row["telmobile"]).", fax=".db_format($row["fax"]).", mail=".db_format($row["mail"]).", siteweb=".db_format($row["siteweb"]).", competences=".db_format($row["competences"]).", hobbies=".db_format($row["hobbies"]).", fonction=".db_format($row["fonction"]).", societe_organisme=".db_format($row["societe_organisme"]).", commentaire=".db_format($row["commentaire"]).", raccourci=".db_format(@$row["raccourci"],"bool")." ";
db_query("INSERT INTO gt_contact SET id_dossier=".db_format($id_dossier_destination).", date_crea=NOW(), id_utilisateur='".$_SESSION["user"]["id_utilisateur"]."', invite=".db_format(@$_POST["invite"]).", ".$corps_sql);
$_POST["id_contact"] = db_last_id();
add_logs("ajout", $objet["contact"], $_POST["id_contact"]);
} else {
db_query("UPDATE gt_contact SET id_dossier=".db_format($id_dossier_destination)." WHERE id_contact=".db_format($id_contact));
}
}
//// Logs
add_logs("modif", $objet["contact"], $id_contact);
}[/php]
Et dans divers, il faut remplacer le fichier deplacer.php par ca pour avoir la petite checkbox :
[php]<?php
//// INIT
require_once "../".$_GET["module_path"]."/commun.inc.php";
require_once PATH_INC."header.inc.php";
?>
<script type="text/javascript">
//// On redimensionne
resizePopupLightbox(450,400);
//// On indique le dossier sélectionné dans le formulaire
function select_dossier_action(id_dossier) { set_value("id_dossier",id_dossier); }
</script>
<form action="<?php echo ROOT_PATH.$_GET["module_path"]."/deplacer.php"; ?>" method="post">
<fieldset class="fieldset_titre"><?php echo $trad["deplacer_autre_dossier"]; ?></fieldset>
<?php
//// MENU D'ARBORESCENCE
$cfg_menu_arbo = array("objet"=>$objet[$_GET["type_objet_dossier"]], "id_objet"=>$_GET["id_dossier_parent"], "is_menu_deplacer"=>true);
require_once PATH_INC."menu_arborescence.inc.php";
?>
<div style="text-align:right;">
<input type="hidden" name="id_dossier" id="id_dossier" value="<?php echo $_GET["id_dossier_parent"]; ?>">
<?php
// Mets en mémoire les elements à déplacer
foreach($_GET["SelectedElems"] as $type_elem => $ids_elems){
echo "<input type='hidden' name='SelectedElems[".$type_elem."]' value=\"".$ids_elems."\" />";
}
?>
<input type="checkbox" name="dupliquer" id="dupliquer" value="1" /> <label for="dupliquer">Dupliquer la fiche</label>
<input type="submit" value="<?php echo $trad["modifier"]; ?>" class="button_big" />
</div>
</form>
<?php require PATH_INC."footer.inc.php"; ?>
[/php]
Dis moi si ca te va !