test complessi con sfTesterDoctrine

A volte può capitare di dover testare delle condizioni complesse su un oggetto Doctrine. In questi casi, il semplice array solitamente usato col metodo check() può non bastare. Per esempio mi è capitato recentemente di dover testare alcuni campi data con una condizione >= (maggiore o uguale).
Ma lo stesso metodo check() è abbastanza flessibile da accettare come secondo parametro non solo un array, ma anche un oggetto Doctrine_Query. Basterà quindi costruire le condizioni in questo modo e passarle, e il gioco è fatto.

personalizzare i filtri nel backend – 2

Se ricordate un vecchio post sull'applicazione della traduzione ai filtri del backend, sappiate che ora c'è una soluzione migliore:

CODE:
  1. if (sfConfig::get('sf_i18n'))
  2. {
  3.   $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('sf_admin');
  4. }

Tutto qui. Basta mettere queste poche righe di codice nelle classi BaseFormFilterDoctrine.class.php o BaseFormFilterPropel.class.php e il gioco è fatto. I filtri saranno tradotti, anche in altre eventuali lingue supportate dall'applicazione.

Symfony2 arriva il sito dei Bundle

Vi stavate iniziando a chiedere se il tal plugin per symfony fosse stato convertito in bundle per symfony 2? Per rispondere a questo quesito è stato pubblicato da qualche giorno il sito Symfony2Bundles che cerca di aggiornarci sullo stato dei vari bundles presenti su GitHub.

Il codice dello stesso sito, messo a disposizione dagli autori di KnpLabs, è liberamente scaricabile e forkabile da GitHub ed inoltre è possibile seguire una discussione su Google Wave per partecipare attivamente al suo mantenimento.

buoni bundle a tutti!

Rilasciato symfony versione 1.3.6 e 1.4.6

Nuovo rilascio di symfony per quanto riguarda i rami di sviluppo 1.3 e 1.4 .

Si tratta di un rilascio che va a chiudere un problema di sicurezza legato al motore di caching delle pagine.
A differenza delle versioni precedenti alla 1.3 e 1.4 symfony permette di salvare in cache anche gli url contenenti parametri GET (e.s. http://esempio.com/?id_articolo=1).
Questi parametri non venivano correttamente analizzati e verificati: con un url del tipo "http://esempio.com/?id_articolo=..", notare gli ultimi due punti, la rispettiva cache veniva salvata
in una directory superiore a quella voluta.
La vulnerabilità è di tipo Directory Traversal grazie alla quale è possibile accedere a zone del filesystem non permesse.
La gravità di tale falla dipende dai permessi dei file o directory presenti nell'ambiente di produzione e riguarda esclusivamente gli url configurati per essere salvati in cache.

Changeset 1.3.6 e 1.4.6

la killer feature di Symfony 2

Nella conferenza online di oggi è stata rivelata quella che è stata definita la killer feature di Symfony 2: una nuova gestione della cache. Grazie all'implementazione degli standard HTTP, implementando quindi un acceleratore HTTP scritto in PHP, Symfony 2 sarà in grado di fornire prestazioni molto superiori al suo predecessore. Per una semplice pagina in cache, si parla di una capacità di servire richieste dieci volte superiore per dieci utenti contemporanei, che sale a undici volte superiore per cento utenti contemporanei. Con una cache più complessa, la capacità sale rispettivamente a otto volte e ottantacinque volte maggiore. Sarà inoltre possibile una maggiore flessibilità, ad esempio si potrà configurare la cache per una pagina intera e contemporaneamente una cache diversa (magari con tempo inferiore) per un componente interno, come un menù.

Symfony live online conference: The State of Symfony 2

Il 22 e il 23 giugno si terrà la prima conferenza online di symfony, tema principale: lo stato attuale dello sviluppo di Symfony 2, futura versione del framework con rilascio previsto per fine anno.
La conferenza è duplicata in due giornate e in orari differenti in modo da agevolare i partecipanti sui diversi fusi orari.
Gli argomenti trattati saranno:

  • Unit and functional test
  • Symfony 2 e Propel 1.5
  • Le novità di Doctrine 2 e Symfony 2
  • Migliorie varie apportate al framework in questi mesi di sviluppo
  • Il nuovo form framework
  • Symfony 2 "Killer Feature"

Cosa sarà mai questa "Killer Feature" di Symfony 2?
Per saperlo dovremo attendere il 22 giugno!
Per maggiori informazioni e per l'aquisto del biglietto andate sul sito ufficiale della manifestazione: www.symfony-live.com.

Rilasciato symfony versione 1.3.5 e 1.4.5

È stata rilasciata una nuova versione del framework symfony .

La più importante novità introdotta è sicuramente la fix ad una vulnerabilità (ticket) riguardante le classi form di Doctrine e Propel che permetteva ad un utente malintenzionato di aggiornare un record del database diverso da quello presentato nella form di partenza.

Sono stata anche aggiornate due importanti librerie: Propel versione 1.4.2 e Lime versione 1.0.9.

Qui trovate il CHANGELOG completo.

Testare più email contemporaneamente

Può capitare di inviare dalla stessa action diverse email, ad esempio per notificare un amministratore di un determinato evento e contemporaneamente per dare feedback all'utente che l'ha scatenato.

In questi casi sfTesterMailer, che con il metodo withMessage(), ci viene incontro dandoci la possibilità di filtrare, filtrando per destinatario, l'email che vogliamo testare.

Supponiamo ad esempio di aver spedito due email, una a admin@example.org e l'altra ad user@example.org in questo ordine.

Il test funzionale corrispondente sarà:

CODE:
  1. with('mailer')->begin()->
  2.   hasSent(2)->
  3.   checkHeader('to', '/admin@example.org/')->
  4.   withMessage('user@example.org')->
  5.   checkHeader('to', '/user@example.org/')->
  6. end();

Inoltre il metodo withMessage() ci permette anche di ciclare all'interno dei messaggi, usando un secondo parametro denominato $position, casomai i messaggi inviati all'utente siano più di uno.

Propel in Symfony 2.0

Sembra che la tanto attesa nuova versione di Symfony supporterà, come l'attuale, entrambi gli ORM. Se infatti Doctrine, ormai legato a doppio filo al framework, non è mai stato in dubbio, Propel sembrava rimasto indietro. Invece, pochi giorni fa, l'instancabile François Zaninotto ha pubblicato il suo fork con PropelBundle.

È uscito Propel 1.5

L'atteso rilascio della nuova versione di Propel è ufficiale proprio oggi. La novità maggiore è nella nuova API di oggetti Query, che si rifanno in parte a quelli di Doctrine, ma usando un'interfaccia fluida invece di un linguaggio pseudo-SQL. Ci sono inoltre nuovi behavior e l'ereditarietà concreta per le tabelle. Il tutto è stato mantenuto retrocompatibile con la versione 1.4. Già da ora è possibile usare Propel 1.5 in un progetto symfony, grazie a sfPropel15Plugin.
Ecco la lista completa delle novità.