# sfPropelPollsPlugin sfPropelPollsPlugin is a Symfony plugin which make polling a piece of cake. # Documentation ## Installation To install the plugin, run this command within your symfony project : symfony plugin:install sfPropelPollsPlugin You must enable sfProtoculousPlugin class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfPropelPlugin'); $this->enablePlugins('sfPropelPollsPlugin'); $this->enablePlugins('sfProtoculousPlugin'); } } Optional. If you want to specify the name of the existing user table and class: (see [next section about the plugin configuration](#PluginConfiguration) for further details). Copy the sample configuration file from `myproject/plugins/sfPropelPollsPlugin/config/sfPropelPollsPlugin.yml.sample` into yout project's (not application!) `config/` folder. Rename it to `myproject/config/sfPropelPollsPlugin.yml`. You must manually register a config handler for this configuration file by creating a `config_handlers.yml` file in your application `config/` directory with the following content: config/sfPropelPollsPlugin.yml: class: sfPropelPollsConfigHandler param: prefix: sf_propel_polls_ Of course, il you already have a `config_handlers.yml` file in your `config/` directory, you have to append the previously mentionned content to the existing one. Then, rebuild your model : symfony propel:build-all Now, as a pure Symfony tradition, purge your cache : symfony cc ### Plugin configuration #### The `sfPropelPollsPlugin.yml` file The plugin schema is configurable to match your database table names. Here is the default plugin configuration, taken from `myproject/plugins/sfSimpleBlogPlugin/config/sfPropelPollsPlugin.yml.sample`: schema: connection: propel # database connection you want to use (related to the databases.yml configuration) user_table: sf_guard_user # user table name user_id: id # primary key of the user table user_class: sfGuardUser # name of the Propel object for users polls_table: sf_polls # polls table name polls_answers_table: sf_polls_answers # polls answers table name polls_users_answers_table: sf_polls_users_answers # polls votes table name You can customize these settings in `myproject/config/sfPropelPollsPlugin.yml`. **Note:** After modifying the schema settings, you must rebuild your model. ### API The API is mainly available from the `./lib/model/sfPoll.php` class object, phpdoc is quite exhaustive. ### Modules The plugin provide both Back and Front office standard modules that you can activate in the `settings.yml` of your apps. In front office, you can activate the sfPolls module : .settings enabled_modules: [..., sfPolls](default,) i18n: true In back office, you should activate the sfPollsAdmin module : .settings enabled_modules: [..., sfPollsAdmin](default,) Front office routes url are provided by default, here they are: * `@polls`: lists all published polls * `@poll_detail?id=id`: shows poll form * `@poll_results?id=id`: shows poll results * `@poll_vote`: handle voting request ### Components The plugin also provide standard component to ease polls integration. To display a polling form as a Symfony component, be sure to have activated the sfPolls module in your settings.yml as described previously and put something like this in a template : <?php include_component('sfPolls', 'poll_form') ?> This will display last active, published poll ## Unit testing The plugin is unit tested, test suite is located in the `./test/sfPropelPollsTest.php` file. ## Uninstallation symfony plugin:uninstall symfony/sfPropelPollsPlugin