Dopo aver letto un sacco di domande SO su Keeping page changes history o How to version control a record in a database (ad esempio), non riesco a trovare una soluzione elegante per fare il lavoro.Come creare un sistema di versioning/storia/revisione per i contenuti pubblicati dagli utenti?
Ora, proviamo a spiegare il più chiaro possibile ciò che ci serve, per questo semplice sistema di revisione, che permette agli utenti registrati di pubblicare alcuni articoli, e gli altri utenti di presentare una revisione di tali articoli, e poi alcuni moderatori gli utenti di controllare quelle revisioni.
database MySQL
Il database contiene una tabella articoli con i seguenti campi semplificate:
ARTICLE(id, id_user, title, content, date);
Per implementare le versioni revisione/storia, credo che avremo la seguente tabella:
REVISION(id, id_article, revision_id_user, id_moderator, revision_date,
revision_title, revision_content, revision_description, revision_check);
Con la relazione: ARTICLE 0,n <---> 1,1 REVISION
Workflow
Un utente crea un
ARTICLE
, goduto è inserito nellaARTICLE
tabella (eccezionale!)altro utente fa un aggiornamento di questa
ARTICLE
, questo aggiornamento è registrato nella tabellaREVISION
, e accodato per gli utenti moderatore. (revision_check=0
).Un utente moderatore convalida lo
REVISION(revision_check=1)
, quindi loARTICLE(content)
ottiene il valoreREVISION(revision_content)
.
Le mie domande
È questo il flusso di lavoro sembra essere un buon modo per farlo? Perché, io vedo un errore: se ci sono diversi
REVISION
s per unARTICLE
:- Dovremmo prendere il contenuto dell'ultima submited
REVISION
o l'originaleARTICLE
? - Oppure, dovremmo bloccare le revisioni in quanto non è possibile inviare altri
REVISION
mentre l'ultimo non è selezionato.
- Dovremmo prendere il contenuto dell'ultima submited
C'è un modo per registrare il controllo della luce? A proposito, è possibile inserire nella tabella
REVISION
, solo il contenuto aggiornato tramite una funzione di confronto SQL, PHP o js? E come visualizzarlo come SO farlo? Perché temo che la tabellaREVISION
sarà molto pesante.Bonus: come si fa ??
Qualsiasi idea, collegamento, fonte, plug (MySQL, PHP 5 e JS/Jquery) sarebbe molto appriciated.
+1 Grazie mille per i vostri consigli e per i collegamenti. Aspettando i punti di vista degli altri membri, e se non c'è, controllerò la tua risposta. – Valky