<?php
/*
prio management
(c) 2004-2007 by "Oleg Savchuk" <hide@address.com>
part of phpProjectMaster project
http://phpprojmaster.sourceforge.net
The contents of this file are subject to the GNU GENERAL PUBLIC LICENSE
http://www.gnu.org/copyleft/gpl.html
*/
session_start();
require_once "../inc/sitelib.php" ;
require_once "../inc/form_utils.php" ;
require_once "../inc/image_utils.php" ;
require_once "../inc/user.php" ;
require_once "../inc/prio.lib.php" ;
check_access(100); //if you don't need this - you can also don't requite inc/user.php
global_init();
//********* variables
$tbl_name = $prio_vars['table_name'];
$tbl_key = $prio_vars['table_key_id'];
$item_id = $_REQUEST['id']+0;
$this_tpl_dir = '/admin/prio';
$tbl_fields = 'iname idesc status'; //fields to save
//********* action!
$CGI_ACTIONS=array(
'' => 'show_item_list',
'SaveList' => 'save_item_list',
'AddNew' => 'show_one_item',
'Edit' => 'show_one_item',
'SaveRec' => 'save_one_item',
'DelRec' => 'delete_item',
'MoveUp' => 'move_item',
'MoveDown' => 'move_item',
);
go_action();
exit;
//***************************
function show_item_list(){
global $prio_vars;
global $tbl_name, $tbl_key;
global $this_script, $this_tpl_dir, $root_url, $MAX_PAGE_ITEMS;
$moreurl=''; //additional url params for nav
$where=" status<>127 ";
//******** filter options
$page=get_page_option('page', $tbl_name."_lastpage");
$pagenum=get_page_option('pagenum', $tbl_name."_pagenum");
if (!$pagenum) $pagenum=$MAX_PAGE_ITEMS;
$page_offset=$page*$pagenum;
//********** sorting
$sortby=get_page_option('sortby', $tbl_name."_sortby", 'str');
if (!$sortby) $sortby='order';
$SORTSQL=array(
'order' => 'sort_order',
'id' => 'prio_id',
'iname' => 'iname',
'add_time' => 'add_time',
);
$ordsql=$SORTSQL[$sortby];
//**********
$search_str=$_REQUEST['s'];
if ($search_str){
$where.=" and (iname like ".dbq("%$search_str%")."
or idesc like ".dbq("%$search_str%")."
)";
$moreurl.=(($moreurl)?'&':'').urlencode($search_str);
}
//get list of items
$sql="select SQL_CALC_FOUND_ROWS *
from $tbl_name
where $where
order by $ordsql
LIMIT $page_offset, $pagenum
";
$rows=db_array($sql);
$total_items=db_value("SELECT FOUND_ROWS()");
foreach($rows as $k => $row){
$rows[$k]=array_merge($row,array(
'add_time_human' => SQLDate2Str($row['add_time'],1),
));
}
$list_nav='';
if ($total_items>$pagenum){
// $total_pages=ceil($total_items/$pagenum);
$list_nav=make_List_Navigation($page, $total_items, $pagenum, "$this_script?".$moreurl."&page=", '', 'showall');
# $list_nav=make_List_Navigation2($page, $total_items, $pagenum, "$this_script?".$moreurl."&page=");
}
$ps=array(
'item_datarow' => $rows,
'item_datarow_ctr' => count($rows),
'list_navigation' => $list_nav,
//filters
'search_str' => $search_str,
'sortby' => $sortby,
'pagenum' => $pagenum,
);
$ps=array_merge($ps, get_userinfo());
parse_page($GLOBALS['this_tpl_dir']."/list", $GLOBALS['PAGE_TPL_ADMIN'], $ps);
}
//******* do action with checkboxed items
function save_item_list(){
global $tbl_name, $tbl_key;
$cbses=$_REQUEST['cb'];
foreach($cbses as $item_id => $value){
if (!$item_id) continue;
// $hITEM=get_quotes($item_id);
$IFORM=array(
'status' => 127,
);
$sql="update $tbl_name set ".get_sqlupdate_set($IFORM).", upd_time=now(), upd_u_id=".$_SESSION['u_id']." where $tbl_key=$item_id";
// rw($sql);
db_query($sql);
}
show_item_list();
}
//***************************
//if $forceform=1 - redisplay values from FORM, not DB
function show_one_item($forceform=0){
global $prio_vars;
global $item_id, $tbl_key;
$hITEMDB=array();
$hITEM=$_REQUEST['item'];
if (!$hITEM){ //if not set - this is initial form call - we can make here initializations
}
$item_id=$_REQUEST['id']+0;
$hITEM[$tbl_key]=$item_id;
if ($item_id){ #edit mode
$hITEMDB=get_prio($item_id);
}
if ($forceform){
$hITEM=array_merge($hITEMDB,$hITEM); //if redisplay from the FORM - merge with DB record, so read-only fields will be displayed too
}else{
if ($item_id){//only if Edit mode
$hITEM=&$hITEMDB; //making $hITEM same as $hITEMDB (no array copy)
}
}
$ps=array(
'add_u_id_name' => ($hITEM['add_u_id'])?get_user_name($hITEM['add_u_id']):'',
'upd_u_id_name' => ($hITEM['upd_u_id'])?get_user_name($hITEM['upd_u_id']):'',
);
$ps=array_merge($ps, $hITEM);
$ps=array_merge($ps, get_userinfo());
parse_page($GLOBALS['this_tpl_dir']."/edit", $GLOBALS['PAGE_TPL_ADMIN'], $ps);
}
//*************************** save item info
function save_one_item(){
global $prio_vars;
global $tbl_name, $tbl_key, $tbl_fields;
$item_id=$_REQUEST['id']+0;
if (validate_item($item_id, $_REQUEST['item'])){
$hITEM=get_prio($item_id);
//read from form only necessary/allowed fields
$IFORM=form2dbhash($_REQUEST['item'], "$tbl_fields");
//make some adjustments
if ($item_id){ //id exists - update record
$IFORM['upd_u_id']=$_SESSION['u_id'];
$sql="update $tbl_name set ".get_sqlupdate_set($IFORM).", upd_time=now() where $tbl_key=$item_id";
// logger($sql);
db_query($sql);
$GLOBALS['green_msg']=lng("Record has been modified");
} else { //id not exits - insert record
$IFORM['add_u_id']=$_SESSION['u_id'];
$IFORM['sort_order']=get_max_sort_order($tbl_name)+1;
$sql="insert into $tbl_name ".get_sqlinsert_set($IFORM,', add_time',', now()');
// logger($sql);
$sth=db_query($sql);
$item_id=get_identity();
$GLOBALS['green_msg']=lng("New Record has been added");
}
$_REQUEST['id']=$item_id;
if ($_REQUEST['AndAddNext']){
unset($_REQUEST['item']);
unset($_REQUEST['id']);
}
show_one_item();
} else {
show_one_item(1);
}
}
//################# Validate item form values in IFORM
function validate_item($item_id=0, $IFORM){
global $prio_vars, $err_msg;
$REQFLD=array(
'iname' => lng('Name'),
);
// if (!$item_id) $REQFLD['xxx']=lng('xxx'); //add validation only for Edit mode
//VALIDATE REQUIRED FIELDS
if (!$err_msg) { $err_msg=validate_form($IFORM, $REQFLD); }
//VALIDATE if field unique
// if (!$err_msg && is_dbrecord_exists2($GLOBALS['tbl_name'], 'email', $IFORM['email'], " and ".$GLOBALS['tbl_key']."<>$item_id and status<>127") ){
// $err_msg=lng("Such Email already exists. Please, select another.");
// }
if ($err_msg) { return 0 ;}
return 1;
}
//************************
function delete_item(){
$item_id=$_REQUEST['id']+0;
delete_prio($item_id);
show_item_list();
}
//************************
function move_item(){
global $item_id;
$dir=0; #none
if ($_REQUEST['MoveUp']) $dir=-1;
if ($_REQUEST['MoveDown']) $dir=1;
sort_order_move('prio', 'prio_id', $item_id, $dir);
show_item_list();
}
?>