[ Marshall2056 @ 12.02.2010. 10:15 ] @
Pozdrav svima,

Radim jedan CMS, ali htio bi da on ima podrsku za pluginove da bi cim lakse mogao inastalirati neke dodatke ili preinake sustava, bez da neka treca strana ne treba prckati po kôdu CMS-a.

Naime, sistem bi trebao raditi preko XML-a tj. ja bi trebao imati jednu stranicu u admin sucelju za modifikacije te unutar te stranice treba biti jedan input type="file", kada se odabere file podaci bi se trebali ucitati u formu kao npr. naziv plugina, verzija, autor, opis itd.. prilikom spremanja tj potvrdjivanja modifikacije skripta bi trebala napraviti svoje kako je definirano u XML-u

<plugin>
<naziv></naziv>
<autor></autor>
<opis></opis>
<baza>
// ovdje ide jedan obicni query ..npr create table, insert into ..etc
</baza>
<file dat="index.php">
<trazi>$nekaVarijabla = 1;</trazi>
<dodajprije>$nekaVarijabla2 = 0;</dodajprije>
</file>
</plugin>

e sada mene zanima, naime kako pronaci jedan red u datoteci (npr dat="index.php") te pomaknuti sve za jedan red dolje pa vratiti ponter za 1 i dodati novi red koji je definiran kao <dodajprije> tagom

nadam se da sam bio dosta jasan sto bi htio napraviti

Hvala svima na pomoci
[ dakipro @ 12.02.2010. 10:24 ] @
Pogledaj neka od open source resenja kako to rade, tj kako tacno traze takve stringove, mislim da smf forum bas tako radi.
A mozda da nekako drugacije organizujes cms, pa da postoji puno blokova recimo, i da svaki blok dinamicki 'vadi' iz svakog modula (plugina) sta ima da se prikaze i radi. U templejtu imas recimo neka kljucna mesta za prikaze, a u kodu koji radi logiku, imas akcije pre - posle akcije, pozovi sve pluginove koji imaju nesto za odraditi.
To je po meni mnogo bolje resenje nego da menjas php i template fajlove. Jer uvek moze nesto krenuti po zlu na sred ubacivanja plugina/modula, i ceo fajl ostane neupotrebljiv.
[ Marshall2056 @ 12.02.2010. 13:29 ] @
Da smf radi tako nekako..doduse ja znam kako naci neki string u fajlu i zamjeniti ga, ali mi nije jasno kako pomaknuti neki red u fajlu dolje pa pointer -1 da bi mogao ubaciti novi red :S

pa ako bi iko mogao napraviti bilo kakav primjer ubacivanja reda prije i poslje bio bi mu zahvalan (primjer ne mora citati xml)

[ Nikola Poša @ 12.02.2010. 14:33 ] @
Možda ovako nešto:
Code:
$sadrzajNiz = file('putanja/do/fajl.txt');

$noviSadrzaj = array();

foreach ($sadrzajNiz as $i=>$red) {
     if ($i == 7) {
         $noviSadrzaj[] = 'neka dodatna linija';
     }

     $noviSadrzaj[] = $red;
}

file_put_contents('putanja/do/fajl.txt', implode("\n", $noviSadrzaj));

Kao što vidiš u tom primeru sam stavio da se na 8. liniju u tom fajlu umeće neki novi red, ti to naravno možeš da prilagodiš prema svojim potrebama.
[ vatri @ 12.02.2010. 15:28 ] @
Ja mislim da ne treba tu previse komplikovati. Procitas fajl i samo dodajes "\n" tamo gdje hoces da "pomjeris" podatke.

Evo neki okvirni primjer:

Code:

$string = 'neki string';
$fajl = 'nekifajl.txt';
$new_string = 'drugi string';

$data = file_get_contents($fajl);

$data_new = str_replace($string, "$new_string \n $string", $data);


var_dump($data_new);


Ovim smo dodali $new_string ispred $string, s tim da smo takodje dodali novi red (\n).

[mala napomenica: da bi \n radilo, moraju biti dupli navodnici (") ]
[ Marshall2056 @ 12.02.2010. 17:47 ] @
super hvala puno...eto bas sam iz toga dobio ideju kako dodati prije ili poslje neki red

kako sam si ja to u glavi zamislio :
znaci, pronadjem neki red na $i == 7 npr i dodam mu "\n" na pocetak zatim isto to napravim ali ne pomicem vise red nikuda nego samo ubacim novi red, a isto tako napravim sa dodavanjem posllje primjenim primjer od Nikole

Hvala vam puno svima