id_tache = $id_tache;
}
//formulaire spécifique au type de tâche
function show_form ($param='') {
//paramètres pré-enregistré
$value_param = array();
if ($param['form_jeu_sauv']) {
foreach ($param['form_jeu_sauv'] as $jeu_sauvegarde) {
$value_param[$jeu_sauvegarde] = $jeu_sauvegarde;
}
}
$requete = "select sauv_sauvegarde_id, sauv_sauvegarde_nom from sauv_sauvegardes";
$result = mysql_query($requete);
$nb_rows = mysql_num_rows($result);
//taille du selecteur
if ($nb_rows < 3) $nb=3;
else if ($nb_rows > 10) $nb=10;
else $nb = $nb_rows;
//Choix du ou des jeux de sauvegardes
$form_task .= "
";
$form_task .= "
";
return $form_task;
}
function task_execution() {
global $dbh, $msg, $PMBusername;
if (SESSrights & SAUV_AUTH) {
$parameters = $this->unserialize_task_params();
// récupérer les jeux de sauvegarde
$this->report[] = "".$this->msg["sauv_sets"]." |
";
if (method_exists($this->proxy, 'pmbesBackup_listSetBackup')) {
$result = $this->proxy->pmbesBackup_listSetBackup();
//lister les sauvegardes sélectionnées en vérifiant qu'elles soient toujours présentes dans PMB
if ($result) {
foreach ($result as $aresult) {
foreach ($parameters["form_jeu_sauv"] as $id_lst) {
//récupération des sauvegardes sélectionnées
if ($aresult["sauv_sauvegarde_id"] == $id_lst) {
$t=array();
$t["id_sauv"] = $id_lst;
$t["nom_sauv"] = $aresult["sauv_sauvegarde_nom"];
$this->liste_sauvegarde[] = $t;
}
}
}
}
if ($this->liste_sauvegarde) {
$percent = 0;
$p_value = (int) 100/count($this->liste_sauvegarde);
$this->indice_tableau = 0;
foreach($this->liste_sauvegarde as $sauvegarde) {
$this->listen_commande(array(&$this, 'traite_commande')); //fonction a rappeller (traite commande)
if($this->statut == WAITING) {
$this->send_command(RUNNING);
}
if($this->statut == RUNNING) {
//lancement de la sauvegarde
$this->report[] = "".$this->msg["sauv_launch"]." : ".$sauvegarde["nom_sauv"]." |
";
if (method_exists($this->proxy, 'pmbesBackup_launchBackup')) {
$result_save = $this->proxy->pmbesBackup_launchBackup($sauvegarde["id_sauv"]);
$this->report[] = $result_save["report"];
$this->log_ids[] = $result_save["logid"];
//mise à jour de la progression
$percent += $p_value;
$this->update_progression($percent);
$this->indice_tableau++;
} else {
$this->report[] = sprintf($msg["planificateur_function_rights"],"launchBackup","pmbesBackup",$PMBusername);
}
}
}
} else {
$this->report[] = "".$this->msg["sauv_unknown_sets"]." |
";
}
} else {
$this->report[] = "".sprintf($msg["planificateur_function_rights"],"listSetBackup","pmbesBackup",$PMBusername)." |
";
}
} else {
$this->report[] = "".sprintf($msg["planificateur_rights_bad_user_rights"], $PMBusername)." |
";
}
}
function traite_commande($cmd,$message) {
switch ($cmd) {
case RESUME :
$this->send_command(WAITING);
break;
case SUSPEND :
$this->suspend_backup();
break;
case STOP :
$this->stop_backup();
$this->finalize();
die();
break;
case ABORT :
$this->abort_backup();
$this->finalize();
die();
break;
case FAIL :
$this->stop_backup();
$this->finalize();
die();
break;
}
}
function make_serialized_task_params() {
global $form_jeu_sauv;
$t = parent::make_serialized_task_params();
if ($form_jeu_sauv) {
foreach ($form_jeu_sauv as $jeu_sauvegarde) {
$t["form_jeu_sauv"][$jeu_sauvegarde]=stripslashes($jeu_sauvegarde);
}
}
return serialize($t);
}
function unserialize_task_params() {
$params = $this->get_task_params();
return $params;
}
function suspend_backup() {
while ($this->statut == SUSPENDED) {
sleep(20);
$this->listen_commande(array(&$this,"traite_commande"));
}
}
/*Récupère les jeux de sauvegarde non traitées*/
function stop_backup() {
$this->report[] = "".$this->msg["backup_stopped"]." |
";
$chaine = "".$this->msg["backup_no_proceed"]." : ";
for($i=$this->indice_tableau; $i <= count($this->liste_sauvegarde); $i++) {
$chaine .= $this->liste_sauvegarde[$i]["nom_sauv"]." ";
}
$chaine .= " |
";
$this->report[] = $chaine;
}
/*Récupère les jeux de sauvegarde traitées*/
function abort_backup() {
global $msg;
$this->report[] = "".$this->msg["backup_abort"]." |
";
if(method_exists($this->proxy, "pmbesBackup_deleteSauvPerformed")) {
$chaine .= "";
for($i=0; $i < $this->indice_tableau; $i++) {
if ($this->log_ids[$i] != "") {
$succeed = $this->proxy->pmbesBackup_deleteSauvPerformed($this->log_ids[$i]);
if ($succeed) {
$chaine .= $this->msg["backup_delete"]." : ".$this->liste_sauvegarde[$i]["nom_sauv"]." ";
} else {
$chaine .= $this->msg["backup_delete_error"]." : ".$this->liste_sauvegarde[$i]["nom_sauv"]." ";;
}
}
}
$chaine .= " |
";
$this->report[] = $chaine;
} else {
$this->report[] = "".sprintf($msg["planificateur_function_rights"],"deleteSauvPerformed","pmbesBackup")." |
";
}
}
}