. */ /** * @brief Contains the page controler of docserver_locations_management.php * * @file * @author Luc KEULEYAN - BULL * @author Laurent Giovannoni * @date $date$ * @version $Revision$ * @ingroup admin */ $sessionName = "docserver_locations"; $pageName = "docserver_locations_management_controler"; $tableName = "docserver_locations"; $idName = "docserver_location_id"; $mode = 'add'; $core = new core_tools(); $core_tools = new core_tools(); $core->load_lang(); if (isset($_REQUEST['mode']) && !empty($_REQUEST['mode'])) { $mode = $_REQUEST['mode']; } else { $mode = 'list'; } try { require_once 'core/class/class_request.php'; require_once 'core/class/docserver_locations_controler.php'; require_once 'core/class/docservers_controler.php'; if ($mode == 'list') { require_once "apps" . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . "class" . DIRECTORY_SEPARATOR . "class_list_show.php"; } } catch (Exception $e) { functions::xecho($e->getMessage()); } $core_tools->test_admin('admin_docservers', 'apps'); if (isset($_REQUEST['submit'])) { // Action to do with db validate_cs_submit($mode); } else { // Display to do if (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) { $docserverLocationId = $_REQUEST['id']; } $state = true; switch ($mode) { case "up" : $res = display_up($docserverLocationId); $state = $res['state']; $docservers = $res['docservers']; location_bar_management($mode); break; case "add" : display_add(); location_bar_management($mode); break; case "del" : display_del($docserverLocationId); break; case "list" : $docserverLocationsList = display_list(); location_bar_management($mode); break; case "allow" : display_enable($docserverLocationId); location_bar_management($mode); case "ban" : display_disable($docserverLocationId); location_bar_management($mode); } include('docserver_locations_management.php'); } // END of main block /** * Initialize session variables */ function init_session() { $sessionName = "docserver_locations"; $_SESSION['m_admin'][$sessionName] = array(); } /** * Management of the location bar */ function location_bar_management($mode) { $sessionName = "docserver_locations"; $pageName = "docserver_locations_management_controler"; $tableName = "docserver_locations"; $idName = "docserver_location_id"; $pageLabels = array( 'add' => _ADDITION, 'up' => _MODIFICATION, 'list' => _DOCSERVER_LOCATIONS_LIST, ); $pageIds = array( 'add' => 'docserver_add', 'up' => 'docserver_up', 'list' => 'docserver_locations_list' ); $init = false; if (isset($_REQUEST['reinit']) && $_REQUEST['reinit'] == "true") { $init = true; } $level = ""; if (isset($_REQUEST['level']) && ($_REQUEST['level'] == 2 || $_REQUEST['level'] == 3 || $_REQUEST['level'] == 4 || $_REQUEST['level'] == 1) ) { $level = $_REQUEST['level']; } $pagePath = $_SESSION['config']['businessappurl'] . 'index.php?page=' . $pageName . '&admin=docservers&mode=' . $mode; $pageLabel = $pageLabels[$mode]; $pageId = $pageIds[$mode]; $ct = new core_tools(); $ct->manage_location_bar($pagePath, $pageLabel, $pageId, $init, $level); } /** * Validate a submit (add or up), * up to saving object */ function validate_cs_submit($mode) { $sessionName = "docserver_locations"; $pageName = "docserver_locations_management_controler"; $tableName = "docserver_locations"; $idName = "docserver_location_id"; $f = new functions(); $docserverLocationsControler = new docserver_locations_controler(); $docserverLocations = new docserver_locations(); $status = array(); $status['order'] = $_REQUEST['order']; $status['order_field'] = $_REQUEST['order_field']; $status['what'] = $_REQUEST['what']; $status['start'] = $_REQUEST['start']; if (isset($_REQUEST['id'])) { $docserverLocations->docserver_location_id = $_REQUEST['id']; } if (isset($_REQUEST['ipv4'])) { $docserverLocations->ipv4 = $_REQUEST['ipv4']; } if (isset($_REQUEST['ipv6'])) { $docserverLocations->ipv6 = $_REQUEST['ipv6']; } if (isset($_REQUEST['net_domain'])) { $docserverLocations->net_domain = $_REQUEST['net_domain']; } if (isset($_REQUEST['mask'])) { $docserverLocations->mask = $_REQUEST['mask']; } if (isset($_REQUEST['net_link'])) { $docserverLocations->net_link = $_REQUEST['net_link']; } $control = array(); $control = $docserverLocationsControler->save($docserverLocations, $mode); if (!empty($control['error']) && $control['error'] <> 1) { // Error management depending of mode $_SESSION['error'] = str_replace("#", "
", $control['error']); put_in_session("status", $status); put_in_session("docserver_locations", $docserverLocations->getArray()); switch ($mode) { case "up": if (!empty($_REQUEST['id'])) { header( "location: " . $_SESSION['config']['businessappurl'] . "index.php?page=" . $pageName . "&mode=up&id=" . $_REQUEST['id'] . "&admin=docservers" ); } else { header( "location: " . $_SESSION['config']['businessappurl'] . "index.php?page=" . $pageName . "&mode=list&admin=docservers&order=" . $status['order'] . "&order_field=" . $status['order_field'] . "&start=" . $status['start'] . "&what=" . $status['what'] ); } exit; case "add": header( "location: " . $_SESSION['config']['businessappurl'] . "index.php?page=" . $pageName . "&mode=add&admin=docservers" ); exit; } } else { if ($mode == "add") { $_SESSION['info'] = _DOCSERVER_LOCATION_ADDED; } else { $_SESSION['info'] = _DOCSERVER_LOCATION_UPDATED; } unset($_SESSION['m_admin']); header( "location: " . $_SESSION['config']['businessappurl'] . "index.php?page=" . $pageName . "&mode=list&admin=docservers" . "&order=" . $status['order'] . "&order_field=" . $status['order_field'] . "&start=" . $status['start'] . "&what=" . $status['what'] ); } } /** * Initialize session parameters for update display * @param Long $docserverLocationId */ function display_up($docserverLocationId) { $docservers = array(); $state = true; $docserverLocationsControler = new docserver_locations_controler(); $docserversControler = new docservers_controler(); $docserverLocations = $docserverLocationsControler->get($docserverLocationId); if (empty($docserverLocations)) { $state = false; } else { put_in_session("docserver_locations", $docserverLocations->getArray()); } $docserversId = $docserverLocationsControler->getDocservers( $docserverLocationId ); for ($i = 0; $i < count($docserversId); $i ++) { $tmpUser = $docserversControler->get($docserversId[$i]); if (isset($tmpUser)) { array_push($docservers, $tmpUser); } } unset($tmpUser); $res['state'] = $state; $res['docservers'] = $docservers; return $res; } /** * Initialize session parameters for add display with given docserver */ function display_add() { $sessionName = "docserver_locations"; if (!isset($_SESSION['m_admin'][$sessionName])) { init_session(); } } /** * Initialize session parameters for list display */ function display_list() { $sessionName = "docserver_locations"; $pageName = "docserver_locations_management_controler"; $tableName = "docserver_locations"; $idName = "docserver_location_id"; $func = new functions(); $listShow = new list_show(); $_SESSION['m_admin'] = array(); init_session(); $select[_DOCSERVER_LOCATIONS_TABLE_NAME] = array(); array_push( $select[_DOCSERVER_LOCATIONS_TABLE_NAME], $idName, "ipv4", "ipv6", "net_domain", "enabled" ); $what = ""; $where = ""; $arrayPDO = array(); if (isset($_REQUEST['what']) && !empty($_REQUEST['what'])) { $what = $_REQUEST['what']; $where = "lower(".$idName . ") like lower(?) "; $arrayPDO = array($what.'%'); } // Checking order and order_field values $order = 'asc'; if (isset($_REQUEST['order']) && !empty($_REQUEST['order'])) { $order = trim($_REQUEST['order']); } $field = $idName; if (isset($_REQUEST['order_field']) && !empty($_REQUEST['order_field'])) { $field = trim($_REQUEST['order_field']); } $orderstr = $listShow->define_order($order, $field); $request = new request(); $tab = $request->PDOselect( $select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'] ); for ($i = 0; $i < count($tab); $i ++) { foreach ($tab[$i] as &$item) { switch ($item['column']) { case $idName: format_item( $item, _ID, "18", "left", "left", "bottom", true ); break; case "ipv4": format_item( $item, _IPV4, "15", "left", "left", "bottom", true ); break; case "ipv6": format_item( $item, _IPV6, "15", "left", "left", "bottom", true ); break; case "net_domain": format_item( $item, _NET_DOMAIN, "15", "left", "left", "bottom", true ); break; case "enabled": format_item( $item, _ENABLED, "5", "left", "left", "bottom", true ); break; } } } $result = array(); $result['tab'] = $tab; $result['what'] = $what; $result['page_name'] = $pageName . "&mode=list"; $result['page_name_up'] = $pageName . "&mode=up"; $result['page_name_del'] = $pageName . "&mode=del"; $result['page_name_val'] = $pageName . "&mode=allow"; $result['page_name_ban'] = $pageName . "&mode=ban"; $result['page_name_add'] = $pageName . "&mode=add"; $result['label_add'] = _DOCSERVER_LOCATION_ADDITION; $_SESSION['m_admin']['init'] = true; $result['title'] = _DOCSERVER_LOCATIONS_LIST . " : " . count($tab) . " " . _DOCSERVER_LOCATIONS; $result['autoCompletionArray'] = array(); $result['autoCompletionArray']["list_script_url"] = $_SESSION['config']['businessappurl'] . "index.php?display=true&admin=docservers" . "&page=docserver_locations_list_by_id"; $result['autoCompletionArray']["number_to_begin"] = 1; return $result; } /** * Delete given docserver if exists and initialize session parameters * @param unknown_type $docserverLocationId */ function display_del($docserverLocationId) { $docserverLocationsControler = new docserver_locations_controler(); $docserverLocations = $docserverLocationsControler->get($docserverLocationId); if (isset($docserverLocations)) { // Deletion $control = array(); $control = $docserverLocationsControler->delete($docserverLocations); if (!empty($control['error']) && $control['error'] <> 1) { $_SESSION['error'] = str_replace("#", "
", $control['error']); } else { $_SESSION['info'] = _DOCSERVER_LOCATION_DELETED . " " . $docserverLocationId; } $pageName = "docserver_locations_management_controler"; ?> get($docserverLocationId); if (isset($docserverLocations)) { // Enable $control = array(); $control = $docserverLocationsControler->enable($docserverLocations); if (!empty($control['error']) && $control['error'] <> 1) { $_SESSION['error'] = str_replace("#", "
", $control['error']); } else { $_SESSION['info'] = _DOCSERVER_LOCATION_ENABLED . " " . $docserverLocationId; } $pageName = "docserver_locations_management_controler"; ?> get($docserverLocationId); if (isset($docserverLocations)) { // Disable $control = array(); $control = $docserverLocationsControler->disable($docserverLocations); if (!empty($control['error']) && $control['error'] <> 1) { $_SESSION['error'] = str_replace("#", "
", $control['error']); } else { $_SESSION['info'] = _DOCSERVER_LOCATION_DISABLED . " " . $docserverLocationId; } $pageName = "docserver_locations_management_controler"; ?> show_string($item['value']); $item[$item['column']] = $item['value']; $item["label"] = $label; $item["size"] = $size; $item["label_align"] = $labelAlign; $item["align"] = $align; $item["valign"] = $valign; $item["show"] = $show; $item["order"] = $item['column']; } /** * Put given object in session, according with given type * NOTE: given object needs to be at least hashable * @param string $type * @param hashable $hashable */ function put_in_session($type, $hashable) { $func = new functions(); foreach ($hashable as $key => $value) { // echo "Key: $key Value: $value f:".$func->show_string($value)." // "; $_SESSION['m_admin'][$type][$key] = $func->show_string($value); } }