aide pour ameliorer une appli

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : aide pour ameliorer une appli

Re: aide pour ameliorer une appli

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 !

Re: aide pour ameliorer une appli

par Elie » 21 août 2014, 14:48

Je te le ferais, j'ai juste besoin de savoir ce dont tu as besoin...

Re: aide pour ameliorer une appli

par baxterbax » 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

Re: aide pour ameliorer une appli

par Elie » 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

Re: aide pour ameliorer une appli

par baxterbax » 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);

}

Re: aide pour ameliorer une appli

par Elie » 21 août 2014, 10:33

Tu cliques sur "Tout selectionner" et tu décoches ceux que tu ne veux pas.

Re: aide pour ameliorer une appli

par baxterbax » 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.

Re: aide pour ameliorer une appli

par baxterbax » 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 />

Re: aide pour ameliorer une appli

par Elie » 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

Re: aide pour ameliorer une appli

par baxterbax » 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.

Re: aide pour ameliorer une appli

par Elie » 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"; ?>

Re: aide pour ameliorer une appli

par baxterbax » 20 août 2014, 19:15

merci, je prefere decocher les contacts.

Re: aide pour ameliorer une appli

par Elie » 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 ?

Re: aide pour ameliorer une appli

par baxterbax » 20 août 2014, 18:01

Re: aide pour ameliorer une appli

par baxterbax » 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