Lo que pasa que estoy convencido que la ultima parte de organizar como un array no hace falta. Creo que es posible ir creando el array directamente en vez de crear primero una cadena y despues ir cortando con explode. Pero no consigo hacerlo. El codigo es el siguiente, si no se entiende algo preguntarme:
Código PHP:
// Funcion que saca las fotos de una zona
function sacarFotosFbUploader($facebook, $nombreAlbum, $me){
$info = '';
$num = count($me['data']);
// Si hay resultados...
if($num > 0){
foreach($me['data'] as $img){
$info .= $nombreAlbum.'@@'.$img['source'].'||';
}
// Si habian 25 resultados puede que haya otra pagina
if($num == 25){
$next = explode("photos?", $me['paging']['next']);
$me = $facebook->api('/me/photos?'.$next[1]);
}
return $info;
}
}
// Sacamos los albums
function sacarAlbumsFbUploader($facebook, $me){
$num = count($me['data']);
if($num > 0){
// Cada album
foreach($me['data'] as $album){
$fotosAlbum = $facebook->api($album['id'].'/photos');
$info2 .= sacarFotosFbUploader($facebook, $album['name'], $fotosAlbum);
}
// ¿Hay mas paginas de albums?
if($num == 25){
$next = explode("albums?", $me['paging']['next']);
$me = $facebook->api('/me/albums?'.$next[1]);
}
return $info2;
}
}
// Primero sacamos las fotos que no están en albums
$me = $facebook->api('/me/photos');
$todasLasFotos = sacarFotosFbUploader($facebook, 'Fotos etiquetadas', $me);
// Ahora sacamos las fotos de los albumes.
$me = $facebook->api('/me/albums');
$todasLasFotos .= sacarAlbumsFbUploader($facebook, $me);
// Organizamos la cadena como un array
$todasLasFotos = explode("||", $todasLasFotos);
unset($todasLasFotos[count($todasLasFotos) - 1]);
foreach($todasLasFotos as $img){
// Sacamos la url de la imagen y el album
$partes = explode('@@', $img);
$nombreAlbum = $partes[0];
$urlImagen = $partes[1];
$arrayFotos[$nombreAlbum][] = $urlImagen;
}
print_r($arrayFotos);