DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   recycle bin za CMS (http://www.devprotalk.com/showthread.php?t=3167)

ivanhoe 04. 07. 2007. 10:30

recycle bin za CMS
 
nesto se igram i hocu da dodam recycle bin u jedan moj CMS, odnosno da napravim foru da se sve sto se brise, ne obrise zaista, vec se samo prebaci negde, i da moze po potrebi da se uradi undelete... ovo se odnosi i na fajlove i na bazu..

Jeste radili nekad nesto slicno?

Imam neke nedoumice oko toga kako da implementiram celu stvar, recimo za fajlove da li :
a) "obrisane" fajlove pomeriti u specijalni direktorijum tako da relativna putanja u tom diru bude ista kao originalna u odnosu na web-root (npr. fajl /home/pera/www/foo/bar.jpg se nakon brisanja smesta u /home/pera/obrisano/foo/bar.jpg)

b) preimenovati "obrisane" fajlove u neko genericko ime u nekom dir-u, a u bazi pamtiti gde je taj fajl ranije bio (ovo je mocnije resenje jer postoji mogucnost da se sacuva vise fajlova istog imena i putanje..)

c) integrisati se u neki CVS

Takodje za recorde iz baze, da li da cuvam obrisane recorde u zasebnoj tabeli ili samo da ih markiram kao obrisane ?

Sta mislite?

Ilija Studen 04. 07. 2007. 10:47

Ne znam za fajlove (nisam baš mnogo razmišljao o tome).

No, novi activeCollab ima Trash. Sve se svodi na STATE flag. ENUM sa tri moguće vrednosti STATE_SPAM, STATE_DELETED i STATE_VISIBLE.

Kada se prikazuje Trash izlače samo objekte sa DELETED stanjem. Znači, ne pomeram objekte u drugu tabelu već sve držim u jednoj. Nisam se još bavio performansama ovog rešenja, ali ne vidim zašto bi pravio probleme ako nije u pitanju velika količina podataka...

zira 04. 07. 2007. 11:09

Ne znam kakva je interna organizacija tog CMS-a...
Sto se tice tabela, radim isto kao i Ilija, samo flegujem zapis kao obrisan, tj. da je u recycle bin-u.
Za fajlove, ako ih vec sve imas u bazi, mozes isto tako samo da ih flegujes u samoj bazi kao obrisane, nema potrebe da ih fizicki premjestas.
Fizicko brisanje zapisa i fajlova radis u trenutku kada neko odluci da ih obrise iz recycle bin-a.

ivanhoe 04. 07. 2007. 12:03

Citat:

Originalno napisao zira (Napišite 38344)
Za fajlove, ako ih vec sve imas u bazi, mozes isto tako samo da ih flegujes u samoj bazi kao obrisane, nema potrebe da ih fizicki premjestas.

moracu da ih pomeram, jer kad neko "obrise" fajl ocekuje da tom fajlu vise nece moci da se pristupi, a posto fajlove drzim na disku i pristupa im se direktno, onda moram da ih nekako sakrijem...

mozda samo uradim rename fajla..

Ilija Studen 04. 07. 2007. 12:06

Samo da vidim da li mi je logika ispravna - ako je u pitanju *nix dodavanje tačke na početak imena fajla će ga automatski označiti kao hidden i neće mu se više moći pristupiti preko web servera (direktnim kucanjem URL-a u address bar)?

Ivan 04. 07. 2007. 12:16

Citat:

Originalno napisao ivanhoe
moracu da ih pomeram, jer kad neko "obrise" fajl ocekuje da tom fajlu vise nece moci da se pristupi, a posto fajlove drzim na disku i pristupa im se direktno, onda moram da ih nekako sakrijem...

mozda samo uradim rename fajla..

Mozes da radis rename, ali u slucaju da imas neki file manager onda ces morati da mu napravis logiku da ne cita fajlove sa tim i tim tagom (deo koji npr dodajes u postupku menjanja imena ili sl.). I/Ili mozda da radis neki .htaccess trik ali u slucaju gde ima mnogo fajlova moze se desiti do uzaludnog trosenja resursa ... !?

Dušan Dželebdžić 04. 07. 2007. 12:25

Možeš i da iskopiraš logiku koja se koristi u desktop OSovima, i koja već funkcioniše na milionima računara bez (puno) problema :)

Windows: Skriveni folder "Recycled", u njemu svi fajlovi koji su brisani, bez očuvanja strukture foldera i sa random karakterima umesto naziva fajla. U bazi se čuvaju originalni nazivi i lokacije fajlova

KDE/Gnome: Direktorijum .Trash (tačkica na početku označava skriveni dir). U principu isto kao na Windowsu, samo bez šifrovanja imena fajlova.

@Ilija: Tačka sakriva fajl, u zavisnosti od konfiguracije servera može da se desi da se ne prikaže u dir listingu, ali može da mu se pristupi direktno -- http://www.impetusdesign.com/.ilija.html

Ivan 04. 07. 2007. 13:02

I jedno i drugo resenje nije lose (mislim na premestanje ili rename), rename je po meni bolje u slucajevima kada nema ftp pristupa usera jer se skracuje postupak (ne mora se puno petljati po bazi, dovoljno je cuvanje samo putanje 'obrisanih' fajlova, ne mora da se premestaju fajlovi, itd ...).

degojs 05. 07. 2007. 06:25

Moraš da radiš rename u svakom slučaju i to tako da bude jedinstveno ime, ako hoćeš da čuvaš nekoliko različitih fajlova sa istim imenom.

1. imaš fajl sa imenom "abc.txt"
2. fajl se obriše (i možda premesti u neki RecylceBin folder)
3. imaš novi fajl sa istim imenom (na istom mestu gde je bio prethodni): "abc.txt"
4. fajl se obriše. Ako ga pomeriš u RecycleBin, a bez novog jedinstvenog imena, prepisaćeš onaj prvi "abc.txt" koji je već tamo.

Itd.

salebab 05. 07. 2007. 10:33

^ pa on svakako u bazi mora da cuva originalno ime fajla zbog restore. Znaci samo kada upisuje novi fajl proveri dal se u bazi nalazi takvo ime fajla.
Moj predlog je samo rename, recimo neki prefix fajlu npr "rb_" :)


Vreme je GMT +2. Trenutno vreme je 09:40.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.