beta/base.vote 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

beta/base.vote

最新稳定版本:1.0.3

Composer 安装命令:

composer require beta/base.vote

包简介

Simple wrapper bitrix vote

README 文档

README

Установка

composer require beta/base.vote

Данный пакет предоставляет функционал для описания опросов/голосований, разрабатывался как обёртка модуля vote CMS Bitrix. Не является полной реализацией, отсуствует имплементация сервисов:

  • VoteServiceInterface - предназначен для работы со схемой опроса (сохранение схемы, запрос схем(ы) по заданным критериям)
  • VoteResultServiceInterface - предназначен для работы с результатами опроса (сохранение результата, запрос результатов по заданным критериям)

Для работы с опросами задействованы следующие интерфейсы:

  1. VoteSchemaInterface - интерфейс схемы опроса, содержит: название и описание. Так же предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value). Предоставляет доступ с вопросам.
  2. QuestionInterface - интерфейс вопроса. содержит: текст вопроса, признак необходимости обязательного ответа, тип вопроса (произвольное целое число, может варьироваться в зависимости от реализации). Предоставляет доступ к вариантам ответа, варианты ответа обязательны для любых вопросов, даже для тех которые требуют ответ в произвольной форме. Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
  3. AnswerVariantInterface - интерфейс варианта ответа, содержит: текст ответа и тип варианта ответа (произвольное целое число, может варьироваться в зависимости от реалзации). Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).

Интерфейсы для работы с результатом опроса:

  1. VoteResultInterface - интерфейс результата опроса, предоставляет доступ к ответам на вопросы. Так же предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
  2. AnswerResultInterface - интерфейс ответа на вопрос, содержит ссылку на вариант ответа - AnswerVariantInterface и произвольный текст ответа. Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).

Схема опроса построена в виде дерева, каждый дочений элемент имеет доступ к родителю:

VoteSchemaInterface <-> QuestionInterface <-> AnswerVariantInterface

Результат опроса:

VoteResultInterface <-> AnswerResultInterface -> AnswerVariantInterface

Пример создания опроса:

use Base\Vote\Interfaces\VoteServiceInterface;
use Base\Vote\QuestionType;
use Base\Vote\AnswerVariantType;
use Base\Vote\VoteSchema;

/**
 * @var VoteServiceInterface $voteService
 **/
$voteService = new SomeImplementationVoteService();
$newVoteSchema = VoteSchema::createNewVote('Новый опрос', 'Некоторое описание для опроса');

$question1 = $newVoteSchema->createQuestion('Что вы думаете по поводу нового API для опросов?', QuestionType::RADIO);
$question1->createAnswerVariant('Ну такое...');
$question1->createAnswerVariant('Это что-то невероятное');
$question1->createAnswerVariant('Как это теперь развидеть?');
$question1->createAnswerVariant('Некоторое описание', AnswerVariantType::TEXT);

$question2 = $newVoteSchema->createQuestion('Ещё один неоднозначный вопрос...', QuestionType::CHECKBOX);
$question2->createAnswerVariant('Вариант 1');
$question2->createAnswerVariant('Вариант 2');
$question2->createAnswerVariant('Вариант 3');
$question2->createAnswerVariant('Вариант 4');

$result = $voteService->saveVote($newVoteSchema);

Пример добавления результата опроса:

use Base\Vote\Interfaces\VoteResultServiceInterface;
use Base\Vote\Interfaces\QuestionInterface;
use Base\Vote\VoteResult;

/**
 * @var VoteServiceInterface $voteService
 **/
$voteService = new SomeImplementationVoteService();
/**
 * @var VoteServiceInterface $voteService
 **/
$voteResultService = new SomeImplementationVoteResultService();

$voteSchema = $voteService->getVoteSchemaById(1);
$newVoteResult = new VoteResult($voteSchema);

// Добавление ответа
$newVoteResult->createAnswerResultByTitle(
    'Планируете ли вы дополнительно обучаться профильной специальности?', 
    'да'
);

// Добавление того же ответа другим методом
$question = $voteSchema->getQuestionByTitle('Планируете ли вы дополнительно обучаться профильной специальности?');
$answerVariant = $question instanseof QuestionInterface ? $question->getAnswerVariantByTitle('да') : null;
$newVoteResult->createAnswerResult($answerVariant);

$result = $voteResultService->saveVoteResult($newVoteResult);

统计信息

  • 总下载量: 75
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-10-31

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固