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; }
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; }