2010-07-27 6 views
1

J'utilise PHP pour obtenir une liste de dossiers, puis des documents de Google Docs (deux demandes d'API).Liste des documents API de Google Docs et deux dossiers avec le même nom

Obtenir une liste des dossiers, je peux obtenir leur folderID, ce qui est bien. Cependant, lors de l'obtention d'une liste de documents, il renvoie des catégories et celles-ci contiennent uniquement le nom du dossier.

Mon problème existe parce que j'ai deux dossiers avec le même nom, et mon code fusionne les documents de ceux-ci, parce qu'ils ont le même nom.

La fonction que j'utilise pour obtenir une liste des documents contenus dans le dossier:

/** 
* Gets a list of 'internal' IDs of docs within a certain folder 
* @global Mixed $fileslist 
* @param String $folder 
* @return Array 
*/ 
function getDocumentsInFolder($folder) { 
    global $fileslist; 

$docs = array(); 
foreach ($fileslist as $id => $files) { 
    if (in_array($folder, $files['folders'])) { 
     $docs[] = $id; 
    } 
} 
return $docs; 
} 

Et les tableaux sont:

foreach ($list[$i]->category as $cat) { 
     $folders[] = $cat->label; 
    } 
    $folderslist[$i] = array(
     'name' => $foldername, 
     'authorname' => $authorname, 
     'authoremail' => $authoremail, 
     'lastupdated' => $lastupdated, 
     'fid' => $fid 
    ); 
    $fileslist[] = array(
     'name' => $name, 
     'authorname' => $authorname, 
     'authoremail' => $authoremail, 
     'lastupdated' => $lastupdated, 
     'folders' => $folders, 
     'id' => $id, 
     'type' => $list[$i]->extensionElements[0]->text, 
    ); 

Le XML de l'API Google Docs pour la liste des documents est @http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#ListDocs (Notez que les catégories ne sont que des noms de dossier).

Des idées sur la façon d'arrêter les fichiers apparaissant dans toutes les instances de ce nom de dossier, et juste dans leur bon dossier?

Répondre

1

fixed it :)

/** 
* Gets a list of 'internal' IDs of docs within a certain folder 
* @global Mixed $fileslist 
* @param ID $folder The internal ID of the folder 
* @return Array 
*/ 
function getDocumentsInFolder($folder) { 
    global $fileslist, $folderslist; 
    // Work out the folder ID 

    $fid = $folderslist[$folder]['fid']; 
    $docs = array(); 
    foreach ($fileslist as $id => $files) { 
     if ($files['fid'] == $fid) { 
      $docs[] = $id; 
     } 
    } 
    return $docs; 
} 

La liste des documents retourne:

<link rel="http://schemas.google.com/docs/2007#parent" type="application/atom+xml" href="https://docs.google.com/feeds/default/private/full/folder%3A12345" title="AFolderName"/> 

qui contient l'ID de dossier, j'ai pu le stocker dans la liste des documents, puis comparer.

Questions connexes