aide pour ameliorer une appli

baxterbax
Invité n'ayant pas de compte PHPfrance

20 août 2014, 16:49

Bonjour,

Etant à la recherche d'une appli php me permettant de gérer mes contacts, je suis tombé sur ce site "www.agora-project.net" , il n'y a que la partie annuaire de contact qui m’intéresse, j'ai testé et ça colle avec ce que je recherche, le seul bémol c'est l'exportation des contacts qui ne permet pas de faire une sélection .
l'idée est que je puisse au final exporter que ceux qui m’intéressent et non la totalité du dossier dans lequel se trouvent les contacts. je m'adresse ici car je trouve que leur forum n' est pas très actif. si quelqu'un veut bien m'aider à améliorer l'appli.. merci par avance

Mammouth du PHP | 1339 Messages

20 août 2014, 17:13

Peux-tu me donner le nom de la page qui affiche la liste des contacts et celle qui les exports ?
Il suffirait de mettre un checkbox devant chaque nom et de dire de n'exporter que les noms cochés !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

20 août 2014, 17:53

Peux-tu me donner le nom de la page qui affiche la liste des contacts et celle qui les exports ?
Il suffirait de mettre un checkbox devant chaque nom et de dire de n'exporter que les noms cochés !
merci pour ton aide,

je te donne l'adresse de la page qui liste les contacts.

http://localhost/agora/module_contact/i ... _dossier=2

et la fenêtre pop up qui sert à exporter les contacts
http://localhost/agora/divers/contact_e ... _dossier=2

baxterbax
Invité n'ayant pas de compte PHPfrance

20 août 2014, 18:01


Mammouth du PHP | 1339 Messages

20 août 2014, 19:06

Alors la question est :

- J'ai vu qu'il y a un système pour cocher des gens.
Tu preferes te faire chier a cocher les membres que tu veux exporter
ou décocher les membres que tu ne veux pas exporter ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

20 août 2014, 19:15

merci, je prefere decocher les contacts.

Mammouth du PHP | 1339 Messages

20 août 2014, 19:53

Je me suis bien amusé.
Pour le don, tu veux mon adresse paypal ?

Remplace le fichier contact_export.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"], $_REQUEST["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											{$liste_contacts = db_tableau("SELECT * FROM gt_contact WHERE id_dossier='".intval($_REQUEST["id_dossier"])."' ".sql_affichage($objet["contact"],$_REQUEST["id_dossier"])." AND `id_contact` IN (".$_POST['id_to_export'].")");}
	////	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 php_self(); ?>" 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> &nbsp; 
	<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_dossier" value="<?php echo @$_REQUEST["id_dossier"]; ?>" />
    <input type="hidden" name="id_to_export" id="id_to_export" value="" />
</form>


<?php require PATH_INC."footer.inc.php"; ?>
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

21 août 2014, 09:00

merci encore pour ton aide, j'ai remplacé le fichier contact_export.php et je viens de tester mais cela ne change rien à la page initiale, je ne peux pas selectionner les contacts a exporter.

Mammouth du PHP | 1339 Messages

21 août 2014, 09:26

Euh bah chez moi ca marche pourquoi pas chez toi ...
As-tu teamviewer d'installé ? Peux-tu me contacter par MP
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

21 août 2014, 09:46

j'ai ceci quand j'ouvre le fichier .csv
<h4>error: SELECT * FROM gt_contact WHERE id_dossier='4' AND `id_contact` IN ()</h4><br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>C:\xampp1\htdocs\agora\divers\contact_export.php</b> on line <b>29</b><br />

baxterbax
Invité n'ayant pas de compte PHPfrance

21 août 2014, 09:49

desolé ne tient pas compte du message précedent, il n'y a pas d'erreur dans le fichier. csv
juste que je ne vois nul part ou selectionner les contacts à exporter.

Mammouth du PHP | 1339 Messages

21 août 2014, 10:33

Tu cliques sur "Tout selectionner" et tu décoches ceux que tu ne veux pas.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

21 août 2014, 11:03

super big merci, je n'avais pas vu les choses comme ça, alors ça va sans doute me coûter un max cette affaire. mais j'ai encore plusieurs questions,
est-ce que c'est faisable de selectionner plusieurs dossiers de la même façon que les contatcs et d'en exporter tous les contacts ?

et la seconde, crois tu qu'il facilement faisable au même titre que l'on peut déplacer un contacts d'un dossier à l'autre de les dupliquer pour qu'ils se retrouvent dans 2 dossiers à la fois ?

ça c'est le code qui se trouve dans la page commun.inc.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
		db_query("UPDATE gt_contact SET id_dossier=".db_format($id_dossier_destination)." WHERE id_contact=".db_format($id_dossier_destination));
	}
	////	Logs
	//add_logs("modif", $objet["contact"], $id_contact);

}

Mammouth du PHP | 1339 Messages

21 août 2014, 12:22

- Exporter tous les contacts de tous les dossiers :
Ca doit pas être bien compliqué.
Je te fais un <select> avec 1- Les contacts sélectionnés dans ce dossier ou 2- Tous les contacts de tous les dossiers.
(Il faudra du coup mettre un filtre pour pas exporter 2 fois le meme contact si on fait le truc pour dupliquer)
EDiT : Je vois que en fait tu veux pouvoir selectionner les dossiers. Donc oui c'est possible aussi mais du coup le principe de contacts selectionnés sera annulé dans cette demarche uniquement.

- Copier un contact dans 2 dossiers :
Comme le montre le code, un contact est associé a 1 seul dossier.
Seul solution "Dupliquer la fiche" de ce contact avec le nouveau id_dossier.
Ca evitera de rempenser toute la logique du systeme car je pourrais mettre en place un systeme qui met plusieurs numero dans le champ id_dossier
Bon sinon tu me fais un message privé et on se fait un TeamViewer

baxterbax
Invité n'ayant pas de compte PHPfrance

21 août 2014, 14:42

merci pour tes réponses, et sans vouloir abuser, saurais tu comment modifier le code pour dupliquer le contact ? merci par avance