OnEvent

Summary: activate recipes based on group(s), name(s), cookie(s), session var(s), mark(s) in the needle page, action(s), download var(s), post var(s), get var(s) and does it all from config.php in a easy multi event match per call ?
Version: 20180313
Prerequisites: none
Status: mantained
Maintainer: CarlosAB
License: GPL
Users: (view? / edit)
Discussion: OnEvent-Talk?

Questions answered by this recipe

How can I change configurations, create dynamic visitor profiles, and activate recipes in config.php based on page(s), group(s), action(s), cookie(s), session var(s), mark(s), upload var(s)=value(s) and download var(s)=value(s) in a multi event match per call?

Description

Enable recipes and different configurations on based on name(s), group(s), action(s), mark(s),upload var(s)=value(s) and download var(s)=value(s) from config.php in a multi event match per call.

This is an amalgamation of the recipes OnGet, OnPost, OnUpload, OnDownload, OnName, OnGroup, OnAction, OnCookie, OnSession, OnSearch, OnSearchLen, OnNameLen and OnMark, so you don't have to load all of them separately in config.php.

Installation

Just do a include_once in config.php, you have to save the recipe on cookbook folder.

include_once("$FarmD/cookbook/onevent.php");

Usage

On config.php, do as shown below:

 
if(OnName('Main,WikiSandbox,DocumentationIndex') && OnGroup('Main,PmWiki') && OnCookie('water=blue,sky=blue,sand=beige') &&
   OnSession('authid=Necromonger,secret=ok,') && OnAction('edit,browse') && OnMark('(:div,(:table,(:problematic-markup')) {
      echo "Condition triggered!";
}

More tests you can do:

## OnEvent Recipe tests
include_once("cookbook/onevent-20180225.php");

## fill up some vars
$_COOKIE['water'] = 'blue';
$_SESSION['nene'] = 'cuca';

## 1 - OnMark
if(OnMark('(:div, (:table, (:div, (:load')) echo "<pre>-= On Mark =-</pre>";

# OnMark test 2 - edit Main/WikiSandbox to trigger it
if(OnAction('edit') && OnGroup('Main') && OnName('WikiSandbox, HomePage') 
   && OnMark('(:load,[[PmWiki/Text Forma'))  echo "<pre>-= On Action & Group & Name & Mark | $pagename =-</pre>";

## 2 - OnName
if(OnName('Main,Venus')) echo "<pre>-= On Name =-</pre>";

## 3 - OnGroup
if(OnGroup('Main, PmWiki , Pm ')) echo "<pre>-= On Group =-</pre>";

## 4 - OnAction
if(OnAction("edit,diff")) echo "<pre>-= On Action =-</pre>";

## 5 - OnCookie test
if(OnCookie('water=blue,sapo=amarelo')) echo "<pre>-= On Cookie =-</pre>";

## 6 - OnSession test
if(OnSession('nene=cuca'))echo "<pre>-= On Session =-</pre>";

## 7 - OnUpload test
if(OnUpload('name=test.txt,tmp_name=test.txt,name=boh.txt')) echo "<pre>-= On Upload =-</pre>";

## 8 - OnDownload test
if(OnDownload('test.txt,teste.txt,boh.gif')) file_put_contents('./proof.txt', "<pre>-= On Download =-</pre>");

## 9 - OnNameLen
if(OnNameLen('<3,>10')) echo "<pre>-= On Name Len =-</pre>";

## 10 - OnSearchLen
if(OnSearchLen('>3')) echo "<pre>-= On Search Len =-</pre>";

## 11 - OnSearch
if(OnSearch('wi')) echo "<pre>-= On Search =-</pre>";

## 12 - OnGet
if(OnGet('water=blue,sapo=amarelo')) echo "<pre>-= On Get =-</pre>";

## 13 - OnPost
if(OnPost('q=blue,sapo=amarelo')) echo "<pre>-= On Post=-</pre>";

You can include recipes as well, all based on this simple syntax.

Change log / Release notes

20180220 - first release - onevent-20180220.phpΔ
20180220-2 - second release - onevent-20180220-2.phpΔ
20180221 - shrinked the code a bit, introduced new On* events - onevent-20180221.phpΔ
20180225 - included some new events, now (almost) all of them accept arrays as well - onevent-20180225.phpΔ
20180313 - all events accept arrays and string, changed OnPage() to OnName() - onevent-20180313.phpΔ
20180417 - New events: OnRecipe, OnRecipeVer, OnFile totalizing 16 events now - onevent-20180417.phpΔ

See also

Contributors

CarlosAB February 20, 2018, at 05:04 PM

Comments

See discussion at OnEvent-Talk?

User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.