Example #1
0
function fetchAllRevisionsForFile($id)
{
    $list = array();
    $result = myquery("SELECT * FROM projekat_file WHERE file='{$id}' ORDER BY revizija DESC");
    while ($row = mysql_fetch_assoc($result)) {
        $list[] = $row;
    }
    $list[] = getFileFirstRevision($id);
    return $list;
}
Example #2
0
function formProcess_file($option)
{
    $errorText = '';
    if (!check_csrf_token()) {
        zamgerlog("csrf token nije dobar", 3);
        zamgerlog2("csrf token nije dobar");
        return "Poslani podaci nisu ispravni. Vratite se nazad, ponovo popunite formu i kliknite na dugme Pošalji";
    }
    set_time_limit(0);
    if (!in_array($option, array('add', 'edit'))) {
        $errorText = 'Doslo je do greske prilikom spasavanja podataka. Molimo kontaktirajte administratora.';
        return $errorText;
    }
    $id = intval($_REQUEST['id']);
    if ($option == 'edit' && $id <= 0) {
        $errorText = 'Doslo je do greske prilikom spasavanja podataka. Molimo kontaktirajte administratora.';
        zamgerlog("pokusao urediti nepostojeci fajl {$id}, projekat {$projekat} (pp{$predmet})", 3);
        zamgerlog2("pokusao urediti nepostojeci fajl", $id, $projekat);
        return $errorText;
    }
    if ($option == 'edit' && isThisFileFirstRevision($id) == false) {
        //cannot get access to revisions other than the first one
        $errorText = 'Doslo je do greske prilikom spasavanja podataka. Molimo kontaktirajte administratora.';
        zamgerlog("pokusao urediti staru reviziju fajla {$id}, projekat {$projekat} (pp{$predmet})", 3);
        zamgerlog2("pokusao urediti staru reviziju fajla", $id, $projekat);
        return $errorText;
    }
    //process file
    if ($option == 'edit') {
        $entry = getFileFirstRevision($id);
        $lastRevisionEntry = getFileLastRevision($id);
    }
    //get variables
    $filename = $_FILES['filename'];
    if ($option == 'edit') {
        $revizija = $lastRevisionEntry[revizija] + 1;
        $file = $entry['id'];
    } else {
        $revizija = 1;
        $file = '';
    }
    $projekat = intval($_REQUEST['projekat']);
    $predmet = intval($_REQUEST['predmet']);
    global $userid;
    if ($filename['error'] == 4) {
        $errorText = 'Unesite sva obavezna polja.';
        return $errorText;
    }
    global $conf_files_path;
    $lokacijafajlova = "{$conf_files_path}/projekti/fajlovi/{$projekat}/{$userid}/";
    if (!file_exists("{$conf_files_path}/projekti/fajlovi/{$projekat}")) {
        mkdir("{$conf_files_path}/projekti/fajlovi/{$projekat}", 0777, true);
    }
    if (!file_exists($lokacijafajlova)) {
        mkdir($lokacijafajlova, 0777, true);
    }
    //adding or replacing file - depends on the $option parameter(add, edit)
    if ($filename['error'] > 0) {
        if ($filename['error'] == 1 || $filename['error'] == 2) {
            $errorText .= 'Pokušavate poslati fajl koji je veci od dozvoljene velicine. Probajte sa manjim fajlom.<br />';
        } else {
            $errorText .= 'Vaš fajl nije poslan korektno. Molimo pokušajte ponovo.<br />';
        }
        return $errorText;
    } else {
        //No error occured so far
        //escape file name before upload
        if ($option == 'add') {
            $Name = $filename['name'];
        } else {
            $Name = $entry[filename];
        }
        $Name = trim($Name);
        //make directory structure for this file
        //$uploadDir = $lokacijafajlova . "$Name" . "_revizije/v$revizija/";
        $uploadDir = $lokacijafajlova . "{$Name}/";
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true);
        }
        $uploadDir = $uploadDir . "v{$revizija}/";
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true);
        }
        //final file name
        if ($option == 'add') {
            $uploadFile = $Name;
        } else {
            $uploadFile = $entry['filename'];
        }
        if (move_uploaded_file($filename['tmp_name'], $uploadDir . $uploadFile)) {
            //transfered a file to upload directory from temp dir
            //if edit option REPLACING the old image (overwrite)
            chmod($uploadDir . $uploadFile, 0777);
        } else {
            $errorText .= 'Desila se greška prilikom uploada fajla. Molimo kontaktirajte administratora.<br />AA';
            return $errorText;
        }
        //else
    }
    //else
    //diff
    $diff = '';
    $diffing = 0;
    if ($option == 'edit') {
        //diffing with textual files only
        $lastRevisionFile = $lokacijafajlova . $lastRevisionEntry['filename'] . '/v' . $lastRevisionEntry['revizija'] . '/' . $lastRevisionEntry['filename'];
        $newFile = $uploadDir . $uploadFile;
        $extension = preg_replace('/.+(\\..*)$/', '$1', $lastRevisionEntry['filename']);
        $textExtensions = array('.txt');
        if (in_array($extension, $textExtensions)) {
            $diffing = 1;
        }
        if ($diffing == 1) {
            $diff = `/usr/bin/diff -u {$lastRevisionFile} {$newFile}`;
        }
    }
    //option == edit
    $data = array('filename' => $uploadFile, 'revizija' => $revizija, 'file' => $file, 'osoba' => $userid, 'projekat' => $projekat, 'diffing' => $diffing, 'diff' => $diff);
    if (!insertFile($data)) {
        $errorText = 'Doslo je do greske prilikom spasavanja podataka. Molimo kontaktirajte administratora.';
        return $errorText;
    }
    return $errorText;
}