summaryrefslogtreecommitdiff
path: root/zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php
diff options
context:
space:
mode:
Diffstat (limited to 'zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php')
-rw-r--r--zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php454
1 files changed, 454 insertions, 0 deletions
diff --git a/zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php b/zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php
new file mode 100644
index 0000000..6309b0c
--- /dev/null
+++ b/zend/demos/Zend/Gdata/Spreadsheet-ClientLogin.php
@@ -0,0 +1,454 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Gdata
+ * @subpackage Demos
+ * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * @see Zend_Loader
+ */
+require_once 'Zend/Loader.php';
+
+/**
+ * @see Zend_Gdata
+ */
+Zend_Loader::loadClass('Zend_Gdata');
+
+/**
+ * @see Zend_Gdata_ClientLogin
+ */
+Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
+
+/**
+ * @see Zend_Gdata_Spreadsheets
+ */
+Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
+
+/**
+ * @see Zend_Gdata_App_AuthException
+ */
+Zend_Loader::loadClass('Zend_Gdata_App_AuthException');
+
+/**
+ * @see Zend_Http_Client
+ */
+Zend_Loader::loadClass('Zend_Http_Client');
+
+
+/**
+ * SimpleCRUD
+ *
+ * @category Zend
+ * @package Zend_Gdata
+ * @subpackage Demos
+ * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class SimpleCRUD
+{
+ /**
+ * Constructor
+ *
+ * @param string $email
+ * @param string $password
+ * @return void
+ */
+ public function __construct($email, $password)
+ {
+ try {
+ $client = Zend_Gdata_ClientLogin::getHttpClient($email, $password,
+ Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
+ } catch (Zend_Gdata_App_AuthException $ae) {
+ exit("Error: ". $ae->getMessage() ."\nCredentials provided were email: [$email] and password [$password].\n");
+ }
+
+ $this->gdClient = new Zend_Gdata_Spreadsheets($client);
+ $this->currKey = '';
+ $this->currWkshtId = '';
+ $this->listFeed = '';
+ $this->rowCount = 0;
+ $this->columnCount = 0;
+ }
+
+ /**
+ * promptForSpreadsheet
+ *
+ * @return void
+ */
+ public function promptForSpreadsheet()
+ {
+ $feed = $this->gdClient->getSpreadsheetFeed();
+ print "== Available Spreadsheets ==\n";
+ $this->printFeed($feed);
+ $input = getInput("\nSelection");
+ $currKey = explode('/', $feed->entries[$input]->id->text);
+ $this->currKey = $currKey[5];
+ }
+
+ /**
+ * promptForWorksheet
+ *
+ * @return void
+ */
+ public function promptForWorksheet()
+ {
+ $query = new Zend_Gdata_Spreadsheets_DocumentQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $feed = $this->gdClient->getWorksheetFeed($query);
+ print "== Available Worksheets ==\n";
+ $this->printFeed($feed);
+ $input = getInput("\nSelection");
+ $currWkshtId = explode('/', $feed->entries[$input]->id->text);
+ $this->currWkshtId = $currWkshtId[8];
+
+ }
+
+ /**
+ * promptForCellsAction
+ *
+ * @return void
+ */
+ public function promptForCellsAction()
+ {
+ echo "Pick a command:\n";
+ echo "\ndump -- dump cell information\nupdate {row} {col} {input_value} -- update cell information\n";
+ $input = getInput('Command');
+ $command = explode(' ', $input);
+ if ($command[0] == 'dump') {
+ $this->cellsGetAction();
+ } else if (($command[0] == 'update') && (count($command) > 2)) {
+ $this->getRowAndColumnCount();
+ if (count($command) == 4) {
+ $this->cellsUpdateAction($command[1], $command[2], $command[3]);
+ } elseif (count($command) > 4) {
+ $newValue = implode(' ', array_slice($command,3));
+ $this->cellsUpdateAction($command[1], $command[2], $newValue);
+ } else {
+ $this->cellsUpdateAction($command[1], $command[2], '');
+ }
+ } else {
+ $this->invalidCommandError($input);
+ }
+ }
+
+ /**
+ * promptToResize
+ *
+ * @param integer $newRowCount
+ * @param integer $newColumnCount
+ * @return boolean
+ */
+ public function promptToResize($newRowCount, $newColumnCount) {
+ $input = getInput('Would you like to resize the worksheet? [yes | no]');
+ if ($input == 'yes') {
+ return $this->resizeWorksheet($newRowCount, $newColumnCount);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * resizeWorksheet
+ *
+ * @param integer $newRowCount
+ * @param integer $newColumnCount
+ * @return boolean
+ */
+ public function resizeWorksheet($newRowCount, $newColumnCount) {
+ $query = new Zend_Gdata_Spreadsheets_DocumentQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $currentWorksheet = $this->gdClient->getWorksheetEntry($query);
+ $currentWorksheet = $currentWorksheet->setRowCount(new Zend_Gdata_Spreadsheets_Extension_RowCount($newRowCount));
+ $currentWorksheet = $currentWorksheet->setColumnCount(new Zend_Gdata_Spreadsheets_Extension_ColCount($newColumnCount));
+ $currentWorksheet->save();
+ $this->getRowAndColumnCount();
+ print "Worksheet has been resized to $this->rowCount rows and $this->columnCount columns.\n";
+ return true;
+ }
+
+ /**
+ * promptForListAction
+ *
+ * @return void
+ */
+ public function promptForListAction()
+ {
+ echo "\n== Options ==\n".
+ "dump -- dump row information\n".
+ "insert {row_data} -- insert data in the next available cell in a given column (example: insert column_header=content)\n".
+ "update {row_index} {row_data} -- update data in the row provided (example: update row-number column-header=newdata\n".
+ "delete {row_index} -- delete a row\n\n";
+
+ $input = getInput('Command');
+ $command = explode(' ', $input);
+ if ($command[0] == 'dump') {
+ $this->listGetAction();
+ } else if ($command[0] == 'insert') {
+ $this->listInsertAction(array_slice($command, 1));
+ } else if ($command[0] == 'update') {
+ $this->listUpdateAction($command[1], array_slice($command, 2));
+ } else if ($command[0] == 'delete') {
+ $this->listDeleteAction($command[1]);
+ } else {
+ $this->invalidCommandError($input);
+ }
+ }
+
+ /**
+ * cellsGetAction
+ *
+ * @return void
+ */
+ public function cellsGetAction()
+ {
+ $query = new Zend_Gdata_Spreadsheets_CellQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $feed = $this->gdClient->getCellFeed($query);
+ $this->printFeed($feed);
+ }
+
+ /**
+ * cellsUpdateAction
+ *
+ * @param integer $row
+ * @param integer $col
+ * @param string $inputValue
+ * @return void
+ */
+ public function cellsUpdateAction($row, $col, $inputValue)
+ {
+ if (($row > $this->rowCount) || ($col > $this->columnCount)) {
+ print "Current worksheet only has $this->rowCount rows and $this->columnCount columns.\n";
+ if (!$this->promptToResize($row, $col)) {
+ return;
+ }
+ }
+ $entry = $this->gdClient->updateCell($row, $col, $inputValue,
+ $this->currKey, $this->currWkshtId);
+ if ($entry instanceof Zend_Gdata_Spreadsheets_CellEntry) {
+ echo "Success!\n";
+ }
+ }
+
+ /**
+ * listGetAction
+ *
+ * @return void
+ */
+ public function listGetAction()
+ {
+ $query = new Zend_Gdata_Spreadsheets_ListQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $this->listFeed = $this->gdClient->getListFeed($query);
+ print "entry id | row-content in column A | column-header: cell-content\n".
+ "Please note: The 'dump' command on the list feed only dumps data until the first blank row is encountered.\n\n";
+
+ $this->printFeed($this->listFeed);
+ print "\n";
+ }
+
+ /**
+ * listInsertAction
+ *
+ * @param mixed $rowData
+ * @return void
+ */
+ public function listInsertAction($rowData)
+ {
+ $rowArray = $this->stringToArray($rowData);
+ $entry = $this->gdClient->insertRow($rowArray, $this->currKey, $this->currWkshtId);
+ if ($entry instanceof Zend_Gdata_Spreadsheets_ListEntry) {
+ foreach ($rowArray as $column_header => $value) {
+ echo "Success! Inserted '$value' in column '$column_header' at row ". substr($entry->getTitle()->getText(), 5) ."\n";
+ }
+ }
+ }
+
+ /**
+ * listUpdateAction
+ *
+ * @param integer $index
+ * @param mixed $rowData
+ * @return void
+ */
+ public function listUpdateAction($index, $rowData)
+ {
+ $query = new Zend_Gdata_Spreadsheets_ListQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $this->listFeed = $this->gdClient->getListFeed($query);
+ $rowArray = $this->stringToArray($rowData);
+ $entry = $this->gdClient->updateRow($this->listFeed->entries[$index], $rowArray);
+ if ($entry instanceof Zend_Gdata_Spreadsheets_ListEntry) {
+ echo "Success!\n"; $response = $entry->save();
+
+ }
+ }
+
+ /**
+ * listDeleteAction
+ *
+ * @param integer $index
+ * @return void
+ */
+ public function listDeleteAction($index)
+ {
+ $query = new Zend_Gdata_Spreadsheets_ListQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $this->listFeed = $this->gdClient->getListFeed($query);
+ $this->gdClient->deleteRow($this->listFeed->entries[$index]);
+ }
+
+ /**
+ * stringToArray
+ *
+ * @param string $rowData
+ * @return array
+ */
+ public function stringToArray($rowData)
+ {
+ $arr = array();
+ foreach ($rowData as $row) {
+ $temp = explode('=', $row);
+ $arr[$temp[0]] = $temp[1];
+ }
+ return $arr;
+ }
+
+ /**
+ * printFeed
+ *
+ * @param Zend_Gdata_Gbase_Feed $feed
+ * @return void
+ */
+ public function printFeed($feed)
+ {
+ $i = 0;
+ foreach($feed->entries as $entry) {
+ if ($entry instanceof Zend_Gdata_Spreadsheets_CellEntry) {
+ print $entry->title->text .' '. $entry->content->text . "\n";
+ } else if ($entry instanceof Zend_Gdata_Spreadsheets_ListEntry) {
+ print $i .' '. $entry->title->text .' | '. $entry->content->text . "\n";
+ } else {
+ print $i .' '. $entry->title->text . "\n";
+ }
+ $i++;
+ }
+ }
+
+ /**
+ * getRowAndColumnCount
+ *
+ * @return void
+ */
+ public function getRowAndColumnCount()
+ {
+ $query = new Zend_Gdata_Spreadsheets_CellQuery();
+ $query->setSpreadsheetKey($this->currKey);
+ $query->setWorksheetId($this->currWkshtId);
+ $feed = $this->gdClient->getCellFeed($query);
+
+ if ($feed instanceOf Zend_Gdata_Spreadsheets_CellFeed) {
+ $this->rowCount = $feed->getRowCount();
+ $this->columnCount = $feed->getColumnCount();
+ }
+ }
+
+ /**
+ * invalidCommandError
+ *
+ * @param string $input
+ * @return void
+ */
+ public function invalidCommandError($input)
+ {
+ echo 'Invalid input: '.$input."\n";
+ }
+
+ /**
+ * promtForFeedtype
+ *
+ * @return void
+ */
+ public function promptForFeedtype() {
+
+ $input = getInput('Select to use either the cell or the list feed [cells or list]');
+
+ if ($input == 'cells') {
+ while(1) {
+ $this->promptForCellsAction();
+ }
+ } else if ($input == 'list') {
+ while(1) {
+ $this->promptForListAction();
+ }
+ } else {
+ print "Invalid input. Please try again.\n";
+ $this->promptForFeedtype();
+ }
+ }
+
+ /**
+ * run
+ *
+ * @return void
+ */
+ public function run()
+ {
+ $this->promptForSpreadsheet();
+ $this->promptForWorksheet();
+ $this->promptForFeedtype();
+ }
+}
+
+/**
+ * getInput
+ *
+ * @param string $text
+ * @return string
+ */
+function getInput($text)
+{
+ echo $text.': ';
+ return trim(fgets(STDIN));
+}
+
+$email = null;
+$pass = null;
+
+// process command line options
+foreach ($argv as $argument) {
+ $argParts = explode('=', $argument);
+ if ($argParts[0] == '--email') {
+ $email = $argParts[1];
+ } else if ($argParts[0] == '--pass') {
+ $pass = $argParts[1];
+ }
+}
+
+if (($email == null) || ($pass == null)) {
+ $email = getInput("Please enter your email address [example: username@gmail.com]");
+ $pass = getInput("Please enter your password [example: mypassword]");
+}
+
+$sample = new SimpleCRUD($email, $pass);
+$sample->run();