| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 | 
							- <?php
 
- 	/** CONTACTPERSON / CONTACT **/
 
- 	//Récuperation d'une liste de contact
 
- 	Action::register('contact_contact_person_search',function(&$response){
 
- 		global $_;
 
- 		User::check_access('contact','read');
 
- 		// OPTIONS DE RECHERCHE, A ACTIVER POUR UNE RECHERCHE AVANCEE
 
- 		$query = 'SELECT * FROM '.ContactPerson::tableName().' WHERE 1';
 
- 		$data = array();
 
- 		//Recherche simple
 
- 		if(!empty($_['filters']['keyword'])){
 
- 			$query .= ' AND (name LIKE ? OR firstname LIKE ?)';
 
- 			$data[] = '%'.$_['filters']['keyword'].'%';
 
- 			$data[] = '%'.$_['filters']['keyword'].'%';
 
- 		}
 
- 		//Recherche avancée
 
- 		if(isset($_['filters']['advanced'])) filter_secure_query($_['filters']['advanced'],array('name','firstname','job','civility','state','phone','mail','scope','uid','comment','tag'),$query,$data);
 
- 		//Tri des colonnes
 
- 		if(isset($_['sort'])) sort_secure_query($_['sort'],array('name','firstname','job','civility','state','phone','mail','scope','uid','tag'),$query,$data);
 
- 		$pageNumber =  20;
 
- 		if($_['export'] == 'true') $pageNumber = 5000;
 
- 		//Pagination
 
- 		$response['pagination'] = ContactPerson::paginate($pageNumber,(!empty($_['page'])?$_['page']:0),$query,$data);
 
- 		$contactpersons = ContactPerson::staticQuery($query,$data,true,0);
 
- 		$ids = array();
 
- 		foreach($contactpersons as $contactperson)
 
- 			$ids[] = $contactperson->id;
 
- 		$contactInfos = array();
 
- 		if(!empty($ids)){
 
- 			foreach (Contact::loadAll(array('scope'=>'contact_person','uid:IN'=>$ids)) as $contact) {
 
- 				if(empty($contactInfos[$contact->uid])) $contactInfos[$contact->uid] = array();
 
- 				$contactInfos[$contact->uid][] = $contact;
 
- 			}
 
- 		}
 
- 		$response['rows'] = array();
 
- 		foreach($contactpersons as $contactperson){
 
- 			$row = $contactperson->toArray();
 
- 			$row['civility'] = ContactPerson::civilities($row['civility']);
 
- 			$row['fullname'] = $contactperson->fullName();
 
- 			$row['phones'] = array();
 
- 			$row['mails'] = array();
 
- 			$row['tag'] = $contactperson->getTags();
 
- 			$row['hasTag'] = !empty($row['tag']);
 
- 			$row['rawphones'] = array();
 
- 			$row['rawmails'] = array();
 
- 			if(!empty($contactInfos[$contactperson->id])){
 
- 				foreach ($contactInfos[$contactperson->id] as $key => $contact) {
 
- 					if(in_array($contact->type ,array(Contact::PHONE,Contact::MOBILE))){
 
- 						$row['phones'][] = $contact->toArray();
 
- 						$row['rawphones'][] = $contact->value;
 
- 					}else if(in_array($contact->type ,array(Contact::PERSONAL_MAIL,Contact::PROFESSIONAL_MAIL))){
 
- 						$row['mails'][] = $contact->toArray();
 
- 						$row['rawmails'][] = $contact->value;
 
- 					}
 
- 				}
 
- 			}
 
- 			if($_['export'] == 'true'){
 
- 				$row['rawphones'] = implode(', ',$row['rawphones']);
 
- 				$row['rawmails'] = implode(', ',$row['rawmails']);
 
- 				$row['created'] = date('d-m-Y',$row['created']);
 
- 				$row['updated'] = date('d-m-Y',$row['updated']);
 
- 				$row['name'] = html_entity_decode($row['name']);
 
- 				$row['firstname'] = html_entity_decode($row['firstname']);
 
- 				$row['job'] = html_entity_decode($row['job']);
 
- 				$row['tag'] = implode(',',$row['tag']);
 
- 				$row['comment'] = html_entity_decode($row['comment']);
 
- 			}
 
- 			$row['avatar'] = $row['avatar'] = 'action.php?action=contact_avatar_load&path='.base64_encode($contactperson->avatar());
 
- 			$response['rows'][] = $row;
 
- 		}
 
- 		/* Mode export */
 
- 		if($_['export'] == 'true'){
 
- 			$fieldsMapping = array();
 
- 			foreach (ContactPerson::fields(false) as $key => $value)
 
- 				$fieldsMapping[$value['label']] = $key;
 
- 			$fieldsMapping['Téléphones'] = 'rawphones';
 
- 			$fieldsMapping['E-mails'] = 'rawmails';
 
- 			$stream = Excel::exportArray($response['rows'],$fieldsMapping ,'Export');
 
- 			File::downloadStream($stream,'export-contacts-'.date('d-m-Y').'.xlsx');
 
- 			exit();
 
- 		}
 
- 	});
 
