$grpSelect = ''; } else { $grpSelect = "and grp_num='{$judge_grp_num}' "; } $sql = "select afko,pt.grp_num,coalesce('g'||pt.grp_num,pt.grp_name) as grp_name,\n" . "pg.snummer as mail,rtrim(role) as role, pg.snummer,\n" . "achternaam||coalesce(', '||voorvoegsel,'') as achternaam,roepnaam,\n" . "trim(sclass) as sclass, tutor, 'role'||sr.rolenum as checkclass, 0 as lo\n" . "from\n" . "student join prj_grp pg using(snummer)\n" . "join student_class using (class_id)\n" . " join prj_tutor pt on(pg.prjtg_id=pt.prjtg_id)\n" . " join tutor t on(userid=tutor_id)\n" . " join prj_milestone pm on(pt.prjm_id=pm.prjm_id)\n" . " join project p on(p.prj_id=pm.prj_id) \n" . " left join student_role sr on(pt.prjm_id=sr.prjm_id and sr.snummer=pg.snummer)\n" . " left join project_roles pr on (pm.prj_id=pr.prj_id and pr.rolenum=sr.rolenum)\n" . " left join grp_alias ga on(pg.prjtg_id=ga.prjtg_id)\n" . " where pt.prjm_id={$prjm_id} {$grpSelect} and pm.prj_id>1"; $sql2 = "\n union\n" . "select apt.afko,grp_num,'tutor' as grp_name,\n" . "apt.tutor_id as mail, 'TUTOR' as role, apt.tutor_id as snummer,ts.achternaam||coalesce(', '||ts.voorvoegsel,'') as achternaam,ts.roepnaam,\n" . "'TUTOR' as sclass, tutor, 'role'||'999' as checkclass,1 as lo \n" . "from all_prj_tutor apt join student ts on(apt.tutor_id=ts.snummer) left join grp_alias gat using(prjtg_id) \n" . "where apt.prjm_id ={$prjm_id} {$grpSelect} and apt.prj_id>1\n"; $sql .= $sql2 . " order by grp_num,lo,achternaam,roepnaam"; // echo $sql; $resultSet = $dbConn->Execute($sql); $rb = new RainBow(); $bg = $rb->getCurrent(); $og = $resultSet->fields['grp_num']; while (!$resultSet->EOF) { extract($resultSet->fields); if ($og != $grp_num) { $bg = $rb->getNext(); $og = $grp_num; } $checked = in_array($snummer, $mailto) ? 'checked' : ''; $result .= "\n <tr style='background:{$bg}'><td align='right'>{$counter}</td>\n <td align='center'><input type='checkbox' name='mailto[]' value='{$snummer}' class='{$checkclass} {$sclass}' {$checked}/></td>\n <td>{$role}</td>\n <td>{$snummer}</td><td>{$achternaam}</td><td>{$roepnaam}</td><td>{$sclass}</td>\n <td class='num'>{$grp_num}</td><td>{$grp_name}</td><td>{$tutor}</td>\n </tr> "; $resultSet->moveNext(); $counter++; } return $result . "</table>"; } $pp['eTable'] = emailTable($dbConn, $prjm_id, $isTutor, $mailto); $pp['rTable'] = roleTable($dbConn, $prjm_id); $pp['classTable'] = classTable($dbConn, $prjm_id); $pp['selWidget'] = $prjSel->getWidget(); $page->addHtmlFragment('templates/groupemail.php', $pp); $page->show();
$submit_button = ''; } $resultSet = $dbConn->execute("select count(*) as participants from prj_grp join prj_tutor using(prjtg_id) where prjm_id={$prjm_id}"); extract($resultSet->fields); // generating output $page = new PageContainer(); $page->setTitle('Select participating student_class'); $page_opening = "Select the student_class of the participating students"; $nav = new Navigation($tutor_navtable, basename($PHP_SELF), $page_opening); $page->addBodyComponent($nav); $resultSet = $dbConn->Execute("select afko,description from project where prj_id={$prj_id}"); extract($resultSet->fields); $form1Form = new HtmlContainer("<div id='projectsel'>"); $prjSel->setJoin(" (select distinct prjm_id from prj_milestone natural join project where owner_id={$peer_id}) p_mil using (prjm_id)"); //$dbConn->log($prjSel->getQuery()); $form1Form->addText($prjSel->getWidget()); $form2Form = new HtmlContainer("<form method='post' name='group_def' action='{$PHP_SELF}'>"); //$form2Table = new HtmlContainer( "<table border='3' style='border-collapse:3d; padding:2pt;'" . // " align='left' rules='groups' frame='box'" . // "summary='class selection' id='form2table'>" ); $form2Table = new HtmlContainer("<div id='tabs'>"); //$form2Form->addText( "Legend:class name [class size]<br/>\n" ); $sql = "select distinct rtrim(student_class.sclass) as sclass,class_id,sort1,sort2,sort_order,\n" . "rtrim(faculty.faculty_short) as opl_afko, student_count,rtrim(faculty.faculty_short) as faculty_short,\n" . "trim(cluster_name) as cluster_name,class_cluster \n" . "from student_class\n" . " join faculty using(faculty_id)\n" . "join class_cluster using(class_cluster)\n" . "join current_student_class using (class_id) join class_size using(class_id)\n " . "where sort2 < 9 and sclass not like 'UIT%' \n" . "order by sort_order,faculty_short desc,cluster_name,sort1,sort2,sclass asc"; $resultSet = $dbConn->Execute($sql); if ($resultSet === false) { die("<br>Cannot get groups with \"" . $sql . '", cause ' . $dbConn->ErrorMsg() . "<br>"); } //ob_start(); $opl_afko = ''; $colcount = 0; $curriculum = '';
$dbConn->log($sql); formMailer($dbConn, $sql, $formsubject, $mailbody, $sender, $sender_name); } $page_opening = "These students are overdue with filling in their peer assessment forms."; $nav = new Navigation(array(), basename($PHP_SELF), $page_opening); $page = new PageContainer(); $page->addBodyComponent($nav); ob_end_clean(); if (hasCap(CAP_SYSTEM)) { $tutor_select = ""; } else { $tutor_select = " and (tutor='{$tutor}' or tutor_owner='{$tutor}') "; } ob_start(); $prjSel->setWhere("assessment_due <now() and pm.prj_milestone_open=true"); $prj_id_selector = $prjSel->getWidget(); $sqlhead = "select afko as code,pm.milestone as milstn,pt.grp_num,\n" . "s.snummer as snmailto,s.snummer,\n" . "achternaam||coalesce(', '||voorvoegsel,'') as achternaam\n" . ",roepnaam, s.snummer,pm.assessment_due as due,tutor\n"; $sqllate = "( select distinct snummer from prj_grp \n" . "natural join prj_tutor pt \n" . "join tutor t on(userid=tutor_id)\n" . "natural join prj_milestone \n" . "where written =false \n" . "and prj_milestone_open=true \n" . "and prj_grp_open=true \n" . "and assessment_due < now()::date \n" . "and prjm_id={$prjm_id})"; $sqltail = " \n" . " join milestone_open_past_due mopd on(jnr.prjtg_id=mopd.prjtg_id)" . " join prj_grp_open pgo on(pgo.prjtg_id=jnr.prjtg_id)\n" . " join student s on (jnr.snummer=s.snummer) \n" . " join prj_tutor pt on(jnr.prjtg_id=pt.prjtg_id)\n" . " join tutor t on(userid=tutor_id)\n" . " join prj_milestone pm on(pt.prjm_id=pm.prjm_id)\n" . " join project p on(p.prj_id=pm.prj_id)\n" . " where pm.prjm_id={$prjm_id}\n"; //$dbConn->log($sql); $latecountsql = "select count(*) as latecount from {$sqllate} foo"; $resultSet = $dbConn->Execute($latecountsql); if ($resultSet === false) { echo "<br>Cannot get latecount with <pre>{$latecountsql}</pre>, cause" . $dbConn->ErrorMsg() . "<br>"; stacktrace(1); die; } $latecount = $resultSet->fields['latecount']; $mailbutton = $latecount > 0 ? "<input type='submit' name='domail' value='Send Mail'/>" : " "; $sql = $sqlhead . " from \n" . "prj_grp pg \n" . "join prj_tutor pt using(prjtg_id)\n" . "join tutor t on (userid=tutor_id)\n" . "join prj_milestone pm using(prjm_id)\n" . "join project p using(prj_id)\n" . "join student s using(snummer)\n" . "where prjm_id={$prjm_id}" . " and snummer in" . $sqllate . "\n" . " order by afko,grp_num,achternaam,roepnaam"; echo "<div>\n";
$resultSet = $dbConn->Execute($sql); if ($resultSet === 0) { $dbConn->log($dbConn->ErrorMsg()); $dbConn->Execute("abort"); } } if (($isTutorOwner || $isGroupTutor) && isset($_REQUEST['bdelete']) && $newsnummer != 0) { // try to insert this snummer into max prj_grp $sql = "delete from prj_grp pg where snummer={$newsnummer} \n" . "and prjtg_id in (select prjtg_id from prj_tutor where prjm_id={$prjm_id})"; $dbConn->Execute($sql); // $dbConn->log($dbConn->ErrorMsg()); } $studentPicker->setPresentQuery("select snummer from prj_grp join prj_tutor using(prjtg_id) where prjm_id={$prjm_id}"); $sql = "select distinct snummer,achternaam,roepnaam,voorvoegsel,pt.grp_num, alias as group,sclass \n" . " from prj_grp pg join prj_tutor pt using(prjtg_id) join student using(snummer) \n" . "join student_class using(class_id)\n" . " left join grp_alias using(prjtg_id)" . " where pt.prjm_id={$prjm_id} \n" . " order by grp_num desc,achternaam,roepnaam"; $rainbow = new RainBow(); $memberTable = getQueryToTableChecked($dbConn, $sql, true, 4, $rainbow, -1, '', ''); pagehead('Add individual student.'); $page_opening = "Add individual student to a project. <span style='font-size:6pt;'>prj_id {$prj_id} milestone {$milestone} </span>"; $nav = new Navigation($tutor_navtable, basename($PHP_SELF), $page_opening); $nav->setInterestMap($tabInterestCount); $nav->show(); $prjSelectWidget = $prjSel->getWidget(); include_once 'templates/addindividual.html'; ?> <!-- db_name=<?php echo $db_name; ?> --> <!-- $Id: addindividual.php 1725 2014-01-16 08:39:59Z hom $ --> </body> </html>
// $dbConn->log($dbConn->ErrorMsg()); } // pagehead('Add project auditor.'); $page_opening = "Add project auditor to a project. prj_id {$prj_id} milestone {$milestone} prjm_id {$prjm_id}"; $nav = new Navigation($tutor_navtable, basename($PHP_SELF), $page_opening); $nav->setInterestMap($tabInterestCount); echo $nav->show(); ?> <div id='navmain' style='padding:1em;'> <p>Add a project auditor to a project /group.</p> <p>Project auditors have the privilege to access the groups resources such as svn and trac. Use case: extra readers of project artifacts without having to add (empty) project groups with these readers as tutor. </p> <?php echo $prjSel->getWidget(); $studentPicker->setPresentQuery("select snummer from project_auditor where prjm_id={$prjm_id}"); $studentPicker->show(); $sql = "select snummer,achternaam,roepnaam,voorvoegsel from student where snummer={$newauditor}"; $resultSet = $dbConn->Execute($sql); extract($resultSet->fields, EXTR_PREFIX_ALL, 'auditor'); if ($newauditor != 0) { ?> <fieldset><legend>Select groups to audit.</legend> <form name='set auditgroups' method='post' action='<?php echo $PHP_SELF; ?> '> <p>Choose groups in project <b><?php echo $afko; ?>
$prjtg_id = getOrNull($_POST, $g, 'prjtg_id'); $youtube_link = getOrNull($_POST, $g, 'youtube_link'); $youtube_icon_url = getOrNull($_POST, $g, 'youtube_icon_url'); if ($prjtg_id != 'null') { $sql .= "insert into grp_alias (prjtg_id,alias,long_name,website,productname,youtube_link,youtube_icon_url)\n" . "\nvalues ({$prjtg_id},{$alias},{$long_name},{$website},{$productname},{$youtube_link},{$youtube_icon_url});\n"; } } $sql .= "commit;\n"; // "<pre>$sql</pre>"; $resultSet = $dbConn->Execute($sql); if ($resultSet === false) { die("<br>Cannot set grop details with <pre>" . $sql . "</pre> reason " . $dbConn->ErrorMsg() . "<br>"); } } $prjSel = new PrjMilestoneSelector2($dbConn, $peer_id, $prjm_id); $pSel = $prjSel->getWidget(); extract($prjSel->getSelectedData()); $_SESSION['prj_id'] = $prj_id; $_SESSION['prjm_id'] = $prjm_id; $_SESSION['milestone'] = $milestone; $doctype_set = array(); $sql = "select pt.grp_num,ga.* from prj_tutor pt left join grp_alias ga using(prjtg_id) where prjm_id={$prjm_id} order by grp_num"; $inputColumns = array('1' => array('type' => 'T', 'size' => '40'), '2' => array('type' => 'T', 'size' => '15'), '3' => array('type' => 'T', 'size' => '64'), '4' => array('type' => 'N', 'size' => '64'), '5' => array('type' => 'H', 'size' => '0'), '6' => array('type' => 'T', 'size' => '64'), '7' => array('type' => 'T', 'size' => '64')); $table = getQueryToTableChecked2($dbConn, $sql, false, -1, new RainBow(0x46b4b4, 64, 32, 0), 'document[]', $doctype_set, $inputColumns); //$table = simpleTableString($dbConn, $sql, "<table id='myTable' class='tablesorter' summary='your requested data'" // . " style='empty-cells:show;border-collapse:collapse' border='1'>"); $scripts = '<script type="text/javascript" src="js/jquery.js"></script> <script src="js/jquery.tablesorter.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#myTable").tablesorter({widgets: [\'zebra\']});
$groups[$grp_name][] = $snummer; $resultSet->moveNext(); } } $pp['grpLists'] = ''; $all = array(); foreach ($groups as $grp => $list) { //echo implode(' ',$list); if (isset($list) && is_array($list)) { $grpStr = join(',', $list); $all[] = join(',', $list); } else { $grpStr = ''; } $pp['grpLists'] .= "<span>{$grp}={$grpStr}</span><br/>\n"; } $allMembers = join(',', $all); $pp['grpLists'] .= "<span>all={$allMembers}</span><br/>\n"; $pp['afko_lc'] = strtolower($afko); $prjSel->setSubmitOnChange(true); $pp['prj_id_selector'] = $prjSel->getWidget(); $page_opening = "Subversion repositories for project {$afko}: {$description} (prj_id: {$prj_id}, milestone:{$milestone})"; $nav = new Navigation($tutor_navtable, basename($PHP_SELF), $page_opening); $nav->setInterestMap($tabInterestCount); $page->addBodyComponent($nav); $page->addHtmlFragment('templates/subversionrepostop.html', $pp); if (isset($pp['fileeditor'])) { $pp['fileeditor']->getWidgetForPage($page, $pp); } $page->addHtmlFragment('templates/subversionreposbottom.html', $pp); $page->show();
}); </script> <link rel=\'stylesheet\' type=\'text/css\' href=\'' . SITEROOT . '/style/tablesorterstyle.css\'/> '; pagehead2('groupresult', $scripts); $prj_id_selector = $prjSel->getSelector(); $prj_data = $prjSel->getSelectionDetails(); extract($prjSel->getSelectedData()); $grpList = '<select name="prjtg_id" onchange="submit()">' . "\n"; $grpList .= getOptionList($dbConn, "select distinct grp_num||' ('||tutor||')'||coalesce(': '||alias ,'')" . "||' (#'||prjtg_id||')' as name,\n" . " prjtg_id as value,case when prj_tutor_open=true then 'background:#fee' else 'font-weight:bold;background:#efe' end as style,grp_num\n" . " from all_prj_tutor \n" . " where prjm_id={$prjm_id} order by grp_num ", $prjtg_id); $grpList .= "\n</select>\n"; $page_opening = "Group results for {$afko} \"{$description}\" {$year} prj_id {$prj_id} mil {$milestone} ({$prjm_id})"; $nav = new Navigation($tutor_navtable, basename($PHP_SELF), $page_opening); $nav->setInterestMap($tabInterestCount); $prj_widget = $prjSel->getWidget(); $spreadSheetWidget = $spreadSheetWriter->getWidget(); $remarkList = remarkList($dbConn, $prjtg_id); echo $nav->show(); ?> <div id='navmain' style='padding:1em;'> <?php echo $prj_widget; ?> <?php if ($isTutorOwner) { ?> <fieldset class='noprint'><legend>Completeness and open setting of student groups</legend> <?php echo groupOpenerBarChart2($dbConn, $prjm_id, $isTutorOwner); ?>