File "player_fonctions.php"
Full path: /home/argothem/www/organecyberpresse/plugins/auto/player/v4.3.0/player_fonctions.php
File size: 4.25 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Plugin Lecteur (mp3)
* Licence GPL
* 2007-2022
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Code JS a inserer dans la page pour faire fonctionner le player
* @param $player
* @return string
*/
function player_call_js() {
include_spip('inc/filtres');
$enclosure = '';
$init = '';
lire_fichier(find_in_path('javascript/mejs-enclosure.min.js'), $enclosure);
lire_fichier(find_in_path('javascript/mejs-init.min.js'), $init);
$mejspath = timestamp(find_in_path('lib/mejs/build/mediaelement-and-player.min.js'));
$mecss = timestamp(find_in_path('lib/mejs/build/mediaelementplayer.min.css'));
$flux = '<script type="text/javascript">/*<![CDATA[*/'
. "var mejspath='$mejspath',mejscss='$mecss';\n$enclosure\n$init\n"
. "/*]]>*/</script>\n";
return $flux;
}
/**
* inserer systematiquement le CSS dans la page
* @param string $flux
* @return string
*/
function player_insert_head_css($flux) {
$css = timestamp(find_in_path('css/player.css'));
$flux .= "\n" . '<link href="' . $css . '" rel="stylesheet" />';
return $flux;
}
/**
* Inserer systematiquement le JS dans la page
* @param string $flux
* @return string
*/
function player_insert_head($flux) {
if (
test_espace_prive()
|| (defined('_PLAYER_AFFICHAGE_FINAL') && !_PLAYER_AFFICHAGE_FINAL)
) {
$cfg = lire_config('player');
if (in_array('inline_mini', $cfg['insertion_auto'] ?? [])) {
$flux .= player_call_js();
}
}
return $flux;
}
/**
* Inserer JS+CSS dans la page si elle contient un player
* (a la demande)
* @param string $flux
* @return string
*/
function player_affichage_final($flux) {
if (
(!defined('_PLAYER_AFFICHAGE_FINAL')
|| _PLAYER_AFFICHAGE_FINAL)
&& $GLOBALS['html']
) {
// inserer le head seulement si presente d'un rel='enclosure'
// il faut etre pas trop stricte car on peut avoir rel='nofollow enclosure' etc...
if ((strpos($flux, 'enclosure') !== false)) {
$cfg = lire_config('player');
if (in_array('inline_mini', $cfg['insertion_auto'] ?? [])) {
// on pourrait affiner la detection avec un preg ?
$ins = player_call_js();
$p = stripos($flux, '</body>');
if ($p) {
$flux = substr_replace($flux, $ins, $p, 0);
} else { $flux .= $ins;
}
}
}
}
return $flux;
}
/**
* enclosures
* ajout d'un rel="enclosure" sur les liens mp3 absolus
* appele en pipeline apres propre pour traiter les [mon son->http://monsite/mon_son.mp3]
* peut etre appele dans un squelette apres |liens_absolus
*
* @param $texte
* @return mixed
*/
function player_post_propre($texte) {
$reg_formats = 'mp3';
// plus vite
if (
stripos($texte, ".$reg_formats") !== false
&& stripos($texte, '<a') !== false
) {
$cfg = lire_config('player');
// insertion du mini-player inline
if (in_array('inline_mini', $cfg['insertion_auto'] ?? [])) {
$texte = preg_replace_callback(",<a(\s[^>]*href=['\"]?([a-zA-Z0-9\s()\/\:\._%\?+'=~-]*\.($reg_formats))['\"]?[^>]*)>,Uims", 'player_enclose_link', $texte);
}
if (in_array('player_end', $cfg['insertion_auto'] ?? [])) {
preg_match_all(",<a(\s[^>]*href=['\"]?([a-zA-Z0-9\s()\/\:\._%\?+'=~-]*\.($reg_formats))['\"]?[^>]*)>(.*)</a>,Uims", $texte, $matches, PREG_SET_ORDER);
if (count($matches)) {
foreach ($matches as $m) {
$url = $m[2];
$titre = $m[4];
$titre = ((!strlen(textebrut($titre)) || tester_url_absolue($titre)) ? player_joli_titre($url) : $titre);
$emb = recuperer_fond('modeles/player', ['url_document' => $url,'titre' => $titre]);
if ($wrap_embed_html = charger_fonction('wrap_embed_html', 'inc', true)) {
$emb = $wrap_embed_html(' ', $emb);
}
$texte .= $emb;
}
}
}
}
return $texte;
}
/**
* Ajouter enclosure sur un lien mp3
*
* @param $regs
* @return mixed|string
*/
function player_enclose_link($regs) {
$rel = extraire_attribut($regs[0], 'rel');
$rel = ($rel ? "$rel " : '') . 'enclosure';
return inserer_attribut($regs[0], 'rel', $rel);
}
/**
* Un filtre pour afficher de joli titre a partir du nom du fichier
* @param $titre
* @return mixed|string
*/
function player_joli_titre($titre) {
$titre = basename($titre);
$titre = preg_replace('/.mp3/', '', $titre);
$titre = preg_replace('/^ /', '', $titre);
$titre = preg_replace('/_/i', ' ', $titre);
$titre = preg_replace("/'/i", ' ', $titre);
return $titre ;
}