function plan_write_traditional($newplan, $planowner)
{
    include_once 'plan_read.php';
    include_once 'snoop.php';
    include_once 'spiel.php';
    include_once 'send.php';
    mb_detect_order("UTF-8, windows-1252");
    if (mb_detect_encoding($newplan) == "Windows-1252") {
        $newplan = mb_convert_encoding($newplan, UTF - 8, Windows - 1252);
    }
    $oldplan_fn = "{$_SERVER['PWUSERS_DIR']}/{$planowner}/plan/plan.txt";
    // current oldplan name
    $oldplan_fn_moved = $oldplan_fn . "." . filectime($oldplan_fn);
    // archival oldplan name
    $oldplan_array = explode("\n", $oldplan);
    $_SERVER['USER'] = '******';
    $old_snoop_array = snoop_find(plan_read_local($planowner), $planowner);
    exec("mv {$oldplan_fn} {$oldplan_fn_moved}");
    exec("gzip {$oldplan_fn_moved}");
    exec("rm -f {$_SERVER['FILE_ROOT']}/temp/{$planowner}*.cache");
    $oldplan_fn_moved .= ".gz";
    $newplan .= $_POST['nolinebreaks'];
    $newplan .= $_POST['markdown'];
    $newplan .= $_POST['nofeed'];
    if ($_POST['title']) {
        $newplan .= "<!--title {$_POST['title']}-->";
    }
    if ($_POST['tags']) {
        $newplan .= "<!--tags {$_POST['tags']}-->";
    }
    $newplan_fn = $oldplan_fn;
    $newplan_file = fopen($newplan_fn, 'w');
    fwrite($newplan_file, $newplan);
    fclose($newplan_file);
    $newplan_array = explode("\n", $newplan);
    $diffplan = implode('', array_diff($newplan_array, $oldplan_array));
    spiel_find($diffplan, $planowner, time());
    $new_snoop_array = snoop_find(plan_read_local($planowner), $planowner);
    snoop_clean(array_unique($old_snoop_array), $planowner);
    snoop_add(array_unique($new_snoop_array), $planowner);
    touch("{$_SERVER['PWUSERS_DIR']}/{$planowner}/stats/lastupdate");
    if (file_exists($newplan_fn) && (file_exists($oldplan_fn_moved) || !file_exists($oldplan_fn))) {
        redirect("/read/{$planowner}");
    } else {
        output("Error updating", "<div class='alert'>Your plan update failed:<br/><br/>{$newplan}</div>");
    }
}
function form_process_with_struct()
{
    include_once 'snoop.php';
    include_once 'plan_read.php';
    extract($_POST);
    unlink("{$_SERVER['FILE_ROOT']}/stats/planlocations.dat");
    unlink("{$_SERVER['FILE_ROOT']}/stats/plan_locations.dat");
    unlink("{$_SERVER['FILE_ROOT']}/stats/plan_failures.dat");
    foreach ($_FILES as $i => $file) {
        if ($file['size'] > 0) {
            move_uploaded_file($file['tmp_name'], "{$_SERVER['FILE_ROOT']}/resources/" . $file['name']);
        }
    }
    $olduserinfo = $_SERVER['USERINFO_ARRAY'];
    $form_definitions = unserialize(base64_decode($form_definitions));
    extract($form_definitions['form_disposition']);
    unset($form_definitions['form_disposition']);
    if ($storage_format == 'file') {
        $keys = array_keys($form_definitions);
        foreach ($keys as $key) {
            $output_array[$key] = $_POST[$key];
        }
        file_put_contents("{$storage_directory}/{$storage_filename}", serialize($output_array));
        // CHANGING PLAN TYPE
        if ($olduserinfo['journaling'] != $output_array['journaling'] && isset($output_array['journaling'])) {
            if ($olduserinfo['journaling']) {
                $plan_fn = "{$_SERVER['PWUSERS_DIR']}/{$olduserinfo['username']}/plan/plan.txt";
                @rename($plan_fn, $plan_fn . time());
                file_put_contents($plan_fn, $oldplan);
            }
            if ($output_array['journaling']) {
                $plan_fn = "{$_SERVER['PWUSERS_DIR']}/{$olduserinfo['username']}/plan/plan." . time() . ".txt";
                file_put_contents($plan_fn, $oldplan);
            }
        }
        // ADVERTISED LIST HANDLING
        $advlist = @file_get_contents("{$_SERVER['FILE_ROOT']}/stats/advertised.txt");
        if ($output_array['privacy'] == 1 && strpos($advlist, $output_array['username']) === FALSE) {
            file_put_contents("{$_SERVER['FILE_ROOT']}/stats/advertised.txt", "\n" . $output_array['username'], FILE_APPEND);
        }
        if ($output_array['privacy'] != 1 && strpos($advlist, $output_array['username']) !== FALSE) {
            file_put_contents("{$_SERVER['FILE_ROOT']}/stats/advertised.txt", str_replace("\n{$output_array['username']}", '', $advlist));
        }
        // private feed
        unlink("{$_SERVER['FILE_ROOT']}/resources/privatefeeds/{$olduserinfo['secretword']}.owner");
        file_put_contents("{$_SERVER['FILE_ROOT']}/resources/privatefeeds/{$output_array['secretfeedword']}.owner", "{$output_array['planusername']}");
        $oa_un = $output_array['username'];
        exec("rm -f {$_SERVER['FILE_ROOT']}/temp/*{$oa_un}*.cache");
        $_SERVER['PLAN_LOCATION_ARRAY'] = unserialize(file_get_contents("{$_SERVER['FILE_ROOT']}/stats/plan_locations.dat"));
        $_SERVER['PLAN_LOCATION_ARRAY'][$oa_un] = plan_get_real_location($output_array['planusername'] . str_replace(array('RSS', '@local'), '', $output_array['plantype']));
        file_put_contents("{$_SERVER['FILE_ROOT']}/stats/plan_locations.dat", serialize($_SERVER['PLAN_LOCATION_ARRAY']));
        // RENAMED USER HANDLING
        if ($output_array['username'] && $output_array['username'] != $_SERVER['USER']) {
            rename($storage_directory, str_replace($_SERVER['USER'], $output_array['username'], $storage_directory));
            // SNOOP STUFF
            if ($output_array['plantype'] == '@local') {
                if ($old_snoop_array != FALSE) {
                    $new_snoop_array = snoop_find(plan_read($output_array['username']));
                    snoop_clean(array_unique($old_snoop_array), $olduserinfo['username']);
                    snoop_add(array_unique($new_snoop_array), $output_array['username']);
                }
            }
            exec("ls {$_SERVER['PWUSERS_DIR']}/*/*list.txt", $list_list);
            foreach ($list_list as $list) {
                $list_data = file_get_contents($list);
                $list_data = str_replace($olduserinfo['username'], $output_array['username'], $list_data);
                file_put_contents($list, $list_data);
            }
            login($output_array['username'], $output_array['userpass']);
        } else {
            redirect('/');
        }
    }
}