<TR style="background: ' . $color['list_header_background'] . '; color: ' . $color['list_header_textcolor'] . ';"> <TD>' . lang('id') . '</TD> <TD>' . lang('name') . ' <TD>' . lang('access_to_profile') . '</TD> <TD>' . lang('eligible_for_experiments') . '</TD> <TD>' . lang('default_for_active_participants') . '</TD> <TD>' . lang('default_for_inactive_participants') . '</TD> <TD>' . lang('subjects') . '</TD>'; if (check_allow('participantstatus_edit')) { echo '<TD></TD>'; } echo ' </TR></thead> <tbody>'; // load status names from lang table $status_names = lang__load_lang_cat('participant_status_name'); // load participant numbers $query = "SELECT count(*) as status_count, status_id\n FROM " . table('participants') . "\n GROUP BY status_id"; $result = or_query($query); $status_counts = array(); while ($line = pdo_fetch_assoc($result)) { $status_counts[$line['status_id']] = $line['status_count']; } $query = "SELECT *\n FROM " . table('participant_statuses') . "\n ORDER BY status_id"; $result = or_query($query); $shade = false; while ($line = pdo_fetch_assoc($result)) { echo ' <tr class="small"'; if ($shade) { echo ' bgcolor="' . $color['list_shade1'] . '"'; } else {
function stats__get_data($condition = array(), $type = 'stats', $restrict = array(), $options = array()) { global $settings; $conditions = array(); $pars = array(); if (is_array($condition) && count($condition) > 0) { $conditions[] = $condition['clause']; if (isset($condition['pars']) && is_array($condition['pars'])) { foreach ($condition['pars'] as $k => $v) { $pars[$k] = $v; } } } $formfields = participantform__load(); $pform_fields = array(); $pform_types = array(); foreach ($formfields as $f) { if (!preg_match("/(textline|textarea)/i", $f['type']) && isset($f['include_in_statistics']) && ($f['include_in_statistics'] == 'pie' || $f['include_in_statistics'] == 'bars')) { $pform_fields[] = $f['mysql_column_name']; $pform_types[$f['mysql_column_name']] = $f; } } $statfields = array('subpool_id', 'subscriptions', 'status_id'); foreach ($pform_fields as $field) { if (!in_array($field, $statfields)) { $statfields[] = $field; } } if ($type == 'stats' && $settings['enable_rules_signed_tracking'] == 'y') { if (!in_array('rules_signed', $statfields)) { $statfields[] = 'rules_signed'; } } else { $exists = array_search('rules_signed', $statfields); if ($exists) { unset($statfields[$exists]); } } if ($type == 'stats') { foreach (array('number_reg', 'number_noshowup', 'last_enrolment', 'last_profile_update', 'last_activity') as $field) { if (!in_array($field, $statfields)) { $statfields[] = $field; } } } $query = "SELECT * from " . table('participants'); $query_conditions = ""; if (count($conditions) > 0) { $query_conditions .= " WHERE"; $cond_strings = array(); foreach ($conditions as $cond) { $cond_strings[] = "(" . $cond . ")"; } $query_conditions .= " " . implode(" AND ", $cond_strings); } $query .= $query_conditions; $result = or_query($query, $pars); $counts = array(); $pids = array(); while ($line = pdo_fetch_assoc($result)) { // check whether we should count this participant and (for monthly stats) use this value $p_restrict = false; foreach ($statfields as $c) { $value = $line[$c]; if (in_array($c, array('last_enrolment', 'last_profile_update', 'last_activity'))) { if (!$value) { $value = 0; } if ($value == 0) { $value = '-'; } else { $value = date('Ym', $value); } } $value = db_string_to_id_array($value); if (count($value) > 0) { $this_restrict = true; foreach ($value as $v) { if (!isset($restrict[$c][$v])) { $this_restrict = false; } } if ($this_restrict) { $p_restrict = true; } } else { $value = '-'; if (isset($restrict[$c][$value])) { $p_restrict = true; } } } if (!$p_restrict) { $pids[] = $line['participant_id']; foreach ($statfields as $c) { $value = $line[$c]; $continue = true; if (in_array($c, array('last_enrolment', 'last_profile_update', 'last_activity'))) { if (!$value) { $value = 0; } if (date('Ym', $value) < date('Ym', strtotime("-" . $settings['stats_months_backward'] . " month", time()))) { $continue = false; } if ($value == 0) { $value = '-'; } else { $value = date('Ym', $value); } } if ($continue) { $value = db_string_to_id_array($value); if (count($value) > 0) { foreach ($value as $v) { if (!isset($counts[$c][$v])) { $counts[$c][$v] = 0; } $counts[$c][$v]++; } } else { $value = '-'; if (!isset($counts[$c][$value])) { $counts[$c][$value] = 0; } $counts[$c][$value]++; } } } } } $count_pids = count($pids); $pid_condition = ""; if (count($restrict) > 0) { $pid_condition = " AND participant_id IN (" . implode(", ", $pids) . ") "; } elseif (count($conditions) == 1 && isset($options['condition_only_on_pid']) && $options['condition_only_on_pid']) { $pid_condition = " AND " . $condition['clause'] . " "; } elseif ($query_conditions) { $pid_condition = " AND participant_id IN (SELECT participant_id FROM " . table('participants') . " " . $query_conditions . ") "; } // avg. experience (participation in experiments of class x, y, z at time of experiment) $statfields[] = 'experience_avg_experimentclass'; if ($count_pids > 0) { $participated_clause = expregister__get_pstatus_query_snippet("participated"); $query = "SELECT count(*) as num, experiment_class\n FROM " . table('participate_at') . " as p, " . table('experiments') . " as e\n WHERE p.session_id>0 " . $pid_condition . "\n AND e.experiment_id=p.experiment_id\n AND e.experiment_class !=''\n AND " . $participated_clause . " "; if (is_array($options) && isset($options['upper_experience_limit'])) { $query .= " AND session_id IN (SELECT session_id FROM " . table('sessions') . "\n WHERE session_start < " . ortime__unixtime_to_sesstime($options['upper_experience_limit']) . "\n AND session_status IN ('completed','balanced') ) "; } $query .= "GROUP BY experiment_class"; $result = or_query($query, $pars); while ($line = pdo_fetch_assoc($result)) { $line['experiment_class'] = db_string_to_id_array($line['experiment_class']); foreach ($line['experiment_class'] as $v) { if ($v > 0) { if (!isset($counts['experience_avg_experimentclass'][$v])) { $counts['experience_avg_experimentclass'][$v] = 0; } $counts['experience_avg_experimentclass'][$v] += round($line['num'] / $count_pids, 2); } } } } if ($type == 'report') { // avg. count pstatus at time of experiment) $statfields[] = 'experience_avg_pstatus'; } if ($count_pids > 0 && $type == 'report') { $query = "SELECT count(*) as num, pstatus_id\n FROM " . table('participate_at') . "\n WHERE session_id>0 " . $pid_condition; if (is_array($options) && isset($options['upper_experience_limit'])) { $query .= " AND session_id IN (SELECT session_id FROM " . table('sessions') . "\n WHERE session_start < " . ortime__unixtime_to_sesstime($options['upper_experience_limit']) . "\n AND session_status IN ('completed','balanced') ) "; } $query .= "GROUP BY pstatus_id"; $result = or_query($query, $pars); while ($line = pdo_fetch_assoc($result)) { $counts['experience_avg_pstatus'][$line['pstatus_id']] = round($line['num'] / $count_pids, 2); } } if ($type == 'stats') { // by pstatus: pstatus count // really needed? we have no_noshows, num_reg ... // by month: pstatus $statfields[] = 'bymonth_pstatus'; $statfields[] = 'bymonth_noshowrate'; } if ($count_pids > 0 && $type == 'stats') { $first_month = date('Ym000000', strtotime("-" . $settings['stats_months_backward'] . " month", time())); $noshow_statuses = expregister__get_specific_pstatuses("noshow"); $query = "SELECT date_format(s.session_start*100,'%Y%m') as sessionmonth,\n pstatus_id, count(p.participate_id) as num\n FROM " . table('participate_at') . " as p, " . table('sessions') . " as s\n WHERE p.session_id>0\n AND p.session_id=s.session_id\n AND s.session_status IN ('completed','balanced')\n AND s.session_start>" . $first_month . " " . $pid_condition . "\n GROUP BY sessionmonth, pstatus_id\n ORDER BY sessionmonth, pstatus_id "; $result = or_query($query, $pars); $noshowperc_data = array(); while ($line = pdo_fetch_assoc($result)) { $counts['bymonth_pstatus_' . $line['pstatus_id']][$line['sessionmonth']] = $line['num']; if (!isset($noshowperc_data[$line['sessionmonth']]['n'])) { $noshowperc_data[$line['sessionmonth']]['n'] = 0; } if (!isset($noshowperc_data[$line['sessionmonth']]['y'])) { $noshowperc_data[$line['sessionmonth']]['y'] = 0; } if (in_array($line['pstatus_id'], $noshow_statuses)) { $noshowperc_data[$line['sessionmonth']]['n'] += $line['num']; } else { $noshowperc_data[$line['sessionmonth']]['y'] += $line['num']; } } // get the noshow percentages as well foreach ($noshowperc_data as $month => $shownup) { $counts['bymonth_noshowrate'][$month] = round($shownup['n'] / ($shownup['n'] + $shownup['y']) * 100, 1); } } $xnames = array('number_reg' => lang('experience'), 'number_noshowup' => lang('noshowup'), 'pstatus' => lang('month'), 'experience_avg_experimentclass' => lang('experiment_classes'), 'experience_avg_pstatus' => lang('participation_status')); $titles = array('number_reg' => lang('experience'), 'number_noshowup' => lang('noshows_by_count'), 'last_enrolment' => lang('last_enrolment'), 'last_profile_update' => lang('last_profile_update'), 'last_activity' => lang('last_activity'), 'bymonth_noshowrate' => lang('noshows_by_month'), 'experience_avg_experimentclass' => lang('experience_in_experiment_classes'), 'experience_avg_pstatus' => lang('average_participation_experience')); // prepare all-containing arrray to return $data_temparray = array(); foreach ($counts as $c => $nums) { $d = array(); $d['N'] = $count_pids; if (isset($pform_types[$c])) { $d['browsable'] = true; $d['charttype'] = $pform_types[$c]['include_in_statistics']; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang($pform_types[$c]['name_lang']); $d['title'] = lang($pform_types[$c]['name_lang']); if (preg_match("/(select_lang|radioline_lang)/", $pform_types[$c]['type'])) { $d['value_names'] = lang__load_lang_cat($c, lang('lang')); } elseif (preg_match("/(radioline|select_list)/", $pform_types[$c]['type'])) { $optionvalues = explode(",", $pform_types[$c]['option_values']); $optionnames = explode(",", $pform_types[$c]['option_values_lang']); $d['value_names'] = array(); foreach ($optionvalues as $k => $v) { if (isset($optionnames[$k])) { $d['value_names'][$v] = lang($optionnames[$k]); } } } else { $d['value_names'] = array(); } // select numbers? if ($pform_types[$c]['type'] == 'select_numbers') { krsort($nums); } else { arsort($nums); } $d['data'] = $nums; $data_temparray[$c] = $d; } elseif (in_array($c, array('number_reg', 'number_noshowup'))) { $d['browsable'] = true; $d['charttype'] = 'bars'; if ($c == 'number_reg') { $d['wide'] = true; } $d['limit_not_apply'] = true; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = $xnames[$c]; $d['title'] = $titles[$c]; $d['value_names'] = array(); krsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif (in_array($c, array('experience_avg_experimentclass', 'experience_avg_pstatus'))) { $d['charttype'] = 'pie'; $d['type_of_data'] = 'calc'; $d['yname'] = lang('average_count'); $d['xname'] = $xnames[$c]; $d['title'] = $titles[$c]; $d['value_names'] = array(); if ($c == 'experience_avg_experimentclass') { $d['value_names'] = experiment__load_experimentclassnames(); } else { $pstatuses = expregister__get_participation_statuses(); foreach ($pstatuses as $k => $s) { $d['value_names'][$k] = $s['internal_name']; } } arsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif ($c == 'rules_signed') { $d['browsable'] = true; $d['charttype'] = 'pie'; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang('rules_signed'); $d['title'] = lang('rules_signed'); $d['value_names'] = array('n' => lang('n'), 'y' => lang('y')); arsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif ($c == 'subpool_id') { $d['browsable'] = true; $d['charttype'] = 'pie'; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang('subpool'); $d['title'] = lang('subpool'); $subpools = subpools__get_subpools(); $d['value_names'] = array(); foreach ($subpools as $k => $p) { $d['value_names'][$k] = $p['subpool_name']; } arsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif ($c == 'status_id') { $d['browsable'] = true; $d['charttype'] = 'pie'; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang('participant_status'); $d['title'] = lang('participant_statuses'); $statuses = participant_status__get_statuses(); $d['value_names'] = array(); foreach ($statuses as $k => $p) { $d['value_names'][$k] = $p['name']; } krsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif ($c == 'subscriptions') { $d['browsable'] = true; $d['charttype'] = 'none'; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang('subscriptions'); $d['title'] = lang('subscriptions'); $exptypes = load_external_experiment_types("", false); $d['value_names'] = array(); foreach ($exptypes as $k => $p) { $d['value_names'][$k] = $p[lang('lang')]; } krsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif (in_array($c, array('last_enrolment', 'last_profile_update', 'last_activity', 'bymonth_noshowrate'))) { $d['charttype'] = 'bars'; $d['wide'] = true; if ($c == 'bymonth_noshowrate') { $d['yname'] = lang('share_in_percent'); $d['type_of_data'] = 'calc'; } else { $d['yname'] = lang('count'); $d['type_of_data'] = 'count'; } $d['xname'] = lang('month'); $d['title'] = $titles[$c]; foreach ($nums as $k => $number) { if ($k == '-') { $d['value_names'][$k] = $k; } else { $d['value_names'][$k] = substr($k, 4, 2) . '/' . substr($k, 2, 2); } } krsort($nums); $d['data'] = $nums; $data_temparray[$c] = $d; } elseif (preg_match('/^bymonth_pstatus/', $c)) { $tarr = explode("_", $c); $status = $tarr[2]; if (!isset($data_temparray['bymonth_pstatus'])) { $pstatuses = expregister__get_participation_statuses(); $d['charttype'] = 'multibars'; $d['wide'] = true; $d['type_of_data'] = 'count'; $d['yname'] = lang('count'); $d['xname'] = lang('month'); $d['title'] = lang('participation_status_count_by_month'); $d['value_names'] = array(); $d['column_names'] = array(); foreach ($pstatuses as $k => $s) { $d['column_names'][$k] = $s['internal_name']; } $data_temparray['bymonth_pstatus'] = $d; } krsort($nums); $data_temparray['bymonth_pstatus']['data'][$status] = $nums; $d['value_names'] = array(); foreach ($data_temparray['bymonth_pstatus']['data'] as $status => $months) { foreach ($months as $month => $count) { $d['value_names'][$month] = $month; } } krsort($d['value_names']); foreach ($d['value_names'] as $k => $v) { $d['value_names'][$k] = substr($v, 4, 2) . '/' . substr($v, 2, 2); } $data_temparray['bymonth_pstatus']['value_names'] = $d['value_names']; } } // prepare all-containing array to return $data_array = array(); foreach ($statfields as $c) { if (isset($data_temparray[$c]['data'])) { $data_temparray[$c]['name'] = $c; $data_array[$c] = $data_temparray[$c]; } else { $data_array[$c] = array('name' => $c, 'N' => 0, 'data' => array()); } } return $data_array; }
function calendar__get_events($admin = false, $start_time = 0, $end_time = 0, $admin_id = false, $split_events = false) { $events = array(); global $lang, $settings, $settings__root_url, $color; $labs = laboratories__get_laboratories(); $sessions = array(); $signed_up = array(); $lines = array(); //build query to get all sessions $query = "SELECT * FROM " . table('sessions') . ", " . table('experiments') . " WHERE " . table('sessions') . ".experiment_id=" . table('experiments') . ".experiment_id"; //don't include hidden if not admin if (!$admin) { $query .= " AND " . table('experiments') . ".hide_in_cal='n' "; } //only events between start and end time parameters $pars = array(':end_time' => date("Ym320000", $end_time), ':start_time' => date("Ym000000", $start_time)); // larger than "0st day" of start time month $query .= " AND session_start <= :end_time "; $query .= " AND session_start >= :start_time "; if ($admin_id) { $query .= " AND " . table('experiments') . ".experimenter LIKE :admin_id "; $pars[':admin_id'] = '%|".$admin_id."|%'; } $result = or_query($query, $pars); $exp_colors = array(); $exp_colors_used = 0; $exp_colors_defined_list = explode(",", $color['calendar_public_experiment_sessions']); while ($line = pdo_fetch_assoc($result)) { $lines[] = $line; $sessions[] = $line['session_id']; } if (count($sessions) > 0) { $query = "SELECT session_id, COUNT(*) as regcount FROM " . table('participate_at') . "\n WHERE session_id IN (" . implode(",", $sessions) . ")\n GROUP BY session_id"; $result = or_query($query); while ($line = pdo_fetch_assoc($result)) { $signed_up[$line['session_id']] = $line['regcount']; } } foreach ($lines as $line) { $tmp_new_event = array(); //get colour if (!isset($exp_colors[$line['experiment_id']])) { $exp_colors[$line['experiment_id']] = $exp_colors_defined_list[$exp_colors_used]; $exp_colors_used += 1; if ($exp_colors_used > count($exp_colors_defined_list) - 1) { $exp_colors_used = 0; } } $tmp_new_event['color'] = $exp_colors[$line['experiment_id']]; //convert to unix time $unix_time = ortime__sesstime_to_unixtime($line['session_start']); $tmp_new_event['start_time'] = $unix_time; //add duration to start time to create end time (in seconds) $duration = ($line['session_duration_hour'] * 60 + $line['session_duration_minute']) * 60; $tmp_new_event['end_time'] = $unix_time + $duration; //formatted time with language features $tmp_new_event['display_time'] = ortime__format($unix_time, 'hide_date:true,hide_second:true', $lang['lang']) . '-' . ortime__format($unix_time + $duration, 'hide_date:true,hide_second:true', $lang['lang']); if ($admin) { $tmp_new_event['title'] = $line['experiment_name']; } else { $tmp_new_event['title'] = $line['experiment_public_name']; } if (check_allow('experiment_show')) { $tmp_new_event['title_link'] = $settings__root_url . '/admin/experiment_show.php?experiment_id=' . $line['experiment_id']; } $tmp_new_event['participants_link'] = $settings__root_url . '/admin/experiment_participants_show.php?experiment_id=' . $line['experiment_id'] . '&session_id=' . $line['session_id']; if (isset($labs[$line['laboratory_id']]['lab_name'])) { $tmp_new_event['location'] = $labs[$line['laboratory_id']]['lab_name']; } else { $tmp_new_event['location'] = lang('unknown_laboratory'); } if (isset($signed_up[$line['session_id']])) { $participating = $signed_up[$line['session_id']]; } else { $participating = 0; } $tmp_new_event['participants_needed'] = $line['part_needed']; $tmp_new_event['participants_reserve'] = $line['part_reserve']; $tmp_new_event['participants_registered'] = $participating; //uid (unique identifier) for use by ICS $tmp_new_event['uid'] = "session_" . $line['session_id'] . "@" . $settings__root_url; $tmp_new_event['type'] = "experiment_session"; if ($participating < $line['part_needed']) { $tmp_new_event['status'] = "not_enough_participants"; } elseif ($participating < $line['part_needed'] + $line['part_reserve']) { $tmp_new_event['status'] = "not_enough_reserve"; } else { $tmp_new_event['status'] = "complete"; } $tmp_new_event['experimenters'] = $line['experimenter']; $tmp_new_event['id'] = $line['session_id']; $events[date("Y", $tmp_new_event['start_time']) * 10000 + date("n", $tmp_new_event['start_time']) * 100 + date("j", $tmp_new_event['start_time'])][] = $tmp_new_event; } //non-experimental laboratory booking events $event_categories = lang__load_lang_cat('events_category'); $pars = array(':end_time' => date("Ym320000", $end_time), ':start_time' => date("Ym000000", $start_time)); // larger than "0st day" of start time month $query = "SELECT * FROM " . table('events') . " WHERE event_start <= :end_time\n AND event_stop >= :start_time"; if ($admin_id) { $query .= " AND " . table('events') . ".experimenter LIKE :admin_id "; $pars[':admin_id'] = '%|".$admin_id."|%'; } $result = or_query($query, $pars); $exp_colors = array(); $exp_colors_used = 0; $exp_colors_defined_list = explode(",", $color['calendar_event_reservation']); while ($line = pdo_fetch_assoc($result)) { if ($admin || trim($line['reason_public'])) { //get color if (!isset($exp_colors[$line['laboratory_id']])) { $exp_colors[$line['laboratory_id']] = $exp_colors_defined_list[$exp_colors_used]; $exp_colors_used += 1; if ($exp_colors_used > count($exp_colors_defined_list) - 1) { $exp_colors_used = 0; } } $tmp_new_event = array(); $tmp_new_event['color'] = $exp_colors[$line['laboratory_id']]; $unix_start_time = ortime__sesstime_to_unixtime($line['event_start']); $unix_stop_time = ortime__sesstime_to_unixtime($line['event_stop']); $tmp_new_event['start_time'] = $unix_start_time; $tmp_new_event['end_time'] = $unix_stop_time; $tmp_new_event['display_time'] = ortime__format($unix_start_time, 'hide_second:true', $lang['lang']) . '-' . ortime__format($unix_stop_time, 'hide_second:true', $lang['lang']); if (isset($labs[$line['laboratory_id']]['lab_name'])) { $tmp_new_event['location'] = $labs[$line['laboratory_id']]['lab_name']; } else { $tmp_new_event['location'] = $lang['unknown_laboratory']; } $tmp_new_event['type'] = "location_reserved"; if ($admin) { $tmp_new_event['title'] = $line['reason']; if (trim($line['reason_public'])) { $tmp_new_event['title'] .= ' (' . $line['reason_public'] . ')'; } if ($line['event_category'] && isset($event_categories[$line['event_category']])) { $tmp = $event_categories[$line['event_category']]; if ($tmp_new_event['title']) { $tmp .= ", " . $tmp_new_event['title']; } $tmp_new_event['title'] = $tmp; } if (!$tmp_new_event['title']) { $tmp_new_event['title'] = lang('laboratory_booked'); } } else { $tmp_new_event['title'] = $line['reason_public']; if (!$tmp_new_event['title']) { $tmp_new_event['title'] = lang('laboratory_booked'); } } $tmp_new_event['edit_link'] = $settings__root_url . "/admin/events_edit.php?event_id=" . $line['event_id']; $tmp_new_event['experimenters'] = $line['experimenter']; $tmp_new_event['id'] = $line['event_id']; $tmp_new_event['uid'] = "booking_" . $line['event_id'] . "@" . $settings__root_url; if ($split_events) { $continue = true; $today = $unix_start_time; while ($continue) { if (date("Ymd", $today) == date("Ymd", $unix_start_time)) { $tmp_new_event['start_time'] = $unix_start_time; } else { $tmp_new_event['start_time'] = mktime($settings['laboratory_opening_time_hour'], $settings['laboratory_opening_time_minute'], 0, date("n", $today), date("j", $today), date("Y", $today)); } if (date("Ymd", $today) >= date("Ymd", $unix_stop_time)) { $tmp_new_event['end_time'] = $unix_stop_time; $continue = false; } else { $tmp_new_event['end_time'] = mktime($settings['laboratory_closing_time_hour'], $settings['laboratory_closing_time_minute'], 0, date("n", $today), date("j", $today), date("Y", $today)); } $tmp_new_event['display_time'] = ortime__format($tmp_new_event['start_time'], 'hide_date:true,hide_second:true', lang('lang')) . '-' . ortime__format($tmp_new_event['end_time'], 'hide_date:true,hide_second:true', lang('lang')); $events[date("Y", $today) * 10000 + date("n", $today) * 100 + date("j", $today)][] = $tmp_new_event; $today = strtotime("+1 day", $today); } } else { $events[date("Y", $tmp_new_event['start_time']) * 10000 + date("n", $tmp_new_event['start_time']) * 100 + date("j", $tmp_new_event['start_time'])][] = $tmp_new_event; } } } return $events; }
function downloads__list_files_experiment($experiment_id, $showsize = false, $showtype = false, $showdate = false) { global $lang, $color, $expadmindata; $out = ''; $continue = true; if ($continue) { $experiment = orsee_db_load_array("experiments", $experiment_id, "experiment_id"); if (!isset($experiment['experiment_id'])) { $continue = false; } } if ($continue) { $experimenters = db_string_to_id_array($experiment['experimenter']); if (!(in_array($expadmindata['admin_id'], $experimenters) && check_allow('file_view_experiment_my') || check_allow('file_view_experiment_all'))) { $continue = false; } } if ($continue) { if (check_allow('file_download_experiment_all')) { $allow_dl = true; } elseif (in_array($expadmindata['admin_id'], $experimenters) && check_allow('file_download_experiment_my')) { $allow_dl = true; } else { $allow_dl = false; } if (check_allow('file_delete_experiment_all')) { $allow_delete = true; } elseif (in_array($expadmindata['admin_id'], $experimenters) && check_allow('file_delete_experiment_my')) { $allow_delete = true; } else { $allow_delete = false; } if (check_allow('file_edit_experiment_all')) { $allow_edit = true; } elseif (in_array($expadmindata['admin_id'], $experimenters) && check_allow('file_edit_experiment_my')) { $allow_edit = true; } else { $allow_edit = false; } $query = "SELECT " . table('uploads') . ".*, " . table('sessions') . ".session_start\n FROM " . table('uploads') . " LEFT JOIN " . table('sessions') . "\n ON " . table('uploads') . ".session_id = " . table('sessions') . ".session_id\n WHERE " . table('uploads') . ".experiment_id= :experiment_id\n ORDER BY session_start, upload_type, upload_name, upload_id"; $pars = array(':experiment_id' => $experiment_id); $result = or_query($query, $pars); if (pdo_num_rows($result) > 0) { $shade = true; $categories = lang__load_lang_cat('file_upload_category'); $uptype = -1; $tsession_id = -1; $cols = 3; if ($showsize) { $cols++; } if ($showtype) { $cols++; } if ($showdate) { $cols++; } if ($allow_edit) { $cols++; } if ($allow_delete) { $cols++; } $out .= '<TABLE width="100%" border=0 cellspacing="0">'; while ($upload = pdo_fetch_assoc($result)) { if ($shade) { $bgcolor = ' bgcolor="' . $color['list_shade1'] . '"'; $shade = false; } else { $bgcolor = ' bgcolor="' . $color['list_shade2'] . '"'; $shade = true; } if ($upload['session_id'] != $tsession_id) { $tsession_id = $upload['session_id']; $uptype = 0; $out .= '<TR bgcolor="' . $color['list_shade_subtitle'] . '"> <TD colspan=' . $cols . '>'; if ($upload['session_id'] > 0) { $out .= '<i>' . lang('session') . ' ' . ortime__format(ortime__sesstime_to_unixtime($upload['session_start'])) . '</i>'; } else { $out .= '<i>' . lang('no_session') . '</i>'; } $out .= '</TD></TR>'; } if ($upload['upload_type'] != $uptype) { $uptype = $upload['upload_type']; $out .= '<TR bgcolor="' . $color['list_shade_subtitle'] . '"> <TD> </TD> <TD colspan=' . ($cols - 1) . '>'; if (isset($categories[$uptype])) { $out .= $categories[$uptype]; } else { $out .= '???'; } $out .= '</TD></TR>'; } $out .= '<TR' . $bgcolor . '><TD> </TD><TD>'; if ($allow_dl) { $out .= '<A HREF="download_file.php' . '/' . rawurlencode($upload['upload_name'] . '.' . $upload['upload_suffix']) . '?t=d&i=' . $upload['upload_id'] . '">'; } $out .= $upload['upload_name']; if ($allow_dl) { $out .= '</A>'; } $out .= '</TD>'; if ($showsize) { $out .= '<TD>' . number_format(round($upload['upload_filesize'] / 1024), 0) . ' KB</TD>'; } if ($showtype) { $out .= '<TD>' . $upload['upload_suffix'] . '</TD>'; } if ($showdate) { $out .= '<TD>' . ortime__format($upload['upload_id'], '', lang('lang')) . '</TD>'; } if ($allow_edit) { $out .= ' <TD>'; $out .= ' <A HREF="download_edit.php?file=' . $upload['upload_id'] . '"><FONT class="small">[' . lang('edit') . ']</FONT></A>'; $out .= ' </TD>'; } if ($allow_delete) { $out .= ' <TD>'; $out .= ' <A HREF="download_delete.php?dl=' . $upload['upload_id'] . '"><FONT class="small">[' . lang('delete') . ']</FONT></A>'; $out .= ' </TD>'; } $out .= '</TR>'; } $out .= '</TABLE>'; } } return $out; }
<TABLE class="or_formtable"> <TR><TD colspan="2"> <TABLE width="100%" border=0 class="or_panel_title"><TR> <TD style="background: ' . $color['panel_title_background'] . '; color: ' . $color['panel_title_textcolor'] . '" align="center"> ' . lang('delete_participation_status') . ' "' . $pstatus_internal_name[lang('lang')] . '" </TD> </TR></TABLE> </TD></TR> <TR> <TD colspan=2> ' . lang('really_delete_participation_status?') . '<BR><BR>'; dump_array($pstatus); echo ' </TD> </TR>'; $pstatus_internal_names = lang__load_lang_cat('participation_status_internal_name'); echo ' <TR> <TD align=left colspan=2> <INPUT class="button" type=submit name=reallydelete value="' . lang('yes_delete') . '"> <BR> ' . lang('merge_participation_status_with') . ' ' . expregister__participation_status_select_field('merge_with', '', array($pstatus_id)) . ' </TD></TR> <TR> <TD align=center colspan=2><BR><BR> <INPUT class="button" type=submit name=betternot value="' . lang('no_sorry') . '"> </TD> </TR> </TABLE>
function participant__load_participant_email_fields($tlang = '') { global $lang; if (!$tlang) { $tlang = lang('lang'); } $formfields = participantform__load(); $result_columns = array(); foreach ($formfields as $f) { if ($f['admin_only'] != 'y') { $f['column_name'] = load_language_symbol($f['name_lang'], $tlang); if (!$f['column_name']) { $f['column_name'] = $f['name_lang']; } if (preg_match("/(radioline|select_list)/", $f['type'])) { $optionvalues = explode(",", $f['option_values']); $optionnames = explode(",", $f['option_values_lang']); $f['lang'] = array(); foreach ($optionvalues as $k => $v) { if (isset($optionnames[$k])) { if ($tlang != lang('lang')) { $oname = load_language_symbol($optionnames[$k], $tlang); if ($oname) { $f['lang'][$v] = $oname; } else { $f['lang'][$v] = $optionnames[$k]; } } else { if (isset($lang[$optionnames[$k]])) { $f['lang'][$v] = $lang[$optionnames[$k]]; } else { $f['lang'][$v] = $optionnames[$k]; } } } } } elseif (preg_match("/(select_lang|radioline_lang)/", $f['type'])) { $f['lang'] = lang__load_lang_cat($f['mysql_column_name'], $tlang); } $result_columns[] = $f; } } return $result_columns; }
$pfields = array(); $allowed_values = array(); foreach ($formfields as $f) { $pfields[] = $f['mysql_column_name']; if ($check_compulsory) { if ($f['subpools'] == 'all' | in_array($subpool_id, explode(",", $f['subpools']))) { if ($f['compulsory'] == 'y' && !isset($pform_mapping[$f['mysql_column_name']])) { $continue = false; echo "Error: form field " . $f['mysql_column_name'] . " is compulsory but not defined in \$pform_mapping. Please check configuration/data.\n"; } } } if (preg_match("/(radioline|select_list)/", $f['type'])) { $allowed_values[$f['mysql_column_name']] = explode(",", $f['option_values']); } elseif (preg_match("/(select_lang|radioline_lang)/", $f['type'])) { $langvals = lang__load_lang_cat($f['mysql_column_name']); foreach ($langvals as $k => $v) { $allowed_values[$f['mysql_column_name']][] = $k; } } } foreach ($pform_mapping as $pfield => $column) { if (!in_array($pfield, $pfields)) { $continue = false; echo "Error: field " . $pfield . " defined in \$pform_mapping but not configured in ORSEE. Please check configuration/data.\n"; } } } if ($continue) { $pcount = 0; $taberror = false;