Интеграция с Google Calendar
(API v.2)

В этой статье рассматривается Google Calendar API v2, который больше не используется. Для получения информации о текущем Google Calendar API v3, пожалуйста, обратитесь сюда.

Начало работы

Перед началом синхронизации убедитесь, что расширение php_curl.dll включено.

Если оно не включено, активируйте его, удалив точку с запятой в этой строке вашего файла php.ini, который используется вашим веб-сервером:

;extension=php_curl.dll

После подтверждения активности расширения можно переходить к настройке.

Чтобы синхронизировать Scheduler с Google Calendar, выполните следующие шаги:

  • Скачайте пакет 'gCal_proxy_v2'.
  • Распакуйте пакет в корневую директорию вашего веб-сервера.

На стороне сервера:

  • Откройте файл '01_proxy.php', который находится в [rootFolder] gCal_proxy server с помощью текстового редактора. Этот файл содержит стандартный код инициализации прокси:
<?php
 
$email = "";
$pass = "";
$cal = "";
 
include('google_proxy.php');
$calendar = new GoogleCalendarProxy($email, $pass, $cal);
//$calendar->map("location", "details");
$calendar->connect();
 
?>
  • Присвойте значения 3 переменным, остальной код не изменяйте.
    Необходимые переменные:
    • $email - имя пользователя вашей учетной записи Gmail;
    • $pass - пароль от вашей учетной записи Gmail;
    • $cal - имя вашего Google Calendar.

Тщательно проверьте корректность значений. Например, если имя вашего календаря test@googlemail.com, использование test@gmail.com приведет к ошибке.

  • Сохраните файл после внесения изменений.

На стороне клиента:

  • Откройте HTML-файл, в котором инициализируется ваш scheduler. Если у вас еще нет scheduler, создайте новый HTML-файл в корневой папке вашего веб-сервера.
  • Инициализируйте scheduler как обычно (подробнее см. в How to Start).
  • Загрузите события Google Calendar в Scheduler с помощью метода load. В качестве параметра укажите путь к файлу '01_proxy.php', который вы только что обновили.
scheduler.load("../gCal_proxy/server/01_proxy.php");
  • Инициализируйте dataProcessor для двусторонней синхронизации.

  • Подключите еще один файл скрипта.

<script src="../gCal_proxy/sample/codebase/dhtmlxdataprocessor.js"></script>
  • Передайте путь к тому же файлу '01_proxy.php' в качестве параметра конструктору.
var dp =  scheduler.createDataProcessor("../gCal_proxy/server/01_proxy.php");
dp.init(scheduler);//'scheduler' — имя экземпляра scheduler.

Настройка синхронизации завершена. Готовый пример можно найти в файле 'sample.html', который находится в [rootFolder] gCal_proxy sample.

Экспорт

Чтобы экспортировать события из Google Calendar в вашу базу данных, выполните следующие шаги:

  1. Откройте файл '03_export.php' в [rootFolder] gCal_proxy server с помощью текстового редактора.
  2. Задайте значения переменных, остальной код не изменяйте.
    Необходимые переменные:
    • $email - имя пользователя вашей учетной записи Gmail;
    • $pass - пароль от вашей учетной записи Gmail;
    • $cal - имя вашего Google Calendar;
    • $db_host - имя хоста или IP-адрес вашего MySQL сервера;
    • $db_user - имя пользователя MySQL;
    • $db_pass - пароль MySQL;
    • $db_name - имя вашей базы данных MySQL;
    • $db_table - имя вашей таблицы в базе данных;
  3. Сохраните изменения и закройте файл.
  4. Запустите скрипт '03_export.php'.
  5. После выполнения скрипта события из Google Calendar будут сохранены в указанной таблице базы данных.

Функция 'export()' возвращает количество экспортированных записей из Google Calendar.

Импорт

Чтобы импортировать события из вашей базы данных в Google Calendar, выполните следующие шаги:

  1. Откройте файл '02_import.php' в [rootFolder] gCal_proxy server с помощью текстового редактора.
  2. Задайте значения переменных, остальной код не изменяйте. Переменные те же, что и для экспорта.
  3. Сохраните изменения и закройте файл.
  4. Запустите скрипт '02_import.php'.
  5. После выполнения скрипта события из базы данных будут добавлены в Google Calendar.

Функция 'import()' возвращает количество записей, импортированных в Google Calendar.

Как передать дополнительную информацию, связанную с событием

Google Calendar и Scheduler используют разные наборы полей. Для корректной синхронизации информации о событиях (при импорте или экспорте) необходимо сопоставить соответствующие поля между двумя календарями.

По умолчанию между Google Calendar и Scheduler установлено следующее сопоставление:

Google Calendar -> Scheduler

  • id -> id
  • title -> text
  • startTime -> start_date
  • endTime -> end_date

Вы также можете включить дополнительные поля Google Calendar:

Поле Описание
canEdit указывает, может ли авторизованный пользователь редактировать событие. Возможные значения: '0' или '1'
created дата создания события в формате Google Calendar
details детали события
updated дата последнего обновления события в формате Google Calendar
location местоположение события
status текущий статус события: cancelled (событие отменено), confirmed (событие подтверждено), tentative (событие запланировано предварительно)

Чтобы включить дополнительную информацию, выполните следующие шаги:

На стороне сервера:

  • Откройте соответствующий файл в [rootFolder] gCal_proxy server в зависимости от действия: '01_proxy.php' для синхронизации, '02_import.php' для импорта или '03_export.php' для экспорта.
  • Используйте метод map() для связывания нужных полей. Например, чтобы включить местоположение события вместе с текстом, началом и концом, добавьте следующую строку:
$calendar->map("location", "place");
  • location — имя поля в Google Calendar;
  • place — соответствующее имя поля в Scheduler. Здесь можно выбрать любое имя.

  • Сохраните изменения и закройте файл.

На стороне клиента:

  • Откройте HTML-файл, где инициализируется scheduler.
  • Добавьте следующее в конфигурацию scheduler:

В секциях lightbox:

scheduler.config.lightbox.sections=[
    ...
    {name:"placeField", height:50, map_to:"place", type:"textarea"}
];

Значение map_to должно совпадать с именем, указанным на стороне сервера (в приведенном выше примере — "place").

  • Определите метку для новой секции:
scheduler.locale.labels.section_placeField = 'Place';

Замените "placeField" на имя вашей секции после подчеркивания.

  • Сохраните изменения и закройте файл.
Наверх