<?php

  // load common functions
  require_once "lib/menus/default/common.php";

  # set globals
  global $TABLE_PREFIX, $menu, $tableName, $escapedTableName, $schema, $action, $isAdminMenu;
  $menu             = @$FORM['menu'];
  $tableName        = @$FORM['menu'];
  $escapedTableName = mysql_real_escape_string( $TABLE_PREFIX . $tableName );
  $schema           = loadSchema($tableName);
  $isAdminMenu      = false;

  // load last selected list state
  global $editorStates, $lastState;
  $editorStates = @unserialize($_COOKIE['editorStates']);
  $lastState    = @$editorStates[$tableName];
  if (array_key_exists('sortBy', $FORM))  { $lastState['sortBy']  = $FORM['sortBy']; }
  if (array_key_exists('sortDir', $FORM)) { $lastState['sortDir'] = $FORM['sortDir']; }
  if (@$FORM['resetSearch']) { $lastState['sortBy'] = ""; }

  // load wysiwyg library
  if (file_exists("lib/wysiwyg_custom.php")) { require_once "lib/wysiwyg_custom.php"; }
  else                                       { require_once "lib/wysiwyg.php"; }

  // redirect for custom menus
  $customMenu = file_exists("lib/menus/$menu/actionHandler.php");
  if ($customMenu) {
    include "lib/menus/$menu/actionHandler.php";
    exit;
  }

  // display error for unknown menu names
  if (!@$schema['menuType']) {
    alert("Unknown menu '" . htmlspecialchars($menu) . "'");
    showInterface('');
  }

  // display alerts
  if (@$FORM['saved']) { alert(__("Record saved.")); }

  ### Limit access to menu
  global $CURRENT_USER, $hasAdminAccess, $hasUserAccess;
  $hasAdminAccess = @$CURRENT_USER['accessList']['all']['accessLevel'] >= 9 || @$CURRENT_USER['accessList'][$tableName]['accessLevel'] >= 9;
  $hasUserAccess  = @$CURRENT_USER['accessList']['all']['accessLevel'] >= 6 || @$CURRENT_USER['accessList'][$tableName]['accessLevel'] >= 6;
  if (!$hasAdminAccess && !$hasUserAccess) {
    alert("You don't have permissions to access this menu.");
    showInterface('');
  }
  if (!$hasAdminAccess && !@$schema['createdByUserNum']) {
    alert("This section isn't configured to allow 'regular' user access.<br/>\n");
    alert("Ask the webmaster to give you 'Admin' access to this section or create a field called 'createdByUserNum'.");
    showInterface('');
  }

  ### Limit access to records
  if (!$hasAdminAccess && @$FORM['num'] && @$schema['createdByUserNum'] && @$schema['menuType'] != 'single') {
    $query  = "SELECT * FROM `$escapedTableName` WHERE num = '".mysql_real_escape_string($FORM['num'])."'";
    $result = mysql_query($query) or die("MySQL Error: ". htmlspecialchars(mysql_error()) . "\n");
    $record = mysql_fetch_assoc($result);

    if ($record['createdByUserNum'] && $CURRENT_USER['num'] != $record['createdByUserNum']) {
      alert("You don't have permission to access this record.");
      showInterface('');
      exit;
    }
  }

  ### Dispatch actions
  $defaultAction = (@$schema['menuType'] == 'single') ? 'edit' : 'list';
  $action        = getRequestedAction($defaultAction);
  if     ($action == 'list')                 { include('lib/menus/default/list.php'); }
  elseif ($action == 'listDragSort')         { listDragSort(); }
  elseif ($action == 'add')                  { showMaxRecordsError(); showInterface('default/edit.php'); }
  elseif ($action == 'edit')                 { showInterface('default/edit.php'); }
  elseif ($action == 'erase')                { eraseRecord(); }
  elseif ($action == 'save')                 { include('lib/menus/default/save.php');  }
  elseif ($action == 'uploadList')           { include('lib/menus/default/uploadList.php');  }
  elseif ($action == 'uploadListReOrder')    { uploadListReOrder();  }
  elseif ($action == 'uploadForm')           { include('lib/menus/default/uploadForm.php');  }
  elseif ($action == 'uploadModify')         { include('lib/menus/default/uploadModify.php');  }
  elseif ($action == 'uploadErase')          { eraseUpload(); }
  elseif ($action == 'wysiwygUploads')       { include('lib/menus/default/wysiwygUploads.php');  }

  elseif ($action == 'ajaxGetUsersAsPulldown') { ajaxGetUsersAsPulldown(); }
  elseif ($action == 'categoryMove')           { categoryMove();  }

  else {
    alert("Unknown action '" . htmlspecialchars($action) . "'");
    showInterface('');
    exit;
  }

?>
