PHPackages                             rkw/rkw-outcome - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rkw/rkw-outcome

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

rkw/rkw-outcome
===============

Extension for processing outcome surveys

v10.4.5-stable(3mo ago)0115GPL-2.0+PHPPHP &gt;=7.4

Since May 10Pushed 3mo ago2 watchersCompare

[ Source](https://github.com/RKWKomZe/RkwOutcome)[ Packagist](https://packagist.org/packages/rkw/rkw-outcome)[ Docs](https://www.rkw-kompetenzzentrum.de)[ RSS](/packages/rkw-rkw-outcome/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (9)Versions (32)Used By (0)

rkw\_outcome
============

[](#rkw_outcome)

Features
--------

[](#features)

Extension for processing outcome surveys.

Structure and process
---------------------

[](#structure-and-process)

If a event reservation or an order is confirmed, the fired signal will eventually initiate the process of creating a survey request associated with the corrsponding reservation or order.

The survey request will be created only, if a the event reservation or order fits to an existing survey configuration, which is set in the backend. The following parameters must match:

- targetGroup
- product or event

If these parameters do match the survey request is created immediately. A scheduled task will take care of processing these pending survey requests. Therefore a corresponding task `SurveyRequestCommandController->processSurveyRequestsCommand()` has to be set in the scheduler. It takes the following parameters:

- `checkPeriod` (range of time containing the potentially processable event reservations or orders - in seconds)
- `maxSurveysPerPeriodAndFrontendUser` (max number of request notifications to be sent to a user within the `checkPeriod`)
- `surveyWaitingTime` (select only survey requests, which have been shipped at least this amount of time ago)

If there are pending survey requests they will be processed. In case there are multiple requests pending, meaning there are at least two products or events associated with survey configuration, the process will randomly select one out of these and store it to the containing survey request. Each of the matching survey requests will get a timestamp to mark them as notified.

In the same time a notification to the corresponding frontenduser will be sent to provide them a link to the selected survey. This link will sent them to a page containing a regular survey plugin, but using the uid of the selected survey in combination with an enhanced real url configuration, the frontenduser will get the corresponding survey and can go along.

Setup
-----

[](#setup)

You should create a backend folder to store the outcome records. The uid of this folder should be set as constant `storagePid`.

The extension relies on the extensions rkw\_events and rkw\_shop. Both extensions provide an additional constant `targetGroupsPid`. This constant should be used to restrict the selection of targetgroups in the order or reservation form to the selected uid of the parent `sys_category`.

Furthermore you should set the constant `surveyShowPid` to the page uid containing your survey plugin. This will be used in rendering the link to the corresponding survey within the notification mail.

Necessary enhancement of the real url configuration:

```
                //===============================================
                // Survey
                'tx-rkw-survey' => array (
                    array(
                        'GETvar' => 'tx_rkwsurvey_survey[controller]',
                        'valueMap' => array(
                            'survey' => 'Survey',
                        ),
                    ),
                    array(
                        'GETvar' => 'tx_rkwsurvey_survey[action]' ,
                    ),
                    // look-up table - param has to be set in cHash-ignore in Install-Tool!
                    array(
                        'GETvar' => 'tx_rkwsurvey_survey[survey]' ,
                        'lookUpTable' => [
                            'table' => 'tx_rkwsurvey_domain_model_survey',
                            'id_field' => 'uid',
                            'alias_field' => 'CONCAT(name, "-", uid)',
                            'addWhereClause' => ' AND NOT deleted AND NOT hidden',
                            'useUniqueCache' => 1,
                            'useUniqueCache_conf' => [
                                'strtolower' => 1,
                                'spaceCharacter' => '-',
                            ],
                        ],
                    ),
                    array(
                        'GETvar' => 'tx_rkwsurvey_survey[surveyResult]',
                    ),
                ),
```

Testing
-------

[](#testing)

Some of the tests rely on setting the environment time to correspond to different time-based scenarios. So please make sure to install the following package in your root folder by running:

`composer require nesbot/carbon --dev`

Status of editing: 2023-04-20

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance79

Regular maintenance activity

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 86.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~42 days

Recently: every ~124 days

Total

24

Last Release

109d ago

Major Versions

v8.7.3-beta → v9.5.0-stable2023-06-07

v9.5.1002-stable → v10.4.0-stable2024-04-19

PHP version history (2 changes)v8.7.0-betaPHP &gt;=5.6

v9.5.0-stablePHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/ca11ace9490b8fe0b145e7d32464fba5c8eddaa88d700b95d32241a226623e76?d=identicon)[SteffenKroggel](/maintainers/SteffenKroggel)

---

Top Contributors

[![addorange](https://avatars.githubusercontent.com/u/1980618?v=4)](https://github.com/addorange "addorange (143 commits)")[![skroggel](https://avatars.githubusercontent.com/u/8121847?v=4)](https://github.com/skroggel "skroggel (22 commits)")

---

Tags

TYPO3 CMSOutcomeRKW

### Embed Badge

![Health badge](/badges/rkw-rkw-outcome/health.svg)

```
[![Health](https://phpackages.com/badges/rkw-rkw-outcome/health.svg)](https://phpackages.com/packages/rkw-rkw-outcome)
```

###  Alternatives

[derhansen/sf_event_mgt

Configurable event management and registration extension based on ExtBase and Fluid

64313.9k6](/packages/derhansen-sf-event-mgt)[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

33584.6k13](/packages/brotkrueml-schema)[causal/extractor

This extension detects and extracts metadata (EXIF / IPTC / XMP / ...) from potentially thousand different file types (such as MS Word/Powerpoint/Excel documents, PDF and images) and bring them automatically and natively to TYPO3 when uploading assets. Works with built-in PHP functions but takes advantage of Apache Tika and other external tools for enhanced metadata extraction.

16244.5k](/packages/causal-extractor)[jweiland/events2

Events 2 - Create single and recurring events

2062.4k2](/packages/jweiland-events2)[mfd/ai-filemetadata

Automatically generates FAL metadata for files by means of public LLMs

1142.1k](/packages/mfd-ai-filemetadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
