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").""; } } }