Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:modifications:googlecalendersync [2014/10/31 11:37] swarnat |
en:modifications:googlecalendersync [2014/11/01 11:15] (current) swarnat |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Google Calendar Sync ====== | + | ====== Custom Google Calendar Sync ====== |
- | mod61.01 | + | Tested with VtigerCRM 6.0 and 6.1! |
- | ALTER TABLE `vtiger_google_oauth` ADD `additional` TEXT NOT NULL AFTER `userid`; | + | To setup the Vtiger Google Calendar sync with another calendar than the default one, you could apply this modifications. |
+ | |||
+ | At first install latest version of my [[en:extensions:vtigercrm_tools|Vtiger Tools.]] **This is absolutely necessary,** because I use this module to implement to management logic. | ||
+ | |||
+ | You need to press the "initialize" button on the management view of Vtiger Tools in the section "Google Calendar" | ||
+ | |||
+ | ===== 1. File: /modules/Google/connectors/Calendar.php ===== | ||
+ | |||
+ | === 1.1 Search === | ||
+ | <code php> | ||
+ | $query = $calendars->newEventQuery($query); | ||
+ | </code> | ||
+ | |||
+ | === Insert after === | ||
+ | <code php> | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | if($this->calendarId !== null) { | ||
+ | $query->setUser($this->calendarId); | ||
+ | } | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | </code> | ||
+ | |||
+ | === 1.2 Search === | ||
+ | <code php> | ||
+ | $createdEntry = $gContact->insertEvent($entity); | ||
+ | </code> | ||
+ | === Replace this line with === | ||
+ | |||
+ | <code php> | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | try { | ||
+ | if($this->calendarId !== null) { | ||
+ | $createdEntry = $gContact->insertEvent($entity, "http://www.google.com/calendar/feeds/".$this->calendarId."/private/full"); | ||
+ | } else { | ||
+ | $createdEntry = $gContact->insertEvent($entity); | ||
+ | } | ||
+ | } catch (Exception $e) { | ||
+ | var_dump($e->getMessage()); | ||
+ | } | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | </code> | ||
+ | |||
+ | === 1.3 Search (The end of this file) === | ||
+ | |||
+ | <code php> | ||
+ | } | ||
+ | ?> | ||
+ | </code> | ||
+ | |||
+ | === Insert before === | ||
+ | |||
+ | <code php> | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | public function getCalendarList() { | ||
+ | $gdata = new Zend_Gdata_Calendar($this->apiInstance); | ||
+ | $calendarList = $gdata->getCalendarListFeed(); | ||
+ | $calendars = array(); | ||
+ | foreach ($calendarList as $calendar) { | ||
+ | $calendars[] = array('title' => (string)$calendar->title, 'id' => (string)$calendar->id); | ||
+ | } | ||
+ | return $calendars; | ||
+ | } | ||
+ | protected $calendarId = null; | ||
+ | public function setCalendarId($calendarId) { | ||
+ | $this->calendarId = $calendarId; | ||
+ | } | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ===== 2. File: /modules/Google/controllers/Calendar.php ===== | ||
+ | |||
+ | === 2.1 Search === | ||
+ | <code php> | ||
+ | public function getSourceType() { | ||
+ | return 'Events'; | ||
+ | } | ||
+ | </code> | ||
+ | === Insert after === | ||
+ | <code php> | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | public function getCalendarId() { | ||
+ | $adb = \PearDatabase::getInstance(); | ||
+ | $sql = 'SELECT calendar_id FROM vtiger_gcal_sync WHERE user_id = ?'; | ||
+ | $result = $adb->pquery($sql, array($this->user->id)); | ||
+ | if($adb->num_rows($result) == 0) { | ||
+ | return null; | ||
+ | } | ||
+ | |||
+ | return $adb->query_result($result, 0, 'calendar_id'); | ||
+ | } | ||
+ | |||
+ | public function getCalendarList() { | ||
+ | return $this->targetConnector->getCalendarList(); | ||
+ | } | ||
+ | public function setCalendarId($calendarId) { | ||
+ | $this->targetConnector->setCalendarId($calendarId); | ||
+ | } | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | </code> | ||
+ | |||
+ | ===== 3. File: /modules/Google/models/Module.php ===== | ||
+ | This file only exist in vtigerCRM 6.1, becaus 6.0 don't support remove of Sync. | ||
+ | |||
+ | === 3.1 Search === | ||
+ | <code php> | ||
+ | $db->pquery($query, array($module, $id)); | ||
+ | </code> | ||
+ | |||
+ | === Insert after === | ||
+ | <code php> | ||
+ | |||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | $query = "DELETE FROM vtiger_gcal_sync WHERE user_id = ?"; | ||
+ | $db->pquery($query, array($id)); | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | </code> | ||
+ | |||
+ | ===== 4. File: /modules/Google/views/List.php ===== | ||
+ | |||
+ | === 4.1 Search === | ||
+ | <code php> | ||
+ | $controller = new Google_Calendar_Controller($user); | ||
+ | </code> | ||
+ | |||
+ | === Insert After === | ||
+ | <code php> | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | $calId = $controller->getCalendarId(); | ||
+ | if(empty($calId)) { | ||
+ | $list = $controller->getCalendarList(); | ||
+ | $this->viewer->assign('calendars', $list); | ||
+ | $this->viewer->view('GCalChooser.tpl', 'SwVtTools'); | ||
+ | |||
+ | return; | ||
+ | } | ||
+ | $controller->setCalendarId($calId); | ||
+ | /* modified by swarnat - mod61.01 */ | ||
+ | </code> |