<?php

/*************************************************************************************************/
/*********************************  FONCTIONS POUR L'AFFICHAGE  **********************************/
/*************************************************************************************************/

if (!function_exists('mb_str_pad')) {
    function 
mb_str_pad($input, $pad_length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT, $encoding = 'UTF-8')
    {
        
$input_length = mb_strlen($input, $encoding);
        
$pad_string_length = mb_strlen($pad_string, $encoding);
    
        if (
$pad_length <= 0 || ($pad_length - $input_length) <= 0) {
            return 
$input;
        }
    
        
$num_pad_chars = $pad_length - $input_length;
    
        switch (
$pad_type) {
            case 
STR_PAD_RIGHT:
                
$left_pad = 0;
                
$right_pad = $num_pad_chars;
                break;
    
            case 
STR_PAD_LEFT:
                
$left_pad = $num_pad_chars;
                
$right_pad = 0;
                break;
    
            case 
STR_PAD_BOTH:
                
$left_pad = floor($num_pad_chars / 2);
                
$right_pad = $num_pad_chars - $left_pad;
                break;
        }
    
        
$result = '';
        for (
$i = 0; $i < $left_pad; ++$i) {
            
$result .= mb_substr($pad_string, $i % $pad_string_length, 1, $encoding);
        }
        
$result .= $input;
        for (
$i = 0; $i < $right_pad; ++$i) {
            
$result .= mb_substr($pad_string, $i % $pad_string_length, 1, $encoding);
        }
    
        return 
$result;
    }
}


function 
printLine($row) {
    echo 
'|' . mb_str_pad($row->id, 5) . '|' .mb_str_pad(mb_substr($row->titre, 0,51), 51) . '|' .mb_str_pad($row->annee, 5) . '|' .mb_str_pad($row->coloration_id, 14) . '|'. "\n";
    echo 
"+" . str_repeat('-', 78)."+\n";
}
function 
printHeader($meta) {
    
$str = $meta->total . ' Éléments au total. Affichage de la page ' . $meta->current_page . ' sur ' . $meta->last_page;
    echo 
$str . "\n+" . str_repeat('-', 78)."+\n";
    echo 
'|' . mb_str_pad('ID', 5) . '|' .mb_str_pad('Titre', 51) . '|' .mb_str_pad('Année', 5) . '|' .mb_str_pad('Coloration', 14) . '|'. "\n";
    echo 
"+" . str_repeat('-', 78)."+\n";
}


/*************************************************************************************************/
/**************************************  UTILISATION API  ****************************************/
/*************************************************************************************************/

require_once('DIAZ_API.php');
require_once(
'config.inc.php'); // Définition des constantes DIAZ_LOGIN et DIAZ_PASS

$diaz = new DIAZ_API('https://structure.diaz3.diazinteregio.org/api/v0/', 'structure.diaz3.diazinteregio.org');
$diaz->login(DIAZ_LOGIN, DIAZ_PASS);

/*************************************************************************************************/


echo "/* Listing des format d'affichage ****************************************************************/\n";
$retData = $diaz->getListeFichier('lst_format/documentaire');
echo 
"+" . str_repeat('-', 57)."+\n";
echo 
'|' . mb_str_pad(mb_substr('Liste des formats d\'affichage', 0,57), 57) . '|'. "\n";
echo 
"+" . str_repeat('-', 57)."+\n";
echo 
'|' . mb_str_pad('id', 5) . '|' .mb_str_pad(mb_substr('label', 0,51), 51) . '|'. "\n";
echo 
"+" . str_repeat('-', 57)."+\n";
foreach(
$retData->data as $row) {
    echo 
'|' . mb_str_pad($row->id, 5) . '|' .mb_str_pad(mb_substr($row->label, 0,51), 51) . '|'. "\n";
}
echo 
"+" . str_repeat('-', 57)."+\n";


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/* Listing des fiches documentaire ***************************************************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10
          
);
$retData = $diaz->getListeFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/* Listing des fiches documentaire avec une recherche en texte intégral **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 2,
                
'per_page' => 10,
                
'searchType' => 'fulltext',
                
'q' => 'paris',
                
'sort' => '2:a' // Tri selon le champ d'id 2 (titre) ascendant
          
);
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/* Listing des fiches documentaire est_publie=1 (Version recherche par champ) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'field',
                
'searchByField' => ['field_id' => 64, 'value' => 1],
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}

/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/* Listing des fiches documentaire est_publie=1 (Version recherche avancée) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'advanced',
                
'advancedSearch' => ['chain_op' => null, 'field_id' => 64, 'op' => 'equals', 'value' => 1]
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/* Listing des fiches documentaire video_numerique <> '' Version recherche avancée **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'advanced',
                
'advancedSearch' => ['chain_op' => null, 'field_id' => 58, 'op' => 'notequal', 'value' => ""]
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*droits_internes_id = 3 Version recherche par champ (format texte) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'field',
                
'searchByField'=>['field_id'=>48,'value'=>'2 - à rechercher']
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}


/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*droits_internes_id IN [3, 6, 8, 10] Version recherche avancée (format texte) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'advanced',
                
'advancedSearch'=>[['chain_op' => null, 'field_id' => 48, 'op' => 'equals', 'value' => '2 - à rechercher'],
                                   [
'chain_op' => 'or', 'field_id' => 48, 'op' => 'equals', 'value' => '5 - accord écrit préalable (R. AYD)'],
                                   [
'chain_op' => 'or', 'field_id' => 48, 'op' => 'equals', 'value' => '7 - droits réservés'],
                                   [
'chain_op' => 'or', 'field_id' => 48, 'op' => 'equals', 'value' => '9 - cinémathèque']]
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}



/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*droits_internes_id IN [3, 6, 8, 10] Version QuickFilter **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'quickFilter'=>[['field_id' => 48, 'value' => 3],
                                [
'field_id' => 48, 'value' => 6],
                                [
'field_id' => 48, 'value' => 8],
                                [
'field_id' => 48, 'value' => 10]]
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}




/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*Listing des fiches documentaire resume LIKE (%[seq:%) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'field',
                
'searchByField'=>['field_id'=>17, 'value' => '[seq:']
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}




/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*Listing des séquences pour une fiche doc 18059 **************************/\n";
$doc_id = 18059;
$retData = $diaz->getListeFichier('documentaire/' . $doc_id . '/sequences');
foreach(
$retData->data as $row) {
    
var_export($row);
    echo 
"\n";
    echo 
"\n";
}




/*************************************************************************************************/

echo "\n\n\n\n";

/*************************************************************************************************/

echo "/*Listing des fiches documentaire sequence.id IS NOT NULL  (Sous réserve que l'indexation diaz soit correcte....) **************************/\n";
$params = array(
                
'df' => 20, // Format d'affichage : permet de choisir les champs à retourner. Le plus simple est de le créer avec l'IHM DIAZ.
                
'page' => 1,
                
'per_page' => 10,
                
'searchType' => 'advanced',
                
'advancedSearch'=>[['chain_op'=>null, 'field_id'=>57, 'op'=>'notequal', 'value'=>'']]
          );
$retData = $diaz->getSearchFichier('documentaire', $params);
printHeader($retData->meta);
foreach(
$retData->data as $row) {
    
printLine($row);
}



$diaz->logout();

/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/
/*************************************************************************************************/



Erreur : 401 (https://mira.diaz3.diazinteregio.org/api/v0/https://mira.diaz3.diazinteregio.org/api/v0/auth/login)
''