Русская  документация  программиста                                                   Руководство программиста   2     Оглавление   Общие  положения  ................................................................................................................  3   Описание  .....................................................................................................................................................................................  3   Общие  указания  ......................................................................................................................................................................  3   Требования  ................................................................................................................................................................................  3   Разработка  ............................................................................................................................  4   Подготовка  веб  приложения  ...........................................................................................................................................  4   Контроллер  ................................................................................................................................................................................  5   Инициализация  .........................................................................................................................................................................  5   Регистрация  ...............................................................................................................................................................................  5   Все  данные  полученные  от  службы  являются  объектами  и  имеют  свойство  -­‐>status,   отображающее  статус  обращения.  ...............................................................................................................................  5   Авторизация  ..............................................................................................................................................................................  5   Идентификатор  пользователя  .....................................................................................................................................  6   Объекты  wObject  .....................................................................................................................................................................  6   Создание  объекта  ....................................................................................................................................................................  6   Загрузка  коллекции  объектов  ..........................................................................................................................................  6   Получение  значений:  ..............................................................................................................................................................  7   Изменение:  ...................................................................................................................................................................................  7   Сохранение:  ..................................................................................................................................................................................  7   Инвайты  .......................................................................................................................................................................................  7   Создание  инвайта  ...................................................................................................................................................................  7   Регистрация  по  инвайту  ....................................................................................................................................................  8   Использование  шаблонов  ..................................................................................................................................................  8   Загрузка  шаблона  из  файла  ...............................................................................................................................................  8   Поля  шаблона  .............................................................................................................................................................................  8   Связка  данных  с  полями  шаблона  ..................................................................................................................................  9   Рендеринг  шаблонов  ..............................................................................................................................................................  9   Вложенность  шаблонов  ......................................................................................................................................................  9   Отладка  .................................................................................................................................  9           Пространство  Роста     2012   Руководство программиста   3     Общие  положения   Описание   Данная  веб-­‐служба  предназначена  для  интеграции  функционала  для  проведения   веб-­‐конференций(далее  вебинар)  в  различные  веб-­‐проекты  партнеров.     Для  интеграции  используется  набор  (далее  программный  модуль)  php-­‐скриптов,   позволяющий  в  короткие  сроки  при  минимальных  трудозатратах  внедрить   необходимый  функционал  в  проект.     Обмен  данными  базируется  на  протоколе  SOAP.  При  этом  не  используется  схема   WSDL.  Нет  необходимости  разрабатывать  клиент  для  обмена  данными,  т.к.  он  уже   написан  и  готов  к  использованию.     Общие  указания   Каждый  партнер,  использующий  данных  сервис  должен  получить  кодовое  слово company_codename для  работы  с  сервисом,  которое  определяет  отдельное   пространство  для  работы  и  учавствует  в  авторизации.  Кодовое  слово  относится  к   служебному  виду  информации  и  не  должно  распространятся  без  согласия  владельца   сервиса.   Требования   Модуль  не  требует  подключения  каких-­‐либо  расширений  php  и  настройки  сервера.   Для  работы  по  умолчанию  необходима  поддержка  сессий.  Версия  php  должна  быть   не  ниже  5.2     Пространство  Роста     2012   Руководство программиста   4     Разработка   Подготовка  веб  приложения   Для  работы  с  модулем  необходимо  внести  дополнения  в  те  скрипты,  которым  будет   необходим  доступ  к  веб-­‐службе.  В  случае,  когда  используется  CMS  или  фреймворк   дополнительные  строки  можно  внести  в  инициализирующий  скрипт  (index.php).     1. Необходимо  инициализировать  константу  WEBINAR_PATH     define('WEBINAR_PATH',  $_SERVER['DOCUMENT_ROOT'].'/webinar/');   2.   Подключить  класс  главного  контроллера require_once WEBINAR_PATH.'core.php'; 3.  Определить  место  хранения  учетных  данных  пользователей  (по  умолчанию         это  $_SESSION['webinar_user'])  внести  необходимые  изменения  в  файл   config.php.     'storage' => array ( 'adapter' => 'session', 'key' => 'webinar_user ), 4.  Заполнить  следующие  поля  массива  значениями  текущего  пользователя:     if (!isset($_SESSION['webinar_user'])) { $_SESSION['webinar_user'] = $_SESSION['webinar_user']; unset($_SESSION['webinar_user']['id']); 'username' => 'Vano', 'email' => 'ivanec@mail.ru', 'surname' => 'Ivanov', 'name' => 'Ivan', 'middlename' => 'Ivanovich', 'password' => 'password' // оставлять пустым, если не нужет функционал входа через форму } Внимание!  В  массиве  не  дожнен  присутствовать  ключ  id.   5.  Данные  пользователя  должны  быть  в  переменной  сессии  до  первого   обращения  к  контроллеру  модуля.     Пространство  Роста     2012   Руководство программиста   5     Контроллер   Практически  вся  работа  с  модулем  сводится  к  работе  с  главным  контроллером.  Все   классы  подключаются  по  мере  необходимости.   Инициализация   $controller = Webinar::instance(); При  создании  объекта-­‐контроллера  происходит  автоматическая  авторизация.    Если   пользователь  не  авторизирован  нужно  его  зарегистрировать.   Регистрация   $query = $webinar->register($_SESSION['webinar_user']); if ($query->status == 'REGISTERED') echo 'New user was succesfuly registered'; Все  данные  полученные  от  службы  являются  объектами  и  имеют  свойство  -­‐>status,   отображающее  статус  обращения.   Статусами  любого  обращения  могут  быть:   DENIED – пользователь не авторизирован ERROR – ошибка базы данных, неверно переданные параметры, ошибка модели данных   Подробное  сообщение  об  ошибке  содержится  в  поле  -­‐>message  возвращаемого   объекта.   Так  объект  ответа  при  регистрации  может  иметь  следующие  статусы:   REFUSED – незарегистрированный company_codename REGISTERED – пользователь успешно зарегистрирован ALREADY_REGISTERED – пользователь уже зарегистрирован В  случае  успешной  регистрации  пользователь  становится  авторизированным   автоматически.   Авторизация   Выполнять  авторизацию  нет  необходимости,  при  инициализации  контроллера  она   происходит  автоматически.  Но  если  вы  хотите  использовать  форму  для  входа  вам   понадобится  следующая  функция:   $controller->login('email','password');   Пространство  Роста     2012   Руководство программиста   6     Идентификатор  пользователя   В  целях  безопасности  модуль  не  работает  с  идентификаторами  пользователя   напрямую,  отсылая  каждый  раз  службе  идентификатор  сессии,  полученный  от   службы.  Для  подключения  к  вебинару  необходим  идентификатор  пользователя.   Получить  его  можно  используя  следующий  метод:   $user_id = Webinar::instance()->getUserId(); Объекты  wObject   Работа  с  вебинарами  как  с  сущностью  сводится  к  работе  с  объектами.  Создать   объект  вебинара,  готовый  к  работе  можно  вызовом  метода  главного  контроллера.   Создание  объекта   $webinar = Webinar::instance()->factory();   Если  передать  параметр  $id  контроллер  загрузит  объект  вебинара  с  сервиса.     $webinar = Webinar::instance()->factory($id); Возможные  статусы  при  загрузки  вебинара  по  идентификатору:   NOT_FOUND – вебинар не был найден по идентификатору REFUSED – вебинар не принадлежит партнеру LOADED – вебинар успешно загружен Загрузка  коллекции  объектов   $controller = Webinar::instance(); $all_webinar = $controller->all(); // получить все вебинары по company_codename $my_webinars = $controller->own(); // получить вебинары пользователя $sub_webinarss = $controller->subscribed(); // получить вебинары по приглашению     Возможные  статусы  загрузки  коллекции:   EMPTY – вебинары не найдены LOADED – вебинары загружены успешно Если  объекты  вебинаров  были  загружены  успешно,  массив  этих  объектов  можно   получить  следующим  образом:   $array_of_wObjects = $all_webinars->objects     Пространство  Роста     2012   Руководство программиста   7     Получение  значений:   $data = $webinar->values(); Изменение:   $webinar->values($_POST); Или $webinar->title = $data; Сохранение:   $result = $webinar->save();   Внимание!  Для  создания  и  сохранения  используется  один  и  тот  же  метод.  Если   объект  вебинара  не  содержит  id,  будет  создан  новый  вебинар.   Инвайты   Инвайты  позволяют  приглашать  других  пользователей  на  вебинар  (звать  друзей).   Приглашения  отсылаются  на  почту  и  должны  содержать  инвайт  код,  по  которому   возможна  регистрация  на  нашем  сервисе.  Инвайт  код  полностью  пригоден  для   передачи  его  в  качестве  GET  параметра.   Создание  инвайта   $invite = $webinar->invite(array('email'=>'', 'surname'=>'','name'=>'','middlename'=>'', 'password' => '' )); Если  вы  не  собираетесь  использовать  авторизацию  с  использованием  формы  ввода   для  приглашенных  пользователей,  не  передавайте  параметр  password.     Возможные  статусы  при  создании  инвайта:   INVITED – пользователь успешно приглашен ALREADY_INVITED – пользователь уже получал инвайт на данный вебинар Получить  код  можно  из  результатов  запроса:   $code = $invite->code     Пространство  Роста     2012   Руководство программиста   8     Регистрация  по  инвайту   Если  есть  необходимость  организовать  участие  в  вебинарах  пользователей,   незарегистрированных  на  Вашем  сайте,  вы  можете  зарегистрировать  их  в  нашем   сервисе  по  коду  инвайта.   $reg_by_invite = Webinar::instance()->register($code); Возможные  статусы  регистрации  по  инвайту:   FAULT – инвайт не был найден по коду ALREADY_REGISTERED – пользователь уже зарегистрирован в базе сервиса REGISTERED – пользователь успешно зарегистрирован Если  регистрация  прошла  успешно,  или  пользователь  уже  был  зарегистрирован  в   базе  сервиса,  происходит  автоматическая  авторизация.   При  этом  в  ответе  будут  содержать  и  следующе  данные:   $reg_by_invite->webinar_id;    //  получить идентификатор вебинара   Таким  образом  вы  можете  отклонировать  страницы  с  необходимым  функционалом   и  дать  к  ним  доступ  для  незарегистрированных  на  вашем  сайте  пользователей.   Зарегистрированные  пользователи  будут  авторизоваться  по  данным  из  вашей  базы   данных  через  сессию,  а  приглашенные  со  стороны  пользователи  по  инвайт  кодам.     Внимание!  Вы  можете  не  использовать  Инвайты  и  организовать  всю  логику  в  своем   приложении.  При  этом  $controller-­‐>subscribed()  будет  возвращать  статус  EMPTY.   Использование  шаблонов   Для  облегчения  внедрения  в  папке  templates  модуль  поставляется  с  шаблонами,  код   которых  вы  можете  исправить  под  себя.     Загрузка  шаблона  из  файла   $template = Webinar::instance()->template('webinars/all'); Поля  шаблона   Поля  в  шаблоне  -­‐  именованные  места  для  подстановки  значений,  которые   обозначаются  двойными  квадратными  скобками  [[]]  по  умолчанию:   echo '
Создать вебинар
';   Пространство  Роста     2012   Руководство программиста   9     Поменять  скобки  на  другие  обозначения  можно  следующим  образом:   $template->casing('{','}'); Связка  данных  с  полями  шаблона   Для  получения  массива  полей  и  их  значений  для  связывания  используется  метод   $vars = $template->vars(); Связка  значения  с  полем  шаблона:   $template->myvar = 'value'; Для  связки  полей  шаблона  со  значениями  ассоциативного  массива  используется   следующий  метод:   $template->bind(array('field' => 'value'); Вы  также  можете  связать  значения  на  этапе  инициализации:   $template = Webinar::instance()->template('webinar/update', $_POST);   Внимание!  Значения  передаются  не  по  ссылке,  внешнее  изменение  значений  после   связки  не  изменит  массив  $template-­‐>vars()   Рендеринг  шаблонов   $template->engine(); А  также  сразу  после  инициализации:   Webinar::instance()->template('webinar/info', webinar->values())->engine();   Вложенность  шаблонов   Вебинары  могут  быть  вложены  друг  в  друга.     $main_template = Webinar::instance()->template('main'); $nested_template =  Webinar::instance()->template('other'); $main_template->other_template = $nested_template->parse(); $main_template->engine(); Отладка   Для  отладки  работы  и  просмотра  возвращаемых  сервисом  данных  необходимо   включить  режим  отладки  в  конфигурационном  файле.  После  этого  все  директивы   Webinar::debug($your_var, 'Пояснения к выводу'); Будут  обрабатываться  контроллером  и  выводить  подробную  информацию  в   удобном  виде.   Пространство  Роста     2012