{"id":24869386,"url":"https://github.com/salsadigitalauorg/webform_openfisca","last_synced_at":"2026-05-02T13:34:56.137Z","repository":{"id":268982045,"uuid":"741683614","full_name":"salsadigitalauorg/webform_openfisca","owner":"salsadigitalauorg","description":"Repository for the Drupal module for integration between Webforms and Openfisca","archived":false,"fork":false,"pushed_at":"2026-04-29T06:05:09.000Z","size":5915,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":8,"default_branch":"1.x","last_synced_at":"2026-04-29T06:25:22.675Z","etag":null,"topics":["drupal","openfisca","webform","webforms-api"],"latest_commit_sha":null,"homepage":"https://www.drupal.org/project/webform_openfisca","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/salsadigitalauorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"patreon":"webform_openfisca"}},"created_at":"2024-01-10T22:31:42.000Z","updated_at":"2026-04-14T03:51:25.000Z","dependencies_parsed_at":"2025-01-03T07:23:29.965Z","dependency_job_id":"d5131d65-4caf-47b4-846a-a3c5f378d815","html_url":"https://github.com/salsadigitalauorg/webform_openfisca","commit_stats":null,"previous_names":["salsadigitalauorg/webform_openfisca"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/salsadigitalauorg/webform_openfisca","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsadigitalauorg%2Fwebform_openfisca","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsadigitalauorg%2Fwebform_openfisca/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsadigitalauorg%2Fwebform_openfisca/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsadigitalauorg%2Fwebform_openfisca/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/salsadigitalauorg","download_url":"https://codeload.github.com/salsadigitalauorg/webform_openfisca/tar.gz/refs/heads/1.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salsadigitalauorg%2Fwebform_openfisca/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32536579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drupal","openfisca","webform","webforms-api"],"created_at":"2025-02-01T03:22:54.452Z","updated_at":"2026-05-02T13:34:56.108Z","avatar_url":"https://github.com/salsadigitalauorg.png","language":"PHP","funding_links":["https://patreon.com/webform_openfisca"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n  \u003cimg width=200px height=100px src=\"logo.png\" alt=\"Salsa Digital logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eThis module integrates Drupal Webform functionality with the OpenFisca API,\nallowing for seamless communication and calculation based on OpenFisca rules.\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub Issues](https://img.shields.io/github/issues/salsadigitalauorg/webform_openfisca.svg)](https://github.com/salsadigitalauorg/webform_openfisca/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/salsadigitalauorg/webform_openfisca.svg)](https://github.com/salsadigitalauorg/webform_openfisca/pulls)\n[![Build, test and deploy](https://github.com/salsadigitalauorg/webform_openfisca/actions/workflows/test.yml/badge.svg)](https://github.com/salsadigitalauorg/webform_openfisca/actions/workflows/test.yml)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/webform_openfisca/webform_openfisca)\n![LICENSE](https://img.shields.io/github/license/salsadigitalauorg/webform_openfisca)\n![Renovate](https://img.shields.io/badge/renovate-enabled-green?logo=renovatebot)\n[![codecov](https://codecov.io/github/salsadigitalauorg/webform_openfisca/graph/badge.svg?token=4EC9LB0WDX)](https://codecov.io/github/salsadigitalauorg/webform_openfisca)\n\n![PHP 8.3](https://img.shields.io/badge/PHP-8.3-777BB4.svg)\n![PHP 8.4](https://img.shields.io/badge/PHP-8.4-777BB4.svg)\n![Drupal 10](https://img.shields.io/badge/Drupal-10-009CDE.svg)\n![Drupal 11](https://img.shields.io/badge/Drupal-11-006AA9.svg)\n\n\u003c/div\u003e\n\n---\n\n## Features\n\n- Handles communication with the OpenFisca API through Guzzle HTTP client. \n- Provides methods to post data, retrieve variables, parameters,\n  and calculations from the OpenFisca API.\n- API calls to private OpenFisca instances are supported with Authorization \n  header. [Key module](https://www.drupal.org/project/key) can be utilised to \n  store the authorization header token with the submodule Authorization Key.\n- Webform handler for processing submissions \u0026 interacting with OpenFisca API.\n- Provides a mechanism for creating redirect rules\n  based on OpenFisca responses.\n\n## Installation\n\n1. Install the module as you would any other Drupal module.\n\n## Usage\n\n1. Ensure the OpenFisca API configuration is correctly set\nin the Drupal configuration.\n2. Configure Webform fields to map to OpenFisca variables\nand set any specific rules.\n3. Submit a Webform, and the module will communicate with OpenFisca API,\nperform calculations, and handle redirects based on configured rules.\n\n## Configuration\n\n### Webform Fields Configuration\n\n- Map Webform fields to OpenFisca variables through the Webform UI.\n- Configure the OpenFisca API endpoint and other settings.\n\n### Redirect Rules Configuration\n\n- Define redirect rules in Drupal content type \"rac\" associated with Webforms.\n- Rules are evaluated based on OpenFisca calculation results,\nand matching rules trigger redirects.\n\n## Local development\n\n1. Install PHP with SQLite support and Composer\n2. Clone this repository\n3. Run `ahoy build`\n\n## Building website\n\n`ahoy build` assembles the codebase, starts the PHP server\nand provisions the Drupal website with this extension enabled. These operations\nare executed using scripts within [`.devtools`](.devtools) directory. CI uses\nthe same scripts to build and test this extension.\n\nThe resulting codebase is then placed in the `build` directory. The extension\nfiles are symlinked into the Drupal site structure.\n\nThe `build` command is a wrapper for more granular commands:\n```bash\nahoy assemble     # Assemble the codebase\nahoy start        # Start the PHP server\nahoy provision    # Provision the Drupal website\n```\n\nThe `provision` command is useful for re-installing the Drupal website without\nre-assembling the codebase.\n\n### Drupal versions\n\nThe Drupal version used for the codebase assembly is determined by the\n`DRUPAL_VERSION` variable and defaults to the latest stable version.\n\nYou can specify a different version by setting the `DRUPAL_VERSION` environment\nvariable before running the `ahoy build` command:\n\n```bash\nDRUPAL_VERSION=11 ahoy build        # Drupal 11\nDRUPAL_VERSION=11@alpha ahoy build  # Drupal 11 alpha\nDRUPAL_VERSION=10@beta ahoy build   # Drupal 10 beta\nDRUPAL_VERSION=11.1 ahoy build      # Drupal 11.1\n```\n\nThe `minimum-stability` setting in the `composer.json` file is\nautomatically adjusted to match the specified Drupal version's stability.\n\n### Using Drupal project fork\n\nIf you want to use a custom fork of `drupal-composer/drupal-project`, set the\n`DRUPAL_PROJECT_REPO` environment variable before running the `ahoy build`\ncommand:\n\n```bash\nDRUPAL_PROJECT_REPO=https://github.com/me/drupal-project-fork.git ahoy build\n```\n\n### Patching dependencies\n\nTo apply patches to the dependencies, add a patch to the `patches` section of\n`composer.json`. Local patches are be sourced from the `patches` directory.\n\n### Providing `GITHUB_TOKEN`\n\nTo overcome GitHub API rate limits, you may provide a `GITHUB_TOKEN` environment\nvariable with a personal access token.\n\n### Provisioning the website\n\nThe `provision` command installs the Drupal website from the `standard`\nprofile with the extension (and any `suggest`'ed extensions) enabled. The\nprofile can be changed by setting the `DRUPAL_PROFILE` environment variable.\n\nThe website will be available at http://localhost:8000. The hostname and port\ncan be changed by setting the `WEBSERVER_HOST` and `WEBSERVER_PORT` environment\nvariables.\n\nAn SQLite database is created in `/tmp/site_webform_openfisca.sqlite` file.\nYou can browse the contents of the created SQLite database using\n[DB Browser for SQLite](https://sqlitebrowser.org/).\n\nA one-time login link will be printed to the console.\n\n## Coding standards\n\nThe `ahoy lint` command checks the codebase using multiple\ntools:\n- PHP code standards checking against `Drupal` and `DrupalPractice` standards.\n- PHP code static analysis with PHPStan.\n- PHP deprecated code analysis and auto-fixing with Drupal Rector.\n- PHP code mess detection with PHPMD.\n- Twig code analysis with Twig CS Fixer.\n\nThe configuration files for these tools are located in the root of the codebase.\n\n### Fixing coding standards issues\n\nTo fix coding standards issues automatically, run the `ahoy lint-fix`. This\nruns the same tools as `lint` command but with the`--fix` option (for the\ntools that support it).\n\n## Testing\n\nThe `ahoy test` command runs the PHPUnit tests for this extension.\n\nThe tests are located in the `tests/src` directory. The `phpunit.xml` file\nconfigures PHPUnit to run the tests. It uses Drupal core's bootstrap file\n`core/tests/bootstrap.php` to bootstrap the Drupal environment before running\nthe tests.\n\nThe `test` command is a wrapper for multiple test commands:\n```bash\nahoy test-unit        # Run Unit tests\nahoy test-kernel      # Run Kernel tests\nahoy test-functional  # Run Functional tests\n```\n\n### Running specific tests\n\nYou can run specific tests by passing a path to the test file or PHPUnit CLI\noption (`--filter`, `--group`, etc.) to the `ahoy test` command:\n\n```bash\nahoy test-unit ../tests/src/Unit/MyUnitTest.php\nahoy test-unit -- --group=wip\n```\n\nYou may also run tests using the `phpunit` command directly:\n\n```bash\ncd build\nphp -d pcov.directory=.. vendor/bin/phpunit tests/src/Unit/MyUnitTest.php\nphp -d pcov.directory=.. vendor/bin/phpunit --group=wip\n```\n\n### Check code coverage\nAfter running all tests, coverage reports are generated in the directory\n`.logs/coverage/phpunit` in various formats.\n\nYou can run the command `ahoy check-code-coverage` to show the summary\nof the coverage reports.\n\n---\n_This repository was created using the [Drupal Extension Scaffold](https://github.com/AlexSkrypnyk/drupal_extension_scaffold) project template_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalsadigitalauorg%2Fwebform_openfisca","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalsadigitalauorg%2Fwebform_openfisca","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalsadigitalauorg%2Fwebform_openfisca/lists"}