<?
/*
Action Dispatching control v.1.0.101
Dispatches queries centralizing it on a unique index.php, a better, clean way to PHP scripting.
By Llorenç Herrera [hide@address.com]
Copyright 2002, Llorenç Herrera
Please do not remove this credits
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
class action
{
var $todo_class;
var $todo;
var $getvariables;
function action ($todo_class, $todo, $getvariables)
{
$this->todo_class = &$todo_class;
$this->todo = $todo;
if (is_array ($getvariables)) $this->getvariables = $getvariables;
}
function execute ()
{
$todo_class = $this->todo_class;
$todo = $this->todo;
if (is_array ($this->getvariables))
{
$variables = $this->getvariables;
$numvariables = sizeof ($variables);
while (list (,$value) = each ($variables))
$v[] = $value;
}else
$numvariables = 0;
switch ($numvariables)
{
case 0: $todo_class->$todo (); break;
case 1: $todo_class->$todo ($v[0]); break;
case 2: $todo_class->$todo ($v[0], $v[1]); break;
case 3: $todo_class->$todo ($v[0], $v[1], $v[2]); break;
case 4: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3]); break;
case 5: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4]); break;
case 6: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5]); break;
case 7: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6]); break;
case 8: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7]); break;
case 9: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8]); break;
case 10: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9]); break;
case 11: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9], $v[10]); break;
case 12: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9], $v[10], $v[11]); break;
case 13: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9], $v[10], $v[11], $v[12]); break;
case 14: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9], $v[10], $v[11], $v[12], $v[13]); break;
case 15: $todo_class->$todo ($v[0], $v[1], $v[2], $v[3], $v[4], $v[5], $v[6], $v[7], $v[8], $v[9], $v[10], $v[11], $v[12], $v[13], $v[14]); break;
}
}
}
class actions_dispatcher
{
var $indexfilename;
var $actions;
var $defaultaction;
function actions_dispatcher ($indexfilename, $defaultaction)
{
$this->indexfilename = $indexfilename;
$this->defaultaction = $defaultaction;
}
function addaction ($id, $todo_class, $todo, $getvariables)
{
$this->actions[$id] = new action ($todo_class, $todo, $getvariables);
}
function doaction ()
{
global $a;
if (isset ($this->actions[$a]))
$this->actions[$a]->execute ();
else
$this->actions[$this->defaultaction]->execute ();
}
}
?>