id_tache = $id_tache;
}
//formulaire spécifique au type de tâche
function show_form ($param='') {
global $dbh, $msg, $charset;
global $subaction,$aff_list;
global $pmb_procedure_server_credentials, $pmb_procedure_server_address;
if ($subaction == 'change') {
global $type_proc, $form_procs, $form_procs_remote;
global $tocsv_checked, $tocsv_sep, $tocsv_filepath, $tocsv_enclosure;
$tocsv_sep=stripslashes($tocsv_sep);
$tocsv_enclosure=stripslashes($tocsv_enclosure);
$tocsv_filepath=stripslashes($tocsv_filepath);
} else {
if (is_array($param)) {
foreach ($param as $aparam=>$aparamv) {
if (is_array($aparamv)) {
foreach ($aparamv as $sparam=>$sparamv) {
global $$sparam;
$$sparam = $sparamv;
}
} else {
global $$aparam;
$$aparam = $aparamv;
}
}
}
$tocsv_checked=$param['tocsv']['checked'];
$tocsv_sep=$param['tocsv']['sep'];
$tocsv_filepath=$param['tocsv']['filepath'];
$tocsv_enclosure=$param['tocsv']['enclosure'];
}
$form_task =
"";
// Procédure interne ou Procédure distante ??
$form_task .= "
";
//procédure interne
if ($type_proc == 'internal') {
//Choix d'une procédure
$form_task .= "
".$this->msg['planificateur_proc_pers']."
".$this->msg['planificateur_proc_choice']." ";
$requete = "SELECT idproc, name FROM procs order by name";
$result = pmb_mysql_query($requete,$dbh);
while ($row = pmb_mysql_fetch_object($result)) {
$form_task .=
"idproc ? 'selected=\'selected\'' : '' ).">".$row->name." ";
}
$form_task .=
"
";
if ($form_procs) {
$form_task .=
"
";
$hp=new parameters($form_procs,"procs");
if (preg_match_all("|!!(.*)!!|U",$hp->proc->requete,$query_parameters))
$form_task .= $hp->gen_form_plann();
$form_task .=
"
";
}
} else if ($type_proc == 'remote') {
$form_task .=
"
".$this->msg['planificateur_proc_perso']."
";
//Procédures Externes
$pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials);
if ($pmb_procedure_server_address && (count($pmb_procedure_server_credentials_exploded) == 2)) {
$aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1]));
$procedures = $aremote_procedure_client->get_procs('AP');
if ($procedures) {
if ($procedures->error_information->error_code) {
$form_task .= $msg['remote_procedures_error_server'].":".$procedures->error_information->error_string." ";
} else if (isset($procedures->elements)){
$form_task .=
"";
foreach ($procedures->elements as $aprocedure) {
$form_task .=
"id ? "selected" : "").">".($aprocedure->untested ? "[".$msg['remote_procedures_procedure_non_validated']." ] " : '')."$aprocedure->name ";
}
$form_task .=
" ";
} else {
$form_task .=" ".$msg['remote_procedures_no_procs']." ";
}
}
$form_task .=
"
";
if ($form_procs_remote) {
$id = $form_procs_remote;
$procedure = $aremote_procedure_client->get_proc($id,'AP');
$form_task .=
"
";
if ($procedure['error_message']) {
$form_task .= htmlentities($msg['remote_procedures_error_server'], ENT_QUOTES, $charset).":".$procedure['error_message']." ";
} else {
$the_procedure = $procedure['procedure'];
if ($the_procedure->params && ($the_procedure->params != "NULL")) {
$sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs";
pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
$sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '".pmb_mysql_escape_string($the_procedure->name)."', '".pmb_mysql_escape_string($the_procedure->sql)."', '".pmb_mysql_escape_string($the_procedure->comment)."', '', '".pmb_mysql_escape_string($the_procedure->params)."', 0)";
pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
$idproc = pmb_mysql_insert_id($dbh);
$hp=new parameters($idproc,"remote_proc");
if (preg_match_all("|!!(.*)!!|U",$hp->proc->requete,$query_parameters)) {
$form_task .= $hp->gen_form_plann();
}
}
}
$form_task .=
"
";
}
} else {
$form_task .=
"";
}
}
// Export CSV
$form_task .= "
";
return $form_task;
}
function task_execution() {
global $dbh,$msg, $PMBusername;
if (SESSrights & ADMINISTRATION_AUTH) {
$parameters = $this->unserialize_task_params();
if ($parameters['type_proc']) {
if ($parameters['type_proc'] == 'internal') {
//vérifie que la procédure existe toujours en base PMB
$res = pmb_mysql_query("SELECT name FROM procs where idproc=".$parameters['form_procs'],$dbh);
if (pmb_mysql_num_rows($res) == 1) {
$id_proc = $parameters['form_procs'];
$row = pmb_mysql_fetch_object($res);
if($this->statut == RUNNING) {
$this->report[] = "".$this->msg['proc_execution']." : ".$row->name." ";
if (method_exists($this->proxy, "pmbesProcs_executeProc")) {
$result_proc = $this->proxy->pmbesProcs_executeProc(INTERNAL, $id_proc, $parameters);
$this->report[] = "".$result_proc['report']." ";
$this->update_progression(100);
} else {
$this->report[] = "".sprintf($msg['planificateur_function_rights'],"executeProc","pmbesProcs",$PMBusername)." ";
}
}
} else {
$this->report[] = $this->msg['proc_unknown'];
}
} else if ($parameters['type_proc'] == 'remote') {
$id_proc = $parameters['form_procs_remote'];
if($this->statut == RUNNING) {
if (method_exists($this->proxy, "pmbesProcs_executeProc")) {
$result_proc = $this->proxy->pmbesProcs_executeProc(EXTERNAL, $id_proc, $parameters);
$this->report[] = "".$this->msg['proc_execution_remote']." : ".$result_proc['name']." ";
$this->report[] = "".$result_proc['report']." ";
$this->update_progression(100);
} else {
$this->report[] = "".$this->msg['proc_execution_remote']." ";
$this->report[] = "".sprintf($msg['planificateur_function_rights'],"executeProc","pmbesProcs",$PMBusername)." ";
}
}
} else {
$this->report[] = "".$this->msg['proc_error']." ";
}
} else {
$this->report[] = "".$this->msg['proc_error']." ";
}
} else {
$this->report[] = "".sprintf($msg['planificateur_rights_bad_user_rights'], $PMBusername)." ";
}
}
function make_serialized_task_params() {
global $dbh, $type_proc, $form_procs, $form_procs_remote;
global $tocsv_checked, $tocsv_sep, $tocsv_filepath, $tocsv_enclosure;
global $pmb_procedure_server_credentials, $pmb_procedure_server_address;
$t = parent::make_serialized_task_params();
$t['type_proc'] = stripslashes($type_proc);
$t['form_procs'] = stripslashes($form_procs);
$t['form_procs_remote'] = stripslashes($form_procs_remote);
$t['tocsv']['checked'] = $tocsv_checked;
$t['tocsv']['sep'] = stripslashes($tocsv_sep);
$t['tocsv']['filepath'] = stripslashes($tocsv_filepath);
$t['tocsv']['enclosure'] = stripslashes($tocsv_enclosure);
if ($form_procs) {
$hp=new parameters($form_procs,'procs');
$t['envt']=$hp->make_serialized_parameters_params();
} else if ($form_procs_remote) {
$id = $form_procs_remote;
$pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials);
if ($pmb_procedure_server_address && (count($pmb_procedure_server_credentials_exploded) == 2)) {
$aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1]));
$procedure = $aremote_procedure_client->get_proc($id,"AP");
if (!$procedure['error_message']) {
$the_procedure = $procedure['procedure'];
if ($the_procedure) {
$sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs";
pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
$sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '".pmb_mysql_escape_string($the_procedure->name)."', '".pmb_mysql_escape_string($the_procedure->sql)."', '".pmb_mysql_escape_string($the_procedure->comment)."', '', '".pmb_mysql_escape_string($the_procedure->params)."', 0)";
pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error());
$idproc = pmb_mysql_insert_id($dbh);
$hp=new parameters($idproc,"remote_proc");
$t['envt']=$hp->make_serialized_parameters_params();
}
}
}
}
return serialize($t);
}
function unserialize_task_params() {
$params = $this->get_task_params();
return $params;
}
}