exec_sql("update profile set p_name=$1,p_desc=$2,
with_calc=$3, with_direct_form=$4 where p_id=$5",array($p_name,
$p_desc,$wc,$wd,$p_id));
}
else
{
$p_id=$cn->get_value ("insert into profile (p_name,
p_desc,with_calc,with_direct_form) values
($1,$2,$3,$4) returning p_id",array(
$p_name,$p_desc,$wc,$wd
));
}
}
catch (Exception $e)
{
alert($e->getMessage());
}
}
//************************************
// Clone
//************************************
if ( isset($_POST['clone']))
{
extract ($_POST);
try
{
$cn->start();
$new_id=$cn->get_value("insert into profile(p_name,p_desc,with_calc,
with_direct_form)
select 'copie de '||p_name,p_desc,with_calc,
with_direct_form from profile where p_id=$1 returning p_id",array($p_id));
$cn->exec_sql("
insert into profile_menu (p_id,me_code,me_code_dep,p_order,p_type_display,pm_default)
select $1,me_code,me_code_dep,p_order,p_type_display,pm_default from profile_menu
where p_id=$2
",array($new_id,$p_id));
$cn->commit();
$p_id=$new_id;
}
catch (Exception $exc)
{
echo alert($exc->getMessage());
$cn->rollback();
}
}
//************************************
// Delete
//************************************
if ( isset($_POST['delete_profil']))
{
extract ($_POST);
try
{
$cn->start();
if ( $p_id==1 ) { throw new Exception('On ne peut effacer le profil par défaut');}
$new_id=$cn->get_value("delete from profile
where p_id=$1 ",array($p_id));
$cn->commit();
}
catch (Exception $exc)
{
echo alert($exc->getMessage());;
$cn->rollback();
}
}
//************************************
// Modify the menu or delete it
//************************************
if (isset($_POST['mod']))
{
extract($_POST);
if (isset($delete))
{
try
{
$cn->start();
$cn->exec_sql("delete from profile_menu where pm_id in (select * from get_menu_dependency($1)",
array($pm_id));
$cn->exec_sql("delete from profile_menu where pm_id=$1",
array($pm_id));
$cn->commit();
}
catch (Exception $exc)
{
echo $exc->getMessage();
$cn->rollback();
}
}
else
try
{
/**
* Printing cannot be a menu and do not depend of anything
*/
$menu_type = $cn->get_value("select me_type from menu_ref
where me_code=$1", array($me_code));
if ($menu_type == 'PR')
{
$p_type = 'P';
$me_code_dep = -1;
}
$cn->start();
$me_code_dep = ($me_code_dep == -1) ? null : $me_code_dep;
$pm_default = (isset($pm_default)) ? 1 : 0;
$p_order = (strlen(trim($p_order)) == 0) ? "0" : $p_order;
if ($pm_default == 1)
{
$cn->exec_sql("update profile_menu set pm_default=0
where p_id=(select p_id from profile_menu
where
pm_id=$1)", array($pm_id));
}
$cn->exec_sql("update profile_menu set me_code=$1,me_code_dep=$2,p_order=$3,pm_default=$4
where pm_id=$5", array($me_code, $me_code_dep, $p_order, $pm_default, $pm_id));
$cn->commit();
}
catch (Exception $e)
{
$cn->rollback();
alert($e->getMessage());
}
}
//****************************************************
// Add a menu, module, submenu,plugin...
//****************************************************
if ( isset ($_POST['add_menu']))
{
extract ($_POST);
try
{
$cn->start();
/**
* Printing cannot be a menu and do not depend of anything
*/
$menu_type=$cn->get_value("select me_type from menu_ref
where me_code=$1",array($me_code));
if ($menu_type=='PR')
{
$p_type='P';
$me_code_dep=-1;
}
// Module never depends of anything
if ($p_type=='M')
{
$me_code_dep=-1;
}
/**
* Check for infinite loop
*/
$inf=$cn->get_value("select count(*) from profile_menu
where p_id=$1 and me_code_dep=$2 and me_code=$3",
array($p_id,$me_code,$me_code_dep));
if ( $inf > 0 ) throw new Exception("Boucle infinie");
/**
* if me_code_dep == -1, it means it is null
*/
$me_code_dep=($me_code_dep==-1)?null:$me_code_dep;
$pm_default=(isset($pm_default))?1:0;
$cn->exec_sql("
insert into profile_menu (me_code,me_code_dep,p_id,p_order,pm_default,p_type_display)
values ($1,$2,$3,$4,$5,$6)
",array($me_code,$me_code_dep,$p_id,$p_order,$pm_default,$p_type));
$cn->commit();
}
catch (Exception $exc)
{
alert($exc->getMessage());
}
}
echo '
';
$table = new Sort_Table();
$url = $_SERVER['REQUEST_URI'];
$table->add('Nom', $url, "order by p_name asc", "order by p_name desc", "na", "nd");
$table->add('Description', $url, "order by p_desc asc", "order by p_desc desc", "da", "dd");
$table->add('Calculatrice visible', $url, "order by with_calc asc", "order by with_calc desc", "ca", "cd");
$table->add('Form Direct visible', $url, "order by with_direct_form asc", "order by with_direct_form desc", "fa", "fd");
$ord = (isset($_REQUEST['ord'])) ? $_REQUEST['ord'] : 'na';
$order = $table->get_sql_order($ord);
$menu = new Profile_sql($cn);
$ret = $menu->seek($order);
echo '
';
echo '
';
//*******************************************************
// Show details of the selected profile
//*******************************************************
echo '';
if (isset($_POST['p_id']))
{
require_once 'ajax_get_profile.php';
}
echo '
';
?>