function delete_palm_events($login)
{
    $res = dbi_query("SELECT cal_id FROM webcal_import_data " . "WHERE cal_login = '******'");
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            dbi_query("DELETE FROM webcal_entry_user WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_entry_repeats WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_entry_repeats_not WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_entry_log WHERE cal_entry_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_site_extras WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_reminder_log WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_import_data WHERE cal_id = {$row['0']}");
            dbi_query("DELETE FROM webcal_entry WHERE cal_id = {$row['0']}");
        }
    }
    dbi_free_result($res);
    return 1;
}
function db_load_config()
{
    global $webcalConfig;
    while (list($key, $val) = each($webcalConfig)) {
        $res = dbi_execute('SELECT cal_value FROM webcal_config
      WHERE cal_setting = ?', array($key), false, false);
        $sql = 'INSERT INTO webcal_config ( cal_setting, cal_value ) VALUES (?,?)';
        if (!$res) {
            dbi_execute($sql, array($key, $val));
        } else {
            // SQLite returns $res always.
            $row = dbi_fetch_row($res);
            if (!isset($row[0])) {
                dbi_execute($sql, array($key, $val));
            }
            dbi_free_result($res);
        }
    }
}
Esempio n. 3
0
function delete_palm_events($login)
{
    $res = dbi_execute('SELECT cal_id FROM webcal_import_data
    WHERE cal_login = ? AND cal_import_type = ?', array($login, 'palm'));
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            dbi_execute('DELETE FROM webcal_blob WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_entry_log WHERE cal_entry_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_entry_repeats WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_entry_repeats_not WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_import_data WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_reminders WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_site_extras WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_entry_user WHERE cal_id = ?', array($row[0]));
            dbi_execute('DELETE FROM webcal_entry WHERE cal_id = ?', array($row[0]));
        }
    }
    dbi_free_result($res);
    return 1;
}
Esempio n. 4
0
function save_layer($layer_user, $layeruser, $layercolor, $dups, $id)
{
    global $error, $layers;
    if ($layer_user == $layeruser) {
        $error = translate('You cannot create a layer for yourself.');
    }
    load_user_layers($layer_user, 1);
    if (!empty($layeruser) && $error == '') {
        // Existing layer entry.
        if (!empty($layers[$id]['cal_layeruser'])) {
            // Update existing layer entry for this user.
            $layerid = $layers[$id]['cal_layerid'];
            dbi_execute('UPDATE webcal_user_layers SET cal_layeruser = ?,
        cal_color = ?, cal_dups = ? WHERE cal_layerid = ?', array($layeruser, $layercolor, $dups, $layerid));
        } else {
            // New layer entry.
            // Check for existing layer for user. Can only have one layer per user.
            $res = dbi_execute('SELECT COUNT( cal_layerid ) FROM webcal_user_layers
        WHERE cal_login = ? AND cal_layeruser = ?', array($layer_user, $layeruser));
            if ($res) {
                $row = dbi_fetch_row($res);
                if ($row[0] > 0) {
                    $error = translate('You can only create one layer for each user.');
                }
                dbi_free_result($res);
            }
            if ($error == '') {
                $res = dbi_execute('SELECT MAX( cal_layerid ) FROM webcal_user_layers');
                if ($res) {
                    $row = dbi_fetch_row($res);
                    $layerid = $row[0] + 1;
                } else {
                    $layerid = 1;
                }
                dbi_execute('INSERT INTO webcal_user_layers ( cal_layerid, cal_login,
          cal_layeruser, cal_color, cal_dups ) VALUES ( ?, ?, ?, ?, ? )', array($layerid, $layer_user, $layeruser, $layercolor, $dups));
            }
        }
    }
}
function doDbSanityCheck()
{
    global $db_database, $db_host, $db_login;
    $dieMsgStr = 'Error finding WebCalendar tables in database "' . $db_database . '" using db login "' . $db_login . '" on db server "' . $db_host . '".<br /><br />
Have you created the database tables as specified in the
<a href="docs/WebCalendar-SysAdmin.html" ' . '  target="other">WebCalendar System Administrator\'s Guide</a>?';
    $res = @dbi_execute('SELECT COUNT( cal_value ) FROM webcal_config', array(), false, false);
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            // Found database. All is peachy.
            dbi_free_result($res);
        } else {
            // Error accessing table.
            // User has wrong db name or has not created tables.
            // Note: can't translate this since translate.php is not included yet.
            dbi_free_result($res);
            die_miserable_death($dieMsgStr);
        }
    } else {
        die_miserable_death($dieMsgStr);
    }
}
Esempio n. 6
0
function doDbSanityCheck()
{
    global $db_login, $db_host, $db_database;
    $res = @dbi_query("SELECT COUNT(cal_value) FROM webcal_config", false, false);
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            // Found database.  All is peachy.
            dbi_free_result($res);
        } else {
            // Error accessing table.
            // User has wrong db name or has not created tables.
            // Note: cannot translate this since we have not included
            // translate.php yet.
            dbi_free_result($res);
            die_miserable_death("Error finding WebCalendar tables in database '{$db_database}' " . "using db login '{$db_login}' on db server '{$db_host}'.<br/><br/>\n" . "Have you created the database tables as specified in the " . "<a href=\"docs/WebCalendar-SysAdmin.html\" target=\"other\">WebCalendar " . "System Administrator's Guide</a>?");
        }
    } else {
        // Error accessing table.
        // User has wrong db name or has not created tables.
        // Note: cannot translate this since we have not included translate.php yet.
        die_miserable_death("Error finding WebCalendar tables in database '{$db_database}' " . "using db login '{$db_login}' on db server '{$db_host}'.<br/><br/>\n" . "Have you created the database tables as specified in the " . "<a href=\"docs/WebCalendar-SysAdmin.html\" target=\"other\">WebCalendar " . "System Administrator's Guide</a>?");
    }
}
Esempio n. 7
0
function process_event($id, $name, $event_date, $event_time)
{
    global $site_extras, $debug, $only_testing;
    global $EXTRA_REMINDER_WITH_OFFSET, $EXTRA_REMINDER_WITH_DATE;
    if ($debug) {
        printf("Event %d: \"%s\" at %s on %s <br />\n", $id, $name, $event_time, $event_date);
    }
    // Check to see if this event has any reminders
    $extras = get_site_extra_fields($id);
    for ($j = 0; $j < count($site_extras); $j++) {
        $extra_name = $site_extras[$j][0];
        $extra_type = $site_extras[$j][2];
        $extra_arg1 = $site_extras[$j][3];
        $extra_arg2 = $site_extras[$j][4];
        //if ( $debug )
        //  printf ( "  name: %s\n  type: %d\n  arg1: %s\n  arg2: %s\n",
        //  $extra_name, $extra_type, $extra_arg1, $extra_arg2 );
        if (!empty($extras[$extra_name]['cal_remind'])) {
            if ($debug) {
                echo "  Reminder set for event. <br />\n";
            }
            // how many minutes before event should we send the reminder?
            $ev_h = (int) ($event_time / 10000);
            $ev_m = $event_time / 100 % 100;
            $ev_year = substr($event_date, 0, 4);
            $ev_month = substr($event_date, 4, 2);
            $ev_day = substr($event_date, 6, 2);
            $event_time = mktime($ev_h, $ev_m, 0, $ev_month, $ev_day, $ev_year);
            if (($extra_arg2 & $EXTRA_REMINDER_WITH_OFFSET) > 0) {
                $minsbefore = $extras[$extra_name]['cal_data'];
                $remind_time = $event_time - $minsbefore * 60;
            } else {
                if (($extra_arg2 & $EXTRA_REMINDER_WITH_DATE) > 0) {
                    $rd = $extras[$extra_name]['cal_date'];
                    $r_year = substr($rd, 0, 4);
                    $r_month = substr($rd, 4, 2);
                    $r_day = substr($rd, 6, 2);
                    $remind_time = mktime(0, 0, 0, $r_month, $r_day, $r_year);
                } else {
                    $minsbefore = $extra_arg1;
                    $remind_time = $event_time - $minsbefore * 60;
                }
            }
            if ($debug) {
                echo "  Mins Before: {$minsbefore} <br />\n";
            }
            if ($debug) {
                echo "  Event time is: " . date("m/d/Y H:i", $event_time) . "<br />\n";
                echo "  Remind time is: " . date("m/d/Y H:i", $remind_time) . "<br />\n";
            }
            if (time() >= $remind_time) {
                // It's remind time or later. See if one has already been sent
                $last_sent = 0;
                $res = dbi_query("SELECT MAX(cal_last_sent) FROM " . "webcal_reminder_log WHERE cal_id = " . $id . " AND cal_event_date = {$event_date}" . " AND cal_name = '" . $extra_name . "'");
                if ($res) {
                    if ($row = dbi_fetch_row($res)) {
                        $last_sent = $row[0];
                    }
                    dbi_free_result($res);
                }
                if ($debug) {
                    echo "  Last sent on: " . date("m/d/Y H:i", $last_sent) . "<br />\n";
                }
                if ($last_sent < $remind_time) {
                    // Send a reminder
                    if ($debug) {
                        echo "  SENDING REMINDER! <br />\n";
                    }
                    send_reminder($id, $event_date);
                    // now update the db...
                    log_reminder($id, $extra_name, $event_date);
                }
            }
        }
    }
}
Esempio n. 8
0
function access_load_user_functions($user)
{
    global $is_admin;
    static $permissions;
    if (!empty($permissions[$user])) {
        return $permissions[$user];
    }
    $ret = '';
    $rets = array();
    $users = array($user, '__default__');
    for ($i = 0, $cnt = count($users); $i < $cnt && empty($ret); $i++) {
        $res = dbi_execute('SELECT cal_permissions FROM webcal_access_function
      WHERE cal_login = ?', array($users[$i]));
        assert('$res');
        if ($row = dbi_fetch_row($res)) {
            $rets[$users[$i]] = $row[0];
        }
        dbi_free_result($res);
    }
    // If still no setting found, then assume access to everything
    // if an admin user, otherwise access to all non-admin functions.
    if (!empty($rets[$user])) {
        $ret = $rets[$user];
    } else {
        if (!empty($rets['__default__'])) {
            $ret = $rets['__default__'];
        } else {
            for ($i = 0; $i < ACCESS_NUMBER_FUNCTIONS; $i++) {
                $ret .= get_default_function_access($i, $user);
            }
        }
    }
    // do_debug ( $user . " " . $ret);
    $permissions[$user] = $ret;
    return $ret;
}
Esempio n. 9
0
function user_get_users()
{
    global $public_access, $PUBLIC_ACCESS_FULLNAME;
    $count = 0;
    $ret = array();
    if ($public_access == "Y") {
        $ret[$count++] = array("cal_login" => "__public__", "cal_lastname" => "", "cal_firstname" => "", "cal_is_admin" => "N", "cal_email" => "", "cal_password" => "", "cal_fullname" => $PUBLIC_ACCESS_FULLNAME);
    }
    $res = dbi_query("SELECT cal_login, cal_lastname, cal_firstname, " . "cal_is_admin, cal_email, cal_passwd FROM webcal_user " . "ORDER BY cal_lastname, cal_firstname, cal_login");
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            if (strlen($row[1]) && strlen($row[2])) {
                $fullname = "{$row['2']} {$row['1']}";
            } else {
                $fullname = $row[0];
            }
            $ret[$count++] = array("cal_login" => $row[0], "cal_lastname" => $row[1], "cal_firstname" => $row[2], "cal_is_admin" => $row[3], "cal_email" => empty($row[4]) ? "" : $row[4], "cal_password" => $row[5], "cal_fullname" => $fullname);
        }
        dbi_free_result($res);
    }
    return $ret;
}
Esempio n. 10
0
function list_unapproved($user)
{
    global $temp_fullname, $key, $login;
    //echo "Listing events for $user <br>";
    $sql = "SELECT webcal_entry.cal_id, webcal_entry.cal_name, " . "webcal_entry.cal_description, " . "webcal_entry.cal_priority, webcal_entry.cal_date, " . "webcal_entry.cal_time, webcal_entry.cal_duration, " . "webcal_entry_user.cal_status " . "FROM webcal_entry, webcal_entry_user " . "WHERE webcal_entry.cal_id = webcal_entry_user.cal_id " . "AND ( webcal_entry.cal_ext_for_id IS NULL " . "OR webcal_entry.cal_ext_for_id = 0 ) AND " . "webcal_entry_user.cal_login = '******' AND " . "webcal_entry_user.cal_status = 'W' " . "ORDER BY webcal_entry.cal_date";
    $res = dbi_query($sql);
    $count = 0;
    $eventinfo = "";
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            if ($count == 0) {
                echo "<ul>\n";
            }
            $key++;
            $id = $row[0];
            $name = $row[1];
            $description = $row[2];
            $pri = $row[3];
            $date = $row[4];
            $time = $row[5];
            $duration = $row[6];
            $status = $row[7];
            $divname = "eventinfo-{$id}-{$key}";
            echo "<li><a title=\"" . translate("View this entry") . "\" class=\"entry\" href=\"view_entry.php?id={$id}&amp;user={$user}";
            echo "\" onmouseover=\"window.status='" . translate("View this entry") . "'; show(event, '{$divname}'); return true;\" onmouseout=\"hide('{$divname}'); return true;\">";
            $timestr = "";
            if ($time > 0) {
                $timestr = display_time($time);
                if ($duration > 0) {
                    // calc end time
                    $h = (int) ($time / 10000);
                    $m = $time / 100 % 100;
                    $m += $duration;
                    $d = $duration;
                    while ($m >= 60) {
                        $h++;
                        $m -= 60;
                    }
                    $end_time = sprintf("%02d%02d00", $h, $m);
                    $timestr .= " - " . display_time($end_time);
                }
            }
            echo htmlspecialchars($name);
            echo "</a>";
            echo " (" . date_to_str($date) . ")\n";
            //approve
            echo ": <a title=\"" . translate("Approve/Confirm") . "\"  href=\"approve_entry.php?id={$id}&amp;ret=list&amp;user={$user}";
            if ($user == "__public__") {
                echo "&amp;public=1";
            }
            echo "\" class=\"nav\" onclick=\"return confirm('" . translate("Approve this entry?") . "');\">" . translate("Approve/Confirm") . "</a>, ";
            //reject
            echo "<a title=\"" . translate("Reject") . "\" href=\"reject_entry.php?id={$id}&amp;ret=list&amp;user={$user}";
            if ($user == "__public__") {
                echo "&amp;public=1";
            }
            echo "\" class=\"nav\" onclick=\"return confirm('" . translate("Reject this entry?") . "');\">" . translate("Reject") . "</a>";
            //delete
            echo ", <a title=\"" . translate("Delete") . "\" href=\"del_entry.php?id={$id}&amp;ret=list";
            if ($user != $login) {
                echo "&amp;user={$user}";
            }
            echo "\" class=\"nav\" onclick=\"return confirm('" . translate("Are you sure you want to delete this entry?") . "');\">" . translate("Delete") . "</a>";
            echo "\n</li>\n";
            $eventinfo .= build_event_popup($divname, $user, $description, $timestr, site_extras_for_popup($id));
            $count++;
        }
        dbi_free_result($res);
        if ($count > 0) {
            echo "</ul>\n";
        }
    }
    if ($count == 0) {
        user_load_variables($user, "temp_");
        echo "<span class=\"nounapproved\">" . translate("No unapproved events for") . "&nbsp;" . $temp_fullname . ".</span>\n";
    } else {
        if (!empty($eventinfo)) {
            echo $eventinfo;
        }
    }
}
function import_data($data, $overwrite, $type)
{
    global $login, $count_con, $count_suc, $error_num, $ImportType, $LOG_CREATE;
    global $single_user, $single_user_login, $allow_conflicts;
    global $numDeleted, $errormsg;
    global $calUser, $H2COLOR, $sqlLog;
    $oldUIDs = array();
    $oldIds = array();
    $firstEventId = 0;
    $importId = 1;
    // Generate a unique import id
    $res = dbi_query("SELECT MAX(cal_import_id) FROM webcal_import");
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            $importId = $row[0] + 1;
        }
        dbi_free_result($res);
    }
    $sql = "INSERT INTO webcal_import ( cal_import_id, cal_name, " . "cal_date, cal_type, cal_login ) VALUES ( {$importId}, NULL, " . date("Ymd") . ", '{$type}', '{$login}' )";
    if (!dbi_query($sql)) {
        $errormsg = translate("Database error") . ": " . dbi_error();
        return;
    }
    foreach ($data as $Entry) {
        $priority = 2;
        $participants[0] = $calUser;
        // Some additional date/time info
        $START = $Entry['StartTime'] > 0 ? localtime($Entry['StartTime']) : 0;
        $END = $Entry['EndTime'] > 0 ? localtime($Entry['EndTime']) : 0;
        $Entry['StartMinute'] = sprintf("%02d", $START[1]);
        $Entry['StartHour'] = sprintf("%02d", $START[2]);
        $Entry['StartDay'] = sprintf("%02d", $START[3]);
        $Entry['StartMonth'] = sprintf("%02d", $START[4] + 1);
        $Entry['StartYear'] = sprintf("%04d", $START[5] + 1900);
        $Entry['EndMinute'] = sprintf("%02d", $END[1]);
        $Entry['EndHour'] = sprintf("%02d", $END[2]);
        $Entry['EndDay'] = sprintf("%02d", $END[3]);
        $Entry['EndMonth'] = sprintf("%02d", $END[4] + 1);
        $Entry['EndYear'] = sprintf("%04d", $END[5] + 1900);
        if ($overwrite && !empty($Entry['UID'])) {
            $oldUIDs[$Entry['UID']]++;
        }
        // Check for untimed
        if ($Entry['Untimed'] == 1) {
            $Entry['StartMinute'] = '';
            $Entry['StartHour'] = '';
            $Entry['EndMinute'] = '';
            $Entry['EndHour'] = '';
        }
        // first check for any schedule conflicts
        if (empty($allow_conflicts) && $Entry['Duration'] != 0) {
            $date = mktime(0, 0, 0, $Entry['StartMonth'], $Entry['StartDay'], $Entry['StartYear']);
            $endt = !empty($Entry['Repeat']['EndTime']) ? $Entry['Repeat']['EndTime'] : 'NULL';
            $dayst = !empty($Entry['Repeat']['RepeatDays']) ? $Entry['Repeat']['RepeatDays'] : "nnnnnnn";
            $ex_days = array();
            if (!empty($Entry['Repeat']['Exceptions'])) {
                foreach ($Entry['Repeat']['Exceptions'] as $ex_date) {
                    $ex_days[] = date("Ymd", $ex_date);
                }
            }
            $dates = get_all_dates($date, RepeatType($Entry['Repeat']['Interval']), $endt, $dayst, $ex_days, $Entry['Repeat']['Frequency']);
            $overlap = overlap($dates, $Entry['Duration'], $Entry['StartHour'], $Entry['StartMinute'], $participants, $login, 0);
        }
        if (empty($error) && !empty($overlap)) {
            $error = translate("The following conflicts with the suggested time") . ":<ul>{$overlap}</ul>\n";
        }
        if (empty($error)) {
            $updateMode = false;
            // See if event already is there from prior import.
            // The same UID is used for all events imported at once with iCal.
            // So, we still don't have enough info to find the exact
            // event we want to replace.  We could just delete all
            // existing events that correspond to the UID.
            /************************************************************************
              Not sure what to do with this code since I don't know how Palm and vCal
              use the UID stuff yet...
              
                  if ( ! empty ( $Entry['UID'] ) ) {
                    $res = dbi_query ( "SELECT webcal_import_data.cal_id " .
                      "FROM webcal_import_data, webcal_entry_user " .
                      "WHERE cal_import_type = 'ical' AND " .
                      "webcal_import_data.cal_id = webcal_entry_user.cal_id AND " .
                      "webcal_entry_user.cal_login = '******' AND " .
                      "cal_external_id = '$Entry[UID]'" );
                    if ( $res ) {
                      if ( $row = dbi_fetch_row ( $res ) ) {
                        if ( ! empty ( $row[0] ) ) {
                          $id = $row[0];
                          $updateMode = true;
                          // update rather than add a new event
                        }
                      }
                    }
                  }
            ************************************************************************/
            // Add the Event
            $res = dbi_query("SELECT MAX(cal_id) FROM webcal_entry");
            if ($res) {
                $row = dbi_fetch_row($res);
                $id = $row[0] + 1;
                dbi_free_result($res);
            } else {
                $id = 1;
                //$error = "Unable to select MAX cal_id: " . dbi_error () . "<br /><br />\n<b>SQL:</b> $sql";
                //break;
            }
            if ($firstEventId == 0) {
                $firstEventId = $id;
            }
            $names = array();
            $values = array();
            $names[] = 'cal_id';
            $values[] = "{$id}";
            if (!$updateMode) {
                $names[] = 'cal_create_by';
                $values[] = "'{$login}'";
            }
            $names[] = 'cal_date';
            $values[] = sprintf("%04d%02d%02d", $Entry['StartYear'], $Entry['StartMonth'], $Entry['StartDay']);
            $names[] = 'cal_time';
            $values[] = $Entry['Untimed'] == 1 ? "-1" : sprintf("%02d%02d00", $Entry['StartHour'], $Entry['StartMinute']);
            $names[] = 'cal_mod_date';
            $values[] = date("Ymd");
            $names[] = 'cal_mod_time';
            $values[] = date("Gis");
            $names[] = 'cal_duration';
            $values[] = sprintf("%d", $Entry['Duration']);
            $names[] = 'cal_priority';
            $values[] = $priority;
            $names[] = 'cal_access';
            $values[] = $Entry['Private'] == 1 ? "'R'" : "'P'";
            $names[] = 'cal_type';
            $values[] = $Entry['Repeat'] ? "'M'" : "'E'";
            if (strlen($Entry['Summary']) == 0) {
                $Entry['Summary'] = translate("Unnamed Event");
            }
            if (strlen($Entry['Description']) == 0) {
                $Entry['Description'] = $Entry['Summary'];
            }
            $Entry['Summary'] = str_replace("\\n", "\n", $Entry['Summary']);
            $Entry['Summary'] = str_replace("\\'", "'", $Entry['Summary']);
            $Entry['Summary'] = str_replace("\\\"", "\"", $Entry['Summary']);
            $Entry['Summary'] = str_replace("'", "\\'", $Entry['Summary']);
            $names[] = 'cal_name';
            $values[] = "'" . $Entry['Summary'] . "'";
            $Entry['Description'] = str_replace("\\n", "\n", $Entry['Description']);
            $Entry['Description'] = str_replace("\\'", "'", $Entry['Description']);
            $Entry['Description'] = str_replace("\\\"", "\"", $Entry['Description']);
            $Entry['Description'] = str_replace("'", "\\'", $Entry['Description']);
            // limit length to 1024 chars since we setup tables that way
            if (strlen($Entry['Description']) >= 1024) {
                $Entry['Description'] = substr($Entry['Description'], 0, 1019) . "...";
            }
            $names[] = 'cal_description';
            $values[] = "'" . $Entry['Description'] . "'";
            //echo "Summary:<p>" . nl2br ( htmlspecialchars ( $Entry['Summary'] ) ) . "</p>";
            //echo "Description:<p>" . nl2br ( htmlspecialchars ( $Entry['Description'] ) ) . "</p>"; exit;
            if ($updateMode) {
                $sql = "UPDATE webcal_entry SET ";
                for ($f = 0; $f < count($names); $f++) {
                    if ($f > 0) {
                        $sql .= ", ";
                    }
                    $sql .= $names[$f] . " = " . $values[$f];
                }
                $sql .= " WHERE cal_id = {$id}";
            } else {
                $sql = "INSERT INTO webcal_entry ( " . implode(", ", $names) . " ) VALUES ( " . implode(", ", $values) . " )";
            }
            if (empty($error)) {
                $sqlLog .= $sql . "<br />\n";
                //echo "SQL: $sql <br />\n";
                if (!dbi_query($sql)) {
                    $error .= "<p>" . translate("Database error") . ": " . dbi_error() . "</p>\n";
                    break;
                }
            }
            // log add/update
            activity_log($id, $login, $login, $updateMode ? $LOG_UPDATE : $LOG_CREATE, "Import from {$ImportType}");
            if ($single_user == "Y") {
                $participants[0] = $single_user_login;
            }
            // Now add to webcal_import_data
            if (!$updateMode) {
                if ($ImportType == "PALMDESKTOP") {
                    $sql = "INSERT INTO webcal_import_data ( cal_import_id, cal_id, " . "cal_login, cal_import_type, cal_external_id ) VALUES ( " . "{$importId}, {$id}, '{$calUser}', 'palm', '{$Entry['RecordID']}' )";
                    $sqlLog .= $sql . "<br />\n";
                    if (!dbi_query($sql)) {
                        $error = translate("Database error") . ": " . dbi_error();
                        break;
                    }
                } else {
                    if ($ImportType == "VCAL") {
                        $uid = empty($Entry['UID']) ? "null" : "'{$Entry['UID']}'";
                        if (strlen($uid) > 200) {
                            $uid = "NULL";
                        }
                        $sql = "INSERT INTO webcal_import_data ( cal_import_id, cal_id, " . "cal_login, cal_import_type, cal_external_id ) VALUES ( " . "{$importId}, {$id}, '{$calUser}', 'vcal', {$uid} )";
                        $sqlLog .= $sql . "<br />\n";
                        if (!dbi_query($sql)) {
                            $error = translate("Database error") . ": " . dbi_error();
                            break;
                        }
                    } else {
                        if ($ImportType == "ICAL") {
                            $uid = empty($Entry['UID']) ? "null" : "'{$Entry['UID']}'";
                            if (strlen($uid) > 200) {
                                $uid = "NULL";
                            }
                            $sql = "INSERT INTO webcal_import_data ( cal_import_id, cal_id, " . "cal_login, cal_import_type, cal_external_id ) VALUES ( " . "{$importId}, {$id}, '{$calUser}', 'ical', {$uid} )";
                            $sqlLog .= $sql . "<br />\n";
                            if (!dbi_query($sql)) {
                                $error = translate("Database error") . ": " . dbi_error();
                                break;
                            }
                        }
                    }
                }
            }
            // Now add participants
            if (!$updateMode) {
                $status = $login == "__public__" ? 'W' : 'A';
                if (empty($cat_id)) {
                    $cat_id = 'NULL';
                }
                $sql = "INSERT INTO webcal_entry_user " . "( cal_id, cal_login, cal_status, cal_category ) VALUES ( {$id}, '" . $participants[0] . "', '{$status}', {$cat_id} )";
                $sqlLog .= $sql . "<br />\n";
                if (!dbi_query($sql)) {
                    $error = translate("Database error") . ": " . dbi_error();
                    break;
                }
            }
            // Add repeating info
            if ($updateMode) {
                // remove old repeating info
                dbi_query("DELETE FROM webcal_entry_repeats WHERE cal_id = {$id}");
                dbi_query("DELETE FROM webcal_entry_repeats_not WHERE cal_id = {$id}");
            }
            if (!empty($Entry['Repeat']['Interval'])) {
                //while ( list($k,$v) = each ( $Entry['Repeat'] ) ) {
                //  echo "$k: $v <br />\n";
                //}
                $rpt_type = RepeatType($Entry['Repeat']['Interval']);
                $freq = $Entry['Repeat']['Frequency'] ? $Entry['Repeat']['Frequency'] : 1;
                if (strlen($Entry['Repeat']['EndTime'])) {
                    $REND = localtime($Entry['Repeat']['EndTime']);
                    $end = sprintf("%04d%02d%02d", $REND[5] + 1900, $REND[4] + 1, $REND[3]);
                } else {
                    $end = 'NULL';
                }
                $days = !empty($Entry['Repeat']['RepeatDays']) ? "'" . $Entry['Repeat']['RepeatDays'] . "'" : 'NULL';
                $sql = "INSERT INTO webcal_entry_repeats ( cal_id, " . "cal_type, cal_end, cal_days, cal_frequency ) VALUES " . "( {$id}, '{$rpt_type}', {$end}, {$days}, {$freq} )";
                $sqlLog .= $sql . "<br />\n";
                if (!dbi_query($sql)) {
                    $error = "Unable to add to webcal_entry_repeats: " . dbi_error() . "<br /><br />\n<b>SQL:</b> {$sql}";
                    break;
                }
                // Repeating Exceptions...
                if (!empty($Entry['Repeat']['Exceptions'])) {
                    foreach ($Entry['Repeat']['Exceptions'] as $ex_date) {
                        $ex_date = date("Ymd", $ex_date);
                        $sql = "INSERT INTO webcal_entry_repeats_not ( cal_id, cal_date ) VALUES ( {$id}, {$ex_date} )";
                        $sqlLog .= $sql . "<br />\n";
                        if (!dbi_query($sql)) {
                            $error = "Unable to add to webcal_entry_repeats_not: " . dbi_error() . "<br /><br />\n<b>SQL:</b> {$sql}";
                            break;
                        }
                    }
                }
            }
            // End Repeat
            // Add Alarm info -> site_extras
            if ($updateMode) {
                dbi_query("DELETE FROM webcal_site_extras WHERE cal_id = {$id}");
            }
            if ($Entry['AlarmSet'] == 1) {
                $RM = $Entry['AlarmAdvanceAmount'];
                if ($Entry['AlarmAdvanceType'] == 1) {
                    $RM = $RM * 60;
                }
                if ($Entry['AlarmAdvanceType'] == 2) {
                    $RM = $RM * 60 * 24;
                }
                $sql = "INSERT INTO webcal_site_extras ( cal_id, " . "cal_name, cal_type, cal_remind, cal_data ) VALUES " . "( {$id}, 'Reminder', 7, 1, {$RM} )";
                $sqlLog .= $sql . "<br />\n";
                if (!dbi_query($sql)) {
                    $error = translate("Database error") . ": " . dbi_error();
                }
            }
        }
        if (!empty($error) && empty($overlap)) {
            $error_num++;
            echo "<h2>" . translate("Error") . "</h2>\n<blockquote>\n";
            echo $error . "</blockquote>\n<br />\n";
        }
        // Conflicting
        if (!empty($overlap)) {
            echo "<b><h2>" . translate("Scheduling Conflict") . ": ";
            $count_con++;
            echo "</h2></b>";
            if ($Entry['Duration'] > 0) {
                $time = display_time($Entry['StartHour'] . $Entry['StartMinute'] . "00") . " - " . display_time($Entry['EndHour'] . $Entry['EndMinute'] . "00");
            }
            $dd = $Entry['StartMonth'] . "-" . $Entry['StartDay'] . "-" . $Entry['StartYear'];
            echo "<a class=\"entry\" href=\"view_entry.php?id={$id}";
            echo "\" onmouseover=\"window.status='" . translate("View this entry") . "'; return true;\" onmouseout=\"window.status=''; return true;\">";
            $Entry['Summary'] = str_replace("''", "'", $Entry['Summary']);
            $Entry['Summary'] = str_replace("'", "\\'", $Entry['Summary']);
            echo htmlspecialchars($Entry['Summary']);
            echo "</a> (" . $dd;
            $time = trim($time);
            if (!empty($time)) {
                echo "&nbsp; " . $time;
            }
            echo ")<br />\n";
            etranslate("conflicts with the following existing calendar entries");
            echo ":<ul>\n" . $overlap . "</ul>\n";
        } else {
            // No Conflict
            echo "<b><h2>" . translate("Event Imported") . ":</h2></b>\n";
            $count_suc++;
            if ($Entry['Duration'] > 0) {
                $time = display_time($Entry['StartHour'] . $Entry['StartMinute'] . "00") . " - " . display_time($Entry['EndHour'] . $Entry['EndMinute'] . "00");
            }
            $dateYmd = sprintf("%04d%02d%02d", $Entry['StartYear'], $Entry['StartMonth'], $Entry['StartDay']);
            $dd = date_to_str($dateYmd);
            echo "<a class=\"entry\" href=\"view_entry.php?id={$id}";
            echo "\" onmouseover=\"window.status='" . translate("View this entry") . "'; return true;\" onmouseout=\"window.status=''; return true;\">";
            $Entry['Summary'] = str_replace("''", "'", $Entry['Summary']);
            $Entry['Summary'] = str_replace("\\", "", $Entry['Summary']);
            echo htmlspecialchars($Entry['Summary']);
            echo "</a> (" . $dd;
            if (!empty($time)) {
                echo "&nbsp; " . $time;
            }
            echo ")<br />\n";
        }
        // Reset Variables
        $overlap = $error = $dd = $time = '';
    }
    // Mark old events from prior import as deleted.
    if ($overwrite && count($oldUIDs) > 0) {
        // We could do this with a single SQL using sub-select, but
        // I'm pretty sure MySQL does not support it.
        $old = array_keys($oldUIDs);
        for ($i = 0; $i < count($old); $i++) {
            $sql = "SELECT cal_id FROM webcal_import_data WHERE " . "cal_import_type = '{$type}' AND " . "cal_external_id = '{$old[$i]}' AND " . "cal_login = '******' AND " . "cal_id < {$firstEventId}";
            $res = dbi_query($sql);
            if ($res) {
                while ($row = dbi_fetch_row($res)) {
                    $oldIds[] = $row[0];
                }
                dbi_free_result($res);
            } else {
                echo translate("Database error") . ": " . dbi_error() . "<br />\n";
            }
        }
        for ($i = 0; $i < count($oldIds); $i++) {
            $sql = "UPDATE webcal_entry_user SET cal_status = 'D' " . "WHERE cal_id = {$oldIds[$i]}";
            $sqlLog .= $sql . "<br />\n";
            dbi_query($sql);
            $numDeleted++;
        }
    }
    //echo "<b>SQL:</b><br />\n$sqlLog\n";
}
Esempio n. 12
0
function delete_events($nid)
{
    // Get event ids for all events this user is a participant.
    $events = get_users_event_ids($nid);
    // Now count number of participants in each event...
    // If just 1, then save id to be deleted.
    $delete_em = array();
    for ($i = 0, $cnt = count($events); $i < $cnt; $i++) {
        $res = dbi_execute('SELECT COUNT( * ) FROM webcal_entry_user
      WHERE cal_id = ?', array($events[$i]));
        if ($res) {
            $row = dbi_fetch_row($res);
            if (!empty($row) && $row[0] == 1) {
                $delete_em[] = $events[$i];
            }
            dbi_free_result($res);
        }
    }
    // Now delete events that were just for this user.
    for ($i = 0, $cnt = count($delete_em); $i < $cnt; $i++) {
        dbi_execute('DELETE FROM webcal_entry_repeats WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_entry_repeats_not WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_entry_log WHERE cal_entry_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_import_data WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_site_extras WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_entry_ext_user WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_reminders WHERE cal_id =? ', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_blob WHERE cal_id = ?', array($delete_em[$i]));
        dbi_execute('DELETE FROM webcal_entry WHERE cal_id = ?', array($delete_em[$i]));
    }
    // Delete user participation from events.
    dbi_execute('DELETE FROM webcal_entry_user WHERE cal_login = ?', array($nid));
}
Esempio n. 13
0
function load_nonuser_preferences($nonuser)
{
    global $prefarray;
    $res = dbi_query("SELECT cal_setting, cal_value FROM webcal_user_pref " . "WHERE cal_login = '******'");
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $setting = $row[0];
            $value = $row[1];
            $sys_setting = "sys_" . $setting;
            // save system defaults
            // ** don't override ones set by load_user_prefs
            if (!empty($GLOBALS[$setting]) && empty($GLOBALS["sys_" . $setting])) {
                $GLOBALS["sys_" . $setting] = $GLOBALS[$setting];
            }
            $GLOBALS[$setting] = $value;
            $prefarray[$setting] = $value;
        }
        dbi_free_result($res);
    }
}
Esempio n. 14
0
function export_alarm_ical($id, $description)
{
    $sql = "SELECT cal_data FROM webcal_site_extras " . "WHERE cal_id = {$id} AND cal_type = 7 AND cal_remind = 1";
    $res = dbi_query($sql);
    $row = dbi_fetch_row($res);
    dbi_free_result($res);
    if ($row) {
        echo "BEGIN:VALARM\r\n";
        echo "TRIGGER:-PT" . $row[0] . "M\r\n";
        echo "ACTION:DISPLAY\r\n";
        $array = export_fold_lines($description, "utf8");
        while (list($key, $value) = each($array)) {
            echo "{$value}\r\n";
        }
        echo "END:VALARM\r\n";
    }
}
        while ($row = dbi_fetch_row($res)) {
            $events[] = $row[0];
        }
    }
    // Now count number of participants in each event...
    // If just 1, then save id to be deleted
    $delete_em = array();
    for ($i = 0; $i < count($events); $i++) {
        $res = dbi_query("SELECT COUNT(*) FROM webcal_entry_user " . "WHERE cal_id = " . $events[$i]);
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                if ($row[0] == 1) {
                    $delete_em[] = $events[$i];
                }
            }
            dbi_free_result($res);
        }
    }
    // Now delete events that were just for this user
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_query("DELETE FROM webcal_entry WHERE cal_id = " . $delete_em[$i]);
    }
    // Delete user participation from events
    dbi_query("DELETE FROM webcal_entry_user WHERE cal_login = '******'");
    // Delete any layers other users may have that point to this user.
    dbi_query("DELETE FROM webcal_user_layers WHERE cal_layeruser = '******'");
    // Delete user
    if (!dbi_query("DELETE FROM webcal_nonuser_cals WHERE cal_login = '******'")) {
        $error = translate("Database error") . ": " . dbi_error();
    }
} else {
Esempio n. 16
0
function get_installed_version($postinstall = false)
{
    global $database_upgrade_matrix, $PROGRAM_VERSION, $settings, $show_all_errors;
    // Set this as the default value.
    $_SESSION['application_name'] = 'Title';
    $_SESSION['blank_database'] = '';
    // We will append the db_type to come up te proper filename.
    $_SESSION['install_file'] = 'tables';
    $_SESSION['old_program_version'] = $postinstall ? $PROGRAM_VERSION : 'new_install';
    // Suppress errors based on $show_all_errors.
    if (!$show_all_errors) {
        show_errors(false);
    }
    // This data is read from file upgrade_matrix.php.
    for ($i = 0, $dbCntStr = count($database_upgrade_matrix); $i < $dbCntStr; $i++) {
        $sql = $database_upgrade_matrix[$i][0];
        if ($sql != '') {
            $res = dbi_execute($sql, array(), false, $show_all_errors);
        }
        if ($res) {
            $_SESSION['old_program_version'] = $database_upgrade_matrix[$i + 1][2];
            $_SESSION['install_file'] = $database_upgrade_matrix[$i + 1][3];
            $res = '';
            $sql = $database_upgrade_matrix[$i][1];
            if ($sql != '') {
                dbi_execute($sql, array(), false, $show_all_errors);
            }
        }
    }
    $response_msg = $_SESSION['old_program_version'] == 'pre-v0.9.07' ? translate('Perl script required') : translate('previous version requires updating several tables');
    // v1.1 and after will have an entry in webcal_config to make this easier
    // $res = dbi_execute ( 'SELECT cal_value FROM webcal_config
    //   WHERE cal_setting = \'WEBCAL_PROGRAM_VERSION\'', array (), false, false );
    // if ( $res ) {
    // $row = dbi_fetch_row ( $res );
    // if ( ! empty ( $row[0] ) ) {
    // $_SESSION['old_program_version'] = $row[0];
    // $_SESSION['install_file'] = 'upgrade_' . $row[0];
    // }
    // dbi_free_result ( $res );
    // }
    // We need to determine if this is a blank database.
    // This may be due to a manual table setup.
    $res = dbi_execute('SELECT COUNT( cal_value ) FROM webcal_config', array(), false, $show_all_errors);
    if ($res) {
        $row = dbi_fetch_row($res);
        if (isset($row[0]) && $row[0] == 0) {
            $_SESSION['blank_database'] = true;
        } else {
            // Make sure all existing values in config and pref tables are UPPERCASE.
            make_uppercase();
            // Clear db_cache. This will prevent looping when launching WebCalendar
            // if upgrading and WEBCAL_PROGRAM_VERSION is cached.
            if (!empty($settings['db_cachedir'])) {
                dbi_init_cache($settings['db_cachedir']);
            } else {
                if (!empty($settings['cachedir'])) {
                    dbi_init_cache($settings['cachedir']);
                }
            }
            // Delete existing WEBCAL_PROGRAM_VERSION number.
            dbi_execute('DELETE FROM webcal_config
        WHERE cal_setting = \'WEBCAL_PROGRAM_VERSION\'');
        }
        dbi_free_result($res);
        // Insert webcal_config values only if blank.
        db_load_config();
        // Check if an Admin account exists.
        $_SESSION['admin_exists'] = db_check_admin();
    }
    // Determine if old data has been converted to GMT.
    // This seems lke a good place to put this.
    $res = dbi_execute('SELECT cal_value FROM webcal_config
    WHERE cal_setting = \'WEBCAL_TZ_CONVERSION\'', array(), false, $show_all_errors);
    if ($res) {
        $row = dbi_fetch_row($res);
        dbi_free_result($res);
        // If not 'Y', prompt user to do conversion from server time to GMT time.
        if (!empty($row[0])) {
            $_SESSION['tz_conversion'] = $row[0];
        } else {
            // We'll test if any events even exist.
            $res = dbi_execute('SELECT COUNT( cal_id ) FROM webcal_entry ', array(), false, $show_all_errors);
            if ($res) {
                $row = dbi_fetch_row($res);
                dbi_free_result($res);
            }
            $_SESSION['tz_conversion'] = $row[0] > 0 ? 'NEEDED' : 'Y';
        }
        dbi_free_result($res);
    }
    // Don't show TZ conversion if blank database.
    if ($_SESSION['blank_database'] == true) {
        $_SESSION['tz_conversion'] = 'Y';
    }
    // Get existing server URL.
    // We could use the self-discvery value, but this may be a custom value.
    $res = dbi_execute('SELECT cal_value FROM webcal_config
    WHERE cal_setting = \'SERVER_URL\'', array(), false, $show_all_errors);
    if ($res) {
        $row = dbi_fetch_row($res);
        if (!empty($row[0]) && strlen($row[0])) {
            $_SESSION['server_url'] = $row[0];
        }
        dbi_free_result($res);
    }
    // Get existing application name.
    $res = dbi_execute('SELECT cal_value FROM webcal_config
    WHERE cal_setting = \'APPLICATION_NAME\'', array(), false, $show_all_errors);
    if ($res) {
        $row = dbi_fetch_row($res);
        if (!empty($row[0])) {
            $_SESSION['application_name'] = $row[0];
        }
        dbi_free_result($res);
    }
    // Enable warnings.
    show_errors(true);
}
Esempio n. 17
0
function user_has_boss($assistant)
{
    $ret = false;
    $res = dbi_query("SELECT * FROM webcal_asst as b " . "WHERE b.cal_assistant = '{$assistant}'");
    if ($res) {
        if (dbi_fetch_row($res)) {
            $ret = true;
        }
        dbi_free_result($res);
    }
    return $ret;
}
Esempio n. 18
0
function user_delete_user($user)
{
    // Get event ids for all events this user is a participant
    $events = get_users_event_ids($user);
    // Now count number of participants in each event...
    // If just 1, then save id to be deleted
    $delete_em = array();
    for ($i = 0; $i < count($events); $i++) {
        $res = dbi_execute('SELECT COUNT( * ) FROM webcal_entry_user WHERE cal_id = ?', array($events[$i]));
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                if ($row[0] == 1) {
                    $delete_em[] = $events[$i];
                }
            }
            dbi_free_result($res);
        }
    }
    // Now delete events that were just for this user
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_execute("DELETE FROM webcal_entry_repeats WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_entry_repeats_not WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_entry_log WHERE cal_entry_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_import_data WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_site_extras WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_entry_ext_user WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_reminders WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_blob WHERE cal_id = ?", array($delete_em[$i]));
        dbi_execute("DELETE FROM webcal_entry WHERE cal_id = ?", array($delete_em[$i]));
    }
    // Delete user participation from events
    dbi_execute("DELETE FROM webcal_entry_user WHERE cal_login = ?", array($user));
    // Delete preferences
    dbi_execute("DELETE FROM webcal_user_pref WHERE cal_login = ?", array($user));
    // Delete from groups
    dbi_execute("DELETE FROM webcal_group_user WHERE cal_login = ?", array($user));
    // Delete bosses & assistants
    dbi_execute("DELETE FROM webcal_asst WHERE cal_boss = ?", array($user));
    dbi_execute("DELETE FROM webcal_asst WHERE cal_assistant = ?", array($user));
    // Delete user's views
    $delete_em = array();
    $res = dbi_execute("SELECT cal_view_id FROM webcal_view WHERE cal_owner = ?", array($user));
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $delete_em[] = $row[0];
        }
        dbi_free_result($res);
    }
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_execute("DELETE FROM webcal_view_user WHERE cal_view_id = ?", array($delete_em[$i]));
    }
    dbi_execute("DELETE FROM webcal_view WHERE cal_owner = ?", array($user));
    //Delete them from any other user's views
    dbi_execute("DELETE FROM webcal_view_user WHERE cal_login = ?", array($user));
    // Delete layers
    dbi_execute("DELETE FROM webcal_user_layers WHERE cal_login = ?", array($user));
    // Delete any layers other users may have that point to this user.
    dbi_execute("DELETE FROM webcal_user_layers WHERE cal_layeruser = ?", array($user));
    // Delete user
    dbi_execute("DELETE FROM webcal_user WHERE cal_login = ?", array($user));
    // Delete function access
    dbi_execute("DELETE FROM webcal_access_function WHERE cal_login = ?", array($user));
    // Delete user access
    dbi_execute("DELETE FROM webcal_access_user WHERE cal_login = ?", array($user));
    dbi_execute("DELETE FROM webcal_access_user WHERE cal_other_user = ?", array($user));
    // Delete user's categories
    dbi_execute("DELETE FROM webcal_categories WHERE cat_owner = ?", array($user));
    dbi_execute("DELETE FROM webcal_entry_categories WHERE cat_owner = ?", array($user));
    // Delete user's reports
    $delete_em = array();
    $res = dbi_execute("SELECT cal_report_id FROM webcal_report WHERE cal_login = ?", array($user));
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $delete_em[] = $row[0];
        }
        dbi_free_result($res);
    }
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_execute("DELETE FROM webcal_report_template WHERE cal_report_id = ?", array($delete_em[$i]));
    }
    dbi_execute("DELETE FROM webcal_report WHERE cal_login = ?", array($user));
    //not sure about this one???
    dbi_execute("DELETE FROM webcal_report WHERE cal_user = ?", array($user));
    // Delete user templates
    dbi_execute("DELETE FROM webcal_user_template WHERE cal_login = ?", array($user));
}
Esempio n. 19
0
function dbtable_genid($tablename, $field)
{
    $ret = 1;
    $sql = 'SELECT MAX( ' . $field . ' ) FROM ' . $tablename;
    $res = dbi_execute($sql);
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            $ret = $row[0] + 1;
        }
        dbi_free_result($res);
    }
    return $ret;
}
Esempio n. 20
0
function print_header($includes = '', $HeadX = '', $BodyX = '', $disableCustom = false, $disableStyle = false)
{
    global $application_name;
    global $FONTS, $WEEKENDBG, $THFG, $THBG;
    global $TABLECELLFG, $TODAYCELLBG, $TEXTCOLOR;
    global $POPUP_FG, $BGCOLOR;
    global $LANGUAGE;
    global $CUSTOM_HEADER, $CUSTOM_SCRIPT;
    global $friendly;
    global $bodyid, $self, $popup;
    global $CUSTOM_TRAILER, $c, $STARTVIEW;
    global $login, $user, $cat_id, $categories_enabled, $thisyear, $thismonth, $thisday, $DATE_FORMAT_MY, $WEEK_START, $DATE_FORMAT_MD, $readonly, $is_admin, $public_access, $public_access_can_add, $single_user, $use_http_auth, $login_return_path, $require_approvals, $is_nonuser_admin, $public_access_others, $allow_view_other, $views, $reports_enabled, $LAYER_STATUS, $nonuser_enabled, $groups_enabled, $fullname, $has_boss;
    $lang = '';
    if (!empty($LANGUAGE)) {
        $lang = languageToAbbrev($LANGUAGE);
    }
    if (empty($lang)) {
        $lang = 'en';
    }
    // Start the header & specify the charset
    // The charset is defined in the translation file
    if (!empty($LANGUAGE)) {
        $charset = translate("charset");
        if ($charset != "charset") {
            echo "<?xml version=\"1.0\" encoding=\"{$charset}\"?>\r\n<!DOCTYPE html\r\n  PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\r\n  \"DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"{$lang}\" lang=\"{$lang}\">\r\n<head>\r\n  <title>" . translate($application_name) . "</title>\n";
        } else {
            echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\r\n<!DOCTYPE html\r\n  PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\r\n  \"DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\r\n<head>\r\n  <title>" . translate($application_name) . "</title>\n";
        }
    }
    // Any other includes?
    if (is_array($includes)) {
        foreach ($includes as $inc) {
            include_once 'includes/' . $inc;
        }
    }
    // Do we need anything else inside the header tag?
    if ($HeadX) {
        echo $HeadX . "\n";
    }
    // Include the styles
    if (!$disableStyle) {
        echo '<link rel="stylesheet" type="text/css" href="includes/styles.php">';
    }
    // Add custom script/stylesheet if enabled
    if ($CUSTOM_SCRIPT == 'Y' && !$disableCustom) {
        $res = dbi_query("SELECT cal_template_text FROM webcal_report_template " . "WHERE cal_template_type = 'S' and cal_report_id = 0");
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                echo $row[0];
            }
            dbi_free_result($res);
        }
    }
    // Include includes/print_styles.css as a media="print" stylesheet. When the
    // user clicks on the "Printer Friendly" link, $friendly will be non-empty,
    // including this as a normal stylesheet so they can see how it will look
    // when printed. This maintains backwards-compatibility for browsers that
    // don't support media="print" stylesheets
    echo "<link rel=\"stylesheet\" type=\"text/css\"" . (empty($friendly) ? " media=\"print\"" : "") . " href=\"includes/print_styles.css\" />\n";
    // Link to favicon
    echo "<link rel=\"shortcut icon\" href=\"favicon.ico\" type=\"image/x-icon\" />\n";
    // encodage
    echo '<meta http-equiv="Content-Type" Content="text/html; charset=ISO-8859-1">' . "\n";
    // fonctions vincent
    include_once 'includes/fonctions_vincent.php';
    JSpopup();
    // Finish the header
    echo "</head>\n<body";
    // Find the filename of this page and give the <body> tag the corresponding id
    $thisPage = substr($self, strrpos($self, '/') + 1);
    if (isset($bodyid[$thisPage])) {
        echo " id=\"" . $bodyid[$thisPage] . "\"";
    }
    // Add any extra parts to the <body> tag
    if (!empty($BodyX)) {
        echo " {$BodyX}";
    }
    // ajout du bandeau haras nationnaux
    if ($popup == true) {
        echo ">\n";
    } else {
        echo " style=\"background-image:url(images_haras/fond_bandeau.jpg);background-repeat:no-repeat;\">\n";
    }
    // Add custom header if enabled
    if ($CUSTOM_HEADER == 'Y' && !$disableCustom) {
        $res = dbi_query("SELECT cal_template_text FROM webcal_report_template " . "WHERE cal_template_type = 'H' and cal_report_id = 0");
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                echo $row[0];
            }
            dbi_free_result($res);
        }
    }
    // bandeau haras nationnaux
    if ($popup != true) {
        ?>

  <!-- <a href="http://xinf-prodlinux/hn2g/"><div style="position:fixed;top:30px;width:300px;height:70px;"></div></a> -->
<script>
function modPform(type) {
//alert (type);
if (type=='annuHN') {
   window.document.searchformentry.target='_new';
   window.document.searchformentry.action='http://xinf-prodlinux/intra_drh/html/list_pers.php?lc_prmev[ro]=C&lc_prmev[typers]=I&lc_prmev[aff_pop]=Y&tf_PER_LLNOMPERS=INPLIKE&cfrf=true&tf_DRH_LLACTIVITE=LDMEG&sp_DRH_LLACTIVITE=ACTN:CPA:MTT:CMAT:CMATNR';
   }
else {
      window.document.searchformentry.target='_self';
   window.document.searchformentry.action='search_handler.php';
    }
}

</script>  
  <div class="bandeauharas">
  <form action="search_handler.php" name="searchformentry" method="POST" style="margin:0px;">
    recherche <input class="gris11px"  onfocus="modPform('intsearch')" type="text" style="width:100px" name="keywords" size="20"><img title="rechercher avec le moteur de recherche" src="images_haras/puce_rechercher.gif" alt="lancer la recherche" height="19" width="21" align="absmiddle" border="0" onclick="modPform('intsearch'); document.searchformentry.submit();"><img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0">
    annuaire HN&nbsp;<input class="gris11px" onfocus="modPform('annuHN')" type="text" style="width:100px" name="rq_PER_LLNOMPERS" size="20"><img title="rechercher dans l'annuaire des HN" src="images_haras/puce_rechercher.gif" alt="" height="19" width="21" align="absmiddle" border="0" onclick="modPform('annuHN'); window.document.searchformentry.submit()"><a href="http://xinf-prodlinux/intra_drh/html/req_rech_pers.php?prech=CI&lc_prmev[aff_pop]=Y" target=_"blank">
    <img title="recherche avancée dans l'annuaire des HN" src="images_haras/puce_avance.gif" alt="" name="puce_avancee2" height="19" width="62" align="absmiddle" border="0"></a>
<?php 
        // les vues
        echo '<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0">';
        if ($login != "__public__" && ($allow_view_other != "N" || $is_admin)) {
            ?>
  <select name="Vues" size="0" onchange="if(this.value) { location.href = this.value; }">
  <option disabled selected>Vos vues</option>
  <option value="views.php">Gérer vos vues</option>
  <option disabled value="">----------</option>
  <?php 
            for ($i = 0; $i < count($views); $i++) {
                echo '<option value="';
                if ($views[$i]['cal_view_type'] == 'W') {
                    echo "view_w.php?";
                } elseif ($views[$i]['cal_view_type'] == 'D') {
                    echo "view_d.php?";
                } elseif ($views[$i]['cal_view_type'] == 'V') {
                    echo "view_v.php?";
                } elseif ($views[$i]['cal_view_type'] == 'T') {
                    echo "view_t.php?timeb=0&amp;";
                } elseif ($views[$i]['cal_view_type'] == 'M') {
                    echo "view_m.php?";
                } elseif ($views[$i]['cal_view_type'] == 'L') {
                    echo "view_l.php?";
                } elseif ($views[$i]['cal_view_type'] == 'S') {
                    echo "view_t.php?timeb=1&amp;";
                } else {
                    echo "view_m.php?";
                }
                echo "id=" . $views[$i]['cal_view_id'];
                if (!empty($thisdate)) {
                    echo "&amp;date={$thisdate}";
                }
                echo '">' . $views[$i]['cal_name'] . '</option>';
            }
            echo '</select>';
        } else {
            echo '<select disabled="disabled"><option>Vos vues</option></select>';
        }
        if ($login != '__public__') {
            echo '<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0"><a class="grisorange" href="import.php"  title="Importez et exporter votre calendrier">Import / Export</a>';
        } else {
            echo '<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0">Import / Export';
        }
        ?>
<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0"><a class="grisorange" href="#" onclick="window.open ( 'help_index.php', 'cal_help', 'dependent,menubar,scrollbars,height=400,width=400,innerHeight=420,outerWidth=420' );" onmouseover="window.status='Aide'"  title="Obtenir de l'aide">Aide</a>
<?
if ( $is_admin ) {
  echo '<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0"><a class="grisorange" href="adminhome.php" title="Accéder À l\'espace d\'administration">Admin</a>';
} else {
      echo '<img src="images_haras/separation_haut.gif" alt="" height="19" width="13" align="absmiddle" border="0">Admin';
}




  ?>
  </span>
</form>

  </div>
  <div style="top:45px;left:400px;position:absolute;font-size:12px;">
    <div id="menu">
  <?php 
        $can_add = $readonly == "N" || $is_admin == "Y";
        if ($public_access == "Y" && $public_access_can_add != "Y" && $login == "__public__") {
            $can_add = false;
        }
        if (!empty($GLOBALS['STARTVIEW'])) {
            $mycal = $GLOBALS['STARTVIEW'] . ".php";
        } else {
            $mycal = "index.php";
        }
        if ($single_user != "Y") {
            if (!empty($user) && $user != $login) {
                echo "<a title=\"Retour à mon agenda\" style=\"font-weight:bold;\" href=\"{$mycal}\">" . translate("Back to My Calendar") . "</a>";
            } else {
                echo "<a title=\"" . translate("My Calendar") . "\" style=\"font-weight:bold;\" href=\"{$mycal}\">" . translate("My Calendar") . "</a>\n";
            }
            if (!empty($user) && $user != $login) {
                $todayURL .= '?user='******'list_unapproved.php';
                if ($is_nonuser_admin) {
                    $url .= "?user={$user}";
                }
                echo " | <a title=\"Permet de valider les évènement en attente d'approbation\" style=\"font-weight:bold;\" href=\"{$url}\">" . translate("Unapproved Events") . "</a>\n";
            }
            if ($login == "__public__" && $public_access_others != "Y") {
                // don't allow them to see other people's calendar
            } else {
                if ($allow_view_other == "Y" || $is_admin) {
                    //echo " | <a title=\"" .
                    translate("Another User's Calendar") . "\" href=\"select_user.php\">" . translate("Another User's Calendar") . "</a>\n";
                }
            }
        } else {
            echo "<a title=\"" . translate("My Calendar") . "\" style=\"font-weight:bold;\" href=\"{$mycal}\">" . translate("My Calendar") . "</a>\n";
            echo " | <a title=\"" . translate("Today") . "\" style=\"font-weight:bold;\" href=\"{$todayURL}\">" . translate("Today") . "</a>\n";
        }
        // only display some links if we're viewing our own calendar.
        if (empty($user) || $user == $login) {
            if ($can_add) {
                echo " | <a title=\"Ajouter un évènement\" style=\"font-weight:bold;\" href=\"edit_entry.php";
                if (!empty($thisyear)) {
                    print "?year={$thisyear}";
                    if (!empty($thismonth)) {
                        print "&amp;month={$thismonth}";
                    }
                    if (!empty($thisday)) {
                        print "&amp;day={$thisday}";
                    }
                }
                echo "\">" . translate("Add New Entry") . "</a>\n";
            }
        }
        if (empty($user) || $user == $login) {
            if ($login != '__public__') {
                echo " | <a title=\"Déconnexion\" style=\"font-weight:bold;\" href=\"login.php\">Déconnexion</a>\n";
            } else {
                echo " | <a title=\"Déconnexion\" style=\"font-weight:bold;\" href=\"login.php\">Connexion</a>\n";
            }
        }
        ?>

     </div>
  </div>
  <div style="padding-top:100px;">

  <?php 
    }
}
Esempio n. 21
0
function get_ids($sql, $ALL = '')
{
    global $sqlLog;
    $ids = array();
    $sqlLog .= $sql . "<br />\n";
    $res = dbi_execute($sql);
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            if ($ALL == 1) {
                $ids[] = $row[0];
            } else {
                //ONLY Delete event if no other participants.
                $ID = $row[0];
                $res2 = dbi_execute('SELECT COUNT( * ) FROM webcal_entry_user
          WHERE cal_id = ?', array($ID));
                if ($res2) {
                    if ($row2 = dbi_fetch_row($res2)) {
                        if ($row2[0] == 1) {
                            $ids[] = $ID;
                        }
                    }
                    dbi_free_result($res2);
                }
            }
            // End if ($ALL)
        }
        // End while
    }
    dbi_free_result($res);
    return $ids;
}
Esempio n. 22
0
function get_ids($sql)
{
    $ids = array();
    $res = dbi_query($sql);
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $ids[] = $row['cal_id'];
        }
    }
    dbi_free_result($res);
    return $ids;
}
Esempio n. 23
0
/**
 * Get a list of users and return info in an array.
 *
 * @return array Array of user info
 */
