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(5mo ago)0118GPL-2.0+PHPPHP &gt;=7.4

Since May 10Pushed 5mo 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 2d 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

39

—

LowBetter than 84% of packages

Maintenance71

Regular maintenance activity

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity56

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

162d 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

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[derhansen/sf_event_mgt

Event management and registration - Configurable event management and registration extension based on ExtBase and Fluid

66338.4k10](/packages/derhansen-sf-event-mgt)[brotkrueml/schema

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

34653.7k16](/packages/brotkrueml-schema)[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

511.7M9](/packages/yoast-seo-for-typo3-yoast-seo)[jweiland/events2

Events 2 - Create single and recurring events

2166.7k3](/packages/jweiland-events2)[t3sbs/t3sbootstrap

Startup extension to use bootstrap 5 classes, components and more out of the box. Example and info: \[www.t3sbootstrap.de\](https://www.t3sbootstrap.de)

2416.4k](/packages/t3sbs-t3sbootstrap)

PHPackages © 2026

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