Browse Source

broutilles et petits bugs

v2
kent1@arscenic.info 6 years ago
parent
commit
8f08750eef
  1. 56
      action/getid3_appliquer_cover_defaut.php
  2. 23
      action/getid3_infos.php
  3. 15
      action/getid3_verifier_binaires.php
  4. 33
      base/getid3_base.php
  5. 34
      demo/test_id3_fonctions.php
  6. 82
      formulaires/editer_id3.php
  7. 9
      genie/getid3_taches_generales.php
  8. 76
      getid3_administrations.php
  9. 26
      getid3_fonctions.php
  10. 138
      getid3_pipelines.php
  11. 85
      inc/getid3_ecrire_infos.php
  12. 259
      inc/getid3_recuperer_infos.php
  13. 42
      inc/getid3_verifier_binaires.php
  14. 71
      inc/recuperer_id3.php
  15. 16
      metadata/audio.php
  16. 14
      metadata/flv.php
  17. 14
      metadata/video.php
  18. 20
      notifications/getid3_verifier_binaires.php

56
action/getid3_appliquer_cover_defaut.php

@ -9,60 +9,62 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function action_getid3_appliquer_cover_defaut(){
if(!autoriser('webmestre'))
function action_getid3_appliquer_cover_defaut() {
if (!autoriser('webmestre')) {
return false;
}
if(!strlen($cover_defaut = lire_config('getid3/cover_defaut','')) > 1)
if (!strlen($cover_defaut = lire_config('getid3/cover_defaut', '')) > 1) {
return false;
}
$documents_modifs = array();
$id_document = _request('arg');
$nb_modifs = 0;
if(is_numeric($id_document)){
if(sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)) == 0)
if (is_numeric($id_document)) {
if (sql_getfetsel('id_vignette', 'spip_documents', 'id_document='.intval($id_document)) == 0) {
$documents_modifs[] = $id_document;
}else{
}
} else {
$sons = array('mp3');
$documents = sql_select('id_document','spip_documents','id_vignette=0 AND '.sql_in('extension', $sons));
while($document = sql_fetch($documents)){
$documents = sql_select('id_document', 'spip_documents', 'id_vignette=0 AND '.sql_in('extension', $sons));
while ($document = sql_fetch($documents)) {
$documents_modifs[] = $document['id_document'];
}
}
if(count($documents_modifs) > 0){
if (count($documents_modifs) > 0) {
include_spip('inc/documents');
include_spip('inc/distant');
include_spip('inc/joindre_document');
include_spip('action/editer_document');
$cover_defaut = find_in_path(copie_locale($cover_defaut));
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
list($extension,$arg) = fixer_extension_document($cover_defaut);
list($extension, $arg) = fixer_extension_document($cover_defaut);
$cover_ajout = array(array('tmp_name'=>$cover_defaut,'name'=> basename($cover_defaut)));
foreach($documents_modifs as $document_modif){
$ajoute = $ajouter_documents($id_vignette,$cover_ajout,'',0,'vignette');
foreach ($documents_modifs as $document_modif) {
$ajoute = $ajouter_documents($id_vignette, $cover_ajout,'',0,'vignette');
if (is_numeric(reset($ajoute))
AND $id_vignette = reset($ajoute)){
document_modifier($document_modif,array('id_vignette'=>$id_vignette));
and $id_vignette = reset($ajoute)) {
document_modifier($document_modif, array('id_vignette' => $id_vignette));
$nb_modifs++;
}
}
}
if($redirect = _request('redirect')){
$redirect = parametre_url(urldecode($redirect),
'modifs', $nb_modifs, '&');
if ($redirect = _request('redirect')) {
$redirect = parametre_url(urldecode($redirect), 'modifs', $nb_modifs, '&');
include_spip('inc/headers');
redirige_par_entete($redirect);
}else
} else {
return $nb_modifs;
}
}
?>

23
action/getid3_infos.php

@ -9,31 +9,30 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
function action_getid3_infos_dist(){
function action_getid3_infos_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
if (!intval($arg)){
spip_log("action_getid3_infos_dist incompris: " . $arg);
if (!intval($arg)) {
spip_log('action_getid3_infos_dist incompris: ' . $arg, 'getid3');
return;
}
else{
} else {
action_getid3_infos_post($arg);
if(_request('redirect')){
$redirect = str_replace('&','&',urldecode(_request('redirect')));
if (_request('redirect')) {
$redirect = str_replace('&', '&', urldecode(_request('redirect')));
$GLOBALS['redirect'] = $redirect;
}
}
}
function action_getid3_infos_post($id_document){
$recuperer_infos = charger_fonction('getid3_recuperer_infos','inc');
function action_getid3_infos_post($id_document) {
$recuperer_infos = charger_fonction('getid3_recuperer_infos', 'inc');
$infos = $recuperer_infos($id_document);
return $infos;
}
?>

15
action/getid3_verifier_binaires.php

@ -9,28 +9,29 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
/**
* Action de vérification des binaires
*/
function action_getid3_verifier_binaires_dist(){
function action_getid3_verifier_binaires_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
include_spip('inc/autoriser');
if(autoriser('configurer')){
$verifier_binaires = charger_fonction('getid3_verifier_binaires','inc');
if (autoriser('configurer')) {
$verifier_binaires = charger_fonction('getid3_verifier_binaires', 'inc');
$verifier_binaires(true);
}
if(_request('redirect')){
$redirect = str_replace('&','&',urldecode(_request('redirect')));
if (_request('redirect')) {
$redirect = str_replace('&', '&', urldecode(_request('redirect')));
include_spip('inc/headers');
redirige_par_entete($redirect);
}
}
?>

33
base/getid3_base.php

@ -11,11 +11,13 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Insertion dans le pipeline declarer_tables_interfaces (SPIP)
*
*
* Déclarer les interfaces : on ajoute les champs de la table spip_documents
*
* @pipeline declarer_tables_interfaces
@ -24,42 +26,42 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return array
* Déclarations d'interface pour le compilateur
*/
function getid3_declarer_tables_principales($tables_principales){
function getid3_declarer_tables_principales($tables_principales) {
$tables_principales['spip_documents']['field']['duree'] = "VARCHAR(255) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['bitrate'] = "INTEGER NOT NULL";
$tables_principales['spip_documents']['field']['bitrate'] = 'INTEGER NOT NULL';
$tables_principales['spip_documents']['field']['hasvideo'] = "VARCHAR(3) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['hasaudio'] = "VARCHAR(3) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['framecount'] = "INTEGER";
$tables_principales['spip_documents']['field']['framerate'] = "FLOAT";
$tables_principales['spip_documents']['field']['videobitrate'] = "INTEGER";
$tables_principales['spip_documents']['field']['framecount'] = 'INTEGER';
$tables_principales['spip_documents']['field']['framerate'] = 'FLOAT';
$tables_principales['spip_documents']['field']['videobitrate'] = 'INTEGER';
$tables_principales['spip_documents']['field']['videocodec'] = "VARCHAR(255) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['videocodecid'] = "VARCHAR(255) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['audiobitrate'] = "INTEGER NOT NULL";
$tables_principales['spip_documents']['field']['audiobitrate'] = 'INTEGER NOT NULL';
$tables_principales['spip_documents']['field']['audiobitratemode'] = "text DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['audiosamplerate'] = "INTEGER NOT NULL";
$tables_principales['spip_documents']['field']['audiosamplerate'] = 'INTEGER NOT NULL';
$tables_principales['spip_documents']['field']['audiochannels'] = "text DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['audiocodec'] = "VARCHAR(255) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['audiocodecid'] = "VARCHAR(255) DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['encodeur'] = "text DEFAULT '' NOT NULL";
$tables_principales['spip_documents']['field']['bits'] = "INTEGER NOT NULL";
$tables_principales['spip_documents']['field']['bits'] = 'INTEGER NOT NULL';
return $tables_principales;
}
/**
* Insertion dans le pipeline declarer_tables_objets_sql (SPIP)
*
*
* On ajoute nos champs dans les champs editables de la table spip_documents
*
*
* @pipeline declarer_tables_objets_sql
* @param array $tables
* Description des tables
* @return array
* Description complétée des tables
*/
function getid3_declarer_tables_objets_sql($tables){
function getid3_declarer_tables_objets_sql($tables) {
$tables['spip_documents']['champs_editables'][] = 'duree';
$tables['spip_documents']['champs_editables'][] = 'bitrate';
$tables['spip_documents']['champs_editables'][] = 'hasvideo';
@ -77,7 +79,6 @@ function getid3_declarer_tables_objets_sql($tables){
$tables['spip_documents']['champs_editables'][] = 'audiochannels';
$tables['spip_documents']['champs_editables'][] = 'encodeur';
$tables['spip_documents']['champs_editables'][] = 'bits';
return $tables;
}
?>

34
demo/test_id3_fonctions.php

@ -8,16 +8,18 @@
* 2008-2013 - Distribué sous licence GNU/GPL
*
* Fichier de fonctions spécifique au squelette demo/test_id3.html
*
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Récupération des informations contenues dans les id3
* et affichage pour tester (les données sont enregistrées en base)
*
* @param $id_document int
*
* @param $id_document int
* identifiant numérique du document en base
* @param $retour boolean
* si true, retourne un affichage html
@ -25,25 +27,25 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return $output string|array
* l'ensemble des infos id3 du document en fonction du paramètre $retour ci dessus
*/
function recuperer_id3_doc($id_document,$retour=true){
$recuperer_id3 = charger_fonction('getid3_recuperer_infos','inc');
$fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document));
if($fichier){
function recuperer_id3_doc($id_document, $retour = true) {
$recuperer_id3 = charger_fonction('getid3_recuperer_infos', 'inc');
$fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($id_document));
if ($fichier) {
include_spip('inc/documents');
$fichier = get_spip_doc($fichier);
if(file_exists($fichier)){
if (file_exists($fichier)) {
$id3_content = $recuperer_id3($fichier);
if($retour){
if ($retour) {
$output = '';
foreach($id3_content as $cle => $val){
if(preg_match('/cover/',$cle)){
foreach ($id3_content as $cle => $val) {
if (preg_match('/cover/', $cle)) {
$output .= ($val) ? '<img src='.url_absolue($val).' /><br /><br />' : '';
}else{
} else {
$output .= ($val) ? _T('getid3:info_'.$cle).' '.$val.'<br />' : '';
}
}
}else{
} else {
$output = $id3_content;
}
return $output;
@ -51,5 +53,3 @@ function recuperer_id3_doc($id_document,$retour=true){
}
return false;
}
?>

82
formulaires/editer_id3.php

@ -2,37 +2,41 @@
/**
* Plugin GetID3
* Gestion des métadonnées de fichiers sonores et vidéos directement dans SPIP
*
*
* Auteurs :
* kent1 (http://www.kent1.info - kent1@arscenic.info), BoOz
* 2008-2013 - Distribué sous licence GNU/GPL
*
*
* Formulaire d'édition des tags ID3 d'un fichier sonore
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement des donnees du formulaire
*
* @param int $id
* @param int $id
* l'id du document
* @return array $valeurs
*/
function formulaires_editer_id3_charger($id,$retour=''){
function formulaires_editer_id3_charger($id, $retour = '') {
$valeurs = array();
if(!function_exists('lire_config'))
$config_id3 = lire_config('getid3',array());
$infos_doc = sql_fetsel('extension,distant,fichier','spip_documents','id_document='.intval($id));
if(!in_array($infos_doc['extension'],lire_config('getid3_write',array('mp3'))))
if (!function_exists('lire_config')) {
$config_id3 = lire_config('getid3', array());
}
$infos_doc = sql_fetsel('extension,distant,fichier', 'spip_documents', 'id_document='.intval($id));
if (!in_array($infos_doc['extension'], lire_config('getid3_write', array('mp3')))) {
$valeurs['message_erreur'] = _T('getid3:message_extension_invalide_ecriture');
else if($infos_doc['distant'] == 'oui')
} elseif ($infos_doc['distant'] == 'oui') {
$valeurs['message_erreur'] = _T('getid3:message_erreur_document_distant_ecriture');
if(isset($valeurs['message_erreur']))
}
if (isset($valeurs['message_erreur'])) {
$valeurs['editable'] = false;
else{
} else {
/**
* Récupération des tags habituels:
* - title
@ -43,17 +47,18 @@ function formulaires_editer_id3_charger($id,$retour=''){
*/
include_spip('inc/documents');
$fichier = get_spip_doc($infos_doc['fichier']);
$recuperer_id3 = charger_fonction('getid3_recuperer_infos','inc');
$valeurs = $recuperer_id3(false,$fichier,false,true);
$recuperer_id3 = charger_fonction('getid3_recuperer_infos', 'inc');
$valeurs = $recuperer_id3(false, $fichier, false, true);
foreach($valeurs as $valeur => $info){
if(preg_match('/cover/',$valeur)){
foreach ($valeurs as $valeur => $info) {
if (preg_match('/cover/', $valeur)) {
$valeurs['covers'][] = $info;
$valeurs['_hidden'] .= "<input type='hidden' name='old_cover' id='old_cover' value='$info' />";
}else
$valeurs['_hidden'] .= "<input type='hidden' name='old_cover' id='old_cover' value='$info' />";
} else {
$valeurs[$valeur] = $info;
}
}
if(!count($valeurs['covers']) && (strlen($config_id3['cover_defaut']) > 0)){
if (!count($valeurs['covers']) && (strlen($config_id3['cover_defaut']) > 0)) {
$valeurs['covers'][] = $config_id3['cover_defaut'];
$valeurs['_hidden'] .= "<input type='hidden' name='old_cover' id='old_cover' value='".$config_id3['cover_defaut']."' />";
$valeurs['message_cover_defaut'] = _T('getid3:message_valider_cover_defaut');
@ -69,39 +74,40 @@ function formulaires_editer_id3_charger($id,$retour=''){
* @param int $id
* @return array
*/
function formulaires_editer_id3_traiter($id,$retour=''){
function formulaires_editer_id3_traiter($id, $retour = '') {
$valeurs = array();
$infos = array('title','artist','album','year','genre','comment');
foreach($infos as $info){
foreach ($infos as $info) {
$valeurs[$info] = _request($info);
}
$post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES'];
$files = null;
if (is_array($post)){
if (!($post['cover']['error'] == 4) && in_array($post['cover']['type'],array('image/png','image/jpeg','image/gif'))){
if (is_array($post)) {
if (!($post['cover']['error'] == 4)
&& in_array($post['cover']['type'], array('image/png','image/jpeg','image/gif'))) {
include_spip('inc/getdocument');
$dest = _DIR_TMP.$post['cover']['name'];
deplacer_fichier_upload($post['cover']['tmp_name'],$dest);
deplacer_fichier_upload($post['cover']['tmp_name'], $dest);
$files[] = $dest;
}elseif(_request('old_cover')){
$files[] = _request('old_cover');
}
}
$ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
$err = $ecrire_id3($id,$valeurs,$files);
} elseif (_request('old_cover')) {
$files[] = _request('old_cover');
}
}
if(is_array($files)){
foreach($files as $file){
$ecrire_id3 = charger_fonction('getid3_ecrire_infos', 'inc');
$ecrire_id3($id,$valeurs,$files);
$res = array();
if (is_array($files)) {
foreach ($files as $file) {
supprimer_fichier($file);
}
}
if($retour){
if ($retour) {
$res['redirect'] = $retour;
}
$res['editable'] = true;
$res['message_ok'] = _T('getid3:message_fichier_maj');
return $res;
}
}

9
genie/getid3_taches_generales.php

@ -10,7 +10,9 @@
* @package SPIP\GetID3\Crons
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction appelée par le génie de SPIP à intervalle régulier
@ -21,10 +23,9 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return
* @param object $time
*/
function genie_getid3_taches_generales($time){
$verifier_binaires = charger_fonction('getid3_verifier_binaires','inc');
function genie_getid3_taches_generales($time) {
$verifier_binaires = charger_fonction('getid3_verifier_binaires', 'inc');
$verifier_binaires(true);
return 1;
}
?>

76
getid3_administrations.php

@ -12,7 +12,9 @@
* @package SPIP\GetID3\Installation
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Installation/maj : création des champs manquants dans spip_documents et préconfiguration
@ -23,9 +25,9 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
*/
function getid3_upgrade($nom_meta_base_version,$version_cible){
function getid3_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(
array('maj_tables',array('spip_documents')),
array('getid3_verifier_binaires',array())
@ -45,22 +47,22 @@ function getid3_upgrade($nom_meta_base_version,$version_cible){
$maj['0.5.0'] = array(
array('maj_tables',array('spip_documents'))
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de suppression du plugin
*
* Supprime les différentes métas en base :
*
* Supprime les différentes métas en base :
* -* configuration;
* -* installation;
* -* les formats de tags que l'on peut écrire;
* -* si on est en safe mode;
* -* vorbiscomment non disponible;
* -* metaflac non disponible;
*
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
@ -77,67 +79,71 @@ function getid3_vider_tables($nom_meta_base_version) {
/**
* Fonction de vérification de la présence des fichiers binaires présents
*
*
* @return void
*/
function getid3_verifier_binaires(){
$getid3_binaires = charger_fonction('getid3_verifier_binaires','inc');
function getid3_verifier_binaires() {
$getid3_binaires = charger_fonction('getid3_verifier_binaires', 'inc');
$getid3_binaires(true);
}
/**
* Fonction de mise en concordance de la base entre GetID3 et SPIPmotion
*
*
* @return void
*/
function getid3_upgrade_compat_spipmotion(){
$desc = sql_showtable('spip_documents', true, $connect);
function getid3_upgrade_compat_spipmotion() {
$desc = sql_showtable('spip_documents', true);
/**
* Soit on transfère les anciens canaux en audiochannels si le champs audiochannels existe
* Soit on fait juste un alter table
* Soit on fait juste un alter table
*/
if (is_array($desc['field']) && isset($desc['field']['canaux']) && isset($desc['field']['audiochannels'])) {
$res = sql_select("*","spip_documents","canaux > 0");
while($row = sql_fetch($res)){
sql_updateq('spip_documents',array('audiochannels'=>$row['canaux'],'canaux'=>0),'id_document='.intval($row['id_document']));
if (time() >= _TIME_OUT)
$res = sql_select('canaux,id_document', 'spip_documents', 'canaux > 0');
while ($row = sql_fetch($res)) {
sql_updateq('spip_documents', array('audiochannels' => $row['canaux'], 'canaux'=>0), 'id_document='.intval($row['id_document']));
if (time() >= _TIME_OUT) {
return;
}
}
sql_alter('TABLE spip_documents DROP canaux');
}else if(isset($desc['field']['canaux'])){
} elseif (isset($desc['field']['canaux'])) {
sql_alter("TABLE spip_documents CHANGE `canaux` `audiochannels` TEXT DEFAULT '' NOT NULL");
}
/**
* Soit on transfère les anciens bitrate_mode en audiobitratemode si le champs audiobitratemode existe
* Soit on fait juste un alter table
* Soit on fait juste un alter table
*/
if (is_array($desc['field']) && isset($desc['field']['bitrate_mode']) && isset($desc['field']['audiobitratemode'])) {
$res = sql_select("*","spip_documents","bitrate_mode != ''");
while($row = sql_fetch($res)){
sql_updateq('spip_documents',array('audiobitratemode'=>$row['bitrate_mode'],'bitrate_mode'=>''),'id_document='.intval($row['id_document']));
if (time() >= _TIME_OUT)
if (is_array($desc['field'])
&& isset($desc['field']['bitrate_mode'])
&& isset($desc['field']['audiobitratemode'])) {
$res = sql_select('*', 'spip_documents', "bitrate_mode != ''");
while ($row = sql_fetch($res)) {
sql_updateq('spip_documents', array('audiobitratemode' => $row['bitrate_mode'], 'bitrate_mode' => ''), 'id_document='.intval($row['id_document']));
if (time() >= _TIME_OUT) {
return;
}
}
sql_alter('TABLE spip_documents DROP bitrate_mode');
}else if(isset($desc['field']['bitrate_mode'])){
} elseif (isset($desc['field']['bitrate_mode'])) {
sql_alter("TABLE spip_documents CHANGE `bitrate_mode` `audiobitratemode` TEXT DEFAULT '' NOT NULL");
}
/**
* On crée le champs audiobitrate s'il n'existe pas
* On transfère les anciens bitrate en audiobitratemode dans les champs audiobitrate vides
*/
if(is_array($desc['field']) && !isset($desc['field']['audiobitrate'])) {
sql_alter("TABLE `spip_documents` ADD `audiobitrate` INT NOT NULL");
if (is_array($desc['field']) && !isset($desc['field']['audiobitrate'])) {
sql_alter('TABLE `spip_documents` ADD `audiobitrate` INT NOT NULL');
}
if (is_array($desc['field']) && isset($desc['field']['bitrate']) && isset($desc['field']['audiobitrate'])) {
$res = sql_select("*","spip_documents","audiobitrate = '' AND bitrate > 0");
while($row = sql_fetch($res)){
sql_updateq('spip_documents',array('audiobitrate'=>$row['bitrate']),'id_document='.intval($row['id_document']));
if (time() >= _TIME_OUT)
$res = sql_select('*', 'spip_documents', "audiobitrate = '' AND bitrate > 0");
while ($row = sql_fetch($res)) {
sql_updateq('spip_documents', array('audiobitrate' => $row['bitrate']), 'id_document = '.intval($row['id_document']));
if (time() >= _TIME_OUT) {
return;
}
}
}
}
?>

26
getid3_fonctions.php

@ -8,36 +8,38 @@
* 2008-2013 - Distribué sous licence GNU/GPL
*
* Les fonctions du plugin
*
*
* @package SPIP\GetID3\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Converti une durée en secondes en une durée affichable et lisible hh:mm:ss ou mm:ss
*
* @param int|float $temps_secondes
*
* @param int|float $temps_secondes
* le nombre de secondes
* @param string $format
* Le format de retour, par défaut false, peut prendre comme valeur iso8601
*/
function getid3_duree($temps_secondes,$format=false){
if(is_numeric($temps_secondes)){
function getid3_duree($temps_secondes, $format = false) {
if (is_numeric($temps_secondes)) {
$diff_hours = floor($temps_secondes/3600);
$temps_secondes -= $diff_hours * 3600;
$diff_hours = (($diff_hours >= 0) && ($diff_hours < 10)) ? '0'.$diff_hours : $diff_hours;
$diff_minutes = floor($temps_secondes/60);
$temps_secondes -= $diff_minutes * 60;
$diff_minutes = (($diff_minutes >= 0) && ($diff_minutes < 10)) ? '0'.$diff_minutes : $diff_minutes;
$temps_secondes = (($temps_secondes >= 0) && ($temps_secondes < 10)) ? '0'.floor($temps_secondes) : floor($temps_secondes);
if($format == 'iso8601')
if ($format == 'iso8601') {
return 'PT'.(($diff_hours > 0) ? $diff_hours.'H':'').(($diff_minutes > 0) ? $diff_minutes:'00').'M'.$temps_secondes.'S';
return $str = (($diff_hours > 0) ? $diff_hours.':':'').(($diff_minutes > 0) ? $diff_minutes:'00').':'.$temps_secondes;;
}
return (($diff_hours > 0) ? $diff_hours.':':'').(($diff_minutes > 0) ? $diff_minutes:'00').':'.$temps_secondes;
}
return false;
}
?>

138
getid3_pipelines.php

@ -10,107 +10,115 @@
* @package SPIP\GetID3\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Insertion dans le pipeline post_edition (SPIP)
*
*
* Récupération d'informations sur le document lors de son insertion en base
*
* @param array $flux
* @param array $flux
* Le contexte du pipeline
* @return array $flux
* @return array $flux
* Le contexte du pipeline ($flux) modifié
*/
function getid3_post_edition($flux){
if(in_array($flux['args']['operation'],array('ajouter_document','modifier'))){
function getid3_post_edition($flux) {
if (in_array($flux['args']['operation'], array('ajouter_document', 'modifier'))) {
static $getid3_done = false;
if(!$getid3_done){
if (!$getid3_done) {
$id_document = $flux['args']['id_objet'];
$son_modif_id3 = array("mp3,ogg,oga,flac");
$extensions_vignettes = array("png","gif","jpg");
$conf_id3 = lire_config('getid3/reecriture_tags',array());
$document = sql_fetsel("mode,fichier", "spip_documents","id_document=".sql_quote($id_document));
if($flux['args']['operation'] == 'ajouter_document'){
$son_modif_id3 = array('mp3','ogg','oga','flac');
$conf_id3 = lire_config('getid3/reecriture_tags', array());
$files = array();
$document = sql_fetsel('mode,fichier', 'spip_documents', 'id_document='.sql_quote($id_document));
if ($flux['args']['operation'] == 'ajouter_document') {
$getid3_done = true;
/**
* L'ajout est une vignette
* Insertion de la vignette automatiquement dans le mp3 si changement
*/
if(
$document['mode'] == 'vignette'
&& ($document_orig = sql_fetsel('distant,extension,fichier','spip_documents','id_vignette='.intval($id_document)))
if ($document['mode'] == 'vignette'
&& ($document_orig = sql_fetsel('distant,extension,fichier', 'spip_documents', 'id_vignette='.intval($id_document)))
&& ($document_orig['distant'] != 'oui')
&& in_array($document_orig['extension'],$son_modif_id3)
){
&& in_array($document_orig['extension'], $son_modif_id3)
) {
include_spip('inc/documents');
$fichier_orig = get_spip_doc($document_orig['fichier']);
$recuperer_id3 = charger_fonction('recuperer_id3','inc');
$recuperer_id3 = charger_fonction('recuperer_id3', 'inc');
$valeurs = $recuperer_id3($fichier_orig);
$files[] = get_spip_doc($document['fichier']);
foreach($valeurs as $valeur => $info){
if(preg_match('/cover/',$valeur) && (count($files) == 0))
foreach ($valeurs as $valeur => $info) {
if (preg_match('/cover/', $valeur) && (count($files) == 0)) {
$files[] = $info;
else
} else {
$valeurs[$valeur] = filtrer_entites($info);
}
}
/**
* On écrit les tags
*/
$ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
$err = $ecrire_id3($document_orig['id_document'],$valeurs,$files);
$ecrire_id3 = charger_fonction('getid3_ecrire_infos', 'inc');
$ecrire_id3($document_orig['id_document'], $valeurs, $files);
}
}
/**
* Mise à jour des tags des mp3 si besoin
*/
if($flux['args']['action'] == 'modifier'){
if ($flux['args']['action'] == 'modifier') {
$getid3_done = true;
if(in_any($extension,$son_modif_id3)){
if (in_any($extension, $son_modif_id3)) {
$update = false;
foreach($flux['data'] as $key => $value){
if(in_array($key,$conf_id3))
foreach ($flux['data'] as $key => $value) {
if (in_array($key, $conf_id3)) {
$update = true;
}
}
if(is_numeric($flux['data']['id_vignette']))
if (is_numeric($flux['data']['id_vignette'])) {
$update = true;
if($update){
}
if ($update) {
$files = null;
/**
* On récupère tout d'abord les anciens tags
*/
*/
include_spip('inc/documents');
$fichier = get_spip_doc($document['fichier']);
$recuperer_id3 = charger_fonction('recuperer_id3','inc');
$recuperer_id3 = charger_fonction('recuperer_id3', 'inc');
$valeurs = $recuperer_id3($fichier);
if(is_numeric($flux['data']['id_vignette']))
$files[] = get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($flux['data']['id_vignette'])));
foreach($valeurs as $valeur => $info){
if(preg_match('/cover/',$valeur) && (count($files) == 0))
if (is_numeric($flux['data']['id_vignette'])) {
$files[] = get_spip_doc(sql_getfetsel('fichier', 'spip_documents', 'id_document='.intval($flux['data']['id_vignette'])));
}
foreach ($valeurs as $valeur => $info) {
if (preg_match('/cover/', $valeur) && (count($files) == 0)) {
$files[] = $info;
else
} else {
$valeurs[$valeur] = $info;
}
}
if(isset($flux['data']['titre']) && in_array('titre',$conf_id3))
if (isset($flux['data']['titre']) && in_array('titre', $conf_id3)) {
$valeurs['title'] = $flux['data']['titre'];
if(isset($flux['data']['descriptif']) && in_array('descriptif',$conf_id3))
}
if (isset($flux['data']['descriptif']) && in_array('descriptif', $conf_id3)) {
$valeurs['comment'] = $flux['data']['descriptif'];
}
/**
* On écrit les tags
*/
$ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
$err = $ecrire_id3($id_document,$valeurs,$files);
$ecrire_id3 = charger_fonction('getid3_ecrire_infos', 'inc');
$ecrire_id3($id_document, $valeurs, $files);
}
}
}
@ -121,7 +129,7 @@ function getid3_post_edition($flux){
/**
* Insertion dans le pipeline post_edition (plugin medias)
*
*
* Ajouter le lien vers la récupération et la modif des id3
*
* @param array $flux
@ -129,8 +137,8 @@ function getid3_post_edition($flux){
* @return array $flux
* Le contexte du pipeline modifié
*/
function getid3_document_desc_actions($flux){
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/metadatas_document_desc_action',$flux['args']);
function getid3_document_desc_actions($flux) {
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/metadatas_document_desc_action', $flux['args']);
return $flux;
}
@ -142,29 +150,29 @@ function getid3_document_desc_actions($flux){
* @return L'array des taches complété
* @param array $taches_generales Un array des tâches du cron de SPIP
*/
function getid3_taches_generales_cron($taches_generales){
function getid3_taches_generales_cron($taches_generales) {
$taches_generales['getid3_taches_generales'] = 24*60*60;
return $taches_generales;
}
/**
* Insertion dans le pipeline recuperer_fond (SPIP)
*
*
* On affiche les informations du document
*
* @param array $flux
*
* @param array $flux
* Le contexte du pipeline
* @return array $flux
* Le contexte du pipeline modifié
*/
function getid3_recuperer_fond($flux){
if ($flux['args']['fond']=='modeles/document_desc'){
if(isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)){
$media = sql_getfetsel("media", "spip_documents","id_document=".intval($flux['args']['contexte']['id_document']));
if(in_array($media,array('audio','video')))
$flux['data']['texte'] .= recuperer_fond('prive/squelettes/inclure/prive_infos_media',$flux['args']['contexte']);
function getid3_recuperer_fond($flux) {
if ($flux['args']['fond'] == 'modeles/document_desc') {
if (isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)) {
$media = sql_getfetsel('media', 'spip_documents', 'id_document='.intval($flux['args']['contexte']['id_document']));
if (in_array($media, array('audio','video'))) {
$flux['data']['texte'] .= recuperer_fond('prive/squelettes/inclure/prive_infos_media', $flux['args']['contexte']);
}
}
}
return $flux;
}
?>

85
inc/getid3_ecrire_infos.php

@ -10,7 +10,9 @@
* Ecriture des tags ID3 ou vorbis
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Enregistre dans les fichiers sons les tags ID3
@ -25,57 +27,59 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* Un array correspondant aux types de tags à écrire
*/
function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$formats = array('id3v1', 'id3v2.3')){
if(!intval($id_document))
function inc_getid3_ecrire_infos($id_document, $infos = array(), $images = null, $formats = array('id3v1', 'id3v2.3')) {
if (!intval($id_document)) {
return false;
$document = sql_fetsel("fichier,distant,extension", "spip_documents","id_document=".intval($id_document));
if($document['distant'] != 'oui'){
}
$document = sql_fetsel('fichier,distant,extension', 'spip_documents', 'id_document='.intval($id_document));
if($document['extension'] == 'ogg'){
if ($document['distant'] != 'oui') {
if ($document['extension'] == 'ogg') {
$formats = array('vorbiscomment');
$infos['date'] = $infos['year'];
}else if($document['extension'] == 'flac'){
} elseif ($document['extension'] == 'flac') {
$formats = array('metaflac');
$infos['date'] = $infos['year'];
}
$err = $TagData = array();
include_spip('inc/documents');
$document_chemin = get_spip_doc($document['fichier']);
include_spip('getid3/getid3');
$getid3 = new getID3;
if(!$getid3)
if (!$getid3) {
return false;
}
include_spip('getid3/write');
$getid3->encoding = 'UTF-8';
$getid3->encoding_id3v1 = 'ISO-8859-1';
$getid3->option_tags_html = false;
$ecrire = new getid3_writetags;
$ecrire->filename = $document_chemin;
$ecrire->tagformats = $formats;
$ecrire->tag_encoding = 'UTF-8';
$ecrire->overwrite_tags = true;
$ecrire->remove_other_tags = false;
/**
* On utilise nos valeurs
*/
foreach ($infos as $info => $value) {
$TagData[$info][] = $value;
}
/**
* Ajout des images
*/
if(is_array($images)){
foreach ($images as $image){
if(!is_array($image) && strlen($image) > 0){
if (is_array($images)) {
foreach ($images as $image) {
if (!is_array($image) && strlen($image) > 0) {
$image_finale = array();
$image_finale['chemin'] = $image;
$image_finale['picturetypeid'] = '3';
$image_finale['description'] = 'Front Cover';
@ -83,15 +87,15 @@ function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$forma
$image_finale['mime'] = image_type_to_mime_type($image_infos[2]);
$image = $image_finale;
}
if(is_array($image)){
if($formats[0] != 'metaflac'){
if (is_array($image)) {
if ($formats[0] != 'metaflac') {
$TagData['attached_picture'][] = array(
'data' => file_get_contents($image['chemin']),
'picturetypeid' => $image['picturetypeid'],
'description' => $image['description'],
'mime' => $image['mime']
);
}else{
} else {
$TagData['attached_picture'][] = array(
'file' => $image['chemin'],
'picturetypeid' => $image['picturetypeid'],
@ -102,12 +106,13 @@ function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$forma
}
}
}
/**
* Le pipeline de pre_edition
* Avant l'écriture des tags dans le fichier
*/
$TagData = pipeline('pre_edition',
$TagData = pipeline(
'pre_edition',
array(
'args' => array(
'table' => 'spip_documents', // compatibilite
@ -120,37 +125,40 @@ function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$forma
'data' => $TagData
)
);
/**
* On écrit le tout
*/
$ecrire->tag_data = $TagData;
$ecrire->WriteTags();
/**
* Les warnings
*/
if (!empty($ecrire->warnings))
$err = array_merge($err,$ecrire->warnings);
/**
* Les erreurs
*/
if (!empty($ecrire->errors))
$err = array_merge($err,$ecrire->errors);
if (!empty($ecrire->warnings)) {
$err = array_merge($err, $ecrire->warnings);
}
/**
* Les erreurs
*/
if (!empty($ecrire->errors)) {
$err = array_merge($err, $ecrire->errors);
}
/**
* Modification de la taille du document en base
* Modification de la taille du document en base
* car elle peut être modifiée par l'ajout de tags ou de cover
*/
$taille = filesize($document_chemin);
include_spip('action/editer_document');
document_modifier($id_document, array('taille'=>$taille));
/**
* Le pipeline de post_edition du document
*/
pipeline('post_edition',
pipeline(
'post_edition',
array(
'args' => array(
'table' => 'spip_documents', // compatibilite
@ -166,4 +174,3 @@ function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$forma
}
return $err;
}
?>

259
inc/getid3_recuperer_infos.php

@ -9,15 +9,17 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Récupération des informations d'un document ou d'un fichier audio ou vidéo
*
*
* Si on a un id_document (en premier argument) on enregistre en base dans cette fonction
* Si on a seulement un chemin de fichier (en second argument), on retourne un tableau des metas
*
* @param int/bool $id_document
* @param int/bool $id_document
* Identifiant numérique duquel on doit récupérer les infos
* @param string/bool $fichier
* Chemin du fichier duquel on doit récupérer les infos
@ -29,85 +31,96 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* Les infos récupérées
*/
function inc_getid3_recuperer_infos($id_document=false,$fichier=null,$logo=false,$only_return=false){
if((!intval($id_document) && !isset($fichier)))
function inc_getid3_recuperer_infos($id_document = false, $fichier = null, $logo = false, $only_return = false) {
if ((!intval($id_document) && !isset($fichier))) {
return false;
if(!function_exists('lire_config'))
}
if (!function_exists('lire_config')) {
include_spip('inc/config');
if(!isset($fichier)){
}
if (!isset($fichier)) {
include_spip('inc/documents');
$document = sql_fetsel("*", "spip_documents","id_document=".intval($id_document));
$document = sql_fetsel('*', 'spip_documents', 'id_document='.intval($id_document));
$fichier = get_spip_doc($document['fichier']);
$extension = $document['extension'];
}else
$extension = strtolower(array_pop(explode('.',basename($fichier))));
}
/**
* Récupération des metas du fichier
*/
$recuperer_id3 = charger_fonction('recuperer_id3','inc');
$recuperer_id3 = charger_fonction('recuperer_id3', 'inc');
$infos = $recuperer_id3($fichier);
/**
* On enlève les infos vides
*/
if(strlen($document['titre']) > 0)
if (strlen($document['titre']) > 0) {
unset($infos['titre']);
}
if(strlen($document['descriptif']) > 0)
if (strlen($document['descriptif']) > 0) {
unset($infos['descriptif']);
}
foreach($infos as $key => $val){
if(!$val)
foreach ($infos as $key => $val) {
if (!$val) {
unset($infos[$key]);
}
}
/**
* Si les champs sont vides, on ne les enregistre pas
* Par contre s'ils sont présents dans le $_POST ou $_GET,
* on les utilise (fin de conversion où on récupère le titre et autres infos du document original)
*/
if(!function_exists('filtrer_entites'))
if (!function_exists('filtrer_entites')) {
include_spip('inc/filtres');
foreach(array('titre','descriptif','credit') as $champ){
if(isset($infos[$champ]))
}
foreach (array('titre','descriptif','credit') as $champ) {
if (isset($infos[$champ])) {
$infos[$champ] = filtrer_entites($infos[$champ]);
if(!isset($infos[$champ]))
}
if (!isset($infos[$champ])) {
$infos[$champ] = '';
if(is_null($infos[$champ]) OR ($infos[$champ]=='')){
if(_request($champ))
}
if (is_null($infos[$champ]) or ($infos[$champ]=='')) {
if (_request($champ)) {
$infos[$champ] = _request($champ);
else
unset($infos[$champ]);
} else {
unset($infos[$champ]);
}
}
}
/**
* Filesize tout seul est limité à 2Go
* cf http://php.net/manual/fr/function.filesize.php#refsect1-function.filesize-returnvalues
*/
if(($infos['taille'] = @intval(filesize($fichier))) == '2147483647')
$infos['taille'] = sprintf("%u", filesize($fichier));
if (($infos['taille'] = @intval(filesize($fichier))) == '2147483647') {
$infos['taille'] = sprintf('%u', filesize($fichier));
}
/**
* Si on a gis et que les fonctions de récupération de metadonnés nous ont renvoyé :
* -* lat = la latitude;
* -* lon = la longitude;
*
*
* Deux cas :
* -* Si on a un id_document numérique
* -* Si on a un id_document numérique
* -** On recherche si on a déjà un point lié au document et on le modifie
* -** Sinon on crée de nouvelles coordonnées
* -* Si on n'a pas d'id_document (cas des metadonnées récupérées par les fonctions metadatas/....php)
* -** On crée un point avec les coordonnées et on envoit dans le $_POST id_gis_meta
* -** On crée un point avec les coordonnées et on envoit dans le $_POST id_gis_meta
* pour que le point soit lié dans le pipeline post_edition
*/
if(defined('_DIR_PLUGIN_GIS') && !$only_return && is_numeric($infos['latitude']) && is_numeric($infos['longitude'])){
$zoom = lire_config('gis/zoom',4);
$config = @unserialize($GLOBALS['meta']['gis']);
if (defined('_DIR_PLUGIN_GIS')
&& !$only_return
&& is_numeric($infos['latitude'])
&& is_numeric($infos['longitude'])) {
$zoom = lire_config('gis/zoom', 4);
$c = array(
'titre' => $infos['titre'] ? $infos['titre'] : basename($fichier),
'lat'=> $infos['latitude'],
@ -117,33 +130,37 @@ function inc_getid3_recuperer_infos($id_document=false,$fichier=null,$logo=false
if (defined('_DIR_PLUGIN_GISGEOM')) {
$geojson = '{"type":"Point","coordinates":['.$infos['longitude'].','.$infos['latitude'].']}';
set_request('geojson',$geojson);
set_request('geojson', $geojson);
}
include_spip('action/editer_gis');
if(intval($id_document)){
if($id_gis = sql_getfetsel("G.id_gis","spip_gis AS G LEFT JOIN spip_gis_liens AS T ON T.id_gis=G.id_gis ","T.id_objet=" . intval($id_document) . " AND T.objet='document'")){
if (intval($id_document)) {
if ($id_gis = sql_getfetsel(
'G.id_gis',
'spip_gis AS G LEFT JOIN spip_gis_liens AS T ON T.id_gis=G.id_gis',
'T.id_objet=' . intval($id_document) . " AND T.objet='document'"
)) {
/**
* Des coordonnées sont déjà définies pour ce document => on les update
*/
revisions_gis($id_gis,$c);
}else{
*/
revisions_gis($id_gis, $c);
} else {
/**
* Aucune coordonnée n'est définie pour ce document => on les crée
*/
*/
$id_gis = insert_gis();
revisions_gis($id_gis,$c);
revisions_gis($id_gis, $c);
lier_gis($id_gis, 'document', $id_document);
}
}else{
} else {
/**
* Aucune coordonnée n'est définie pour ce document => on les crée
* On ajoute dans le $_POST id_gis_meta qui sera utilisable dans post_edition
*/
*/
$id_gis = insert_gis();
revisions_gis($id_gis,$c);
set_request('id_gis_meta',$id_gis);
revisions_gis($id_gis, $c);
set_request('id_gis_meta', $id_gis);
}
}
@ -153,33 +170,38 @@ function inc_getid3_recuperer_infos($id_document=false,$fichier=null,$logo=false
* -* titre
* -* descriptif
*/
if(isset($infos['title']))
$infos['titre'] = preg_replace('/_/',' ',utf8_encode($infos['title']));
else if(!isset($infos['title'])){
$titre = utf8_encode(strtolower(array_shift(explode('.',basename($fichier)))));
$infos['titre'] = preg_replace('/_/',' ',$titre);
if (isset($infos['title'])) {
$infos['titre'] = preg_replace('/_/', ' ', utf8_encode($infos['title']));
} elseif (!isset($infos['title'])) {
$titre = utf8_encode(strtolower(array_shift(explode('.', basename($fichier)))));
$infos['titre'] = preg_replace('/_/', ' ', $titre);
}
if(!isset($infos['descriptif'])){
if (!isset($infos['descriptif'])) {
/**
* Ne pas prendre les comments foireux d'itunes
*/
if(isset($infos['comments']) && !preg_match('/0000[a-b|0-9]{4}/',$infos['comments']))
if (isset($infos['comments']) && !preg_match('/0000[a-b|0-9]{4}/', $infos['comments'])) {
$infos['descriptif'] = utf8_encode($infos['comments']);
else{
if(isset($infos['artist']))
} else {
if (isset($infos['artist'])) {
$infos['descriptif'] .= utf8_encode($infos['artist'])."\n";
if(isset($infos['album']))
}
if (isset($infos['album'])) {
$infos['descriptif'] .= utf8_encode($infos['album'])."\n";
if(isset($infos['year']))
}
if (isset($infos['year'])) {
$infos['descriptif'] .= utf8_encode($infos['year'])."\n";
if(isset($infos['genre']))
}
if (isset($infos['genre'])) {
$infos['descriptif'] .= utf8_encode($infos['genre'])."\n";
if(isset($infos['track_number']))
}
if (isset($infos['track_number'])) {
$infos['descriptif'] .= utf8_encode($infos['track_number'])."\n";
if(isset($infos['comment']) && !preg_match('/0000[a-b|0-9]{4}/',$infos['comment']))
}
if (isset($infos['comment']) && !preg_match('/0000[a-b|0-9]{4}/', $infos['comment'])) {
$infos['descriptif'] .= "\n".utf8_encode($infos['comment'])."\n";
}
}
}
@ -190,104 +212,117 @@ function inc_getid3_recuperer_infos($id_document=false,$fichier=null,$logo=false
* On ne met en vignette de document que la première que l'on trouve
*/
$covers = array();
foreach($infos as $key=>$val){
if(preg_match('/cover/',$key))
foreach ($infos as $key => $val) {
if (preg_match('/cover/', $key)) {
$covers[] = $val;
}
}
$infos['credits'] = $infos['copyright_message']?$infos['copyright_message']:$infos['copyright'];
if(!$infos['audiobitrate'] && !$infos['hasvideo'])
if (!$infos['audiobitrate'] && !$infos['hasvideo']) {
$infos['audiobitrate'] = intval($infos['bitrate']);
if(isset($infos['encoded_by']))
}
if (isset($infos['encoded_by'])) {
$infos['encodeur'] = $infos['encoded_by'];
if((isset($infos['date']) OR isset($infos['original_release_time']) OR isset($infos['encoded_time']))){
if(preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/',$infos['date']))
}
if ((isset($infos['date']) or isset($infos['original_release_time'])
or isset($infos['encoded_time']))) {
if (preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $infos['date'])) {
$infos['date'] = $infos['date'];
else if(preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/',$infos['original_release_time']))
} elseif (preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $infos['original_release_time'])) {
$infos['date'] = $infos['original_release_time'];
else if(preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/',$infos['encoded_time']))
} elseif (preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}/', $infos['encoded_time'])) {
$infos['date'] = $infos['encoded_time'];
if(isset($valeurs['date']) && (strlen($valeurs['date'])=='10'))
}
if (isset($infos['date']) && (strlen($infos['date']) == '10')) {
$infos['date'] = $infos['date'].' 00:00:00';
}
}
/**
* Si on a du contenu dans les messages de copyright,
* Si on a du contenu dans les messages de copyright,
* on essaie de trouver la licence, si on a le plugin Licence
*
*
* Pour l'instant uniquement valable sur les CC
*/
if(defined('_DIR_PLUGIN_LICENCE') && ((strlen($infos['copyright_message']) > 0) OR strlen($infos['copyright']) > 0)){
if (defined('_DIR_PLUGIN_LICENCE')
&& ((strlen($infos['copyright_message']) > 0)
or strlen($infos['copyright']) > 0)) {
include_spip('licence_fonctions');
if(function_exists('licence_recuperer_texte')){
foreach(array($infos['copyright_message'],$infos['copyright']) as $contenu){
if (function_exists('licence_recuperer_texte')) {
foreach (array($infos['copyright_message'], $infos['copyright']) as $contenu) {
$infos['id_licence'] = licence_recuperer_texte($contenu);
if(intval($infos['id_licence']))
if (intval($infos['id_licence'])) {
break;
}
}
}
}
if((count($covers) > 0) && !$only_return){
if(intval($id_document))
$id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
else
if ((count($covers) > 0) && !$only_return) {
if (intval($id_document)) {
$id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document='.intval($id_document));
} else {
$id_vignette = 0;
}
if(($id_vignette == 0)){
if (($id_vignette == 0)) {
include_spip('inc/joindre_document');
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
list($extension,$arg) = fixer_extension_document($covers[0]);
fixer_extension_document($covers[0]);
$cover_ajout = array(array('tmp_name'=>$covers[0],'name'=> basename($covers[0])));
$ajoute = $ajouter_documents('new',$cover_ajout,'',0,'vignette');
if (is_numeric(reset($ajoute))
AND $id_vignette = reset($ajoute))
$infos['id_vignette'] = $id_vignette;
and $id_vignette = reset($ajoute)) {
$infos['id_vignette'] = $id_vignette;
}
}
}else if(!$only_return && strlen($cover_defaut = lire_config('getid3/cover_defaut','')) > 1){
} elseif (!$only_return && strlen($cover_defaut = lire_config('getid3/cover_defaut', '')) > 1) {
/**
* Si on n'a pas de cover,
* On ajoute la cover par défaut si elle existe comme vignette de document et
* comme cover du fichier
*/
if(intval($id_document))
$id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
else
if (intval($id_document)) {
$id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document='.intval($id_document));
} else {
$id_vignette = 0;
if(($id_vignette == 0)){
}
if ($id_vignette == 0) {
include_spip('inc/joindre_document');
include_spip('inc/distant');
$cover_defaut = find_in_path(copie_locale($cover_defaut));
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
list($extension,$arg) = fixer_extension_document($cover_defaut);
fixer_extension_document($cover_defaut);
$cover_defaut = array(array('tmp_name'=>$cover_defaut,'name'=> basename($cover_defaut)));
$ajoute = $ajouter_documents($id_vignette,$cover_defaut,'',0,'vignette');
if (is_numeric(reset($ajoute))
AND $id_vignette = reset($ajoute)){
$infos['id_vignette'] = $id_vignette;
and $id_vignette = reset($ajoute)) {
$infos['id_vignette'] = $id_vignette;
}
}
}
/**
* Si on a $only_return à true, on souhaite juste retourner les metas, sinon on les enregistre en base
* Utile pour metadatas/video par exemple
*/
if(!$only_return && (intval($id_document) && (count($infos) > 0))){
foreach($infos as $champ=>$val){
if($document[$champ] == $val)
if (!$only_return && (intval($id_document) && (count($infos) > 0))) {
foreach ($infos as $champ => $val) {
if ($document[$champ] == $val) {
unset($infos[$champ]);
}
}
if(count($infos) > 0){
if (count($infos) > 0) {
include_spip('action/editer_document');
document_modifier($id_document, $infos);
}
@ -296,5 +331,3 @@ function inc_getid3_recuperer_infos($id_document=false,$fichier=null,$logo=false