'http://schemas.google.com/spreadsheets/2006', 'gsx' => 'http://schemas.google.com/spreadsheets/2006/extended'); /** * Create Gdata_Spreadsheets object */ public function __construct($client = null) { parent::__construct($client); $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME); $this->registerPackage('Zend_Gdata_Spreadsheets'); $this->registerPackage('Zend_Gdata_Spreadsheets_Extension'); $this->_server = 'spreadsheets.google.com'; } /** * Gets a spreadsheet feed. * @param string $location A DocumentQuery or a URI specifying the feed location. * @return SpreadsheetFeed */ public function getSpreadsheetFeed($location = null) { if ($location == null) { $uri = self::SPREADSHEETS_FEED_URI; } else if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) { if ($location->getDocumentType() == null) { $location->setDocumentType('spreadsheets'); } $uri = $location->getQueryUrl(); } else { $uri = $location; } return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetFeed'); } /** * Gets a spreadsheet entry. * @param string $location A DocumentQuery or a URI specifying the entry location. * @return SpreadsheetEntry */ public function getSpreadsheetEntry($location) { if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) { if ($location->getDocumentType() == null) { $location->setDocumentType('spreadsheets'); } $uri = $location->getQueryUrl(); } else { $uri = $location; } return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetEntry'); } /** * Gets a worksheet feed. * @param string $location A DocumentQuery or a URI specifying the feed location. * @return WorksheetFeed */ public function getWorksheetFeed($location) { if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) { if ($location->getDocumentType() == null) { $location->setDocumentType('worksheets'); } $uri = $location->getQueryUrl(); } else { $uri = $location; } return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_WorksheetFeed'); } /** * Gets a worksheet entry. * @param string $location A DocumentQuery or a URI specifying the entry location. * @return WorksheetEntry */ public function GetWorksheetEntry($location) { if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) { if ($location->getDocumentType() == null) { $location->setDocumentType('worksheets'); } $uri = $location->getQueryUrl(); } else { $uri = $location; } return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_WorksheetEntry'); } /** * Gets a cell feed. * @param string $location A CellQuery or a URI specifying the feed location. * @return CellFeed */ public function getCellFeed($location) { if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) $uri = $location->getQueryUrl(); else $uri = $location; return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_CellFeed'); } /** * Gets a cell entry. * @param string $location A CellQuery or a URI specifying the entry location. * @return CellEntry */ public function getCellEntry($location) { if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) $uri = $location->getQueryUrl(); else $uri = $location; return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_CellEntry'); } /** * Gets a list feed. * @param string $location A ListQuery or a URI specifying the feed location. * @return ListFeed */ public function getListFeed($location) { if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) $uri = $location->getQueryUrl(); else $uri = $location; return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_ListFeed'); } /** * Gets a list entry. * @param string $location A ListQuery or a URI specifying the entry location. * @return ListEntry */ public function getListEntry($location) { if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) $uri = $location->getQueryUrl(); else $uri = $location; return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_ListEntry'); } /** * Updates an existing cell. * @param int $row The row containing the cell to update * @param int $col The column containing the cell to update * @param int $inputValue The new value for the cell * @param string $key The key for the spreadsheet to be updated * @param string $wkshtId (optional) The worksheet to be updated * @return CellEntry The updated cell entry. */ public function updateCell($row, $col, $inputValue, $key, $wkshtId = 'default') { $cell = 'R'.$row.'C'.$col; $query = new Zend_Gdata_Spreadsheets_CellQuery(); $query->setSpreadsheetKey($key); $query->setWorksheetId($wkshtId); $query->setCellId($cell); $entry = $this->getCellEntry($query); $entry->setCell(new Zend_Gdata_Spreadsheets_Extension_Cell(null, $row, $col, $inputValue)); $response = $entry->save(); return $response; } /** * Inserts a new row with provided data. * @param array $rowData An array of column header to row data * @param string $key The key of the spreadsheet to modify * @param string $wkshtId (optional) The worksheet to modify * @return ListEntry The inserted row */ public function insertRow($rowData, $key, $wkshtId = 'default') { $newEntry = new Zend_Gdata_Spreadsheets_ListEntry(); $newCustomArr = array(); foreach ($rowData as $k => $v) { $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom(); $newCustom->setText($v)->setColumnName($k); $newEntry->addCustom($newCustom); } $query = new Zend_Gdata_Spreadsheets_ListQuery(); $query->setSpreadsheetKey($key); $query->setWorksheetId($wkshtId); $feed = $this->getListFeed($query); $editLink = $feed->getLink('http://schemas.google.com/g/2005#post'); return $this->insertEntry($newEntry->saveXML(), $editLink->href, 'Zend_Gdata_Spreadsheets_ListEntry'); } /** * Updates an existing row with provided data. * @param ListEntry $entry The row entry to update * @param array $newRowData An array of column header to row data */ public function updateRow($entry, $newRowData) { $newCustomArr = array(); foreach ($newRowData as $k => $v) { $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom(); $newCustom->setText($v)->setColumnName($k); $newCustomArr[] = $newCustom; } $entry->setCustom($newCustomArr); return $entry->save(); } /** * Deletes an existing row . * @param ListEntry $entry The row to delete */ public function deleteRow($entry) { $entry->delete(); } }