function user_get_users($publicOnly = false)
{
    global $PUBLIC_ACCESS, $PUBLIC_ACCESS_FULLNAME, $USER_SORT_ORDER;
    $count = 0;
    $ret = array();
    if ($PUBLIC_ACCESS == 'Y') {
        $ret[$count++] = array('cal_login' => '__public__', 'cal_lastname' => '', 'cal_firstname' => '', 'cal_is_admin' => 'N', 'cal_email' => '', 'cal_password' => '', 'cal_fullname' => $PUBLIC_ACCESS_FULLNAME);
    }
    if ($publicOnly) {
        return $ret;
    }
    0 - ($order1 = empty($USER_SORT_ORDER) ? 'cal_lastname, cal_firstname,' : "{$USER_SORT_ORDER},");
    $res = dbi_execute('SELECT cal_login, cal_lastname, cal_firstname,
    cal_is_admin, cal_email, cal_passwd FROM webcal_user
    ORDER BY $order1 cal_login');
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            if (strlen($row[1]) && strlen($row[2])) {
                $fullname = $order1 == 'cal_lastname, cal_firstname,' ? "{$row['1']} {$row['2']}" : "{$row['2']} {$row['1']}";
            } else {
                $fullname = $row[0];
            }
            $ret[$count++] = array('cal_login' => $row[0], 'cal_lastname' => $row[1], 'cal_firstname' => $row[2], 'cal_is_admin' => $row[3], 'cal_email' => empty($row[4]) ? '' : $row[4], 'cal_password' => $row[5], 'cal_fullname' => $fullname);
        }
        dbi_free_result($res);
    }
    //no need to call sort_users () as the sql can sort for us
    return $ret;
}
Esempio n. 24
0
function lcs_import_data($data, $overwrite, $type)
{
    global $login, $count_con, $count_suc, $error_num, $ImportType;
    global $single_user, $single_user_login, $numDeleted, $errormsg;
    global $ALLOW_CONFLICTS, $ALLOW_CONFLICT_OVERRIDE, $H2COLOR;
    global $calUser, $sqlLog, $message;
    $oldUIDs = array();
    $oldIds = array();
    $firstEventId = $count_suc = 0;
    $ImportType = 'ICAL';
    // $importId = -1;
    $importId = 1;
    $subType = '';
    if ($type == 'icalclient') {
        $ImportType = 'ICAL';
        $type = 'ical';
        $subType = 'icalclient';
    } else {
        if ($type == 'remoteics' || $type == 'hcal') {
            $ImportType = 'RMTICS';
            $type = 'rmtics';
            $subType = 'remoteics';
        }
    }
    if ($overwrite) {
        //on efface tous les evenement edt du user
        //recherche du cat_id
        $res = dbi_execute('SELECT cat_id FROM webcal_categories WHERE cat_owner = ? AND cat_name = ?', array($login, 'EDT'));
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                $id_cat = $row[0];
            }
            dbi_free_result($res);
        }
        //recherche des cal_id
        $res = dbi_execute('SELECT cal_id FROM webcal_entry_categories WHERE cat_id = ' . $id_cat);
        if ($res) {
            $i = 0;
            while ($row = dbi_fetch_row($res)) {
                $id_cals[$i] = $row[0];
                $i++;
            }
            dbi_free_result($res);
        }
        $message .= 'Ev&#233;nements supprim&#233;s : ' . count($id_cals) . '<br />';
        if (isset($id_cals)) {
            foreach ($id_cals as $id_cals) {
                // Delete event  for this user
                dbi_execute('DELETE FROM webcal_entry WHERE cal_id = ?', array($id_cals));
                dbi_execute('DELETE FROM webcal_entry_user WHERE cal_id = ?', array($id_cals));
                dbi_execute('DELETE FROM webcal_import_data WHERE cal_id = ?', array($id_cals));
                dbi_execute('DELETE FROM webcal_entry_log WHERE cal_entry_id = ?', array($id_cals));
            }
        }
        dbi_execute('DELETE FROM webcal_entry_categories WHERE cat_id = ' . $id_cat);
    }
    // Generate a unique import id
    $res = dbi_execute('SELECT MAX(cal_import_id) FROM webcal_import');
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            $importId = $row[0] + 1;
        }
        dbi_free_result($res);
    }
    $sql = 'INSERT INTO webcal_import ( cal_import_id, cal_name,
    cal_date, cal_type, cal_login ) VALUES ( ?, NULL, ?, ?, ? )';
    if (!dbi_execute($sql, array($importId, date('Ymd'), $type, $login))) {
        $errormsg = db_error();
        $my_errormsg .= db_error();
        return;
    }
    if (!is_array($data)) {
        return false;
    }
    foreach ($data as $Entry) {
        // do_debug ( "Entry Array " . print_r ( $Entry, true ) );
        $participants[0] = $calUser;
        // $participants[0] = $login;
        $Entry['start_date'] = gmdate('Ymd', $Entry['StartTime']);
        $Entry['start_time'] = gmdate('His', $Entry['StartTime']);
        $Entry['end_date'] = gmdate('Ymd', $Entry['EndTime']);
        $Entry['end_time'] = gmdate('His', $Entry['EndTime']);
        // not in icalclient
        if ($overwrite && !empty($Entry['UID'])) {
            if (empty($oldUIDs[$Entry['UID']])) {
                $oldUIDs[$Entry['UID']] = 1;
            } else {
                $oldUIDs[$Entry['UID']]++;
            }
        }
        // Check for untimed
        if (!empty($Entry['Untimed']) && $Entry['Untimed'] == 1) {
            $Entry['start_time'] = 0;
        }
        // Check for all day
        if (!empty($Entry['AllDay']) && $Entry['AllDay'] == 1) {
            $Entry['start_time'] = 0;
            $Entry['end_time'] = 0;
            $Entry['Duration'] = '1440';
        }
        $priority = !empty($Entry['Priority']) ? $Entry['Priority'] : 5;
        if (!empty($Entry['Completed'])) {
            $cal_completed = substr($Entry['Completed'], 0, 8);
        } else {
            $cal_completed = '';
        }
        if (strlen($cal_completed < 8)) {
            $cal_completed = '';
        }
        $months = !empty($Entry['Repeat']['ByMonth']) ? $Entry['Repeat']['ByMonth'] : '';
        $updateMode = false;
        // See if event already is there from prior import.
        // The same UID is used for all events imported at once with iCal.
        // So, we still don't have enough info to find the exact
        // event we want to replace. We could just delete all
        // existing events that correspond to the UID.
        // NOTE:(cek) commented out 'publish'. Will not work if event
        // was originally created from importing.
        if (!empty($Entry['UID'])) {
            $res = dbi_execute('SELECT wid.cal_id ' . 'FROM webcal_import_data wid, webcal_entry_user weu WHERE ' . 'wid.cal_id = weu.cal_id AND ' . 'weu.cal_login = ? AND ' . 'cal_external_id = ?', array($login, $Entry['UID']));
            if ($res) {
                if ($row = dbi_fetch_row($res)) {
                    if (!empty($row[0])) {
                        $id = $row[0];
                        $updateMode = true;
                        // update rather than add a new event
                    }
                }
            }
        }
        if (!$updateMode && $subType != 'icalclient' && $subType != 'remoteics') {
            // first check for any schedule conflicts
            if ($ALLOW_CONFLICT_OVERRIDE == 'N' && $ALLOW_CONFLICTS == 'N' && $Entry['Duration'] != 0) {
                $ex_days = array();
                if (!empty($Entry['Repeat']['Exceptions'])) {
                    foreach ($Entry['Repeat']['Exceptions'] as $ex_date) {
                        $ex_days[] = gmdate('Ymd', $ex_date);
                    }
                }
                $inc_days = array();
                if (!empty($Entry['Repeat']['Inclusions'])) {
                    foreach ($Entry['Repeat']['Inclusions'] as $inc_date) {
                        $inc_days[] = gmdate('Ymd', $inc_date);
                    }
                }
                // test if all Repeat Elements exist
                $rep_interval = !empty($Entry['Repeat']['Interval']) ? $Entry['Repeat']['Interval'] : '';
                $rep_bymonth = !empty($Entry['Repeat']['ByMonth']) ? $Entry['Repeat']['ByMonth'] : '';
                $rep_byweekno = !empty($Entry['Repeat']['ByWeekNo']) ? $Entry['Repeat']['ByWeekNo'] : '';
                $rep_byyearday = !empty($Entry['Repeat']['ByYearDay']) ? $Entry['Repeat']['ByYearDay'] : '';
                $rep_byweekno = !empty($Entry['Repeat']['ByWeekNo']) ? $Entry['Repeat']['ByWeekNo'] : '';
                $rep_byweekno = !empty($Entry['Repeat']['ByWeekNo']) ? $Entry['Repeat']['ByWeekNo'] : '';
                $rep_byweekno = !empty($Entry['Repeat']['ByWeekNo']) ? $Entry['Repeat']['ByWeekNo'] : '';
                $rep_bymonthday = !empty($Entry['Repeat']['ByMonthDay']) ? $Entry['Repeat']['ByMonthDay'] : '';
                $rep_byday = !empty($Entry['Repeat']['ByDay']) ? $Entry['Repeat']['ByDay'] : '';
                $rep_bysetpos = !empty($Entry['Repeat']['BySetPos']) ? $Entry['Repeat']['BySetPos'] : '';
                $rep_count = !empty($Entry['Repeat']['Count']) ? $Entry['Repeat']['Count'] : '';
                $rep_until = !empty($Entry['Repeat']['Until']) ? $Entry['Repeat']['Until'] : '';
                $rep_wkst = !empty($Entry['Repeat']['Wkst']) ? $Entry['Repeat']['Wkst'] : '';
                $dates = get_all_dates($Entry['StartTime'], RepeatType($Entry['Repeat']['Frequency']), $rep_interval, array($rep_bymonth, $rep_byweekno, $rep_byyearday, $rep_bymonthday, $rep_byday, $rep_bysetpos), $rep_count, $rep_until, $rep_wkst, $ex_days, $inc_days);
                $overlap = check_for_conflicts($dates, $Entry['Duration'], $Entry['StartTime'], $participants, $login, 0);
            }
        }
        //end  $subType != 'icalclient' && != 'remoteics'
        if (empty($error)) {
            if (!$updateMode) {
                // Add the Event
                $res = dbi_execute('SELECT MAX(cal_id) FROM webcal_entry');
                if ($res) {
                    $row = dbi_fetch_row($res);
                    $id = $row[0] + 1;
                    dbi_free_result($res);
                } else {
                    $id = 1;
                }
            }
            // not in icalclient
            if ($firstEventId == 0) {
                $firstEventId = $id;
            }
            $names = array();
            $values = array();
            $names[] = 'cal_id';
            $values[] = $id;
            if (!$updateMode) {
                $names[] = 'cal_create_by';
                $values[] = $ImportType == 'RMTICS' ? $calUser : $login;
            }
            $names[] = 'cal_date';
            $values[] = $Entry['start_date'];
            $names[] = 'cal_time';
            $values[] = !empty($Entry['Untimed']) && $Entry['Untimed'] == 1 ? '-1' : $Entry['start_time'];
            $names[] = 'cal_mod_date';
            $values[] = gmdate('Ymd');
            $names[] = 'cal_mod_time';
            $values[] = gmdate('Gis');
            $names[] = 'cal_duration';
            $values[] = sprintf("%d", $Entry['Duration']);
            $names[] = 'cal_priority';
            $values[] = $priority;
            if (!empty($Entry['Class'])) {
                $names[] = 'cal_access';
                $entryclass = $Entry['Class'];
                $values[] = $entryclass;
            }
            if (!empty($Entry['Location'])) {
                $names[] = 'cal_location';
                $entryclass = $Entry['Location'];
                $values[] = $entryclass;
            }
            if (!empty($Entry['URL'])) {
                $names[] = 'cal_url';
                $entryclass = $Entry['URL'];
                $values[] = $entryclass;
            }
            if (!empty($cal_completed)) {
                $names[] = 'cal_completed';
                $values[] = $cal_completed;
            }
            if (!empty($Entry['Due'])) {
                $names[] = 'cal_due_date';
                $values[] = sprintf("%d", substr($Entry['Due'], 0, 8));
                $names[] = 'cal_due_time';
                $values[] = sprintf("%d", substr($Entry['Due'], 9, 6));
            }
            if (!empty($Entry['CalendarType'])) {
                $names[] = 'cal_type';
                if ($Entry['CalendarType'] == 'VEVENT' || $Entry['CalendarType'] == 'VFREEBUSY') {
                    $values[] = !empty($Entry['Repeat']) ? 'M' : 'E';
                } else {
                    if ($Entry['CalendarType'] == 'VTODO') {
                        $values[] = !empty($Entry['Repeat']) ? 'N' : 'T';
                    }
                }
            }
            if (strlen($Entry['Summary']) == 0) {
                $Entry['Summary'] = translate('Unnamed Event');
            }
            if (empty($Entry['Description'])) {
                $Entry['Description'] = $Entry['Summary'];
            }
            $Entry['Summary'] = str_replace("\\n", "\n", $Entry['Summary']);
            $Entry['Summary'] = str_replace("\\'", "'", $Entry['Summary']);
            $Entry['Summary'] = str_replace("\\\"", "\"", $Entry['Summary']);
            $Entry['Summary'] = str_replace("'", "\\'", $Entry['Summary']);
            $names[] = 'cal_name';
            $values[] = $Entry['Summary'];
            $Entry['Description'] = str_replace("\\n", "\n", $Entry['Description']);
            $Entry['Description'] = str_replace("\\'", "'", $Entry['Description']);
            $Entry['Description'] = str_replace("\\\"", "\"", $Entry['Description']);
            $Entry['Description'] = str_replace("'", "\\'", $Entry['Description']);
            // added these to try and compensate for Sunbird escaping html
            $Entry['Description'] = str_replace("\\;", ";", $Entry['Description']);
            $Entry['Description'] = str_replace("\\,", ",", $Entry['Description']);
            // Mozilla will send this goofy string, so replace it with real html
            $Entry['Description'] = str_replace('=0D=0A=', '<br />', $Entry['Description']);
            $Entry['Description'] = str_replace('=0D=0A', '', $Entry['Description']);
            // Allow option to not limit description size
            // This will only be practical for mysql and MSSQL/Postgres as
            // these do not have limits on the table definition
            // TODO Add this option to preferences
            if (empty($LIMIT_DESCRIPTION_SIZE) || $LIMIT_DESCRIPTION_SIZE == 'Y') {
                // limit length to 1024 chars since we setup tables that way
                if (strlen($Entry['Description']) >= 1024) {
                    $Entry['Description'] = substr($Entry['Description'], 0, 1019) . '...';
                }
            }
            $names[] = 'cal_description';
            $values[] = $Entry['Description'];
            // do_debug ( "descr='" . $Entry['Description'] . "'" );
            $sql_params = array();
            $namecnt = count($names);
            if ($updateMode) {
                $sql = 'UPDATE webcal_entry SET ';
                for ($f = 0; $f < $namecnt; $f++) {
                    if ($f > 0) {
                        $sql .= ', ';
                    }
                    $sql .= $names[$f] . ' = ?';
                    $sql_params[] = $values[$f];
                }
                $sql .= ' WHERE cal_id = ?';
                $sql_params[] = $id;
            } else {
                $string_names = '';
                $string_values = '';
                for ($f = 0; $f < $namecnt; $f++) {
                    if ($f > 0) {
                        $string_names .= ', ';
                        $string_values .= ', ';
                    }
                    $string_names .= $names[$f];
                    $string_values .= '?';
                    $sql_params[] = $values[$f];
                }
                $sql = 'INSERT INTO webcal_entry ( ' . $string_names . ' ) VALUES ( ' . $string_values . ' )';
            }
            //do_debug ( date("H:i:s")." entry SQL> $sql" );
            if (empty($error)) {
                if (!dbi_execute($sql, $sql_params)) {
                    $error .= db_error();
                    // do_debug ( $error );
                    break;
                } else {
                    if ($ImportType == 'RMTICS') {
                        $count_suc++;
                    }
                }
            }
            // log add/update
            if ($Entry['CalendarType'] == 'VTODO') {
                activity_log($id, $login, $calUser, $updateMode ? LOG_UPDATE_T : LOG_CREATE_T, 'Import from ' . $ImportType);
            } else {
                activity_log($id, $login, $calUser, $updateMode ? LOG_UPDATE : LOG_CREATE, 'Import from ' . $ImportType);
            }
            // not in icalclient
            if ($single_user == 'Y') {
                $participants[0] = $single_user_login;
            }
            // Now add to webcal_import_data
            if (!$updateMode) {
                // only in icalclient
                // add entry to webcal_import and webcal_import_data
                $uid = generate_uid($id);
                $uid = empty($Entry['UID']) ? $uid : $Entry['UID'];
                if ($importId < 0) {
                    $importId = create_import_instance();
                }
                if ($ImportType == 'PALMDESKTOP') {
                    $sql = 'INSERT INTO webcal_import_data ( cal_import_id, cal_id,
            cal_login, cal_import_type, cal_external_id )
            VALUES ( ?, ?, ?, ?, ? )';
                    $sqlLog .= $sql . "<br />\n";
                    if (!dbi_execute($sql, array($importId, $id, $calUser, 'palm', $Entry['RecordID']))) {
                        $error = db_error();
                        break;
                    }
                } else {
                    if ($ImportType == 'VCAL') {
                        $uid = empty($Entry['UID']) ? null : $Entry['UID'];
                        if (strlen($uid) > 200) {
                            $uid = null;
                        }
                        $sql = 'INSERT INTO webcal_import_data ( cal_import_id, cal_id,
            cal_login, cal_import_type, cal_external_id )
            VALUES ( ?, ?, ?, ?, ? )';
                        $sqlLog .= $sql . "<br />\n";
                        if (!dbi_execute($sql, array($importId, $id, $calUser, 'vcal', $uid))) {
                            $error = db_error();
                            break;
                        }
                    } else {
                        if ($ImportType == 'ICAL') {
                            $uid = empty($Entry['UID']) ? null : $Entry['UID'];
                            // This may cause problems
                            if (strlen($uid) > 200) {
                                $uid = substr($uid, 0, 200);
                            }
                            $sql = 'INSERT INTO webcal_import_data ( cal_import_id, cal_id,
            cal_login, cal_import_type, cal_external_id )
            VALUES ( ?, ?, ?, ?, ? )';
                            $sqlLog .= $sql . "<br />\n";
                            if (!dbi_execute($sql, array($importId, $id, $calUser, 'ical', $uid))) {
                                $error = db_error();
                                break;
                            }
                        }
                    }
                }
            }
            // Now add participants
            $status = !empty($Entry['Status']) ? $Entry['Status'] : 'A';
            $percent = !empty($Entry['Percent']) ? $Entry['Percent'] : '0';
            if (!$updateMode) {
                $sql = 'INSERT INTO webcal_entry_user
          ( cal_id, cal_login, cal_status, cal_percent )
          VALUES ( ?, ?, ?, ? )';
                //( date("H:i:s")."add part SQL> $sql" );
                if (!dbi_execute($sql, array($id, $participants[0], $status, $percent))) {
                    $error = db_error();
                    // do_debug ( "Error: " . $error );
                    break;
                }
            } else {
                // ( date("H:i:s")." up part SQL> $sql" );
                $sql = 'UPDATE webcal_entry_user SET cal_status = ?
          WHERE cal_id = ?';
                if (!dbi_execute($sql, array($status, $id))) {
                    $error = db_error();
                    // do_debug ( "Error: " . $error );
                    break;
                }
                // update percentage only if set
                if ($percent != '') {
                    $sql = 'UPDATE webcal_entry_user SET cal_percent = ?
            WHERE cal_id = ?';
                    if (!dbi_execute($sql, array($percent, $id))) {
                        $error = db_error();
                        // do_debug ( "Error: " . $error );
                        break;
                    }
                }
                dbi_execute('DELETE FROM webcal_entry_categories WHERE cal_id = ?', array($id));
            }
            // update Categories
            if (!empty($Entry['Categories'])) {
                $cat_ids = $Entry['Categories'];
                $cat_order = 1;
                foreach ($cat_ids as $cat_id) {
                    $sql = 'INSERT INTO webcal_entry_categories
            ( cal_id, cat_id, cat_order, cat_owner ) VALUES ( ?, ?, ?, ? )';
                    if (!dbi_execute($sql, array($id, $cat_id, $cat_order++, $login))) {
                        $error = db_error();
                        // do_debug ( "Error: " . $error );
                        break;
                    }
                }
            }
            // Add repeating info
            if ($updateMode) {
                // remove old repeating info
                dbi_execute('DELETE FROM webcal_entry_repeats WHERE cal_id = ?', array($id));
                dbi_execute('DELETE FROM webcal_entry_repeats_not WHERE cal_id = ?', array($id));
            }
            $names = array();
            $values = array();
            if (!empty($Entry['Repeat']['Frequency'])) {
                $names[] = 'cal_id';
                $values[] = $id;
                $names[] = 'cal_type';
                $values[] = RepeatType($Entry['Repeat']['Frequency']);
                $names[] = 'cal_frequency';
                $values[] = !empty($Entry['Repeat']['Interval']) ? $Entry['Repeat']['Interval'] : 1;
                if (!empty($Entry['Repeat']['ByMonth'])) {
                    $names[] = 'cal_bymonth';
                    $values[] = $Entry['Repeat']['ByMonth'];
                }
                if (!empty($Entry['Repeat']['ByMonthDay'])) {
                    $names[] = 'cal_bymonthday';
                    $values[] = $Entry['Repeat']['ByMonthDay'];
                }
                if (!empty($Entry['Repeat']['ByDay'])) {
                    $names[] = 'cal_byday';
                    $values[] = $Entry['Repeat']['ByDay'];
                }
                if (!empty($Entry['Repeat']['BySetPos'])) {
                    $names[] = 'cal_bysetpos';
                    $values[] = $Entry['Repeat']['BySetPos'];
                }
                if (!empty($Entry['Repeat']['ByWeekNo'])) {
                    $names[] = 'cal_byweekno';
                    $values[] = $Entry['Repeat']['ByWeekNo'];
                }
                if (!empty($Entry['Repeat']['ByYearDay'])) {
                    $names[] = 'cal_byyearday';
                    $values[] = $Entry['Repeat']['ByYearDay'];
                }
                if (!empty($Entry['Repeat']['Wkst'])) {
                    $names[] = 'cal_wkst';
                    $values[] = $Entry['Repeat']['Wkst'];
                }
                if (!empty($Entry['Repeat']['Count'])) {
                    $names[] = 'cal_count';
                    $values[] = $Entry['Repeat']['Count'];
                }
                if (!empty($Entry['Repeat']['Until'])) {
                    $REND = localtime($Entry['Repeat']['Until']);
                    if (!empty($Entry['Repeat']['Count'])) {
                        // Get end time from DTSTART
                        $RENDTIME = $Entry['start_time'];
                    } else {
                        $RENDTIME = gmdate('His', $Entry['Repeat']['Until']);
                    }
                    $names[] = 'cal_end';
                    $values[] = gmdate('Ymd', $Entry['Repeat']['Until']);
                    // if ( $RENDTIME != '000000' ) {
                    $names[] = 'cal_endtime';
                    $values[] = $RENDTIME;
                    // }
                }
                $string_names = '';
                $string_values = '';
                $sql_params = array();
                $namecnt = count($names);
                for ($f = 0; $f < $namecnt; $f++) {
                    if ($f > 0) {
                        $string_names .= ', ';
                        $string_values .= ', ';
                    }
                    $string_names .= $names[$f];
                    $string_values .= '?';
                    $sql_params[] = $values[$f];
                }
                $sql = 'INSERT INTO webcal_entry_repeats ( ' . $string_names . ' ) VALUES ( ' . $string_values . ' )';
                if (!dbi_execute($sql, $sql_params)) {
                    $error = 'Unable to add to webcal_entry_repeats: ' . dbi_error() . "<br /><br />\n<b>SQL:</b> {$sql}";
                    break;
                }
                // Repeating Exceptions...
                if (!empty($Entry['Repeat']['Exceptions'])) {
                    foreach ($Entry['Repeat']['Exceptions'] as $ex_date) {
                        $ex_date = gmdate('Ymd', $ex_date);
                        $sql = 'INSERT INTO webcal_entry_repeats_not
              ( cal_id, cal_date, cal_exdate ) VALUES ( ?,?,? )';
                        if (!dbi_execute($sql, array($id, $ex_date, 1))) {
                            $error = 'Unable to add to webcal_entry_repeats_not: ' . dbi_error() . "<br /><br />\n<b>SQL:</b> {$sql}";
                            break;
                        }
                    }
                }
                // Repeating Inclusions...
                if (!empty($Entry['Repeat']['Inclusions'])) {
                    foreach ($Entry['Repeat']['Inclusions'] as $inc_date) {
                        $inc_date = gmdate('Ymd', $inc_date);
                        $sql = 'INSERT INTO webcal_entry_repeats_not
              ( cal_id, cal_date, cal_exdate ) VALUES ( ?,?,? )';
                        if (!dbi_execute($sql, array($id, $inc_date, 0))) {
                            $error = 'Unable to add to webcal_entry_repeats_not: ' . dbi_error() . "<br /><br />\n<b>SQL:</b> {$sql}";
                            break;
                        }
                    }
                }
            }
            // End Repeat
            // Add Alarm info
            if ($updateMode) {
                dbi_execute('DELETE FROM webcal_reminders WHERE  cal_id = ?', array($id));
            }
            if (!empty($Entry['AlarmSet']) && $Entry['AlarmSet'] == 1) {
                $names = array();
                $values = array();
                $names[] = 'cal_id';
                $values[] = $id;
                if (!empty($Entry['ADate'])) {
                    $names[] = 'cal_date';
                    $values[] = $Entry['ADate'];
                }
                if (!empty($Entry['AOffset'])) {
                    $names[] = 'cal_offset';
                    $values[] = $Entry['AOffset'];
                }
                if (!empty($Entry['ADuration'])) {
                    $names[] = 'cal_duration';
                    $values[] = $Entry['ADuration'];
                }
                if (!empty($Entry['ARepeat'])) {
                    $names[] = 'cal_repeats';
                    $values[] = $Entry['ARepeat'];
                }
                if (!empty($Entry['ABefore'])) {
                    $names[] = 'cal_before';
                    $values[] = $Entry['ABefore'];
                }
                if (!empty($Entry['ARelated'])) {
                    $names[] = 'cal_related';
                    $values[] = $Entry['ARelated'];
                }
                if (!empty($Entry['AAction'])) {
                    $names[] = 'cal_action';
                    $values[] = $Entry['AAction'];
                }
                $string_names = '';
                $string_values = '';
                $sql_params = array();
                $namecnt = count($names);
                for ($f = 0; $f < $namecnt; $f++) {
                    if ($f > 0) {
                        $string_names .= ', ';
                        $string_values .= ', ';
                    }
                    $string_names .= $names[$f];
                    $string_values .= '?';
                    $sql_params[] = $values[$f];
                }
                $sql = 'INSERT INTO webcal_reminders (' . $string_names . ' ) ' . ' VALUES ( ' . $string_values . ' )';
                if (!dbi_execute($sql, $sql_params)) {
                    $error = db_error();
                }
            }
        }
        // here to end not in icalclient
        if ($subType != 'icalclient' && $subType != 'remoteics') {
            if (!empty($error) && empty($overlap)) {
                $error_num++;
                echo print_error($error) . "\n<br />\n";
            }
            if ($Entry['Duration'] > 0) {
                $time = trim(display_time('', 0, $Entry['StartTime']) . '-' . display_time('', 2, $Entry['EndTime']));
            }
            // Conflicting
            if (!empty($overlap)) {
                $message .= '<b><h2>' . translate('Scheduling Conflict') . ': ';
                $count_con++;
                $message .= '</h2></b>';
                $dd = date('m-d-Y', $Entry['StartTime']);
                $Entry['Summary'] = str_replace("''", "'", $Entry['Summary']);
                $Entry['Summary'] = str_replace("'", "\\'", $Entry['Summary']);
                $message .= htmlspecialchars($Entry['Summary']);
                $message .= ' (' . $dd;
                if (!empty($time)) {
                    $message .= '&nbsp; ' . $time;
                }
                $message .= ")<br />\n";
                etranslate('conflicts with the following existing calendar entries');
                $message .= ":<ul>\n" . $overlap . "</ul>\n";
            } else {
                // No Conflict
                if ($count_suc == 0) {
                    //echo '<b><h2>' .
                    //translate ( 'Event Imported' ) . ":</h2></b><br />\n";
                }
                $count_suc++;
                $dd = $Entry['start_date'];
            }
            // Reset Variables
            $overlap = $error = $dd = $time = '';
        }
    }
}
function export_vcal($id)
{
    header("Content-Type: text/x-vcalendar");
    //header ( "Content-Type: text/plain" );
    $res = export_get_event_entry($id);
    $entry_array = array();
    $count = 0;
    while ($entry = dbi_fetch_row($res)) {
        $entry_array[$count++] = $entry;
    }
    dbi_free_result($res);
    if (count($entry_array) > 0) {
        echo "BEGIN:VCALENDAR\r\n";
        echo "{$prodid}\r\n";
        echo "VERSION:1.0\r\n";
        /* Time Zone
          $tzdate = mktime();
          $gmdate = gmmktime();
          $tzdiff = ($gmdate - $tzdate) / 60 / 60; //FIXME only hours are represented
        
          $tz = sprintf("%02d", $tzdiff);
        
          echo "TZ:";
          echo ($tzdiff >= 0) ? "+" : "-";
          echo "$tz\r\n";
        
            */
    }
    while (list($key, $row) = each($entry_array)) {
        $uid = $row[0];
        $export_uid = generate_uid();
        $name = $row[1];
        $priority = $row[2];
        $date = $row[3];
        $time = $row[4];
        $status = $row[5];
        $create_by = $row[6];
        $access = $row[7];
        $duration = $row[8];
        $description = $row[9];
        /* Start of event */
        echo "BEGIN:VEVENT\r\n";
        /* UID of the event (folded to 76 char) */
        $export_uid = "UID:{$export_uid}";
        $array = export_fold_lines($export_uid);
        while (list($key, $value) = each($array)) {
            echo "{$value}\r\n";
        }
        /* SUMMARY of the event (folded to 76 char) */
        $name = preg_replace("/\\\\/", "\\\\\\", $name);
        // ??
        $name = "SUMMARY;ENCODING=QUOTED-PRINTABLE:" . $name;
        $array = export_fold_lines($name, "quotedprintable");
        while (list($key, $value) = each($array)) {
            echo "{$value}\r\n";
        }
        /* DESCRIPTION if any (folded to 76 char) */
        if ($description != "") {
            $description = preg_replace("/\\\\/", "\\\\\\", $description);
            // ??
            $description = "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" . $description;
            $array = export_fold_lines($description, "quotedprintable");
            while (list($key, $value) = each($array)) {
                echo "{$value}\r\n";
            }
        }
        //end if ($description != "")
        /* CLASS either "PRIVATE" or "PUBLIC" (the default) */
        if ($access == "R") {
            echo "CLASS:PRIVATE\r\n";
        } else {
            echo "CLASS:PUBLIC\r\n";
        }
        // ATTENDEE of the event
        $attendee = export_get_attendee($row[0], "vcal");
        for ($i = 0; $i < count($attendee); $i++) {
            $attendee[$i] = export_fold_lines($attendee[$i], "quotedprintable");
            while (list($key, $value) = each($attendee[$i])) {
                echo "{$value}\r\n";
            }
        }
        /* Time - all times are utc */
        export_time($date, $duration, $time, "vcal");
        export_recurrence_vcal($uid, $date);
        // FIXME: handle alarms
        export_alarm_vcal($uid, $date, $time);
        /* Goodbye event */
        echo "END:VEVENT\n";
    }
    //end while (list($key,$row) = each($entry_array))
    if (count($entry_array) > 0) {
        echo "END:VCALENDAR\r\n";
    }
}
Esempio n. 26
0
function dbtable_genid($tablename, $field)
{
    $ret = 1;
    $sql = "SELECT MAX(" . $field . ") FROM " . $tablename;
    $res = dbi_query($sql);
    if ($res) {
        if ($row = dbi_fetch_row($res)) {
            $ret = $row[0] + 1;
        }
        dbi_free_result($res);
    }
    return $ret;
}
function list_unapproved($user)
{
    global $temp_fullname, $key, $login;
    //echo "Listing events for $user <BR>";
    echo "<UL>\n";
    $sql = "SELECT webcal_entry.cal_id, webcal_entry.cal_name, " . "webcal_entry.cal_description, " . "webcal_entry.cal_priority, webcal_entry.cal_date, " . "webcal_entry.cal_time, webcal_entry.cal_duration, " . "webcal_entry_user.cal_status " . "FROM webcal_entry, webcal_entry_user " . "WHERE webcal_entry.cal_id = webcal_entry_user.cal_id " . "AND ( webcal_entry.cal_ext_for_id IS NULL " . "OR webcal_entry.cal_ext_for_id = 0 ) AND " . "webcal_entry_user.cal_login = '******' AND " . "webcal_entry_user.cal_status = 'W' " . "ORDER BY webcal_entry.cal_date";
    $res = dbi_query($sql);
    $count = 0;
    $eventinfo = "";
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $key++;
            $id = $row[0];
            $name = $row[1];
            $description = $row[2];
            $pri = $row[3];
            $date = $row[4];
            $time = $row[5];
            $duration = $row[6];
            $status = $row[7];
            $divname = "eventinfo-{$id}-{$key}";
            echo "<LI><A CLASS=\"entry\" HREF=\"view_entry.php?id={$id}";
            echo "\" onMouseOver=\"window.status='" . translate("View this entry") . "'; show(event, '{$divname}'); return true;\" onMouseOut=\"hide('{$divname}'); return true;\">";
            $timestr = "";
            if ($time > 0) {
                $timestr = display_time($time);
                if ($duration > 0) {
                    // calc end time
                    $h = (int) ($time / 10000);
                    $m = $time / 100 % 100;
                    $m += $duration;
                    $d = $duration;
                    while ($m >= 60) {
                        $h++;
                        $m -= 60;
                    }
                    $end_time = sprintf("%02d%02d00", $h, $m);
                    $timestr .= " - " . display_time($end_time);
                }
            }
            echo htmlspecialchars($name);
            echo "</A>";
            echo " (" . date_to_str($date) . ")\n";
            echo ": <A HREF=\"approve_entry.php?id={$id}&ret=list";
            if ($user == "__public__") {
                echo "&public=1";
            }
            echo "\" CLASS=\"navlinks\" onClick=\"return confirm('" . translate("Approve this entry?") . "');\">" . translate("Approve/Confirm") . "</A>, ";
            echo "<A HREF=\"reject_entry.php?id={$id}&ret=list";
            if ($user == "__public__") {
                echo "&public=1";
            }
            echo "\" CLASS=\"navlinks\" onClick=\"return confirm('" . translate("Reject this entry?") . "');\">" . translate("Reject") . "</A>";
            $eventinfo .= build_event_popup($divname, $user, $description, $timestr, $time);
            $count++;
        }
        dbi_free_result($res);
    }
    echo "</UL><P>\n";
    if ($count == 0) {
        user_load_variables($user, "temp_");
        echo translate("No unapproved events for") . " " . $temp_fullname . ".";
    } else {
        echo $eventinfo;
    }
}
function get_plugin_list($include_disabled = false)
{
    global $error;
    // First get list of available plugins.
    $res = dbi_execute('SELECT cal_setting FROM webcal_config
    WHERE cal_setting LIKE \'%.plugin_status\' ' . (!$include_disabled ? 'AND cal_value = \'Y\' ' : '') . 'ORDER BY cal_setting');
    $plugins = array();
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $e = explode('.', $row[0]);
            if ($e[0] != '') {
                $plugins[] = $e[0];
            }
        }
        dbi_free_result($res);
    } else {
        $error = db_error(true);
    }
    if (count($plugins) == 0) {
        $plugins[] = 'webcalendar';
    }
    return $plugins;
}
Esempio n. 29
0
/**
 * Prints the common trailer.
 *
 * @param bool $include_nav_links Should the standard navigation links be
 *                               included in the trailer?
 * @param bool $closeDb           Close the database connection when finished?
 * @param bool $disableCustom     Disable the custom trailer the administrator
 *                                has setup?  (This is useful for small popup
 *                                windows and pages being used in an iframe.)
 */
