generateFileHash($filename) . '.' . $extension; $this->db->table($this->table . " t1") ->set('presupuesto_id', $presupuesto_id) ->set('nombre', $filename) ->set('file_path', WRITEPATH . 'uploads/presupuestos/' . $new_filename) ->set('upload_by', $user_id) ->set('upload_at', date('Y-m-d H:i:s')) ->insert(); return $new_filename; } catch (\Exception $e) { return null; } } public function deleteFiles($presupuesto_id, $old_files = []) { $files = $this->db ->table($this->table . " t1") ->where('presupuesto_id', $presupuesto_id)->get()->getResult(); if ($files) { foreach ($files as $file) { // se comprueba que el $file->nombre no sea igual a ninguno de los elementos del array $old_files if (!in_array($file->nombre, $old_files)) { if (file_exists($file->file_path)) { unlink($file->file_path); } $this->db ->table($this->table . " t1") ->where('presupuesto_id', $presupuesto_id) ->where('nombre', $file->nombre) ->delete(); } } } } public function copyFiles($presupuesto_id_origen, $presupuesto_id_destino) { $files = $this->db ->table($this->table . " t1") ->where('presupuesto_id', $presupuesto_id_origen)->get()->getResult(); if ($files) { foreach ($files as $file) { $hash = $this->generateFileHash($file->nombre); // se copia el fichero a la nueva ubicación if (!file_exists(WRITEPATH . $file->file_path)) { copy($file->file_path, WRITEPATH . 'uploads/presupuestos/' . $hash); } $this->db->table($this->table . " t1") ->set('presupuesto_id', $presupuesto_id_destino) ->set('nombre', $file->nombre) ->set('file_path', WRITEPATH . 'uploads/presupuestos/' . $hash) ->set('upload_by', auth()->user()->id) ->set('upload_at', date('Y-m-d H:i:s')) ->insert(); } } } public function getFiles($presupuesto_id) { return $this->db ->table($this->table . " t1") ->where('presupuesto_id', $presupuesto_id)->get()->getResult(); } /** * Función para convertir el nombre y extensión de un fichero en un hash único * usando cifrado simétrico. * * @param string $filename Nombre del fichero con extensión * @return string Hash encriptado del fichero */ private function generateFileHash($filename) { return hash('sha256', $filename); } }