Імпорт даних з iCalendar на Drupal-сайт. Кейс — блог Drudesk
050 640 98 44
support@drudesk.com

Кейс: імпорт даних з iCalendar на сайт

Зазвичай в блогах ми даємо поради, щоб показати, які аспекти ваших веб-сайтів варто оптимізувати, яким чином і для чого. Ми розповідали, як підвищити швидкость завантаження сторінок, продуктивность і SEO, про те, як зробити веб-дизайн сучаснішим і так далі.

Це все узагальнені поради, засновані на нашому досвіді. Цього разу ми вирішили, що було б непогано написати детально про один конкретний випадок з життя нашої команди. Це дасть вам більш глибоке уявлення про повсякденну роботу наших фахівців Drudesk. Сподіваємося, буде корисно показати на одному конкретному прикладі, як ми практично допомагаємо клієнтам.

Коротко про сайт клієнта

Наш клієнт є власником Drupal-сайту з нерухомості, за допомогою якого здає в оренду апартаменти. На цьому веб-сайті користувачі можуть бачити зображення багатьох будинків, вибрати той, який сподобалася і забронювати його на день чи на більше.

Вимоги до завдання

Клієнт хотів в більш зручний спосіб керувати бронюванням, а саме, використовуючи iCalendar. Була поставлена ​​задача налагодити процес імпортування даних з його облікового запису iCal на веб-сайт для синхронізації цих даних. Таким чином користувачі сайту зможуть бачити актуальну інформацію по кожному номеру про вільні і вже замовлені тижні. Крім того, ми повинні налагодити щотижневий автоімпорт, залишивши можливість ручного імпорту в будь-який час при необхідності.

Мінімальний час, на який користувачі можуть орендувати будинок — один день. Проте, цілі тижні відображаються як доступні чи недоступні на веб-сайті. Таким чином, дані iCal повинні перевищувати тиждень (7-10 днів), щоб відзначити цей тиждень як повністю заброньований. Якщо зарезервовано меншу кількість днів (тільки 1-3 дні з 7), система не дозволить забронювати наступний тиждень, поки не буде зарезервованою більшість днів на поточному.

Труднощі, з якими ми зіткнулися

Потрібно було з'ясувати, як зіставити дані. Всі назви будинків майже збігалися з їхніми URL-адресами в iCal. Тому з даних iCalendar нам потрібно витягнути ID будинків, а також дати початку і закінчення бронювання.

Не було готового Drupal-модуля чи іншого рішення у вільному доступі, яке ми могли б скачати і встановити. Тому нам потрібно було написати кастомний код для задоволення потреб нашого клієнта.

Запропоноване нами рішення

Щоб зіставити дані, ми запропонували додати до нод нове поле «iCal ID», яке буде містити ID будинків з iCalendar.
Після цього має початися оновлення з використанням Cron, перевіряючи всі дані і відправляючи запити. Потім запуститися парсинг за допомогою бібліотеки PHP ICS Parser, щоб внести зміни в базу даних.

Обсяг робіт

1. Аналіз завдання і пошук необхідних інструментів.
2. Виконання завдання.

  • Написати батч (кастомний код), який буде отримувати тижневі оновлення відповідно до витягнутих значеннях ID будинків та IDs з iCalendar і буде оновлювати статуси тижнів.
  • Додати нове поле id_ical.
  • Створити задачу для Cron і прикріпити кастомний батч.
  • Підключити бібліотеку для парсингу даних з iCalendar.

3. Тестування.
4. Перенесення на пробну версію сайту і на живий сайт.

Кінцевий результат

Ми отримали функціональність, яка автоматично змінює статус кожного тижня для кожного будинку на сайті на основі інформації з iCalendar. Cron запускає міграцію з iCalendar один раз в тиждень. Також, є можливість запустити міграцію зі сторінки адміністратора. Для цього наш клієнт вводить свій ключ API iCal на сторінці адміна і виконує міграцію даних вручну, якщо це знадобитися.

В результаті наш клієнт залишився задоволений результатом, якого ми досягли. Тепер, коли всі оновлення і синхронізація є автоматичними, він може зосередитися на веденні свого бізнесу, не відволікаючись на технічні деталі.
Наша команда підтримки готова допомогти кожному з оптимізацією Drupal-сайту, що позитивно вплине на успіх вашого бізнесу. Напишіть нам та отримайте професійну допомогу експертів з Друпалу.