function print_trailer($include_nav_links = true, $closeDb = true, $disableCustom = false)
{
    global $CUSTOM_TRAILER, $c, $STARTVIEW;
    global $login, $user, $cat_id, $categories_enabled, $thisyear, $thismonth, $thisday, $DATE_FORMAT_MY, $WEEK_START, $DATE_FORMAT_MD, $readonly, $is_admin, $public_access, $public_access_can_add, $single_user, $use_http_auth, $login_return_path, $require_approvals, $is_nonuser_admin, $public_access_others, $allow_view_other, $views, $reports_enabled, $LAYER_STATUS, $nonuser_enabled, $groups_enabled, $fullname, $has_boss;
    if ($include_nav_links) {
        include_once "includes/trailer.php";
    }
    // Add custom trailer if enabled
    if ($CUSTOM_TRAILER == 'Y' && !$disableCustom && isset($c)) {
        $res = dbi_query("SELECT cal_template_text FROM webcal_report_template " . "WHERE cal_template_type = 'T' and cal_report_id = 0");
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                echo $row[0];
            }
            dbi_free_result($res);
        }
    }
    if ($closeDb) {
        if (isset($c)) {
            dbi_close($c);
        }
        unset($c);
    }
}
Esempio n. 30
0
function user_delete_user($user)
{
    // Get event ids for all events this user is a participant
    $events = get_users_event_ids($user);
    // Now count number of participants in each event...
    // If just 1, then save id to be deleted
    $delete_em = array();
    for ($i = 0; $i < count($events); $i++) {
        $res = dbi_query("SELECT COUNT(*) FROM webcal_entry_user " . "WHERE cal_id = " . $events[$i]);
        if ($res) {
            if ($row = dbi_fetch_row($res)) {
                if ($row[0] == 1) {
                    $delete_em[] = $events[$i];
                }
            }
            dbi_free_result($res);
        }
    }
    // Now delete events that were just for this user
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_query("DELETE FROM webcal_entry WHERE cal_id = " . $delete_em[$i]);
    }
    // Delete user participation from events
    dbi_query("DELETE FROM webcal_entry_user WHERE cal_login = '******'");
    // Delete preferences
    dbi_query("DELETE FROM webcal_user_pref WHERE cal_login = '******'");
    // Delete from groups
    dbi_query("DELETE FROM webcal_group_user WHERE cal_login = '******'");
    // Delete bosses & assistants
    dbi_query("DELETE FROM webcal_asst WHERE cal_boss = '{$user}'");
    dbi_query("DELETE FROM webcal_asst WHERE cal_assistant = '{$user}'");
    // Delete user's views
    $delete_em = array();
    $res = dbi_query("SELECT cal_view_id FROM webcal_view " . "WHERE cal_owner = '{$user}'");
    if ($res) {
        while ($row = dbi_fetch_row($res)) {
            $delete_em[] = $row[0];
        }
        dbi_free_result($res);
    }
    for ($i = 0; $i < count($delete_em); $i++) {
        dbi_query("DELETE FROM webcal_view_user WHERE cal_view_id = " . $delete_em[$i]);
    }
    dbi_query("DELETE FROM webcal_view WHERE cal_owner = '{$user}'");
    // Delete layers
    dbi_query("DELETE FROM webcal_user_layers WHERE cal_login = '******'");
    // Delete any layers other users may have that point to this user.
    dbi_query("DELETE FROM webcal_user_layers WHERE cal_layeruser = '******'");
}