- 	Action::register('contact_contact_search',function(&$response){
 
- 		global $_;
 
- 		User::check_access('contact','read');
 
- 		$response['rows'] = array();
 
- 		foreach (Contact::loadAll(array('scope'=>$_['scope'],'uid'=>$_['uid'])) as $key => $contact) {
 
- 			$response['rows'][] = $contact->toArray();
 
- 		}
 
- 	});
 
- 	//Ajout ou modification d'élément contact
 
- 	Action::register('contact_contact_person_save',function(&$response){
 
- 		global $_,$myFirm;
 
- 		User::check_access('contact','edit');
 
- 		$item = ContactPerson::provide();
 
- 		$oldItem = clone $item;
 
- 		$item->name = $_['name'];
 
- 		$item->firstname = $_['firstname'];
 
- 		$item->job = $_['job'];
 
- 		$item->civility = $_['civility'];
 
- 		$item->setTags($_['tag']);
 
- 		$item->state = ContactPerson::ACTIVE;
 
- 		//$item->phone = $_['phone'];
 
- 		//$item->mail = $_['mail'];
 
- 		$item->scope = $_['scope'];
 
- 		$item->uid = $_['uid'];
 
- 		$item->save();
 
- 		History::entityChange('contactperson',$oldItem,$item);
 
- 		if(empty($item->uid)){
 
- 			$item->uid = $item->id;
 
- 			$item->save();
 
- 		}
 
- 		//Gestion des champs dynamiques
 
- 		if($myFirm->has_plugin('fr.core.dynamicform')){
 
- 			Plugin::need('dynamicform/DynamicForm');
 
- 			Dynamicform::record('contact-form',array(
 
- 				'scope'=>'contact_person',
 
- 				'uid'=>$item->id
 
- 			),$_);
 
- 		}
 
- 		Contact::delete(array('scope'=>$item->scope,'uid'=>$item->uid));
 
- 		if(!empty($_['contacts'])){
 
- 			$contacts = json_decode(base64_decode($_['contacts']),true);
 
- 			foreach ($contacts as $line) {
 
- 				$contact = new Contact();
 
- 				$contact->scope = 'contact_person';
 
- 				$contact->uid = $item->id;
 
- 				$contact->type = $line["type"];
 
- 				$contact->value = $line["value"];
 
- 				$contact->save();
 
- 			}
 
- 		}
 
- 		$response = $item->toArray();
 
- 	});
 
- 	Action::register('contact_avatar_load',function(&$response){
 
- 			global $myUser,$_;
 
- 			User::check_access('contact','read');
 
- 			$_['path'] = str_replace("..", "", base64_decode($_['path']));
 
- 			File::downloadFile($_['path']);
 
- 	});
 
- 	//Suppression d'élement contact
 
- 	Action::register('contact_contact_person_delete',function(&$response){
 
- 		global $_;
 
- 		User::check_access('contact','delete');
 
- 		if(empty($_['id']) || !is_numeric($_['id'])) throw new Exception("Identifiant incorrect");
 
- 		ContactPerson::deleteById($_['id']);
 
- 	});
 
- 	//Sauvegarde des configurations de Annuaire de contacts
 
- 	Action::register('contact_setting_save',function(&$response){
 
- 		global $_,$conf;
 
- 		User::check_access('contact','configure');
 
- 		//Si input file "multiple", possibilité de normaliser le
 
- 		//tableau $_FILES récupéré avec la fonction => normalize_php_files();
 
- 		foreach(Configuration::setting('contact') as $key=>$value){
 
- 			if(!is_array($value)) continue;
 
- 			$allowed[] = $key;
 
- 		}
 
- 		foreach ($_['fields'] as $key => $value) {
 
- 			if(in_array($key, $allowed))
 
- 				$conf->put($key,$value);
 
- 		}
 
- 	});
 
- ?>
 
 
  |