Subversion Repositories wimsdev

Rev

Rev 16130 | Rev 16749 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 16130 Rev 16696
Line 507... Line 507...
507
  if(gettrycheck(score_class, score_user, score_sheet, score_exo)==1)
507
  if(gettrycheck(score_class, score_user, score_sheet, score_exo)==1)
508
    ovlstrcpy(p,"yes");
508
    ovlstrcpy(p,"yes");
509
  else ovlstrcpy(p,"no");
509
  else ovlstrcpy(p,"no");
510
}
510
}
511
 
511
 
512
double exam_scoredata[MAX_EXOS];
512
double exam_scoredata[MAX_EXAMS];
513
 
513
 
514
/* get current exam score */
514
/* get current exam score */
515
void exam_currscore(int esh)
515
void exam_currscore(int esh)
516
{
516
{
517
  char *p, *bf, pb[MAX_FNAME+1];
517
  char *p, *bf, pb[MAX_FNAME+1];
518
  char *s, *p1, *p2, *e1, *e2;
518
  char *s, *p1, *p2, *e1, *e2;
519
  int i;
519
  int i;
520
  for(i=0;i<MAX_EXOS;i++) exam_scoredata[i]=-1000;
520
  for(i=0;i<MAX_EXAMS;i++) exam_scoredata[i]=-1000;
521
  /* session_prefix is not yet defined here */
521
  /* session_prefix is not yet defined here */
522
  s=getvar("wims_session"); if(s==NULL || *s==0) return;
522
  s=getvar("wims_session"); if(s==NULL || *s==0) return;
523
  mystrncpy(pb,s,sizeof(pb));
523
  mystrncpy(pb,s,sizeof(pb));
524
  p=strchr(pb,'_'); if(p!=NULL) *p=0;
524
  p=strchr(pb,'_'); if(p!=NULL) *p=0;
525
  bf=readfile(mkfname(NULL,"%s/%s/examscore.%d",session_dir,pb,esh),NULL,WORKFILE_LIMIT);
525
  bf=readfile(mkfname(NULL,"%s/%s/examscore.%d",session_dir,pb,esh),NULL,WORKFILE_LIMIT);
Line 530... Line 530...
530
    p1=find_word_start(find_word_end(find_word_start(p1)));
530
    p1=find_word_start(find_word_end(find_word_start(p1)));
531
    e1=find_word_end(p1); if(*e1) *e1++=0;
531
    e1=find_word_end(p1); if(*e1) *e1++=0;
532
    e1=find_word_start(e1); e2=find_word_start(find_word_end(e1));
532
    e1=find_word_start(e1); e2=find_word_start(find_word_end(e1));
533
    *find_word_end(e1)=0;
533
    *find_word_end(e1)=0;
534
    i=atoi(p1);
534
    i=atoi(p1);
535
    if(i>=1 && i<=MAX_EXOS &&
535
    if(i>=1 && i<=MAX_EXAMS &&
536
       exam_scoredata[i-1]==-1000 && strcmp(e1,"score")==0) {
536
       exam_scoredata[i-1]==-1000 && strcmp(e1,"score")==0) {
537
      *find_word_end(e2)=0;
537
      *find_word_end(e2)=0;
538
      exam_scoredata[i-1]=atof(e2);
538
      exam_scoredata[i-1]=atof(e2);
539
    }
539
    }
540
  }
540
  }
Line 631... Line 631...
631
  if(myisdigit(*++s)) return 0; else return 1;
631
  if(myisdigit(*++s)) return 0; else return 1;
632
}
632
}
633
 
633
 
634
int exam_depcheck(char *deps, int exam)
634
int exam_depcheck(char *deps, int exam)
635
{
635
{
636
  static struct scoreresult esc[MAX_EXOS];
636
  static struct scoreresult esc[MAX_EXAMS];
637
  int i;
637
  int i;
638
  exam_currscore(exam);
638
  exam_currscore(exam);
639
  for(i=0;i<MAX_EXOS;i++) {
639
  for(i=0;i<MAX_EXAMS;i++) {
640
    esc[i].require=esc[i].mean=10;
640
    esc[i].require=esc[i].mean=10;
641
    if(exam_scoredata[i]==-1000) esc[i].score=0;
641
    if(exam_scoredata[i]==-1000) esc[i].score=0;
642
    else esc[i].score=exam_scoredata[i];
642
    else esc[i].score=exam_scoredata[i];
643
  }
643
  }
644
  return _depcheck(deps,esc,MAX_EXOS);
644
  return _depcheck(deps,esc,MAX_EXAMS);
645
}
645
}
646
 
646
 
647
/* public sheet gives she=0 */
647
/* public sheet gives she=0 */
648
/* return 1 if score is no more taken in account because of exotrymax */
648
/* return 1 if score is no more taken in account because of exotrymax */
649
int gettrycheck(char *classe, char *user, int she, int exo) {
649
int gettrycheck(char *classe, char *user, int she, int exo) {