* @author Loic Vinet
*/
include("session.php");
if(file_exists($_SESSION['config']['lang'].'.php'))
{
include($_SESSION['config']['lang'].'.php');
}
else
{
$_SESSION['error'] = "Language file missing...
";
}
require("class_functions.php");
require_once("class_db.php");
require_once("class_letterbox.php");
$db = new dbquery();
$db->connect();
$connexion = new dbquery();
$connexion->connect();
$func = new functions();
$lb = new letterbox();
$services = array();
$users = array();
if($_SESSION['current_basket']['is_global'] == "Y")
{
//Verifier que l'un des documents n'est pas déjà reservé
$courr = new LetterBox();
$locktime = $_SESSION['current_basket']['locktime'];
$reserved = false;
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
$by_user_id = $courr->test_reserved_time($_SESSION['chosen_doc'][$i],"res_x");
if( $by_user_id != null && $by_user_id != $_SESSION['user']['UserId'] )
$reserved = true;
}
//Reservé
if($reserved)
{
?>
is_locked($_SESSION['chosen_doc'][$i],"res_x",$locktime);
}
}
}
if(isset($_REQUEST['cancel']))
{
if($_SESSION['current_basket']['is_global'] == "Y")
{
//Libère les documents
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
$courr->release($_SESSION['chosen_doc'][$i],"res_x");
}
$_SESSION['chosen_doc'] = array();
?>
query("select * from ".$_SESSION['tablename']['services']." where ID in (".$_SESSION['current_basket']['redirect_services'].") and ENABLED = 'Y'");
while($res = $db->fetch_object())
{
array_push($services, array( 'ID' => $res->ID, 'LABEL' => $res->SERVICE));
}
function cmp($a, $b)
{
return strcmp($a["LABEL"], $b["LABEL"]);
}
usort($services, "cmp");
}
if(!empty($_SESSION['current_basket']['redirect_users']) && $_SESSION['current_basket']['can_redirect'] == 'Y')
{
$db2 = new dbquery();
$db2->connect();
$sql_users = "select DISTINCT uc.USER_ID, u.LASTNAME from ".$_SESSION['tablename']['usergroup_content']." uc, ".$_SESSION['tablename']['users']." u where GROUP_ID in (".$_SESSION['current_basket']['redirect_users'].") and u.USER_ID = uc.USER_ID and u.ENABLED = 'Y'";
$order_by = "order by u.LASTNAME asc";
if($_SESSION['config']['show_only_elu_in_mailing_list'] == 'true')
$sql_users .= "AND u.ELU = 'Y' ";
$db->query($sql_users." ".$order_by);
while($res = $db->fetch_object())
{
$db2->query("select LASTNAME, FIRSTNAME from ".$_SESSION['tablename']['users']." where USER_ID = '".$res->USER_ID."' and USER_ID <> ''");
$res2 = $db2->fetch_object();
array_push($users, array( 'ID' => $res->USER_ID, 'NOM' => $res2->LASTNAME, "PRENOM" => $res2->FIRSTNAME, "SERVICE" => $res->DEPARTMENT));
}
}
//Redirection vers l'utilisateur qui a reelement traité le courrier
if( isset($_REQUEST['valid1']) || isset($_REQUEST['valid2']) || isset($_REQUEST['valid3']) )
{
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
$session_diff = array();
$connexion->query(" SELECT USER_ID FROM ".$_SESSION['tablename']['listinstance']." WHERE RES_ID = ".$_SESSION['chosen_doc'][$i]."
ORDER BY SEQUENCE");
while( $res = $connexion->fetch_object() )
{
$session_diff[] = $res->USER_ID;
}
//Redirection vers l'utilisateur qui a reellement traité le courrier
if( $session_diff[0] != $_SESSION['user']['UserId'] && $_SESSION['config']['redirect_to_user_on_treatment'] === "true" )
{
$session_diff[count($session_diff)] = $session_diff[0];
$dbl = -1;
for($j=0; $j < count($session_diff); $j++ )
{
if( $session_diff[$j] == $_SESSION['user']['UserId'] )
{
$dbl = $j;
break;
}
}
if($dbl > 0)
{
$session_diff[0] = $session_diff[$dbl];
unset($session_diff[$dbl]);
$session_diff = array_values($session_diff);
}
else
{
$session_diff[0] = $_SESSION['user']['UserId'];
}
//Store the old viewed and by_user_id values
$mem_by_user_id = array();
$mem_viewed = array();
for($j=1;$j < (count($session_diff) + 1); $j++)
{
$connexion->query("SELECT USER_ID, BY_USER_ID, VIEWED
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." and user_id = '".$session_diff[$j-1]."'");
if($result = $connexion->fetch_object())
{
$mem_viewed[$result->USER_ID] = $result->VIEWED;
$mem_by_user_id[$result->USER_ID] = $result->BY_USER_ID;
}
}
//Delete listInstance
$connexion->query("delete from ".$_SESSION['tablename']['listinstance']." where res_id = ".$_SESSION['chosen_doc'][$i]);
//Insert into listinstance the new mailing list with the values of viewed and by_user_id saved before
for($j=1; $j < ( count($session_diff) + 1 ); $j++ )
{
$viewed = 0;
$by_user_id = $_SESSION['user']['UserId'];
if( isset($mem_viewed[$session_diff[$j-1]] ) )
{
$viewed = $mem_viewed[$session_diff[$j-1]];
$by_user_id = $mem_by_user_id[$session_diff[$j-1]];
}
$connexion->query("INSERT INTO ".$_SESSION['tablename']['listinstance']."
( RES_TABLE, RES_ID, SEQUENCE, USER_ID, VIEWED, BY_USER_ID )
VALUES ('".$_SESSION['ressources'][0]['tablename']."',".$_SESSION['chosen_doc'][$i].",".$j.",'".$session_diff[$j-1]."',".$viewed.",'".$by_user_id."')");
}
$connexion->query("UPDATE ".$_SESSION['current_basket']['table']." SET DEST_USER = '".$_SESSION['user']['UserId']."' WHERE res_id = ".$_SESSION['chosen_doc'][$i]);
}
}
}
if(isset($_REQUEST['valid1']))
{
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
$db->query("update ".$_SESSION['current_basket']['table']." set DEST_USER = 'courrier' where RES_ID = ".$_SESSION['chosen_doc'][$i]);
//$db->query("update ".$_SESSION['tablename']['listinstance']." set USER_ID = '', BY_USER_ID = '' where RES_TABLE = '".$_SESSION['current_basket']['table']."' and res_id = '".$_SESSION['chosen_doc'][$i]."' and SEQUENCE = 1 ");
if($_SESSION['history']['redirection'] == 'true')
{
require_once("class_history.php");
$hist = new history();
$hist->add($_SESSION['current_basket']['table'], $_SESSION['chosen_doc'][$i],"RED", "Redirection vers le service courrier");
}
$lb->release($_SESSION['chosen_doc'][$i],"res_x");
}
$_SESSION['chosen_doc'] = array();
if($_REQUEST['process'] <> "true" || !isset($_REQUEST['process']))
{
?>
query('UPDATE '.$_SESSION['ressources'][0]['tablename'].' SET '.$query.' , DESTINATION = "'.$_REQUEST['service'].'" WHERE RES_ID = '.$_SESSION['chosen_doc'][$i]);
$connexion->query("update ".$_SESSION['ressources'][0]['tablename']." set destination = '".$_REQUEST['service']."' where is_folder = 'N' and folder_id = '".$_SESSION['chosen_doc'][$i]."'");
//SAVE OLD LISTINSTANCE
$old_listinstance = array();
$connexion->query("SELECT USER_ID, SEQUENCE FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." ORDER BY SEQUENCE ASC");
while( $result = $connexion->fetch_object() )
$old_listinstance[$result->SEQUENCE] = $result->USER_ID;
//BEGIN : CREATE LISTINSTANCE
$session_diff = array();
foreach($_SESSION['diff'] as $d_user)
$session_diff[] = $d_user['UserID'];
//Retrieve the old primary destination user
$connexion->query("SELECT USER_ID
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." AND sequence = 1");
if( $result = $connexion->fetch_object() )
{
//The primary destination user has changed
if($result->USER_ID != $session_diff[0])
{
$session_diff[] = $result->USER_ID;
if( $_SESSION['config']['tag100_for_copy'] == true )
$connexion->query("UPDATE ".$_SESSION['tablename']['listinstance']." SET VIEWED = 100
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." and user_id = '".$result->USER_ID."'");
}
}
//Add copy user in the mailing list
$connexion->query("SELECT USER_ID
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." AND sequence > 1 ORDER BY sequence ASC");
while( $result = $connexion->fetch_object() )
$session_diff[] = $result->USER_ID;
//Remove duplicate values in the mailing list
$session_diff = array_values(array_unique($session_diff));
//Store the old viewed and by_user_id values
$mem_by_user_id = array();
$mem_viewed = array();
for($j=1;$j < (count($session_diff) + 1); $j++)
{
$connexion->query("SELECT USER_ID, BY_USER_ID, VIEWED
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." and user_id = '".$session_diff[$j-1]."'");
if($result = $connexion->fetch_object())
{
$mem_viewed[$result->USER_ID] = $result->VIEWED;
$mem_by_user_id[$result->USER_ID] = $result->BY_USER_ID;
}
}
//Delete listInstance
$connexion->query("delete from ".$_SESSION['tablename']['listinstance']." where res_id = ".$_SESSION['chosen_doc'][$i]);
//Insert into listinstance the new mailing list with the values of viewed and by_user_id saved before
for($j=1; $j < ( count($session_diff) + 1 ); $j++ )
{
$viewed = 0;
$by_user_id = $_SESSION['user']['UserId'];
if( isset($mem_viewed[$session_diff[$j-1]] ) )
{
$viewed = $mem_viewed[$session_diff[$j-1]];
$by_user_id = $mem_by_user_id[$session_diff[$j-1]];
}
$connexion->query("INSERT INTO ".$_SESSION['tablename']['listinstance']."
( RES_TABLE, RES_ID, SEQUENCE, USER_ID, VIEWED, BY_USER_ID )
VALUES ('".$_SESSION['ressources'][0]['tablename']."',".$_SESSION['chosen_doc'][$i].",".$j.",'".$session_diff[$j-1]."',".$viewed.",'".$by_user_id."')");
}
//END : CREATE LISTINSTANCE
//******** MAILER ***********//
//NEW LISTINSTANCE
$new_listinstance = array();
$connexion->query("SELECT USER_ID, SEQUENCE FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." ORDER BY SEQUENCE ASC");
while( $result = $connexion->fetch_object() )
$new_listinstance[$result->SEQUENCE] = $result->USER_ID;
//MAIL USER ADDED IN LISTINSTANCE
foreach( array_diff($new_listinstance,$old_listinstance) as $index => $u_add)
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
//TREATMENT
if( array_search($u_add, $new_listinstance) == 1)
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_add,1);
//COPY
else
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_add,2);
}
//MAIL USER DELETED FROM LISTINSTANCE
foreach( array_diff($old_listinstance,$new_listinstance) as $u_del)
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_del,3);
}
//MAIL USER WHEN COPY -> TREATMENT
if( array_search($new_listinstance[1],array_slice($old_listinstance, 1)) !== false )
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$new_listinstance[1],1);
}
//MAIL USER WHEN TREATMENT -> COPY
if( array_search($old_listinstance[1],array_slice($new_listinstance, 1) ) !== false )
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$old_listinstance[1],2);
}
$mail->purge_history();
//***************************//
if($_SESSION['history']['redirection'] == 'true')
{
require_once("class_history.php");
$hist = new history();
$hist->add($_SESSION['current_basket']['table'], $_SESSION['chosen_doc'][$i],"RED",_LETTER_N.$_SESSION['chosen_doc'][$i].' '._REDIRECTED_TO." ".$_REQUEST['service']." "._WITH_DIFFUSION_LIST);
}
}
$lb->release($_SESSION['chosen_doc'][$i],"res_x");
}
$_SESSION['diff'] = array();
$_SESSION['chosen_doc'] = array();
if($_REQUEST['process'] <> "true" || !isset($_REQUEST['process']))
{
?>
";
}
}
else
{
if(isset($_REQUEST['service']) && !empty($_REQUEST['service']))
{
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
$db->query("update ".$_SESSION['current_basket']['table']." set DESTINATION = '".$_REQUEST['service']."', DEST_USER='' where RES_ID = ".$_SESSION['chosen_doc'][$i]);
$db->query("update ".$_SESSION['current_basket']['table']." set destination = '".$_REQUEST['service']."' where is_folder = 'N' and folder_id = '".$_SESSION['chosen_doc'][$i]."'");
$db->query("update ".$_SESSION['tablename']['listinstance']." set USER_ID = '', BY_USER_ID = '' where RES_TABLE = '".$_SESSION['current_basket']['table']."' and RES_ID = '".$_SESSION['chosen_doc'][$i]."' and SEQUENCE = 1 ");
if($_SESSION['history']['redirection'] == 'true')
{
require_once("class_history.php");
$hist = new history();
$hist->add($_SESSION['current_basket']['table'], $_SESSION['chosen_doc'][$i],"RED",_LETTER_N.$_SESSION['chosen_doc'][$i].' '._REDIRECTED_TO." ".$_REQUEST['service']);
}
}
$_SESSION['chosen_doc'] = array();
if($_REQUEST['process'] <> "true" || !isset($_REQUEST['process']))
{
?>
";
}
}
}
if(isset($_REQUEST['valid3']) )
{
if(isset($_REQUEST['user']) && !empty($_REQUEST['user']))
{
for($i=0;$i < count($_SESSION['chosen_doc']);$i++)
{
//Update dest user of document
$db->query("update ".$_SESSION['current_basket']['table']." set DEST_USER = '".$_REQUEST['user']."' where RES_ID = ".$_SESSION['chosen_doc'][$i]);
//SAVE OLD LISTINSTANCE
$old_listinstance = array();
$connexion->query("SELECT USER_ID, SEQUENCE FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." ORDER BY SEQUENCE ASC");
while( $result = $connexion->fetch_object() )
$old_listinstance[$result->SEQUENCE] = $result->USER_ID;
//BEGIN : CREATE LISTINSTANCE
$session_diff=array();
//Retrieve the old primary destination user
$connexion->query("SELECT USER_ID
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." AND sequence = 1 ORDER BY SEQUENCE");
if( $result = $connexion->fetch_object() )
{
//The primary destination user has changed
if($result->USER_ID != trim($_REQUEST['user']) )
{
$session_diff[] = trim($_REQUEST['user']);
$session_diff[] = $result->USER_ID;
if( $_SESSION['config']['tag100_for_copy'] == true )
$connexion->query("UPDATE ".$_SESSION['tablename']['listinstance']." SET VIEWED = 100
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." and user_id = '".$result->USER_ID."'");
}
else
{
$session_diff[] = $result->USER_ID;
}
}
//Add copy user in the mailing list
$connexion->query("SELECT USER_ID
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." AND sequence > 1 ORDER BY SEQUENCE ASC");
while( $result = $connexion->fetch_object() )
$session_diff[] = $result->USER_ID;
//Remove duplicate values in the mailing list
$session_diff = array_values(array_unique($session_diff));
//Store the old viewed and by_user_id values
$mem_by_user_id = array();
$mem_viewed = array();
for($j=1;$j < (count($session_diff) + 1); $j++)
{
$connexion->query("SELECT USER_ID, BY_USER_ID, VIEWED
FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." and user_id = '".$session_diff[$j-1]."'");
if($result = $connexion->fetch_object())
{
$mem_viewed[$result->USER_ID] = $result->VIEWED;
$mem_by_user_id[$result->USER_ID] = $result->BY_USER_ID;
}
}
//Delete listInstance
$connexion->query("delete from ".$_SESSION['tablename']['listinstance']." where res_id = ".$_SESSION['chosen_doc'][$i]);
//Insert into listinstance the new mailing list with the values of viewed and by_user_id saved before
for($j=1; $j < ( count($session_diff) + 1 ); $j++ )
{
$viewed = 0;
$by_user_id = $_SESSION['user']['UserId'];
if( isset($mem_viewed[$session_diff[$j-1]] ) )
{
$viewed = $mem_viewed[$session_diff[$j-1]];
$by_user_id = $mem_by_user_id[$session_diff[$j-1]];
}
$connexion->query("INSERT INTO ".$_SESSION['tablename']['listinstance']."
( RES_TABLE, RES_ID, SEQUENCE, USER_ID, VIEWED, BY_USER_ID )
VALUES ('".$_SESSION['ressources'][0]['tablename']."',".$_SESSION['chosen_doc'][$i].",".$j.",'".$session_diff[$j-1]."',".$viewed.",'".$by_user_id."')");
}
//END : CREATE LISTINSTANCE
//******** MAILER ***********//
//NEW LISTINSTANCE
$new_listinstance = array();
$connexion->query("SELECT USER_ID, SEQUENCE FROM ".$_SESSION['tablename']['listinstance']."
WHERE res_id = ".$_SESSION['chosen_doc'][$i]." ORDER BY SEQUENCE ASC");
while( $result = $connexion->fetch_object() )
$new_listinstance[$result->SEQUENCE] = $result->USER_ID;
//MAIL USER ADDED IN LISTINSTANCE
foreach( array_diff($new_listinstance,$old_listinstance) as $index => $u_add)
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
//TREATMENT
if( array_search($u_add, $new_listinstance) == 1)
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_add,1);
//COPY
else
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_add,2);
}
//MAIL USER DELETED FROM LISTINSTANCE
foreach( array_diff($old_listinstance,$new_listinstance) as $u_del)
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$u_del,3);
}
//MAIL USER WHEN COPY -> TREATMENT
if( array_search($new_listinstance[1],array_slice($old_listinstance, 1)) !== false )
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$new_listinstance[1],1);
}
//MAIL USER WHEN TREATMENT -> COPY
if( array_search($old_listinstance[1],array_slice($new_listinstance, 1) ) !== false )
{
require_once($_SESSION['mailer']['path_to_mailer']."/class_mailer.php");
$mail = new Mailer(".");
$mail->send_and_save('res_x',$_SESSION['chosen_doc'][$i],$old_listinstance[1],2);
}
$mail->purge_history();
//***************************//
if($_SESSION['history']['redirection'] == 'true')
{
require_once("class_history.php");
$hist = new history();
$hist->add($_SESSION['current_basket']['table'], $_SESSION['chosen_doc'][$i],"RED",_LETTER_N.$_SESSION['chosen_doc'][$i].' '._REDIRECTED_TO." ".$_REQUEST['user']);
}
$lb->release($_SESSION['chosen_doc'][$i],"res_x");
}
$_SESSION['chosen_doc'] = array();
if($_REQUEST['process'] <> "true" || !isset($_REQUEST['process']))
{
?>
";
}
}
?>
0)
{
echo " onLoad=\"window.opener.location.href = break_cache(break_get(window.opener.location.href));
setTimeout(function(){window.parent.top.close();},".($_SESSION['current_basket']['locktime'] * 60 * 1000).");\"";
}
?>>
.