Восстановление Google Doc из Корзины с помощью Zend GData - PullRequest
0 голосов
/ 30 сентября 2011

Я создаю файловый менеджер, который использует Google Docs для хранения, но мне трудно разобраться, как восстановить файл, который был отправлен в корзину. Я могу отправить в корзину, используя этот код:

$resourceId = "file:12345";
$link = "https://docs.google.com/feeds/default/private/full/";
$file = $docs->getDocumentListEntry($link.$resourceId);
$file->delete();

Затем я могу просмотреть все загруженные документы, используя:

$docs = new Zend_Gdata_Docs($client);
$docs->setMajorProtocolVersion(3);
$feed = $docs->getDocumentListFeed($link."-/trashed");

foreach($feed->entries as $entry) {
  ...
}

У меня вопрос, как я могу затем восстановить один из этих файлов в том месте, где он был до того, как был удален, как вы можете в самом Документе Google?

1 Ответ

0 голосов
/ 03 октября 2011

Хорошо, я решил, как восстановить поврежденные файлы в моем приложении Google Docs. Код выглядит следующим образом:

$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($gUser, $gPass, $service);
$client->setHeaders('If-Match: *');
$gdocs = new Zend_GData_Docs($client);
$gdocs->setMajorProtocolVersion(3);

$slug = array('If-Match'=>'*'); 

$link = "https://docs.google.com/feeds/default/private/full/".$resourceId;
$entry = $gdocs->getDocumentListEntry($link);
$xml = $entry->getXML();
$feed = str_replace('label="trashed"', 'label=""',$xml);

$entryResult = $gdocs->updateEntry($feed, $entry->getEditLink()->href,null,$slug);

Это также будет работать для снятия пометки с документа и других элементов категории. Так, например:

Заменить:

$feed = str_replace('label="trashed"', 'label=""',$xml);

С:

$feed = str_replace('label="starred"', 'label=""',$xml);
...