Usuwanie więcej niz 10 starszych wersji jako job

Dzisiaj króki wpis dla Concrete5, ale może dla niektórych będzie przydatny.

Jak wiadomo Concrete5 ofertuje coś takiego jak wersjonowanie stron. Polega to na tym, że pamięta on poprzednie wersje naszych wpisów. Ma to wiele plusów, ale także i minusy, które nie zawsze są zauważalne. O co chodzi?

Czasem zdarza się, że pomimo zapisania strony wyświetla się ona nie prawidłowo. Najczęściej jest to właśnie zwiazane z wersjami.

Domyślnie Concrete5 usuwa wszystkie oprócz ostatnich 10. Uważam, że ta wartosć jest za duża więc wykonałem mały tweak, którym się tutaj podzielę :)

 

Edycja będzie odbywać sie w 2 plikach:

  • ROOT/config/site.php
  • ROOT/concrete/jobs/remove_old_page_versions.php

 

W pliku site.php zdefiniujemy zmienną, która będzie odpowiadać za ilość pozostawionych stron, a podpięcie jej będzie w pliku remove_old_page_versions.php .

Ustawienie mniejszej wartosci niż 2 spowoduje, że zostaną usunięte wszystkie oprócz aktualnej.

Do pliku site.php dodajemy 1 linijkę:

define('NO_VERSIONS',0);

A plik remove_old_page_versions.php edytujemy w 2 miejscach, linia 53 i 55. Tak wygląda fragment po moich przeróbkach:

  1. $vCount = count($versions);
  2. if($vCount <= NO_VERSIONS) { continue; }
  3. $pageCount++;
  4. $stopAt = $vCount - NO_VERSIONS;
  5. $i = 0;
  6. foreach($versions as $v) {
  7. if($v instanceof CollectionVersion) {
  8. if($v->isApproved() || $v->isMostRecent()) { // may want to add a date check here too
  9. continue;
  10. } else {
  11. @$v->delete();
  12. $versionCount++;
  13. }
  14. }
  15. $i++;
  16. if($i >= $stopAt) { break; }
  17. }

Teraz wystarczy tylko odpalić automatyczne zadania :)