Subversion Repositories eFlore/Applications.cel

Rev

Rev 2910 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2910 Rev 2934
Line 326... Line 326...
326
		restore_error_handler();
326
		restore_error_handler();
Line 327... Line 327...
327
 
327
 
328
		// le cast en string des nombres permet d'unifier le parsing du retour
328
		// le cast en string des nombres permet d'unifier le parsing du retour
329
		// car il n'est destiné qu'à être affiché 
329
		// car il n'est destiné qu'à être affiché 
330
		$retour = array(
330
		$retour = array(
331
					'import_obs_ajoutees' => (string)$obs_ajouts,
331
					'import_obs_ajoutees' => (string)$obs_ajouts,
332
					'import_images_ajoutees' => (string)$nb_images_ajoutees,
332
					'import_images_ajoutees' => (string)$nb_images_ajoutees,
333
					'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
333
					'import_mots_cles_ajoutes' => (string)$nb_mots_cle_ajoutes,
334
					'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
334
					'import_colonnes_non_traitees' => implode(', ', $filtre->exclues)
335
		);
335
		);
336
		// Ajout d'éventuelles erreurs
336
		// Ajout d'éventuelles erreurs
337
		if ($this->bilan) {
337
		if ($this->bilan) {
338
			$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
338
			$retour += array('import_erreurs' => implode("\n", $this->bilan) . "\n");
339
		}
339
		}
340
		// Dans le cas où le client ne sait pas lire le retour d'upload
340
		// Dans le cas où le client ne sait pas lire le retour d'upload
341
		// on stocke les stats en session pour les appeler plus tard
341
		// on stocke les stats en session pour les appeler plus tard
342
		// car ceci peut poser notamment problème pour les requêtes CORS
342
		// car ceci peut poser notamment problème pour les requêtes CORS
Line 345... Line 345...
345
		// les lire directement après l'upload
345
		// les lire directement après l'upload
346
		$this->envoyerJson($retour);
346
		$this->envoyerJson($retour);
347
		die();
347
		die();
348
	}
348
	}
Line 349... Line 349...
349
	
349
	
350
	public function getElement($uid) {
350
	public function getElement($uid) {
Line 351... Line 351...
351
		if($uid[0] == "template") {
351
		if($uid[0] == "template") {
352
 
352
 
Line 353... Line 353...
353
			$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
353
			$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
354
			$tpl = $tpl_dir.'modele_import.xls';
354
			$tpl = $tpl_dir.'modele_import.xls';
355
 
355
 
Line 356... Line 356...
356
			$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
356
			$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
357
			$classeur_tpl = $lecteur->load($tpl);
357
			$classeur_tpl = $lecteur->load($tpl);
358
			$feuille_tpl = $classeur_tpl->getActiveSheet();
358
			$feuille_tpl = $classeur_tpl->getActiveSheet();
359
			
359
			
360
			// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
360
			// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
361
			// Si un groupe est demandé
361
			// Si un groupe est demandé
Line 362... Line 362...
362
			$lettre_colonne_max = $feuille_tpl->getHighestColumn();
362
			$lettre_colonne_max = $feuille_tpl->getHighestColumn();
363
			$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);		
363
			$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);		
Line 374... Line 374...
374
			for($i = 0; $i < $nb_colonne_max; $i++) {
374
			for($i = 0; $i < $nb_colonne_max; $i++) {
375
				$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
375
				$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
376
				$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
376
				$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
Line 377... Line 377...
377
				
377
				
378
				if(!empty($descriptions[$champ_obl])) {
378
				if(!empty($descriptions[$champ_obl])) {
379
					$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
379
					$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
380
					$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400); 
380
					$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400); 
381
				}
381
				}
Line 382... Line 382...
382
			}
382
			}
Line 388... Line 388...
388
				$champs = Cel::db()->requeter($requete);
388
				$champs = Cel::db()->requeter($requete);
Line 389... Line 389...
389
 
389
 
