Stworzenie we własnym module w systemie Drupal rozwiązania drugiego typu nie jest trudne. Generalnie wystarczy nam jedna funkcja aby osiągnąć nasz cel.
$file = system_retrieve_file($image_uri, 'public://files', TRUE);
Funkcja system_retrieve_file znajduje się w module system i jest przez CMS Drupal wykorzystywana na przykład do pobierania paczek modułów. Funkcja przyjmuje cztery całkiem przydatne parametry:
- url
- miejsce docelowe
- managed
- replace
Pierwsze dwa nie pozostawiają wątpliwości. Parametry trzeci i czwarty są dość istotne i bardzo przydatne. Parametr 'managed' to flaga wskazująca, czy system Drupal ma zająć się zarządzaniem plikiem. Zmienia to 2 rzeczy. Po pierwsze plik zostaje dodany do systemu i operujemy na nim tak, jak po użyciu funkcji file_load. Po drugie funkcja system_retrieve_file zwróci obiekt implementujący FileInterface, a nie tylko wartość boolowską wskazującą powodzenie.
Ostatni parametr wskazuje, co ma się zdarzyć jeśli plik istnieje. Nazwy stałych do wykorzystania tutaj są łatwe do zrozumienia:
- FILE_EXISTS_REPLACE - zamiana istniejącego pliku
- FILE_EXISTS_RENAME - zmiana nazwy poprzez dodanie numeru aż do uzyskania nazwy unikalnej
- FILE_EXISTS_ERROR - funkcja zwraca FALSE, a w systemie nie ma żadnej zmiany
Brak komentarzy:
Prześlij komentarz