<?php

require_once("../autentificare.php");
require_once("{$sitepath}pagecomponents.php");

check_auth();

$id_aplicatie = getuserdata('id_aplicatie', 0);
$id_fisier_vechi = getuserdata('id_fisier_vechi', 0);
$id_perioada = getuserdata('id_perioada', 0);
$id_utilizator = $_SESSION['s_id_utilizator'];
$result = "Fişierul nu a putut fi încărcat!";

// Verific daca utilizatorul are drepturi de upload (TO DO !!!)
$sql = "SELECT * 
        FROM utilizatorixgrupuri ug
            JOIN grupuri g ON g.id_grup = ug.id_grup
        WHERE ug.id_utilizator = $id_utilizator AND ug.activ = 1";
$q = mysql_query($sql);
if (mysql_num_rows($q))
{
    // Verific daca perioada este valida si daca nu a fost incarcat fisier valid  
    
    // Incarc fisierul
    $director_destinatie = $filespath.$id_utilizator;
    if (!is_dir($director_destinatie)) mkdir($director_destinatie);
    if (is_dir($director_destinatie))
    {
        $separator = substr($filespath, strlen($filespath) - 1);
        $tag = "";
        $cale_fisier_vechi = "";
        if ($id_fisier_vechi)
        {
            $q = mysql_query("SELECT * FROM fisiere WHERE id_fisier = $id_fisier_vechi");
            if ($r = mysql_fetch_assoc($q))
            {
                $id_aplicatie = $r['id_aplicatie'];
                $id_perioada = $r['id_perioada'];
                $cale_fisier_vechi = $filespath.$id_utilizator.$separator.$r['nume_fisier'];
            }
            $tag = "fis{$id_fisier_vechi}fisier";
        }
        else
            $tag = "app{$id_aplicatie}fisier";
        
        echo $tag;
        echo $_FILES[$tag]['name'];
        if (isset($_FILES[$tag]))
        {
            $nume_fisier_destinatie = $_FILES[$tag]['name'];
            $ext_fisier_destinatie = substr($nume_fisier_destinatie, 
                strlen($nume_fisier_destinatie) - strrpos($nume_fisier_destinatie, '.') - 1);
            $nume_fisier_destinatie = substr($nume_fisier_destinatie, 0,
                strlen($nume_fisier_destinatie) - strrpos($nume_fisier_destinatie, '.') - 1);
            $index = '';
            while (file_exists($director_destinatie.$separator.$nume_fisier_destinatie.(($index!='')?'['.$index.']':'').$ext_fisier_destinatie))
            {
                $index = (string)(((int)$index)+1);
            }
            $nume_fisier = $nume_fisier_destinatie.(($index!='')?'['.$index.']':'').$ext_fisier_destinatie;
            $cale_destinatie = $director_destinatie.$separator.$nume_fisier;
            $tip_fisier = $_FILES[$tag]['type'];
            $nume_original = $_FILES[$tag]['name'];
            if (move_uploaded_file($_FILES[$tag]['tmp_name'], $cale_destinatie))
            {
                mysql_query("START TRANSACTION");
                $sql = "INSERT INTO fisiere (id_aplicatie, id_perioada, id_utilizator_sursa, stare,
                            nume_fisier, nume_original, tip_fisier, data_incarcare)
                        VALUES ($id_aplicatie, $id_perioada, $id_utilizator, 1,
                            '$nume_fisier', '$nume_original', '$tip_fisier', NOW())";
                mysql_query($sql);
                if (!mysql_error())
                {
                    if ($id_fisier_vechi)
                    {
                        mysql_query("DELETE FROM fisiere WHERE id_fisier = $id_fisier_vechi");
                        if (!mysql_error())
                        {
                            mysql_query("COMMIT");
                            $result = '';
                            unlink($cale_fisier_vechi);
                        }
                        else
                        {
                            $result = 'Fişierul vechi nu poate fi şters din baza de date!';
                            mysql_query("ROLLBACK");
                        }
                    }
                    else
                    {
                        mysql_query("COMMIT");
                        $result = '';                        
                    }
                }
                else
                {
                    mysql_query("ROLLBACK");
                    $result = 'Fişierul nu a putut fi înregistrat în baza de date';
                    unlink($cale_destinatie); // sterg si fisierul de pe server
                }
            }
            else
                $result = 'Fişierul destinaţie nu a putut fi creat pe server';
        }
        else
            $result = 'Datele nu au fost transmise corect către server!';
    }
    else
        $result = 'Fişierul nu a putut fi încărcat pe server!';
}

echo $result;
   
sleep(2);

?>

<script language="javascript" type="text/javascript">
    window.top.window.opresteIncarcareFisier(<?=$id_aplicatie ?>, <?=$id_fisier_vechi?>, "<?=$result ?>");
</script>