'test');
//$query = apachesolr_drupal_query($name, $params);
//$result = apachesolr_do_query($query);
die('test');
dsm('TEST');
//dsm($result);
/*
//Initialisation du batch
$batch = array(
'title' => t("Exporter les résultats d'une recherche"),
'operations' => array(
array(
'export_oai_telecharger_batch',
array('view'=>$view, 'request'=>$_GET)
), //'force_index'=>$force_index
),
'finished' => 'export_oai_telecharger_jdd_batch_finish',
'file' => drupal_get_path('module','export_oai').'/export_oai.inc',
);
//ATTENTION, SI LE BATCH N'EST PAS DANS UN .MODULE ON SPECIFIE OBLIGATOIREMENT L'ARGUMENT FILE DANS LA DEFINITION DU BATCH,
//SINON DRUPAL CONSIDERE QUE LES FONCTIONS APPELEES NE SONT PAS DANS LE SCOPE (SANS PREVENIR D'UNE ERREUR)
//batch_set($batch);
//batch_process('rechercher-jdd/telecharger');
*
return 'TEST';
}*/
/*
// Fonction d'export des élements d'un même réferentiel issus d'une recherche
function sandre_telecharger_jdd_batch($view, $request, $context){
if (!isset($context['sandbox']['current_page'])) {
$context['sandbox']['current_page'] = 0;
$context['sandbox']['total'] = 0;
$context['results']['format'] = $request['format'];
}
$view->current_page = $context['sandbox']['current_page'];
$view->pre_execute();
$view->items_per_page = 100;
$view->execute();
if($context['sandbox']['current_page'] == 0){
$context['results']['total'] = $view->total_rows;
$context['sandbox']['pages'] = ceil($view->total_rows/$view->items_per_page);
}
//====== Appel du WS Alpha à partir des résultats de la vue
if(!empty($view->result)){
$filter_cd_sandre='';
foreach($view->result as $row){
if(isset($row->ss_item_code) && $row->ss_item_code!=''){
$filter_cd_sandre.=''.$row->ss_item_code.'';
}
}
//$lbRef = $request['ss_lbref_sandre'];
//$cdRef = sandre_utils_getCdFromFormatedName($request['ss_lbref_sandre']);
$cdRef = $request['ss_cdref_sandre'];
if(is_array($cdRef)) $cdRef = array_shift($cdRef);
if(!isset($context['sandbox']['refConfig'])){
$refConfig = sandre_utils_getAllProperties($cdRef);
$context['sandbox']['refConfig'] = $refConfig;
$context['results']['refConfig'] = $refConfig;
}
else{
$refConfig = $context['sandbox']['refConfig'];
}
//dsm($refConfig);
$params = array(
"version"=>"1.3.0",
"service"=>"References",
"request"=>"getReferenceElements",
"outputFormat"=>$request['format'],
"CdReferentiel"=>$cdRef,
"outputSchema"=>"http://xml.sandre.eaufrance.fr/scenario/referentiel/".$refConfig['Version']."/sandre_sc_referentiel.xsd",
"Filter"=>"".$filter_cd_sandre."",
);
//Http query form the $params array
$http_query = drupal_http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, URL_WS_ALPHA_SANDRE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //tps max de connexion au service en seconde
curl_setopt($ch, CURLOPT_TIMEOUT, 120); //tps max de traitement
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$http_query);
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); //autoriser les redirections
curl_setopt( $ch, CURLOPT_MAXREDIRS, 5); //au max 5 redirection
curl_setopt($ch, CURLOPT_HEADER, false);
//curl_setopt( $ch, CURLINFO_HEADER_SIZE, true);
$r = curl_exec($ch);
$context['results']['data'][] = $r;
}
//Incrémentation du batch
$context['sandbox']['current_page']++;
$msg = '';
//$msg = $view->result[0]->ss_lbref_sandre .' : '. $view->result[0]->ss_libelle_sandre;
//$msg.= ' - '.$context['sandbox']['current_page'].'/'.$context['sandbox']['pages'];
$context['message'] = check_plain($msg);
if ($context['sandbox']['current_page'] != $context['sandbox']['pages']) {
$context['finished'] = $context['sandbox']['current_page'] / $context['sandbox']['pages'];
}
}
function sandre_telecharger_jdd_batch_finish($success, $results, $operations) {
//On aggrege les résulats
$output = '';
if(!empty($results['data'])){
//dsm($results);
$root_tag=$results['refConfig']['Nom'];
if($results['format'] == 'text/xml'){
$filename = 'public://export-data/export_'.time().'.xml';
foreach($results['data'] as $k=>$data){
$xml = simplexml_load_string($data);
//Cas des nomenclatures
if($results['refConfig']['name']=='NSA'){
if($k==0){
$dom = $xml;
$dom_file = dom_import_simplexml($dom);
}else{
foreach($xml->Referentiel as $node){
$element = dom_import_simplexml($node);
$element = $dom_file->ownerDocument->importNode($element, TRUE);
//$element = $dom->ownerDocument->importNode($node, true);
$dom_file->appendChild($element);
}
}
}
//Cas des autres référentiels alpha
else{
if($k==0){
$dom = $xml;
$dom->Referentiel->NbOccurrences = $results['total'];
$dom_file = dom_import_simplexml($dom->Referentiel);
}else{
foreach($xml->Referentiel->{$root_tag} as $node){
$element = dom_import_simplexml($node);
$element = $dom_file->ownerDocument->importNode($element, TRUE);
//$element = $dom->ownerDocument->importNode($node, true);
$dom_file->appendChild($element);
}
}
}
}
$output=$dom->asXML();
}
elseif($results['format'] == 'application/json'){
$filename = 'public://export-data/export_'.time().'.json';
foreach($results['data'] as $k=>$data){
$json = json_decode($data);
//Cas des nomenclatures
if($results['refConfig']['name']=='NSA'){
if($k==0){
$document = $json;
$ref = $document->Referentiel;
//On doit changer le type de la propriete "$document->Referentiel"
$document->Referentiel = array();
$document->Referentiel[] = $ref;
unset($ref);
}
else{
$document->Referentiel[]=$json->Referentiel;
}
}
//Cas des autres référentiels alpha
else{
if($k==0){
$document = $json;
$document->Referentiel->NbOccurrences = $results['total'];
}
else{
foreach($json->Referentiel->{$root_tag} as $node){
$document->Referentiel->{$root_tag}[]=$node;
}
}
}
}
$output=json_encode($document);
}
elseif($results['format'] == 'text/csv' || $results['format']=='sandre/simplexml'){
$filename = 'public://export-data/export_'.time().'.csv';
foreach($results['data'] as $k=>$data){
if($k==0){
$output=$data;
}
else{
$pos = strpos($output, "\n");
$output.= substr($data, $pos+1);
}
}
}
}
file_save_data($output, $filename, FILE_EXISTS_REPLACE);
if ($success) {
$wrapper = file_stream_wrapper_get_instance_by_uri($filename);
if ($wrapper instanceof DrupalLocalStreamWrapper) {
$path = $wrapper->getDirectoryPath() . '/' . file_uri_target($filename);
}
drupal_set_message("Votre export est disponible en suivant le lien suivant : ".l($filename, $path),'status');
}
else {
drupal_set_message("Erreur dans l'export",'error');
}
//On fait le ménage sur le répertoire en supprimant tout ce qui a plus de 7 jours.
$dir = drupal_realpath('public://export-data');
//On fait le ménage
$delai = 604800; // 7 jours
sandre_telecharger_jdd_remove_old_file($dir, $delai);
}
//Cette permet de supprimer un fichier s'il est plus vieux que le delai (10h par défaut)
function sandre_telecharger_jdd_remove_old_file($dir, $delai=36000){
$files = scandir($dir);
foreach($files as $key => $file){
if(substr($file,-3,3) == "xml" || substr($file,-3,3) == "csv" || substr($file,-4,4) == "json"){
//$crea_date = (int)@filectime($dir.'/'.$file);
$crea_date = exec ('stat -c %Y '. escapeshellarg ($dir.'/'.$file));
if((time() - $crea_date) > $delai){
@unlink($dir."/".$file);
}
}
}
}