avoo/qcm-core-bundle

QCM Core bundle for Symfony2


License
MIT

Documentation

QcmCoreBundle

Latest Stable Version License Build Status Scrutinizer Code Quality

The core bundle includes the basic functionalities of qcm based on SyliusResourceBundle concept and implement QcmComponent

Installation

Require avoo/qcm-core-bundle into your composer.json file:

{
    "require": {
        "avoo/qcm-core-bundle": "@dev-master"
    }
}

Register the bundle in app/AppKernel.php:

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new FOS\RestBundle\FOSRestBundle(),
        new JMS\SerializerBundle\JMSSerializerBundle($this),
        new Sylius\Bundle\ResourceBundle\SyliusResourceBundle(),
        new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
        new Qcm\Bundle\CoreBundle\QcmCoreBundle(),
    );
}

In app/config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: @QcmCoreBundle/Resources/config/core.yml }

Security default configuration

You can use the default register/login process:

In app/config/routing.yml

qcm_core:
    prefix:   /
    resource: "@QcmCoreBundle/Resources/config/routing.yml"

Add default user provider, firewall and access control in app/config/security.yml:

security:
    encoders:
        Qcm\Component\User\Model\UserInterface: sha512
    providers:
        qcm_corebundle:
            id: qcm_core.user_provider.username
    firewalls:
        login_firewall:
            pattern:    ^/security/login$
            anonymous:  ~
        secured_area:
            pattern:    ^/
            anonymous:  ~
            form_login:
                provider:            qcm_corebundle
                login_path:          qcm_core_security_login
                check_path:          qcm_core_security_login_check
                remember_me:         true
                default_target_path: you_homepage_route
            logout:
                path:   qcm_core_security_logout
    access_control:
        - { path: "^/security/login", roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: "^/", roles: ROLE_USER }

QCM Configuration

You can override de default questionnaire configuration in app/config/config.yml

qcm_core:
    website_name: Qcm Demo // The website name
    configuration:
        max_questions: 40 //Questions number max by questionnaire
        question_level: ["beginner", "senior", "jedi"] //Determine the level for each question
        answers_max: 5 //Number of answers max by question
        timeout: 2400 //Total time of the questionnaire (in seconds)
        time_per_question: 60 //Time per question, if you choose this value, the timeout will be disabled

Override service

For statistics class:

qcm_core:
    service:
        statistics:
            class: MyBundle\Statistics\Class // For better compatibility extends the Model\QuestionnaireStatistics
            template: MyBundle\Answers\Template\Class // You need to implements the qcm TemplateInterface

Credits

License

This bundle is released under the MIT license. See the complete license in the bundle:

License