예제 #1
0
	// Si cet élève a été évalué...
	if(isset($tab_eval[$eleve_id]))
	{
		$tab_eleve[$key]['nb_items'] = 0;
		// Pour chaque matiere...
		foreach($tab_matiere as $matiere_id => $matiere_nom)
		{
			// Si cet élève a été évalué dans cette matière...
			if(isset($tab_eval[$eleve_id][$matiere_id]))
			{
				// Pour chaque item...
				foreach($tab_eval[$eleve_id][$matiere_id] as $item_id => $tab_devoirs)
				{
					extract($tab_item[$item_id][0]);	// $item_ref $item_nom $item_coef $item_socle $item_lien $calcul_methode $calcul_limite
					// calcul du bilan de l'item
					$tab_score_eleve_item[$eleve_id][$matiere_id][$item_id] = calculer_score($tab_devoirs,$calcul_methode,$calcul_limite);
					$tab_score_item_eleve[$item_id][$eleve_id] = $tab_score_eleve_item[$eleve_id][$matiere_id][$item_id];
				}
				// calcul des bilans des scores
				$tableau_score_filtre = array_filter($tab_score_eleve_item[$eleve_id][$matiere_id],'non_nul');
				$nb_scores = count( $tableau_score_filtre );
				// la moyenne peut être pondérée par des coefficients
				$somme_scores_ponderes = 0;
				$somme_coefs = 0;
				if($nb_scores)
				{
					foreach($tableau_score_filtre as $item_id => $item_score)
					{
						$somme_scores_ponderes += $item_score*$tab_item[$item_id][0]['item_coef'];
						$somme_coefs += $tab_item[$item_id][0]['item_coef'];
					}
예제 #2
0
*/
// Pour chaque élève...
if (empty($is_appreciation_groupe)) {
    $forcer_profil_sigle = $make_officiel ? 'TUT' : NULL;
    $forcer_profil_type = $make_officiel ? 'parent' : NULL;
    $afficher_score = test_user_droit_specifique($_SESSION['DROIT_VOIR_SCORE_BILAN'], NULL, 0, $forcer_profil_sigle, $forcer_profil_type);
    foreach ($tab_eleve_infos as $eleve_id => $tab_eleve) {
        // Si cet élève a été évalué...
        if (isset($tab_eval[$eleve_id])) {
            // Pour chaque item on calcule son score bilan, et on mémorise les infos pour le détail HTML
            foreach ($tab_eval[$eleve_id] as $item_id => $tab_devoirs) {
                // le score bilan
                extract($tab_item[$item_id][0]);
                // $item_ref $item_nom $item_coef $item_cart $item_socle $item_lien $matiere_id $calcul_methode $calcul_limite $calcul_retroactif $synthese_ref
                $matiere_nb_demandes = $tab_matiere[$matiere_id]['matiere_nb_demandes'];
                $score = calculer_score($tab_devoirs, $calcul_methode, $calcul_limite);
                $tab_score_eleve_item[$eleve_id][$matiere_id][$synthese_ref][$item_id] = $score;
                // le détail HTML
                if ($make_html) {
                    if ($score !== FALSE) {
                        $indice = test_A($score) ? 'A' : (test_NA($score) ? 'NA' : 'VA');
                        if ($aff_coef) {
                            $texte_coef = '[' . $item_coef . '] ';
                        }
                        if ($aff_socle) {
                            $texte_socle = $item_socle ? '[S] ' : '[–] ';
                        }
                        if ($aff_lien) {
                            $texte_lien_avant = $item_lien ? '<a target="_blank" href="' . html($item_lien) . '">' : '';
                            $texte_lien_apres = $item_lien ? '</a>' : '';
                        }
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Actualiser un score
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='actualiser_score') && $demande_id && $item_id && ($score>-2) )
{
  $tab_devoirs = array();
  $DB_TAB = DB_STRUCTURE_DEMANDE::DB_lister_result_eleve_item( $_SESSION['USER_ID'] , $item_id );
  foreach($DB_TAB as $DB_ROW)
  {
    $tab_devoirs[] = array('note'=>$DB_ROW['note']);
  }
  $score_new = (count($tab_devoirs)) ? calculer_score($tab_devoirs,$DB_ROW['calcul_methode'],$DB_ROW['calcul_limite']) : FALSE ;
  if( ( ($score==-1) && ($score_new!==FALSE) ) || ( ($score>-1) && ($score_new!==$score) ) )
  {
    // maj score
    $score_new_bdd = ($score_new!=-1) ? $score_new : NULL ;
    DB_STRUCTURE_DEMANDE::DB_modifier_demande_score( $demande_id , $score_new_bdd );
  }
  $score_retour = str_replace( '</td>' , ' <q class="actualiser" title="Actualiser le score (enregistré lors de la demande)."></q></td>' , Html::td_score( $score_new , 'score' /*methode_tri*/ , '' /*pourcent*/ ) );
  exit($score_retour);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');
예제 #4
0
 // Du coup, on choisit de récupérer les notes et de calculer les scores pour tout le monde.
 $tab_devoirs = array();
 $tab_scores = array();
 $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_result_eleve_items($eleve_id, $liste_item_id, $_SESSION['USER_PROFIL_TYPE']);
 foreach ($DB_TAB as $DB_ROW) {
     $tab_devoirs[$DB_ROW['item_id']][] = array('note' => $DB_ROW['note']);
 }
 // préparer les lignes
 $tab_affich = array();
 foreach ($tab_liste_item as $item_id) {
     $DB_ROW = $DB_TAB_COMP[$item_id][0];
     $item_ref = $DB_ROW['item_ref'];
     $texte_socle = $DB_ROW['entree_id'] ? '[S] ' : '[–] ';
     $texte_lien_avant = $DB_ROW['item_lien'] ? '<a target="_blank" href="' . html($DB_ROW['item_lien']) . '">' : '';
     $texte_lien_apres = $DB_ROW['item_lien'] ? '</a>' : '';
     $tab_scores[$item_id] = isset($tab_devoirs[$item_id]) ? calculer_score($tab_devoirs[$item_id], $DB_ROW['referentiel_calcul_methode'], $DB_ROW['referentiel_calcul_limite']) : FALSE;
     if ($_SESSION['USER_PROFIL_TYPE'] != 'eleve') {
         $texte_demande_eval = '';
     } elseif (!$DB_ROW['matiere_nb_demandes']) {
         $texte_demande_eval = '<q class="demander_non" title="Pas de demande autorisée pour les items de cette matière."></q>';
     } elseif (!$DB_ROW['item_cart']) {
         $texte_demande_eval = '<q class="demander_non" title="Pas de demande autorisée pour cet item précis."></q>';
     } else {
         $texte_demande_eval = '<q class="demander_add" id="demande_' . $DB_ROW['matiere_id'] . '_' . $item_id . '_' . $tab_scores[$item_id] . '" title="Ajouter aux demandes d\'évaluations."></q>';
     }
     $tab_affich[$item_id] = '<td>' . html($item_ref) . '</td><td>' . $texte_socle . $texte_lien_avant . html($DB_ROW['item_nom']) . $texte_lien_apres . $texte_demande_eval . '</td>';
 }
 // récupérer les saisies et les ajouter
 $tab_notes = array();
 $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_saisies_devoir_eleve($devoir_id, $eleve_id, $_SESSION['USER_PROFIL_TYPE'], FALSE);
 foreach ($DB_TAB as $DB_ROW) {
// C'est parti !!!
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$max_value = ($conversion_sur_20) ? 20 : 100 ;
if(count($tab_date))
{
  // Pour chaque évaluation...
  foreach($tab_date[$eleve_id] as $date_js => $tab_items)
  {
    $tab_rubrique_todo_moyenne = array();
    // On (re)-calcule les scores des items concernés
    foreach($tab_items as $item_id => $nb_evals)
    {
      extract($tab_item[$item_id][0]);  // $item_coef $calcul_methode $calcul_limite $calcul_retroactif
      $rubrique_id = $tab_rubrique_for_item[$item_id];
      $tab_score_eleve_item[$eleve_id][$rubrique_id][$item_id] = calculer_score(array_slice($tab_eval[$eleve_id][$item_id],0,$nb_evals),$calcul_methode,$calcul_limite);
      $tab_rubrique_todo_moyenne[] = $rubrique_id;
    }
    // On (re)-calcule les moyennes des matières concernées
    foreach($tab_rubrique_todo_moyenne as $rubrique_id)
    {
      // calcul des bilans des scores
      $tableau_score_filtre = array_filter($tab_score_eleve_item[$eleve_id][$rubrique_id],'non_vide');
      $nb_scores = count( $tableau_score_filtre );
      // la moyenne peut être pondérée par des coefficients
      $somme_scores_ponderes = 0;
      $somme_coefs = 0;
      if($nb_scores)
      {
        foreach($tableau_score_filtre as $item_id => $item_score)
        {
예제 #6
0
	$tab_devoirs = array();
	$DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_result_eleve_items($eleve_id,$liste_item_id);
	foreach($DB_TAB as $DB_ROW)
	{
		$tab_devoirs[$DB_ROW['item_id']][] = array('note'=>$DB_ROW['note']);
	}
	// préparer les lignes
	$tab_affich  = array();
	foreach($tab_liste_item as $item_id)
	{
		$DB_ROW = $DB_TAB_COMP[$item_id][0];
		$item_ref = $DB_ROW['item_ref'];
		$texte_socle = ($DB_ROW['entree_id']) ? '[S] ' : '[–] ';
		$texte_lien_avant = ($DB_ROW['item_lien']) ? '<a class="lien_ext" href="'.html($DB_ROW['item_lien']).'">' : '';
		$texte_lien_apres = ($DB_ROW['item_lien']) ? '</a>' : '';
		$score = (isset($tab_devoirs[$item_id])) ? calculer_score($tab_devoirs[$item_id],$DB_ROW['referentiel_calcul_methode'],$DB_ROW['referentiel_calcul_limite']) : false ;
		$texte_demande_eval = ($_SESSION['USER_PROFIL']!='eleve') ? '' : ( ($DB_ROW['item_cart']) ? '<q class="demander_add" id="demande_'.$DB_ROW['matiere_id'].'_'.$item_id.'_'.$score.'" title="Ajouter aux demandes d\'évaluations."></q>' : '<q class="demander_non" title="Demande interdite."></q>' ) ;
		$tab_affich[$item_id] = '<tr><td>'.html($item_ref).'</td><td>'.$texte_socle.$texte_lien_avant.html($DB_ROW['item_nom']).$texte_lien_apres.$texte_demande_eval.'</td><td class="hc">-</td>'.affich_score_html($score,$methode_tri='score',$pourcent='').'</tr>';
	}
	// récupérer les saisies et les ajouter
	$DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_saisies_devoir_eleve( $devoir_id , $eleve_id , FALSE /*with_REQ*/ );
	foreach($DB_TAB as $DB_ROW)
	{
		// Test pour éviter les pbs des élèves changés de groupes ou des items modifiés en cours de route
		if(isset($tab_affich[$DB_ROW['item_id']]))
		{
			$tab_affich[$DB_ROW['item_id']] = str_replace('>-<','>'.affich_note_html($DB_ROW['saisie_note'],'','',$tri=true).'<',$tab_affich[$DB_ROW['item_id']]);
		}
	}
	exit(implode('',$tab_affich));
}
예제 #7
0
/**
 * Pour un bulletin d'une période / d'un élève et d'une matière donné, calculer et forcer la mise à jour d'une moyenne (effacée ou figée).
 * 
 * @param int    $periode_id
 * @param int    $classe_id
 * @param int    $eleve_id
 * @param array  $matiere_id
 * @param string $retroactif   oui|non|auto
 * @return float   la moyenne en question (FALSE si pb)
 */
function calculer_et_enregistrer_moyenne_precise_bulletin($periode_id, $classe_id, $eleve_id, $matiere_id, $retroactif)
{
    // Dates période
    $DB_ROW = DB_STRUCTURE_COMMUN::DB_recuperer_dates_periode($classe_id, $periode_id);
    if (empty($DB_ROW)) {
        return FALSE;
    }
    // Récupération de la liste des items travaillés
    $date_mysql_debut = $DB_ROW['jointure_date_debut'];
    $date_mysql_fin = $DB_ROW['jointure_date_fin'];
    list($tab_item, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_items_travailles($eleve_id, $matiere_id, $date_mysql_debut, $date_mysql_fin);
    $item_nb = count($tab_item);
    if (!$item_nb) {
        return FALSE;
    }
    $tab_liste_item = array_keys($tab_item);
    $liste_item_id = implode(',', $tab_liste_item);
    // Récupération de la liste des résultats des évaluations associées à ces items donnés d'une ou plusieurs matieres, pour les élèves selectionnés, sur la période sélectionnée
    $date_mysql_debut_annee_scolaire = jour_debut_annee_scolaire('mysql');
    if ($retroactif == 'non') {
        $date_mysql_start = $date_mysql_debut;
    } elseif ($retroactif == 'annuel') {
        $date_mysql_start = $date_mysql_debut_annee_scolaire;
    } else {
        $date_mysql_start = FALSE;
    }
    // 'oui' | 'auto' ; en 'auto' il faut faire le tri après
    $DB_TAB = DB_STRUCTURE_BILAN::DB_lister_result_eleves_items($eleve_id, $liste_item_id, -1, $date_mysql_start, $date_mysql_fin, $_SESSION['USER_PROFIL_TYPE'], FALSE);
    if (empty($DB_TAB)) {
        return FALSE;
    }
    foreach ($DB_TAB as $DB_ROW) {
        $retro_item = $tab_item[$DB_ROW['item_id']][0]['calcul_retroactif'];
        if ($retroactif != 'auto' || $retro_item == 'oui' || $retro_item == 'non' && $DB_ROW['date'] >= $date_mysql_debut || $retro_item == 'annuel' && $DB_ROW['date'] >= $date_mysql_debut_annee_scolaire) {
            $tab_eval[$DB_ROW['item_id']][] = array('note' => $DB_ROW['note']);
        }
    }
    if (empty($tab_eval)) {
        return FALSE;
    }
    // On calcule la moyenne voulue
    $tab_score = array();
    // Pour chaque item...
    foreach ($tab_eval as $item_id => $tab_devoirs) {
        extract($tab_item[$item_id][0]);
        // $item_ref $item_nom $item_coef $item_socle $item_lien $calcul_methode $calcul_limite
        // calcul du bilan de l'item
        $tab_score[$item_id] = calculer_score($tab_devoirs, $calcul_methode, $calcul_limite);
    }
    // calcul des bilans des scores
    $tableau_score_filtre = array_filter($tab_score, 'non_vide');
    $nb_scores = count($tableau_score_filtre);
    // la moyenne peut être pondérée par des coefficients
    $somme_scores_ponderes = 0;
    $somme_coefs = 0;
    if ($nb_scores) {
        foreach ($tableau_score_filtre as $item_id => $item_score) {
            $somme_scores_ponderes += $item_score * $tab_item[$item_id][0]['item_coef'];
            $somme_coefs += $tab_item[$item_id][0]['item_coef'];
        }
    }
    // et voilà la moyenne des pourcentages d'acquisition
    if (!$somme_coefs) {
        return FALSE;
    }
    $moyennes_calculee = round($somme_scores_ponderes / $somme_coefs, 0) / 5;
    DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie('bulletin', $periode_id, $eleve_id, $matiere_id, 0, 'eleve', $moyennes_calculee, '');
    return $moyennes_calculee;
}