<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 {
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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>&nbsp;</TD>
                        <TD colspan=' . ($cols - 1) . '>';
                    if (isset($categories[$uptype])) {
                        $out .= $categories[$uptype];
                    } else {
                        $out .= '???';
                    }
                    $out .= '</TD></TR>';
                }
                $out .= '<TR' . $bgcolor . '><TD>&nbsp;&nbsp;</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>
Example #6
0
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;
}
Example #7
0
    $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;