} if (count($columns) == 0) { message(lang('no_data_columns_selected')); redirect('admin/' . thisdoc()); } else { $query = "SELECT count(*) as num_matches, " . implode(', ', $columns) . "\n FROM " . table('participants') . "\n GROUP BY " . implode(', ', $columns) . "\n HAVING num_matches>1\n ORDER BY num_matches DESC"; $result = or_query($query); $dupvals = array(); while ($line = pdo_fetch_assoc($result)) { $dupvals[] = $line; } if (check_allow('participants_edit')) { echo javascript__edit_popup(); } $part_statuses = participant_status__get_statuses(); $cols = participant__get_result_table_columns('result_table_search_duplicates'); echo '<TABLE class="or_listtable"><thead>'; echo '<TR style="background: ' . $color['list_header_background'] . '; color: ' . $color['list_header_textcolor'] . ';">'; echo '<TD> </TD>'; echo participant__get_result_table_headcells($cols, false); echo '</TR></thead> <tbody>'; $num_cols = count($cols) + 1; foreach ($dupvals as $dv) { $mvals = array(); $pars = array(); $qclause = array(); foreach ($columns as $c) { $mvals[] = $field_names[$c] . ': ' . $dv[$c]; $pars[':' . $c] = $dv[$c]; $qclause[] = ' ' . $c . ' = :' . $c . ' ';
function email__participant_select($email, $participant = array(), $guess_parts = array()) { $cols = participant__get_result_table_columns('email_participant_guesses_list'); echo '<SELECT name="participant_id"> <OPTION value="0">' . lang('unknown') . '</OPTION>'; if (isset($participant['participant_id'])) { echo '<OPTION value="' . $participant['participant_id'] . '" SELECTED>'; $items = array(); foreach ($cols as $k => $c) { $items[] = $participant[$k]; } echo implode(" ", $items); echo '</OPTION>'; } if (!$email['session_id']) { foreach ($guess_parts as $gp) { if ($gp['participant_id'] != $participant['participant_id']) { echo '<OPTION value="' . $gp['participant_id'] . '">'; $items = array(); foreach ($cols as $k => $c) { $items[] = $gp[$k]; } echo implode(" ", $items); echo '</OPTION>'; } } } if (count($guess_parts) > 0 && $email['session_id']) { $sort = query__load_default_sort('email_participant_guesses_list'); $pars = array(':session_id' => $email['session_id']); $query = "SELECT * from " . table('participants') . "\n WHERE participant_id IN (\n SELECT participant_id FROM " . table('participate_at') . "\n WHERE session_id= :session_id)\n ORDER BY " . $sort; $result = or_query($query, $pars); while ($p = pdo_fetch_assoc($result)) { echo '<OPTION value="' . $p['participant_id'] . '">'; $items = array(); foreach ($cols as $k => $c) { $items[] = $p[$k]; } echo implode(" ", $items); echo '</OPTION>'; } } echo '</SELECT>'; }
function pdfoutput__make_part_list($experiment_id, $session_id = "", $pstatus = "", $focus = "", $sort = "", $file = false, $tlang = "") { global $settings; if ($tlang == "") { global $lang; } else { $lang = load_language($tlang); } $experiment = orsee_db_load_array("experiments", $experiment_id, "experiment_id"); $pstatuses = expregister__get_participation_statuses(); if ($session_id) { $clause = "session_id = '" . $session_id . "'"; $title = lang('registered_subjects'); } elseif (isset($pstatuses[$pstatus])) { $clause = "pstatus_id = '" . $pstatus . "'"; if ($pstatus == 0) { $clause .= " AND session_id != 0"; } $title = lang('subjects_in_participation_status') . ' "' . $pstatuses[$pstatus]['internal_name'] . '"'; } elseif ($focus == 'enroled') { $clause = "session_id != 0"; $title = lang('registered_subjects'); } $cols = participant__get_result_table_columns('session_participants_list_pdf'); if ($session_id) { unset($cols['session_id']); } // load sessions of this experiment $pars = array(':experiment_id' => $experiment_id); $query = "SELECT *\n\t\t\tFROM " . table('sessions') . "\n\t\t\tWHERE experiment_id= :experiment_id\n\t\t\tORDER BY session_start"; $result = or_query($query, $pars); global $thislist_sessions; $thislist_sessions = array(); while ($line = pdo_fetch_assoc($result)) { $thislist_sessions[$line['session_id']] = $line; } // load participant data for this session/experiment $pars = array(':experiment_id' => $experiment_id); $select_query = "SELECT * FROM " . table('participate_at') . ", " . table('participants') . " \n\t\t\t\t\tWHERE " . table('participate_at') . ".experiment_id= :experiment_id\n\t\t\t\t\tAND " . table('participate_at') . ".participant_id=" . table('participants') . ".participant_id\n\t\t\t\t\tAND (" . $clause . ")"; $order = query__get_sort('session_participants_list_pdf', $sort); if (!$order) { $order = table('participants') . ".participant_id"; } $select_query .= " ORDER BY " . $order; // get result $result = or_query($select_query, $pars); $participants = array(); while ($line = pdo_fetch_assoc($result)) { $participants[] = $line; } $result_count = count($participants); // load sessions of this experiment $pars = array(':texperiment_id' => $experiment_id); $squery = "SELECT *\n FROM " . table('sessions') . "\n\t\t\tWHERE experiment_id= :texperiment_id \n ORDER BY session_start"; $result = or_query($squery, $pars); $thislist_sessions = array(); while ($line = pdo_fetch_assoc($result)) { $thislist_sessions[$line['session_id']] = $line; } // reorder by session date if ordered by session id if ($sort == "session_id") { $temp_participants = $participants; $participants = array(); foreach ($thislist_sessions as $sid => $s) { foreach ($temp_participants as $p) { if ($p['session_id'] == $sid) { $participants[] = $p; } } } } unset($temp_participants); // determine table title $table_title = $experiment['experiment_public_name']; if ($session_id) { $table_title .= ', ' . lang('session') . ' ' . str_replace(" ", " ", session__build_name($thislist_sessions[$session_id])); } $table_title .= ' - ' . $title; // determine table headings $table_headings = participant__get_result_table_headcells_pdf($cols); $table_data = array(); $pnr = 0; foreach ($participants as $p) { $pnr++; $p['order_number'] = $pnr; $row = participant__get_result_table_row_pdf($cols, $p); $table_data[] = $row; } // prepare pdf include_once '../tagsets/class.ezpdf.php'; $pdf = new Cezpdf('a4', 'landscape'); $pdf->selectFont('../tagsets/fonts/Times-Roman.afm'); $fontsize = $settings['participant_list_pdf_table_fontsize'] ? $settings['participant_list_pdf_table_fontsize'] : 10; $titlefontsize = $settings['participant_list_pdf_title_fontsize'] ? $settings['participant_list_pdf_title_fontsize'] : 12; $y = $pdf->ezTable($table_data, $table_headings, $table_title, array('gridlines' => 31, 'showHeadings' => 1, 'shaded' => 2, 'shadeCol' => array(1, 1, 1), 'shadeCol2' => array(0.9, 0.9, 0.9), 'fontSize' => $fontsize, 'titleFontSize' => $titlefontsize, 'rowGap' => 1, 'colGap' => 3, 'innerLineThickness' => 0.5, 'outerLineThickness' => 1, 'maxWidth' => 800, 'width' => 800, 'protectRows' => 2)); if ($file) { $pdffilecode = $pdf->output(); return $pdffilecode; } else { $pdf->ezStream(array('Content-Disposition' => 'participant_list.pdf', 'Accept-Ranges' => 0, 'compress' => 1)); } }
function query__get_sort($type, $search_sort, $experiment_id = 0) { //sanitizes sort string //type can be: participants_search_active, participants_search_all, assign, deassign, session_list if ($type == 'participants_search_active') { $cols = participant__get_result_table_columns('result_table_search_active'); } elseif ($type == 'participants_search_all') { $cols = participant__get_result_table_columns('result_table_search_all'); } elseif ($type == 'session_participants_list') { $cols = participant__get_result_table_columns('session_participants_list'); } elseif ($type == 'session_participants_list_pdf') { $cols = participant__get_result_table_columns('session_participants_list_pdf'); } else { $cols = participant__get_result_table_columns('result_table_assign'); } $pform_columns = participant__load_all_pform_fields(); $search_ok = false; foreach ($cols as $k => $arr) { if (isset($pform_columns[$k]['sort_order']) && $pform_columns[$k]['sort_order']) { if ($search_sort == $pform_columns[$k]['sort_order']) { $search_ok = true; } } elseif (isset($cols[$k]['sort_order']) && $search_sort == $cols[$k]['sort_order']) { $search_ok = true; } elseif ($search_sort == $k) { $search_ok = true; } } if (!$search_ok) { $search_sort = query__load_default_sort($type, $experiment_id); } return $search_sort; }
if ($session_id) { $target .= "\nsession_id:" . $session_id; } log__admin("experiment_edit_participant_list", $target); redirect('admin/' . thisdoc() . $thiscgis); } } } } } if ($proceed) { // list output if ($display == 'enrol') { $cols = participant__get_result_table_columns('experiment_assigned_list'); } else { $cols = participant__get_result_table_columns('session_participants_list'); } if (!$session_id || !isset($show_payment_budgets) || $show_payment_budgets == false) { unset($cols['payment_budget']); } if (!$session_id || !isset($show_payment_types) || $show_payment_types == false) { unset($cols['payment_type']); } if (!$session_id) { unset($cols['payment_amount']); } // load participant data for this session/experiment $pars = array(':texperiment_id' => $experiment_id); $query = "SELECT * FROM " . table('participate_at') . ", " . table('participants') . " \n\t\t\t\t\tWHERE " . table('participate_at') . ".experiment_id= :texperiment_id \n\t\t\t\t\tAND " . table('participate_at') . ".participant_id=" . table('participants') . ".participant_id\n\t\t\t\t\tAND (" . $clause . ")"; foreach ($clause_pars as $p => $v) { $pars[$p] = $v;