使用Zend GData从垃圾桶中恢复谷歌文档


Restoring a Google Doc from Trash using Zend GData

我正在创建一个使用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) {
  ...
}

我的问题是我如何才能恢复其中一个文件回到它被删除之前的位置,因为你可以在谷歌文档正确?

好的,所以我想出了如何在我的谷歌文档应用程序中恢复垃圾文件。代码如下:

$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);