Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​