Piszę sobie prosty CMS. Głównie dla doświadczenia i do portfolio, jeżeli wypali, to chętnie go potem udostępnię jako darmowy skrypt. Pomińmy założenia i dyskusje dlaczego robię to tak, a nie inaczej (Ma być maksymalnie prosty w konfiguracji i obsłudze, zero baz danych).
Niestety, natrafiłem na duży problem już na początku.

W pliku cms/settings/order przechowywane są nazwy plików użytkownika. Funkcja "up" znajdująca się w pliku cms/files/functions.php ma odpowiadać, za wczytanie pliku order do tablicy, zamianę kolejności dwóch konkretnych rekordów i ponowne zapisanie pliku order. Niestety, funkcja potrafi robić zupełnie losowe rzeczy. Zmienia kolejność rekordów o 2, w ogóle losuje kolejność rekordów, a czasem nawet zadziała zgodnie z oczekiwaniami. Nie mam pojęcia skąd to się bierze, przepisywałem cały kod 3 razy.

Próbowałem też wczytać order do tablicy, zmienić kolejność, zapisać do tymczasowego pliku ordertmp, usunąć plik order i zmienić nazwę ordertmp na order, ale wtedy okazywało się, ze skrypt na samym początku usuwał plik (mimo, że to ostatnia linijka kodu) i nie miał już potem co otwierać.

Testowałem na lokalnym komputerze na serwerze apache i na dwóch hostingach. Wszędzie wygląda to tak samo.

Kod funkcji wygląda tak:
  1. function up($file) // moves chosen line up in order file
  2. {
  3. echo $file.'<br>'; // just checking
  4.  
  5. $order = file('cms/settings/order'); // opening order file to array
  6. print_r($order); echo '<br>'; // just checking
  7.  
  8. $i=0;
  9. foreach($order as $line)
  10. {
  11. if($file == rtrim($line)) // which line in order file == our filename?
  12. break; // if match then break, and i = line number
  13.  
  14. $i++;
  15. }
  16.  
  17. $tmp = $order[$i]; // changing the order of specific lines in array
  18. $order[$i] = $order[$i-1];
  19. $order[$i-1] = $tmp;
  20.  
  21. $f = fopen("cms/settings/order", 'w+'); // writing whole array to order file
  22. foreach($order as $work)
  23. fwrite($f, $work);
  24. fclose($f);
  25.  
  26. print_r($order);echo "<br>";
  27. }


...ale byłbym bardzo wdzięczny, za zapoznanie się z całością skryptu i ewentualną pomoc w rozwiązaniu tego niecodziennego problemu. smile.gif
Spakowany zalążek cmsa: http://www.panja.esy.es/mycms.rar