.
*/
/**
* @brief Contains the admin standard controller page
*
* @file
* @author Arnaud Veber
* @author Laurent Giovannoni
* @date $date$
* @version $Revision$
* @ingroup core
*/
require_once 'core/class/class_core_tools.php';
require_once 'core/tests/class/MessageController.php';
require_once 'core/tests/class/ViewController.php';
require_once 'core/class/class_history.php';
require_once 'apps/' . $_SESSION['config']['app_id']
. '/admin/admin_form_standard_tools.php';
$messageController = new MessageController();
$viewController = new ViewController();
/**
* Management of the location bar
* @param string $pageName
* @param string $mode
* @param string $objectName
* @param string $path
* @return string $pagePath the current page path
*/
function locationBarManagement($pageName, $mode, $objectName, $isApps)
{
/*
$test = array();
$test['pageName'] = $pageName;
$test['mode'] = $mode;
$test['objectName'] = $objectName;
$test['isApps'] = $isApps;
echo '
' . print_r($test, true) . '
';
echo '' . var_dump($test) . '
';
*/
$objectLabel = @constant(strtoupper($objectName));
if(!$objectLabel) $objectLabel = _LIST;
$pageLabels = array(
'create' => _ADDITION,
'update' => _MODIFICATION,
'list' => $objectLabel //_LIST,
);
$pageIds = array(
'add' => $objectName . '_add',
'up' => $objectName . '_up',
'list' => $objectName . '_list',
);
$init = false;
if (isset($_REQUEST['reinit']) && $_REQUEST['reinit'] == 'true')
$init = true;
$level = '';
$allowedLevels = array(1, 2, 3, 4);
if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], $allowedLevels))
$level = $_REQUEST['level'];
if($isApps) {
$pagePath = $_SESSION['config']['businessappurl'] . 'index.php'
. '?page=' . $pageName
. '&admin=' . $objectName
. '&objectName=' . $objectName
. '&mode=' . $mode;
} else {
$pagePath = $_SESSION['config']['businessappurl'] . 'index.php?'
. 'page=' . $pageName
. '&module=' . $objectName
. '&objectName=' . $objectName
. '&mode=' . $mode;
}
$pageLabel = $pageLabels[$mode];
$pageId = $pageIds[$mode];
/*
$test = array();
$test['$pagePath'] = $pagePath;
$test['$pageLabel'] = $pageLabel;
$test['$pageId'] = $pageId;
$test['$init'] = $init;
$test['$level'] = $level;
echo '' . print_r($test, true) . '
';
echo '' . var_dump($test) . '
';
*/
$coreTools = new core_tools();
$coreTools->manage_location_bar($pagePath, $pageLabel, $pageId, $init, $level);
return $pagePath;
}
/* -----------------------
- test and retrieve params
----------------------- */
function testParams()
{
/* -----------------------------------
- Initialise array with default values
----------------------------------- */
$params = array(
'status' => 'OK',
'mode' => 'list',
'pageNb' => 1,
'isApps' => false,
);
$error = false;
/* ------------------
- Test some $_REQUEST
------------------ */
if (isset($_REQUEST['mode']) && !empty($_REQUEST['mode']))
$params['mode'] = $_REQUEST['mode'];
if (isset($_REQUEST['objectName']) && !empty($_REQUEST['objectName']))
$params['objectName'] = $_REQUEST['objectName'];
else
$error .= _OBJECT_NAME_MANDATORY . '
';
if (isset($_REQUEST['page']) && !empty($_REQUEST['page']))
$params['pageName'] = $_REQUEST['page'];
else
$error .= _PAGE_NAME_MANDATORY . '
';
if (isset($_REQUEST['objectId']) && !empty($_REQUEST['objectId']))
$params['objectId'] = $_REQUEST['objectId'];
if (isset($_REQUEST['pageNb']) && !empty($_REQUEST['pageNb']))
$params['pageNb'] = $_REQUEST['pageNb'];
if (isset($_REQUEST['admin']) && !empty($_REQUEST['admin'])) {
$params['isApps'] = true;
$params['viewLocation'] = 'apps/maarch_entreprise/admin/'
. $_REQUEST['admin'];
$params['schemaPath'] = $params['viewLocation'] . DIRECTORY_SEPARATOR
. 'schema' . DIRECTORY_SEPARATOR
. $_REQUEST['admin'] . '.xsd';
$params['autocompletePath'] = $_SESSION['config']['businessappurl']
. 'index.php?display=true&admin=' . $_REQUEST['admin']
. '&page=' . $params['objectName'] . '_list_autocomplete';
} elseif (isset($_REQUEST['module']) && !empty($_REQUEST['module'])) {
$params['viewLocation'] = 'modules' . DIRECTORY_SEPARATOR
. $_REQUEST['module'];
$params['schemaPath'] = $params['viewLocation'] . DIRECTORY_SEPARATOR
. 'schema' . DIRECTORY_SEPARATOR
. $_REQUEST['module'] . '.xsd';
$params['autocompletePath'] = $_SESSION['config']['businessappurl']
. 'index.php?display=true&module=' . $_REQUEST['module']
. '&page=' . $params['objectName'] . '_list_autocomplete';
}
if (isset($_REQUEST['order']) && !empty($_REQUEST['order']))
$params['order'] = $_REQUEST['order'];
if (isset($_REQUEST['orderField']) && !empty($_REQUEST['orderField']))
$params['orderField'] = $_REQUEST['orderField'];
if (isset($_REQUEST['what']) && !empty($_REQUEST['what']))
$params['what'] = $_REQUEST['what'];
/* -----
- return
----- */
if ($error)
exit($error);
else
return $params;
}
/**
* Initialize session variables
* @param string $objectName
*/
function initSession($objectName)
{
$_SESSION['m_admin'][$objectName] = false;
}
/**
* Initialize session Object with form values
* @param string $objectName
*/
function updateObject($request, $object)
{
foreach($object as $key => $value) {
$object->$key = $request[$key];
}
}
/**
* Initialize session parameters for add display with given objectName
* @param string $objectName
*/
function displayAdd($objectName)
{
if (!isset($_SESSION['m_admin'][$objectName]))
initSession();
}
/**
* Destroy session parameters for create display
* @param $objectName
*/
function displayCreate($objectName)
{
clearSession($objectName);
}
/**
* Initialize session parameters for read display
* @param $objectId
*/
function displayRead($objectName, $object)
{
putInSession($objectName, $object);
}
/**
* Initialize session parameters for update display
* @param $objectId
*/
function displayUpdate($objectName, $object)
{
putInSession($objectName, $object);
}
/**
* Put given object in session, according with given object
* NOTE: given object needs to be at least hashable
* @param string $objectName
* @param object $object
*/
function putInSession($objectName, $object)
{
$_SESSION['m_admin'][$objectName] = $object->asXml();
}
/**
* Clear the object in session
* @param string $objectName
*/
function clearSession($objectName)
{
$_SESSION['m_admin'][$objectName] = false;
}
function displayList($objectList, $actions, $showCols, $pageNb, $keyProperties)
{
}
/**
* Load hidden fields in the CRUD form
* @param string $objectName
* @param string $hiddenFields
*/
function loadHiddenFields($params)
{
$hiddenFields = '';
$hiddenFields .= '';
$hiddenFields .= '';
$hiddenFields .= '';
if (isset($params['order'])) {
$hiddenFields .= '';
}
if (isset($params['orderField'])) {
$hiddenFields .= '';
}
if (isset($params['what'])) {
$hiddenFields .= '';
}
return $hiddenFields;
}
function isBoolean($string)
{
if ($string == 'Y') {
$return = '
';
} elseif($string == 'N') {
$return = '
';
}
return $return;
}
function getLabel($constant)
{
if (!defined($constant))
return $constant;
else
return constant($constant);
}
//getDependantUri
function getDependantUri($get, $uri)
{
$getValue = str_replace(
' ',
'%20',
$_REQUEST[$get]
);
$toSearch = $get . '=' . $getValue;
$sourceArray = array(
'?'.$toSearch . '&',
'&'.$toSearch,
);
$targetArray = array(
'?',
'',
);
$return = str_replace(
$sourceArray,
$targetArray,
$uri
);
return $return;
}
$coreTools = new core_tools();
$coreTools->load_lang();
//tests and retrieve params of the controller page
$params = testParams();
//test if the user is allowed to acces the admin service
if ($isApps)
$coreTools->test_admin(
'admin_' . $params['objectName'],
'apps'
);
else
$coreTools->test_admin(
'admin_' . $params['objectName'],
'entities'
);
$pagePath = locationBarManagement(
$params['pageName'],
$params['mode'],
$params['objectName'],
$params['isApps']
);
//load the message object
$messagePath = $params['viewLocation'] . '/lang/' . $params['objectName'] . '.xml';
$messageController->loadMessageFile(
$messagePath
);
require_once(
'core/tests/class/DataObjectController.php'
);
$dataObjectController = new DataObjectController();
$dataObjectController->loadXSD(
$params['schemaPath']
);
if (isset($_REQUEST['submit'])) {
$dataObject = $dataObjectController->loadXML(
$_SESSION['m_admin'][$params['objectName']]
);
//fill the object with the request
updateObject(
$_REQUEST,
$dataObject
);
//validate the object
$validateObject = $dataObjectController->validate(
$dataObject
);
if ($validateObject) {
$dataObjectController->save(
$dataObject
);
} else {
foreach($dataObjectController->getValidationErrors() as $error) {
$errors[] = $error->message;
}
$_SESSION['error'] = implode('
', $errors);
$url = $_SERVER['REQUEST_URI'];
$url = str_replace(
array(
'?display=true&',
'&display=true'
),
array(
'?',
''
),
$url
);
$_SESSION['m_admin'][$params['objectName']] = $dataObject->asXml();
header("Location: ".$url);
}
exit;
} else {
//CRUDL CASES
switch ($params['mode']) {
case 'create' :
/* -----
- CREATE
----- */
$dataObject = $dataObjectController->create($params['objectName']);
displayCreate($params['objectName']);
break;
case 'details' :
/* ------
- DETAILS
------ */
$dataObject = $dataObjectController->read(
$params['objectName'], $params['objectId']
);
break;
case 'read' :
/* ---
- READ
--- */
$dataObject = $dataObjectController->read(
$params['objectName'], $params['objectId']
);
break;
case 'update' :
/* -----
- UPDATE
----- */
if (!$_SESSION['m_admin'][$params['objectName']]) {
$dataObject = $dataObjectController->read(
$params['objectName'],
$params['objectId']
);
$_SESSION['m_admin'][$params['objectName']] = $dataObject->asXml();
} else {
$dataObject = $dataObjectController->loadXML(
$_SESSION['m_admin'][$params['objectName']]
);
}
break;
case 'delete' :
/* -----
- DELETE
----- */
break;
//TODO: PROCESS IT LIKE PARTICULAR CASES OF UPDATE
case 'allow' :
doEnable($docserverId);
break;
case 'ban' :
doDisable($docserverId);
break;
case 'list' :
/* ---
- LIST
--- */
clearSession($params['objectName']);
/* ---------
- set filter
--------- */
if (isset($params['what']) && !empty($params['what']))
$filter = str_replace(
'|',
'%',
$params['what']
);
/* --------------
- load dataObject
-------------- */
if ($enumerateInView === true)
$toEnumerate = $params['objectName'] . '_view';
else
$toEnumerate = $params['objectName'];
$objectList = $dataObjectController->enumerate(
$toEnumerate,
$filter,
$sortFields = $params['orderField'],
$order = $params['order']
);
/* ------
- get key
------ */
$keyProperties = $dataObjectController->getKeyProperties(
$toEnumerate
);
/* -----------------
- prevent PHP NOTICE
----------------- */
$str_filter = '';
$str_pagination = '';
$str_htmlList = '';
$str_goToTop = '';
/* ----------
- request uri
---------- */
$requestUri = $_SERVER['REQUEST_URI'];
/* -----
- filter
----- */
$noWhatUri = getDependantUri(
'what',
getDependantUri(
'pageNb',
$requestUri
)
);
/* ------
- filters
------ */
$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$str_filter .= ' 1) {
$str_pagination .= '= $nbMax) {
break;
}
$default_nbLineSelect = '';
if ($nbLineSelect[$cpt_nbElement] == $nbLine) {
$default_nbLineSelect = 'selected="selected" ';
}
$str_pagination .= '