query("/ROOT/CONFIG/*") as $cf) { $_SESSION['config'][$cf->nodeName] = $cf->nodeValue; } foreach($xp_config_xml->query("/ROOT/MAILER/*") as $ml) { $_SESSION['mailer'][$ml->nodeName] = $ml->nodeValue; } //**********************************// // INCLUDE FILE // //**********************************// set_include_path("../"); foreach($include_file as $if) { if ( !require_once($if) ) { exit("Unable to load ".$if."\n"); } } restore_include_path(); //**********************************// // DATABASE CONNECTION // //**********************************// $db = new dbquery(); $db->connect(); //**********************************// // BASKET_KEYWORDS // //**********************************// function basket_keywords($user_id,$basket) { $tmp_db = new dbquery(); //@user, @groupuser, @my_entity, @entities $tmp_db->query("SELECT uc.group_id as group_id, u.department as department, s.where_clause as where_clause, uc.primary_group as primary_group FROM users u, usergroup_content uc, security s WHERE uc.user_id = u.user_id AND s.group_id = uc.group_id AND u.user_id = '".$user_id."'"); while( $res = $tmp_db->fetch_object() ) { $department = $res->department; if( $tmp_db->primary_group == 'Y') $group_id = $res->group_id; $where_clause[] = $res->where_clause; } if( !isset($department) ) return $basket; //@user $basket = str_ireplace("@user","'".$user_id."'",$basket); //@my_entity $basket = str_ireplace("@my_entity","'".$department."'",$basket); //@groupuser $basket = str_ireplace("@groupuser","'".$group_id."'",$basket); //@entities $array_entities = array(); foreach( $where_clause as $wc ) { $wc = preg_replace("#\s#","",$wc); preg_match("#\((.*)\)#",$wc,$all_matches); $array_entities = array_values(array_unique( array_merge($array_entities,explode(",",$all_matches[1]) ) ) ); } $basket = str_ireplace("@entities","(".implode(",",$array_entities).")",$basket); return $basket; } //**********************************// // AT WORK USERS // //**********************************// $db->query("SELECT user_id,basket_id FROM groupbasket,users WHERE (user_id,group_id) IN ( SELECT u.user_id, uc.GROUP_ID FROM users u, usergroup_content uc WHERE STATUS = 'OK' AND ENABLED = 'Y' AND u.user_id = uc.user_id AND uc.primary_group = 'Y')"); while( $res = $db->fetch_object() ) { $at_work_users[$res->user_id][] = $res->basket_id; } //**********************************// // NORMAL NOTIF // //**********************************// foreach( $at_work_users as $k_awu => $d_awu ) { $mailer = new Mailer(".."); foreach( $d_awu as $bk) { $db->query("SELECT basket_clause FROM baskets WHERE basket_id = '".$bk."'"); if( $where_clause = $db->fetch_object()->basket_clause ) { //Replace Keywords $where_clause = basket_keywords($k_awu,$where_clause); //Recupere where_clause sans jointure sur listinstance $q_sql = $db->query("SELECT res_id as id FROM res_x WHERE ".$where_clause,true); if( !$q_sql ) { //Recupere where_clause avec jointure sur listinstance $db->query("SELECT r.res_id as id FROM res_x r,listinstance l WHERE ".$where_clause,false); } //L'ensemble des courriers des bannettes pour chaque utilisateur $mail = array(); while( $res = $db->fetch_object() ) $mail[] = $res->id; //Tri sort($mail); //DEBUG //echo $k_awu .":".$bk.":". count($mail)."\n"; $result = $mailer->send_and_save("res_x",$mail,$k_awu,$bk); echo "--- res_x : ".$k_awu." : ".$bk." ---\n"; if( is_array($result) ) for( $i=0; $i ".$result[$mail[$i]]."\n"; else for( $i=0; $i < count($mail); $i++) echo "-".$mail[$i]." -> ".$result."\n"; echo "------------------------------------\n\n"; unset($result); } } unset($mailer); } //PURGE AND STOP $mailer = new Mailer(".."); $mailer->purge_history(); unset($mailer); exit; //**********************************// // RELANCE 1 ID=9 // //**********************************// $db->query("SELECT r.res_id, u.user_id, r.dest_user FROM res_x r LEFT JOIN users u ON (r.destination = u.department) WHERE TO_DAYS(now()) >= TO_DAYS(r.CUSTOM_D4) AND TO_DAYS(now()) <= TO_DAYS(r.CUSTOM_D2) AND u.user_id NOT IN (SELECT user_id FROM users WHERE STATUS <> 'OK') AND r.dest_user NOT IN (SELECT user_id FROM users WHERE STATUS <> 'OK') AND r.STATUS <> 'END' AND r.IS_FOLDER = 'Y'"); $alert1 = array(); while( $res = $db->fetch_object() ) { if( !empty($res->dest_user) ) { $alert1[$res->dest_user][] = $res->res_id; } else { $alert1[$res->user_id][] = $res->res_id; } } foreach($alert1 as $k_a1 => $a1) { $mail=array_unique($a1); sort($mail); $result = $mailer->send_and_save("res_x",$mail,$k_a1,9); echo "--- res_x : ".$k_a1." : Alert1(3) ---\n"; if( is_array($result) ) for( $i=0; $i ".$result[$mail[$i]]."\n"; else for( $i=0; $i < count($mail); $i++) echo "-".$mail[$i]." -> ".$result."\n"; echo "------------------------------------\n\n"; } //***********************************// // RELANCE 2 ID=10 // //**********************************// $db->query("SELECT r.res_id, u.user_id, r.dest_user, u.STATUS FROM res_x r LEFT JOIN users u ON (r.destination = u.department) WHERE TO_DAYS(now()) <= TO_DAYS(r.CUSTOM_D5) AND TO_DAYS(now()) > TO_DAYS(r.CUSTOM_D2) AND u.user_id NOT IN (SELECT user_id FROM users WHERE STATUS <> 'OK') AND r.dest_user NOT IN (SELECT user_id FROM users WHERE STATUS <> 'OK') AND r.STATUS <> 'END' AND r.IS_FOLDER = 'Y'"); $alert2 = array(); while( $res = $db->fetch_object() ) { if( !empty($res->dest_user) ) { $alert2[$res->dest_user][] = $res->res_id; } else { $alert2[$res->user_id][] = $res->res_id; } } foreach($alert2 as $k_a2 => $a2) { $mail=array_unique($a2); sort($mail); $result = $mailer->send_and_save("res_x",$mail,$k_a2,10); echo "--- res_x : ".$k_a2." : Alert2(4) ---\n"; if( is_array($result) ) for( $i=0; $i ".$result[$mail[$i]]."\n"; else for( $i=0; $i < count($mail); $i++) echo "-".$mail[$i]." -> ".$result."\n"; echo "------------------------------------\n\n"; } //**********************************// // OFF WORK USERS // //**********************************// $db->query("SELECT user_abs, new_user, basket_id, basket_owner, is_virtual FROM user_abs WHERE new_user IN ( SELECT user_id FROM users u WHERE STATUS = 'OK' AND ENABLED = 'Y')"); while( $res = $db->fetch_object() ) { if( $res->is_virtual == 'Y' ) { $off_work_users[$res->new_user][$res->basket_owner][] = $res->basket_id; } else { $off_work_users[$res->new_user][$res->user_abs][] = $res->basket_id; } } ?>