390
				foreach($champs as $champ) {	
390
				foreach($champs as $champ) {	
391
					$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
391
					$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
392
					// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
392
					// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
393
					// l'import ignore les noms de colonnes qu'il ne connait pas
393
					// l'import ignore les noms de colonnes qu'il ne connait pas
394
					$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
394
					$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
395
					// Ajout de la description dans le commentaire si elle est présente
395
					// Ajout de la description dans le commentaire si elle est présente
396
					if(!empty($descriptions[$champ['champ']])) { 
396
					if(!empty($descriptions[$champ['champ']])) { 
397
						$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
397
						$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
398
						$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
398
						$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
Line 399... Line 399...
399
					}
399
					}
400
					
400
					
401
					$nb_colonne_en_cours++;
401
					$nb_colonne_en_cours++;
402
				}		
402
				}		
Line 403... Line 403...
403
				$nom_fichier .= '_'.$_GET['groupe'];
403
				$nom_fichier .= '_'.$_GET['groupe'];
404
			}
404
			}
405
			
405
			
406
			// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
406
			// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
407
			// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
407
			// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
408
			header('Content-type: application/vnd.ms-excel');	
408
			header('Content-type: application/vnd.ms-excel');	
Line 409... Line 409...
409
			header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
409
			header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
410
			$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
410
			$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
411
			$generateur->save('php://output');
411
			$generateur->save('php://output');
Line 430... Line 430...
430
		}
430
		}
Line 431... Line 431...
431
		
431
		
432
		return $descriptions;
432
		return $descriptions;
Line 433... Line 433...
433
	}
433
	}
434
	
434
	
435
	public function getRessource() {
435
	public function getRessource() {
436
		return self::getStatsDernierUpload();
436
		return self::getStatsDernierUpload();
437
	}
437
	}
438
	
438
	
439
	static function getStatsDernierUpload() {
439
	static function getStatsDernierUpload() {
440
		// renvoi des statistiques du dernier envoi de fichier
440
		// renvoi des statistiques du dernier envoi de fichier
441
		$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
441
		$stats = !empty($_SESSION['upload_stats']) ? $_SESSION['upload_stats'] : null;
442
		header("Content-Type: application/json; charset=utf-8");
442
		header("Content-Type: application/json; charset=utf-8");
443
		echo json_encode($stats);
443
		echo json_encode($stats);
Line 444... Line 444...
444
		die();
444
		die();
445
	}
445
	}
446
 
446
 
Line 549... Line 549...
549
				continue;
549
				continue;
550
			}
550
			}
Line 551... Line 551...
551
 
551
 
552
			if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) {
552
			if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) {
-
 
553
				// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
-
 
554
				if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) {
-
 
555
					if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) {
-
 
556
						$enregistrement['latitude'] = $enregistrement['_champs_etendus']['latitudeDebutRue'];
-
 
557
						$enregistrement['longitude'] = $enregistrement['_champs_etendus']['longitudeDebutRue'];
-
 
558
					}
553
				// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
559
				}
554
				$enregistrements[] = $enregistrement;
560
				$enregistrements[] = $enregistrement;
555
				$pos = count($enregistrements) - 1;
561
				$pos = count($enregistrements) - 1;
Line 556... Line 562...
556
				$last = &$enregistrements[$pos];
562
				$last = &$enregistrements[$pos];
Line 579... Line 585...
579
					$tous_champs_etendus[] = array(
585
					$tous_champs_etendus[] = array(
580
						'champs_etendus' => $last['_champs_etendus'],
586
						'champs_etendus' => $last['_champs_etendus'],
581
						'ordre' => $dernier_ordre);
587
						'ordre' => $dernier_ordre);
582
					unset($last['_champs_etendus']);
588
					unset($last['_champs_etendus']);
583
				}
589
				}
-
 
590
				
-
 
591
				
584
				$dernier_ordre++;
592
				$dernier_ordre++;
585
			}
593
			}
586
		}
594
		}
-
 
595
		
587
		return array($enregistrements, $toutes_images, $tous_mots_cle, $tous_champs_etendus);
596
		return array($enregistrements, $toutes_images, $tous_mots_cle, $tous_champs_etendus);
588
	}
597
	}
Line 589... Line 598...
589
 
598
 
590
	static function trierColonnes(&$enregistrements) {
599
	static function trierColonnes(&$enregistrements) {