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[ |
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< |
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<= |
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[ |
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< |
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, |
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) { |