Grazie ho visto
e' un po complicato comunque ...
Ho creato una libreria che gestisce le revisioni di un testo sfruttando come base dati un nodo xml
fatto cosi
Codice PHP:
<main>
<revnode last="2">
<text>testo dell'ultima revisione</text>
<rev n=0>stringa di diff</rev>
<rev n=1>stringa di diff</rev>
<rev n=2>stringa di diff</rev>
</revnode>
ho fatto tutte le funzioni che creano un nodo revisione e lo aggiornano e restituiscono la revisione
che mi interessa e potrei utilizzare tranquillamente quelle.
pero ho esteso la libreria con queste funzioni ometto il codice se no diventa un mattone
Codice PHP:
class RevsionXmlNode extends SimpleXMLElement
{
public function is_RevNode() { }
public function addChildRev($text,$attrlist = NULL) { }
public function addRevision($text , $attrlist = NULL) {}
public function getRevision($nrev_hi = -1,$nrev_low = -1) {}
public function getRevDiff($nrev_hi = -1,$nrev_low = -1) {}
public function RevRestore($nrev, $attrlist = NULL) {}
public function RevNum() { }
}
in questo modo mi risulta piu facile e immediato da utilizzare come prova ho fatto
questo
Codice PHP:
$xml = simplexml_load_string('<base></base>','RevisionXmlNode');
$revnode = $xml->addChildRev("Ecco la mia nuova classe");
if ($xml->revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}
if ($revnode->is_revnode()) {echo "E' un nodo di revisioni \n";} else {echo "non e' un nodo di revisioni\n";}
echo $revnode->getRevision();
$lastrev = $revnode->addRevision("una seconda versione");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
$lastrev = $revnode->addRevision("ciao\ncome stai ?\nio bene e tu ?\n");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
$lastrev = $revnode->addRevision("ciao\ncome stai ?\n malissimo");
echo "aggiunta la $lastrev revisione con stringa\n";
echo $revnode->getRevision(),"\n";
echo "torno alla revision 2\n";
echo $revnode->RevRestore(2),"\n";
for ($i = 0; $i < $revnode->RevNum(); $i ++) {
echo "\n\n-----------rev $i -----------\n";
echo $revnode->getRevision($i);
}
tieni conto che cosi facendo oltre a gestire i nodi che mi interessano posso accedere all'albero
xml con tutte le possibila' che offre simpleXML
come ti sembra ?
Andrea