@php
use Illuminate\Support\Str;
if (!function_exists('org_photo_url_from_payload')) {
function org_photo_url_from_payload($r) {
if (!empty($r['avatar_url'])) {
$u = $r['avatar_url'];
if (Str::startsWith($u, ['http://', 'https://', '/'])) {
return $u;
}
return asset($u);
}
if (!empty($r['image'])) {
$path = str_replace('\\', '/', $r['image']);
if (Str::startsWith($path, 'storage/')) {
$path = Str::after($path, 'storage/');
}
// Miniature si elle existe (cf. commande photos:thumbs) :
// 51 photos plein format sur une seule page, c'etait 37 Mo.
return \App\Helpers\PhotoHelper::url($path);
}
return null;
}
}
if (!function_exists('org_render_tree')) {
function org_render_tree($nodes, $level = 1) {
static $gid = 1;
if (!$nodes || !is_array($nodes)) return;
echo '
';
foreach ($nodes as $node) {
$currentId = 'g' . ($gid++);
echo '
';
echo '
';
if (!empty($node['responsables'])) {
foreach ($node['responsables'] as $r) {
$prenom = e($r['prenom'] ?? '');
$nom = e($r['nom'] ?? '');
$poste = e($r['poste'] ?? '');
$avatar = org_photo_url_from_payload($r);
echo '
';
if (!empty($avatar)) {
echo '
 . ')
';
}
echo '
' . trim($prenom . ' ' . $nom) . '
';
if (trim($poste) !== '') {
echo '
' . $poste . '
';
}
echo '
';
}
}
echo '
';
if (!empty($node['subordonnes'])) {
echo '
';
org_render_tree($node['subordonnes'], $level + 1);
echo '
';
}
echo '
';
}
echo '
';
}
}
org_render_tree($orgTree);
@endphp