Tested with VtigerCRM 6.0 and 6.1!
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 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”
$query = $calendars->newEventQuery($query);
/* modified by swarnat - mod61.01 */ if($this->calendarId !== null) { $query->setUser($this->calendarId); } /* modified by swarnat - mod61.01 */
$createdEntry = $gContact->insertEvent($entity);
/* 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 */
} ?>
/* 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 */
public function getSourceType() { return 'Events'; }
/* 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 */
This file only exist in vtigerCRM 6.1, becaus 6.0 don't support remove of Sync.
$db->pquery($query, array($module, $id));
/* modified by swarnat - mod61.01 */ $query = "DELETE FROM vtiger_gcal_sync WHERE user_id = ?"; $db->pquery($query, array($id)); /* modified by swarnat - mod61.01 */
$controller = new Google_Calendar_Controller($user);
/* 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 */