Getestet in VtigerCRM 6.1 und 6.0!
Mit dieser Modifikation können Sie den internen Google Calendar Sync auch mit einem Kalender verwenden, welcher nicht der Standardkalender Ihres Accounts ist.
Bevor du die Modifikation integrierst, installiere meine Vtiger Tools. Erweiterung. Diese ist absolut notwendig, da ich die Verwaltung für die Kalendarauswahl darin implementiert habe um die Modifikationen gering zu halten.
Nach der Installation der Vtiger Tools drücke einmal „Initialize“ in der „Google Calendar“ Sektion. Damit hast du die Funktion initialisiert.
$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 */
Diese Datei existiert nur in VtigerCRm 6.1, da 6.0 ein Löschen der Verbindung nicht vorsieht!
$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 */