false, 'status' => 'all', 'order' => 'name', 'order_direction' => 'ASC', ); if (isset($_REQUEST['clear']) && $_REQUEST['clear']=='true') redirect($request -> current_url); } logging('DEBUG', 'Request params : '.vardump($_REQUEST)); $status_list['all'] = _('Any'); if (isset($_REQUEST['status'])) { if (check_status($_REQUEST['status']) || $_REQUEST['status'] == 'all') $_SESSION['search']['status'] = $_REQUEST['status']; else $smarty -> assign('status_error', true); } if (isset($_REQUEST['pattern'])) { if (trim($_REQUEST['pattern']) == '') $_SESSION['search']['pattern'] = false; else if (check_search_pattern($_REQUEST['pattern'])) $_SESSION['search']['pattern'] = $_REQUEST['pattern']; else $smarty -> assign('pattern_error', true); } // Order if(isset($_REQUEST['order'])) { if( $_SESSION['search']['order']==$_REQUEST['order']) { if ($_SESSION['search']['order_direction']=='ASC') $_SESSION['search']['order_direction']='DESC'; else $_SESSION['search']['order_direction']='ASC'; } else $_SESSION['search']['order_direction']='ASC'; $_SESSION['search']['order']=$_REQUEST['order']; } else { if($_SESSION['search']['order']=='') { $_SESSION['search']['order']='date'; $_SESSION['search']['order_direction']='DESC'; } } // Page if (isset($_REQUEST['page'])) { $_SESSION['search']['page']=intval($_REQUEST['page']); } else { $_SESSION['search']['page']=1; } // Nb par page $nbs_by_page=array(10,25,50,100,500); if (isset($_REQUEST['nb_by_page']) && in_array(intval($_REQUEST['nb_by_page']),$nbs_by_page)) { $_SESSION['search']['nb_by_page']=intval($_REQUEST['nb_by_page']); $_SESSION['search']['page']=1; } elseif (!isset($_SESSION['search']['nb_by_page'])) { $_SESSION['search']['nb_by_page']=$nbs_by_page[0]; } logging('DEBUG', 'Search params : '.vardump($_SESSION['search'])); $result = search_items($_SESSION['search']); if (!is_array($result)) fatal_error( _("An error occurred while listing the items. ". "If the problem persists, please contact support.") ); $smarty -> assign('result', $result); $smarty -> assign('search', $_SESSION['search']); $smarty -> assign('nbs_by_page', $nbs_by_page); $smarty -> assign('status_list', $status_list); add_js_file(array( 'lib/bootstrap4dialog/dist/js/bootstrap4dialog.min.js', 'js/myconfirm.js', 'js/search.js' )); display_template("search.tpl", _("Search")); } add_url_handler('|^item/?$|', 'handle_search'); /* * One item pages */ function handle_show($request) { global $smarty; $item = get_item_from_url($request -> id); if (!$item) error_404(); $smarty->assign('item', $item); // Dialog add_js_file(array( 'lib/bootstrap4dialog/dist/js/bootstrap4dialog.min.js', 'js/myconfirm.js', )); display_template( "show.tpl", sprintf(_("Element %s"), (is_array($item)?$item['name']:"#".$request -> id)) ); } add_url_handler('|^item/(?P[0-9]+)$|', 'handle_show'); function handle_create($request) { global $smarty, $status_list; $info = array(); $field_errors = handle_item_post_data($info); if (isset($_POST['submit']) && empty($field_errors)) { $item = add_item($info); if (is_array($item)) { add_message(sprintf(_("The element '% s' has been created."), $item['name'])); redirect('item/'.$item['id']); } else { add_error(_("An error occurred while saving this item.")); } } logging('DEBUG', 'Validated data : '.vardump($info)); logging('DEBUG', 'Fields errors : '.vardump($field_errors)); if (isset($_POST['submit']) && !empty($field_errors)) add_error( _("There are errors preventing this item from being saved. ". "Please correct them before attempting to add this item.")); $smarty->assign('submited', isset($_POST['submit'])); $smarty->assign('info', $info); $smarty->assign('field_errors', $field_errors); $smarty->assign('status_list', $status_list); display_template("form.tpl", _("New")); } add_url_handler('|^item/new$|', 'handle_create'); function handle_modify($request) { global $smarty, $status_list; $item = get_item_from_url($request -> id); if(is_array($item)) { if (!can_modify($item)) { add_error(_('You cannot edit this item.')); redirect('item/'.$item['id']); } $info = array(); $field_errors = handle_item_post_data($info); if (isset($_POST['submit']) && empty($field_errors)) { $changes = array(); foreach ($info as $key => $value) { if ($value != $item[$key]) $changes[$key] = $value; } logging('DEBUG', 'Changes : '.vardump($changes)); if (empty($changes)) { add_message(sprintf(_("You have not made any changes to element '% s'."), $item['name'])); redirect('item/'.$item['id']); } else if (update_item($item['id'], $changes) === true) { add_message(sprintf(_("The element '% s' has been updated successfully."), $item['name'])); redirect('item/'.$item['id']); } else { add_error(_("An error occurred while updating this item.")); } } logging('DEBUG', 'Validated data : '.vardump($info)); logging('DEBUG', 'Fields errors : '.vardump($field_errors)); $smarty->assign('submited', isset($_POST['submit'])); if (isset($_POST['submit']) && !empty($field_errors)) add_error( _("There are errors preventing this item from being saved. ". "Please correct them before attempting to save your changes.")); $smarty->assign('info', (!empty($info)?$info:$item)); $smarty->assign('item_id', $item['id']); $smarty->assign('field_errors', $field_errors); $smarty -> assign('status_list', $status_list); } else { error_404(); } display_template("form.tpl", sprintf(_("Element %s: Modification"), (is_array($item)?$item['name']:"#".$request -> id))); } add_url_handler('|^item/(?P[0-9]+)/modify$|', 'handle_modify'); function handle_archive($request) { global $smarty; $item = get_item_from_url($request -> id); if(!is_array($item)) { add_error(sprintf(_("Item #% s not found."), $request -> id)); redirect('item'); } elseif ($item['status'] == 'archived') { add_message(_("This item is already archived.")); } else if (!can_archive($item)) { add_error(_('You cannot archive this item.')); } else if (archive_item($item['id']) === true) { add_message(sprintf( _("The element '% s' has been archived successfully."), $item['name'])); } else { add_error(_('An error occurred while archiving this item.')); } redirect('item/'.$item['id']); } add_url_handler('|^item/(?P[0-9]+)/archive$|', 'handle_archive'); function handle_delete($request) { global $smarty; $item = get_item_from_url($request -> id); if(!is_array($item)) { add_error(sprintf(_("Item #% s not found."), $request -> id)); } else if (!can_delete($item)) { add_error(_('You cannot delete this item.')); } else if (delete_item($item['id']) === true) { add_message(sprintf( _("The element '% s' has been deleted successfully."), $item['name'])); } else { add_error(_('An error occurred while deleting this item.')); redirect('item/'.$item['id']); } redirect('item'); } add_url_handler('|^item/(?P[0-9]+)/delete$|', 'handle_delete');