Взгляд сквозь пентапризму... - Google Docs ACL
[Recent Entries][Archive][Friends][User Info]
[Home page]
[фото.сайт]
[wishlist]
06:06 pm
[Link] |
Google Docs ACL Авось кому сгодится... Я на это убил достаточно времени: рыская по докам, конфам, сырцам...
Суть в том, что в Zend Framework реализован протокол GData v1... А работа с ACL есть во втором... Писать самому полностью поддержку v2 как то не хочется и времени нет... А вот при помощи пары ссылок...
Constructing unsupported XML elements using the PHP client library Modifying the ACL feed for a Document
и скотча, я теперь умею управлять шарингом документов :)
<?php /** * @param $docId ID документа (http://docs.google.com/Doc?id=ТоЧтоТут_Написано) * @param $roleValue права на документ: owner, writer, reader * @param $user Google Account login */ $feedUrl = 'http://docs.google.com/feeds/acl/private/full/document%3A' . $docId;
// "Магическим" образом вытаскивем из сессии подготовленный и авторизованный клиент $google = new Zend_Session_Namespace('Google'); $gdata = new Zend_Gdata($google->client); // Здесь все, кто имеет доступ к документу с описанием прав. // Можно в принципе прямо в него писать //$aclFeed = $gdata->getFeed($feedUrl); // Создаем новую запись в ACL $entry = $gdata->newEntry(); $entry->registerNamespace('gAcl=', 'http://schemas.google.com/acl/2007');
$category = new Zend_Gdata_App_Extension_Category( 'http://schemas.google.com/acl/2007#accessRule', 'http://schemas.google.com/g/2005#kind');
$role = new Zend_Gdata_App_Extension_Element('gAcl:role', 'gAcl', 'http://schemas.google.com/acl/2007'); $role->setExtensionAttributes(array( 'value' => Array('namespaceUri' => null, 'name' => 'value', 'value' => $roleValue) ));
$scope = new Zend_Gdata_App_Extension_Element('scope', null, 'http://schemas.google.com/acl/2007'); $scope->setExtensionAttributes(array( 'type' => array('namespaceUri' => null, 'name' => 'type', 'value'=>'user'), 'value' => array('namespaceUri' => null, 'name' => 'value', 'value' => $user) )); //$entry->setCategory($category); $entry->setExtensionElements(array($category,$role,$scope));
try { // Универсальный вариант. Можно также напрямую писать в соответствующий фид. $gdata->insertEntry($entry, $feedUrl); } catch ( Exception $e ) { // Если, что-то пойдет не так, то тут можно это попробовать исправить }
* This source code was highlighted with Source Code Highlighter.
Tags: google data api, php, zend framework, рабочее
|
|