Hi, 
i use PHPVMS										 							v2.1.934-157-g7ca06a			 
When i export my schedules add schedules (or correct some) and then import them, there is an Error Message: 
Warning: unlink(C:\wamp\www\phpvms\core\cacheschedules.csv) [function.unlink]: Permission denied in C:\wamp\www\phpvms\admin\modules\Import\Import.php on line 357 
My import.php is: 
 
<?php
/**
* phpVMS - Virtual Airline Administration Software
* Copyright (c) 2008 Nabeel Shahzad
* For more information, visit www.phpvms.net
* Forums: http://www.phpvms.net/forum
* Documentation: http://www.phpvms.net/docs
*
* phpVMS is licenced under the following license:
*   Creative Commons Attribution Non-commercial Share Alike (by-nc-sa)
*   View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* @author Nabeel Shahzad
* @copyright Copyright (c) 2008, Nabeel Shahzad
* @link http://www.phpvms.net
* @license http://creativecommons.org/licenses/by-nc-sa/3.0/
*/
class Import extends CodonModule {
   function HTMLHead() {
    switch ($this->controller->function) {
	    case '':
	    default:
	    case 'processimport':
		    $this->set('sidebar', 'sidebar_import.tpl');
		    break;
	    case 'importaircraft':
		    $this->set('sidebar', 'sidebar_aircraft.tpl');
		    break;
    }
   }
   public function index() {
    $this->render('import_form.tpl');
   }
   public function export() {
    $this->render('export_form.tpl');
   }
   public function exportaircraft() {
    $allaircraft = OperationsData::getAllAircraft(false);
    # Get the column headers
    $headers = array();
    $dbcolumns = DB::get_cols();
    foreach ($dbcolumns as $col) {
	    if ($col->name == 'id' || $col->name == 'minrank' || $col->name == 'ranklevel')
		    continue;
	    $headers[] = $col->name;
    }
    header('Content-Type: text/plain');
    header('Content-Disposition: attachment; filename="aircraft.csv"');
    $fp = fopen('php://output', 'w');
    # Write out the header which is the columns
    fputcsv($fp, $headers, ',');
    # Then write out all of the aircraft
    foreach ($allaircraft as $aircraft) {
	    unset($aircraft->id);
	    unset($aircraft->minrank);
	    unset($aircraft->ranklevel);
	    $aircraft = (array )$aircraft;
	    fputcsv($fp, $aircraft, ',');
    }
    fclose($fp);
   }
   public function importaircraft() {
    if (!file_exists($_FILES['uploadedfile']['tmp_name'])) {
	    $this->render('import_aircraftform.tpl');
	    return;
    }
    echo '<h3>Processing Import</h3>';
    # Get the column headers
    $allaircraft = OperationsData::getAllAircraft(false);
    $headers = array();
    $dbcolumns = DB::get_cols();
    foreach ($dbcolumns as $col) {
	    if ($col->name == 'id' || $col->name == 'minrank' || $col->name == 'ranklevel')
		    continue;
	    $headers[] = $col->name;
    }
    # Open the import file
    # Fix for bug VMS-325
    $temp_name = $_FILES['uploadedfile']['tmp_name'];
    $new_name = CACHE_PATH . $_FILES['uploadedfile']['name'];
    move_uploaded_file($temp_name, $new_name);
    $fp = fopen($new_name, 'r');
    if (isset($_POST['header']))
	    $skip = true;
    $added = 0;
    $updated = 0;
    $total = 0;
    echo '<div style="overflow: auto; height: 400px;
 border: 1px solid #666; margin-bottom: 20px;
 padding: 5px; padding-top: 0px; padding-bottom: 20px;">';
    while ($fields = fgetcsv($fp, 1000, ',')) {
	    // Skip the first line
	    if ($skip == true) {
		    $skip = false;
		    continue;
	    }
	    # Map the read in values to the columns
	    $aircraft = array();
	    $aircraft = @array_combine($headers, $fields);
	    if (empty($aircraft))
		    continue;
	    # Enabled or not
	    if ($aircraft['enabled'] == '1') {
		    $aircraft['enabled'] = true;
	    } else {
		    $aircraft['enabled'] = false;
	    }
	    # Get the rank ID
	    $rank = RanksData::getRankByName($aircraft['rank']);
	    $aircraft['minrank'] = $rank->rankid;
	    unset($aircraft['rank']);
	    # Does this aircraft exist?
	    $ac_info = OperationsData::getAircraftByReg($aircraft['registration']);
	    if ($ac_info) {
		    echo "Editing {$aircraft['name']} - {$aircraft['registration']}<br>";
		    $aircraft['id'] = $ac_info->id;
		    OperationsData::editAircraft($aircraft);
		    $updated++;
	    } else {
		    echo "Adding {$aircraft['name']} - {$aircraft['registration']}<br>";
		    OperationsData::addAircraft($aircraft);
		    $added++;
	    }
	    $total++;
    }
    unlink($new_name);
    echo "The import process is complete, added {$added} aircraft, updated {$updated}, for a total of {$total}<br />";
   }
   public function processexport() {
    $export = '';
    $all_schedules = SchedulesData::GetSchedules('', false);
    if (!$all_schedules) {
	    echo 'No schedules found!';
	    return;
    }
    header('Content-Type: text/plain');
    header('Content-Disposition: attachment; filename="schedules.csv"');
    $fp = fopen('php://output', 'w');
    $line = file_get_contents(SITE_ROOT . '/admin/lib/template.csv');
    fputcsv($fp, explode(',', $line));
    foreach ($all_schedules as $s) {
	    $line = "{$s->code},{$s->flightnum},{$s->depicao},{$s->arricao}," . "{$s->route},{$s->registration},{$s->flightlevel},{$s->distance}," .
		    "{$s->deptime}, {$s->arrtime}, {$s->flighttime}, {$s->notes}, " . "{$s->price}, {$s->flighttype}, {$s->daysofweek}, {$s->enabled}, {$s->week1}, {$s->week2}, {$s->week3}, {$s->week4}";
	    fputcsv($fp, explode(',', $line));
    }
    fclose($fp);
   }
   public function processimport() {
    echo '<h3>Processing Import</h3>';
    if (!file_exists($_FILES['uploadedfile']['tmp_name'])) {
	    $this->set('message', 'File upload failed!');
	    $this->render('core_error.tpl');
	    return;
    }
    echo '<p><strong>DO NOT REFRESH OR STOP THIS PAGE</strong></p>';
    set_time_limit(270);
    $errs = array();
    $skip = false;
    # Fix for bug VMS-325
    $temp_name = $_FILES['uploadedfile']['tmp_name'];
    $new_name = CACHE_PATH . $_FILES['uploadedfile']['name'];
    move_uploaded_file($temp_name, $new_name);
    $fp = fopen($new_name, 'r');
    if (isset($_POST['header']))
	    $skip = true;
    /* Delete all schedules before doing an import */
    if (isset($_POST['erase_routes'])) {
	    SchedulesData::deleteAllSchedules();
    }
    $added = 0;
    $updated = 0;
    $total = 0;
    echo '<div style="overflow: auto; height: 400px; border: 1px solid #666; margin-bottom: 20px; padding: 5px; padding-top: 0px; padding-bottom: 20px;">';
    while ($fields = fgetcsv($fp, 1000, ',')) {
	    // Skip the first line
	    if ($skip == true) {
		    $skip = false;
		    continue;
	    }
	    // list fields:
	    $code = $fields[0];
	    $flightnum = $fields[1];
	    $depicao = $fields[2];
	    $arricao = $fields[3];
	    $route = $fields[4];
	    $aircraft = $fields[5];
	    $flightlevel = $fields[6];
	    $distance = $fields[7];
	    $deptime = $fields[8];
	    $arrtime = $fields[9];
	    $flighttime = $fields[10];
	    $notes = $fields[11];
	    $price = $fields[12];
	    $flighttype = $fields[13];
	    $daysofweek = $fields[14];
	    $enabled = $fields[15];
	    $week1 = $fields[16];
	    $week2 = $fields[17];
	    $week3 = $fields[18];
	    $week4 = $fields[19];
	    if ($code == '') {
		    continue;
	    }
	    // Check the code:
	    if (!OperationsData::GetAirlineByCode($code)) {
		    echo "Airline with code $code does not exist! Skipping...<br />";
		    continue;
	    }
	    // Make sure airports exist:
	    if (!($depapt = OperationsData::GetAirportInfo($depicao))) {
		    $this->get_airport_info($depicao);
	    }
	    if (!($arrapt = OperationsData::GetAirportInfo($arricao))) {
		    $this->get_airport_info($arricao);
	    }
	    # Check the aircraft
	    $aircraft = trim($aircraft);
	    $ac_info = OperationsData::GetAircraftByReg($aircraft);
	    # If the aircraft doesn't exist, skip it
	    if (!$ac_info) {
		    echo 'Aircraft "' . $aircraft . '" does not exist! Skipping<br />';
		    continue;
	    }
	    $ac = $ac_info->id;
	    if ($flighttype == '') {
		    $flighttype = 'P';
	    }
	    if ($daysofweek == '')
		    $daysofweek = '0123456';
	    // Replace a 7 (Sunday) with 0 (since PHP thinks 0 is Sunday)
	    $daysofweek = str_replace('7', '0', $daysofweek);
	    # Check the distance
	    if ($distance == 0 || $distance == '') {
		    $distance = OperationsData::getAirportDistance($depicao, $arricao);
	    }
	    $flighttype = strtoupper($flighttype);
	    if ($enabled == '0')
		    $enabled = false;
	    else
		    $enabled = true;
	    # This is our 'struct' we're passing into the schedule function
	    # to add or edit it
	    $data = array(
		    'code' => $code, 'flightnum' => $flightnum, 'depicao' => $depicao,
		    'arricao' => $arricao, 'route' => $route, 'aircraft' => $ac, 'flightlevel' => $flightlevel,
		    'distance' => $distance, 'deptime' => $deptime, 'arrtime' => $arrtime,
		    'flighttime' => $flighttime, 'daysofweek' => $daysofweek, 'notes' => $notes,
		    'enabled' => $enabled, 'price' => $price, 'flighttype' => $flighttype,
		    'week1' => $week1, 'week2' => $week2, 'week3' => $week3, 'week4' => $week4
	    );
	    # Check if the schedule exists:
	    if (($schedinfo = SchedulesData::getScheduleByFlight($code, $flightnum))) {
		    # Update the schedule instead
		    $val = SchedulesData::updateScheduleFields($schedinfo->id, $data);
		    $updated++;
	    } else {
		    # Add it
		    $val = SchedulesData::addSchedule($data);
		    $added++;
	    }
	    if ($val === false) {
		    if (DB::errno() == 1216) {
			    echo "Error adding $code$flightnum: The airline code, airports, or aircraft does not exist";
		    } else {
			    $error = (DB::error() != '') ? DB::error() : 'Route already exists';
			    echo "$code$flightnum was not added, reason: $error<br />";
		    }
		    echo '<br />';
	    } else {
		    $total++;
		    echo "Imported {$code}{$flightnum} ({$depicao} to {$arricao})<br />";
	    }
    }
    CentralData::send_schedules();
    echo "The import process is complete, added {$added} schedules, updated {$updated}, for a total of {$total}<br />";
    foreach ($errs as $error) {
	    echo '    ' . $error . '<br />';
    }
    echo '</div>';
    unlink($new_name);
   }
   protected function get_airport_info($icao) {
    echo "ICAO $icao not added... retriving information: <br />";
    $aptinfo = OperationsData::RetrieveAirportInfo($icao);
    if ($aptinfo === false) {
	    echo 'Could not retrieve information for ' . $icao . ', add it manually <br />';
    } else {
	    echo "Found: $icao - " . $aptinfo->name . ' (' . $aptinfo->lat . ',' . $aptinfo->
		    lng . '), airport added<br /><br />';
	    return $aptinfo;
    }
   }
}
 
 In the database the "p" for pax is nothing ,for the days only "01234" insted of "0123456" is inserted. 
Need some help...