ea-Geiercode
[ class tree: ea-Geier ] [ index: ea-Geier ] [ all elements ]

Source for file index.inc.php

Documentation is available at index.inc.php

  1. <?php
  2. /**
  3.  * state machine for main file
  4.  *
  5.  * LICENSE:
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the
  13.  * GNU General Public License for more details.
  14.  * You should have received a copy of the GNU General Public License along
  15.  * with this program; if not, write to the Free Software Foundation, Inc.,
  16.  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  17.  *
  18.  * @package       ea-Geier
  19.  * @subpackage code
  20.  * @author       m2mtech <tech@m2m.at>
  21.  * @copyright  2007 m2m server software gmbh
  22.  * @license       http://www.gnu.org/licenses/gpl.html GNU General Public License Version 2
  23.  * @version       $Id: index.inc.php 150 2007-09-09 10:22:44Z m2mtech $
  24.  * @link       http://www.ea-geier.at/
  25.  */
  26.  
  27. /**
  28.  * database wrapper
  29.  */
  30. require_once('code/base/db.class.php');
  31.  
  32. /**
  33.  * input wrapper
  34.  */
  35. require_once('code/base/input.class.php');
  36.  
  37. /**
  38.  * main state machine
  39.  *
  40.  * @param    array    configuration data
  41.  * @return    array    output data
  42.  */
  43. function eaStateMachine(&$conf) {
  44.  
  45.     // installation support
  46.     if (isset($conf['notInstalled']) && $conf['notInstalled']) {
  47.         require_once('code/base/install.inc.php');
  48.         eaInstall($conf);
  49.     }
  50.  
  51.     // connect to db
  52.     $db = new eaDB($conf);
  53.     if ($db->error()) die('database problem');
  54.  
  55.     // input data
  56.     $in = new eaInput();
  57.  
  58.     $vars = array('g:abc:state', 'p:txt:pass', 'p:mail:mail');
  59.  
  60.     $in->check($vars);
  61.     
  62.     $state = '';
  63.     if ($dummy = $in->get('state')) $state = $dummy;
  64.     if ($dummy = $in->post('state')) $state = $dummy;    
  65.  
  66.     $user = $db->checkLogin($in);
  67.     
  68.     // check language
  69.     $lang = $in->getGet('lang-', 'abc');
  70.     if (!$lang && isset($_SESSION['language'])) $lang = $_SESSION['language'];
  71.     if ($lang) $_SESSION['language'] = $lang;
  72.     if (!$lang && $user && isset($conf['abcLanguage'])) 
  73.         $lang = $conf['abcLanguage'];
  74.     $in->language = $lang;
  75.     
  76.     // update support
  77.     if (isset($user['mail']) && ($user['mail'] == eaSYSADMIN)) 
  78.         if (!isset($conf['txtVersion']) || ($conf['txtVersion'] != eaVERSION)) {
  79.             require_once('code/base/install.inc.php');
  80.             eaUpdate($db);        
  81.         }
  82.     
  83.     if ($user) $db->getClients($in);
  84.  
  85.     switch ($state) {
  86.         // cashbook
  87.         case 'cashbook':
  88.             if (!$user) { $state = 'login'; break; }
  89.             require_once('code/cashbook.inc.php');
  90.             if (!genOptCashBook($db, $in)) {
  91.                 if (!genOptCashBookItem($db, $in)) { $state = 'main'; break; }
  92.                 $state = 'cashbookitem';
  93.             }
  94.             break;
  95.         case 'cashbookitem':
  96.             if (!$user) { $state = 'login'; break; }
  97.             require_once('code/cashbook.inc.php');
  98.             if (!genOptCashBookItem($db, $in)) { $state = 'main'; break; }
  99.             if (saveCashBookItem($db, $in)) $in->options['itemsaved'] = true;
  100.             break;
  101.         case 'cashbookprint': case 'cashbookcsv':
  102.             if (!$user) exit;
  103.             require_once('code/cashbook.inc.php');
  104.             if (!genOptCashBookPrint($db, $in)) exit;
  105.             break;
  106.         case 'cashbookitemprint': case 'cashbookitemcsv':
  107.             if (!$user) exit;
  108.             require_once('code/cashbook.inc.php');
  109.             if (!genOptCashBookItem($db, $in)) exit;
  110.             break;
  111.  
  112.         // assets book
  113.         case 'assets':
  114.             if (!$user) { $state = 'login'; break; }
  115.             require_once('code/assets.inc.php');
  116.             if (!genOptAssets($db, $in)) {
  117.                 if (!genOptAssetsItem($db, $in)) { $state = 'main'; break; }
  118.                 $state = 'assetsitem';
  119.             }
  120.             break;
  121.         case 'assetsprint': case 'assetscsv':
  122.             if (!$user) exit;
  123.             require_once('code/assets.inc.php');
  124.             if (!genOptAssetsPrint($db, $in)) exit;
  125.             break;
  126.         case 'assetsitem':
  127.             if (!$user) { $state = 'login'; break; }
  128.             require_once('code/assets.inc.php');
  129.             if (!genOptAssetsItem($db, $in)) { $state = 'main'; break; }
  130.             if (saveAssetsItem($db, $in)) $in->options['itemsaved'] = true;
  131.             break;
  132.         case 'assetsitemprint': case 'assetsitemcsv':
  133.             if (!$user) exit;
  134.             require_once('code/assets.inc.php');
  135.             if (!genOptAssetsItem($db, $in)) exit;
  136.             break;
  137.             
  138.         // purchase book
  139.         case 'purchasebook':
  140.             if (!$user) { $state = 'login'; break; }
  141.             require_once('code/purchasebook.inc.php');
  142.             if (!genOptPurchaseBook($db, $in)) {
  143.                 if (!genOptPurchaseBookItem($db, $in)) { $state = 'main'; break; }
  144.                 $state = 'purchasebookitem';
  145.             }
  146.             break;
  147.         case 'purchasebookprint': case 'purchasebookcsv':
  148.             if (!$user) exit;
  149.             require_once('code/purchasebook.inc.php');
  150.             if (!genOptPurchaseBookPrint($db, $in)) exit;
  151.             break;
  152.         case 'purchasebookitem': 
  153.             if (!$user) { $state = 'login'; break; }
  154.             require_once('code/purchasebook.inc.php');
  155.             if (!genOptPurchaseBookItem($db, $in)) { $state = 'main'; break; }
  156.             if (savePurchaseBookItem($db, $in)) $in->options['itemsaved'] = true;
  157.             break;
  158.         case 'purchasebookitemprint': case 'purchasebookitemcsv':
  159.             if (!$user) exit;
  160.             require_once('code/purchasebook.inc.php');
  161.             if (!genOptPurchaseBookItem($db, $in)) exit;
  162.             break;
  163.  
  164.         // travelling expenses
  165.         case 'travel':
  166.             if (!$user) { $state = 'login'; break; }
  167.             require_once('code/travel.inc.php');
  168.             if (!genOptTravel($db, $in)) {
  169.                 if (!genOptTravelItem($db, $in)) { $state = 'main'; break; }
  170.                 $state = 'travelitem';
  171.             }
  172.             break;
  173.         case 'travelprint': case 'travelcsv':
  174.             if (!$user) exit;
  175.             require_once('code/travel.inc.php');
  176.             if (!genOptTravelPrint($db, $in)) exit;
  177.             break;
  178.         case 'travelitem': 
  179.             if (!$user) { $state = 'login'; break; }
  180.             require_once('code/travel.inc.php');
  181.             if (!genOptTravelItem($db, $in)) { $state = 'main'; break; }
  182.             if (saveTravelItem($db, $in)) $in->options['itemsaved'] = true;
  183.             break;
  184.         case 'travelitemprint': case 'travelitemcsv':
  185.             if (!$user) exit;
  186.             require_once('code/travel.inc.php');
  187.             if (!genOptTravelItem($db, $in)) exit;
  188.             break;
  189.  
  190.         // accounting balance
  191.         case 'balance':
  192.             if (!$user) { $state = 'login'; break; }
  193.             require_once('code/balance.inc.php');
  194.             if (!genOptBalance($db, $in)) { $state = 'main'; break; }
  195.             if (saveBalance($db, $in)) $in->options['itemsaved'] = true;
  196.             break;
  197.         case 'balanceprint': case 'balancecsv':
  198.             if (!$user) exit;
  199.             require_once('code/balance.inc.php');
  200.             if (!genOptBalance($db, $in)) exit;
  201.             break;
  202.  
  203.         // base system
  204.         case 'login':
  205.             if (!$user) {  // not logged in;
  206.                 if (!isset($_POST['buttonLogin'])) break;
  207.                 $in->error['mailLogin'] = true;
  208.                 $in->error['passLogin'] = true;
  209.                 break;
  210.             }
  211.             require_once('code/main.inc.php');
  212.             genOptMain($db, $in);
  213.             $state = 'main';
  214.             break;
  215.         case 'logout':
  216.             $db->logout();
  217.             $state = 'login';
  218.             break;
  219.         case 'newuser':
  220.             require_once('code/base/newuser.inc.php');
  221.             if (saveNewUser($db, $in)) $state = 'usercreated';            
  222.             break;
  223.         case 'sendpw':
  224.             require_once('code/base/sendpw.inc.php');
  225.             if (sendPW($db, $in)) $state = 'pwsent';            
  226.             break;
  227.             
  228.         // configuration
  229.         case 'configuration': case 'userconfig':
  230.             if (!$user) { $state = 'login'; break; }
  231.             require_once('code/base/config.inc.php');
  232.             genOptConfig($db, $in, $state);
  233.             if (saveUserConfig($db, $in)) $in->options['usersaved'] = true;
  234.             $state = 'config';        
  235.             break;            
  236.         case 'sysconfig':
  237.             if (!$user) { $state = 'login'; break; }
  238.             require_once('code/base/config.inc.php');
  239.             genOptConfig($db, $in, $state);
  240.             if (saveSysConfig($db, $in)) $in->options['syssaved'] = true;
  241.             $state = 'config';        
  242.             break;            
  243.         case 'clientconfig':
  244.             if (!$user) { $state = 'login'; break; }
  245.             require_once('code/base/config.inc.php');
  246.             genOptConfig($db, $in, $state);
  247.             if (saveClientConfig($db, $in)) $in->options['clientsaved'] = true;
  248.             if (saveNewClient($db, $in)) $in->options['newclientsaved'] = true;
  249.             if (saveNewClientUser($db, $in)) $in->options['newclientusersaved'] = true;
  250.             if (saveDelClientUser($db, $in)) $in->options['delclientusersaved'] = true;
  251.             $state = 'config';        
  252.             break;        
  253.             
  254.         default:
  255.             if (!$user) $state = 'login';
  256.             else {
  257.                 require_once('code/main.inc.php');
  258.                 genOptMain($db, $in);
  259.                 $state = 'main';
  260.             }
  261.     }
  262.     $in->get['state'] = $state;
  263.     return $in;
  264. }
  265.  
  266. ?>

Documentation generated on Sun, 09 Sep 2007 17:08:51 +0200 by phpDocumentor 1.3.1