11 Mar 2010
DevZone - Items tagged as: Zend Framework
Joseph Crawford's Blog: Zend Framework: Creating RESTful Applications
Joseph Crawford has a new post to his blog today with a look at his use of the Zend_Rest_Controller and Zend_Rest_Route components of the Zend Framework to create a simple REST service .
11 Mar 2010 5:25pm GMT
Webinar - New in Zend Framework 1.10!
Zend Framework 1.10 sports a ton of new features, as well as completely revamped online documentation. In this webinar, Matthew Weier O'Phinney, Framework Project Lead, and Ralph Schindler, Zend Framework Software Engineer, will present a synopsis of the new features, discuss the new online documentation system and how it's built, and answer your questions about the new release….
11 Mar 2010 4:27pm GMT
CI News
EllisLab moves to Mercurial, Assembla, BitBucket; CodeIgniter 2.0 Baking
EllisLab today announces changes to our internal development processes, including dropping Subversion in favor of Mercurial and adopting Assembla as our agile software development management tool. Along with these changes, CodeIgniter 2.0 pre-release code is in development, and is now hosted at the Mercurial-focused social coding site BitBucket.
At EllisLab we make ExpressionEngine, the CMS for web professionals, and CodeIgniter, the only PHP framework to receive praise from Rasmus Lerdorf, the creator of PHP. We're based out of Bend, Oregon, but only two staff members live there. The rest are scattered roughly from West to East in Portland, Missouri, Illinois, Toronto, North Carolina, Ireland, the UK, Germany, and Austria. In addition to very little face to face interaction with one another, our developers have to deal with as much as a 9 hour difference from other team members. So we've adopted and continue to adopt methodologies and technologies to bridge those gaps and enable us to be as productive as if we were all in the same building, working the same hours.
Version Control
One no-brainer, and I hope most of you are using it as well, is version control. Since 2005, we've been using Subversion, and it has performed admirably, particularly during the majority of ExpressionEngine's life when there were only two Sith developers working on a project. The first year that Subversion was in use, we even shared a single user and did not use commit messages. That works fine when you can read the rest of your team's minds, and you aren't using version control for revisioning, but merely for convenient file sharing.
But Subversion comes with a lot of baggage, some of which becomes heavier in proportion to the distance between team members, and as both your projects and team increase in size. Commits and diffs become laborious on even the fastest of networks. The size of the repository balloons if you try to use basic features of branches and tagging. Renaming and moving files is a pain, and can jam up your fellows' repositories. And don't even think about working independently and merging.
These and other issues led us to examine dozens of version control systems (VCSes) to find the right fit for our team. We looked at Git first, whose growth can be largely attributed to the popularity of GitHub, then Bazaar, darcs, Monotone, Perforce, BitKeeper, and so on. But after weeks of research and test use, we settled comfortably into Mercurial.
Now before the Git readers get their pitchforks ready and head for the comments, let me be clear that we are not at odds. Both are great distributed version control systems (DVCSes), have nearly identical features, and have a common enemy: Subversion. So our switch to Mercurial means that Git users win too - joining a growing army against centralized version control. It just happens to be that a few of the divergent features swing slightly towards Mercurial for our specific needs, but above all, our team enjoyed using Mercurial more than Git. Not that we didn't enjoy Git, we just enjoyed Mercurial more, and why is hard to quantify but there was obviously no reason to fight it. We're here to write code and create great applications; the more that our use of any VCS can fade into the background to accomplish that goal, the better.
Scrum
When your development team grows beyond two people, the mind meld dissolves, the ability to know at any given moment what the rest of the team is doing, and how well they are doing it dissipates. Cowboy coding's ability to be effective diminishes. So a little over a year ago, we began looking at various agile software development methods, and decided to try out Scrum. It's been a tremendous success.
To bring Scrum to a team spread across the world, we've been using technology to create a virtual office. Google Docs for shared spreadsheets to track our Sprints and burndown charts. Planning Poker to help us plan Sprints. Neither tool ever felt like a perfect match for us, though. Whether it's the clumsy manner in which product backlog items are stored and moved to a new spreadsheet to create Sprints, or not having the hour estimation card that we really wanted to play - resulting in a lot of "I estimated 16 hours but I really mean 12" - these tools were getting us by, but were not the most effective.
Enter Assembla, a tool we came across in our search for a new VCS. Assembla is the perfect blend of what our developers and our product owners need for project management, and that mix is remarkably difficult to find. It gives developers the ability to use any VCS they like, including those on your own servers, fully integrated with a ticketing system that is built from the ground up for agile software development. Product owners are given a visual ticket organizer to effortlessly create Sprints from categorized backlogs. Add to that a Scrum tool to make standing meetings less intrusive to the varied working hours of our distributed team, and it's near perfection.
Assembla is the product that is saving us from having to write our own agile software management tool. We've moved all of our software projects into Assembla. This is a tool anyone working in a team should check out.
This is a behind the scenes change of course so it may seem inconsequential, but all of our users will benefit. Like Mercurial, this logistical portion of our virtual office can just do what it's meant to do and thus fade into the background, letting us focus on getting things done instead of on processes.
CodeIgniter
Of our communities, CodeIgniter benefits the most directly from these changes. The adoption of a new VCS and new internal development tools allows us to not only be more effective in CodeIgniter's development, but also enables us to give you more and to interact more directly with you.
Starting today, CodeIgniter 2.0 is baking, and I'm thrilled to announce that with Subversion gone, in-development code is available publicly on its new home: BitBucket.
After adopting Mercurial, joining BitBucket was a perfect fit for our open source projects. It has a beautiful source code browser and will make watching code changes a breeze with its graphical changeset viewer and RSS/Atom feeds.
It also comes with a rich social layer, quick access to tagged versions, along with forking and patch queue management for advanced users. Do you find yourself making the same modifications to CodeIgniter before beginning a project? BitBucket and Mercurial can help you do that and share it with others with ease, using any version in the upstream repository.
We're really excited to watch CodeIgniter's growth accelerate due to these changes. A discussion of CodeIgniter 2.0's features and direction will be forthcoming, so be looking for that in the future in the news section of CodeIgniter.com. What are you waiting for? Go sign up at BitBucket and become a zealot, following the CodeIgniter project!
11 Mar 2010 4:00pm GMT
10 Mar 2010
DevZone - Items tagged as: Zend Framework
DZone.com: Q&A with Jason Gilmore: The Zend Framework
On DZone.com today there's a new interview by Lyndsey Clevesy with Jason Gilmore looking at the Zend Framework and some of the general things to expect in coming versions.
10 Mar 2010 1:12am GMT
07 Mar 2010
symfony Project Blog
A week of symfony #166 (1->7 March 2010)
Symfony 2 development got a boost this week with lots of chagesets, mostly related with the upcoming Doctrine 2 bundle.
Development mailing list
- Discussions about Eclipse Plugin for Symfony 2
Development highlights
Symfony 1.X branch:
- r28347: [1.2, 1.3, 1.4] removed cookies from Response objects serialization as it does not make any sense and can cause weird behaviors
- r28348: [1.3, 1.4] added a check for the php_posix extension as some distrib disable it
- r28365: [1.3, 1.4] added a way to change the default max forward in the controller for edge cases
- r28366: [1.3, 1.4] fixed sfGeneratorConfigHandler.class.php doesn't work with Windows path
Symfony 2.X branch:
- 3671..e0a4: [DependencyInjection] made a small performance enhancement (no need to lowercase three times the same)
- 0c3a..c731: [DoctrineBundle] cloned cache driver service for each usage so we can set a prefix to avoid caching conflicts
- 165b..fb76: [Console] added hasOption and hasArgument to Input
- b3d8..660f: [Symfony] added isBooted() method so that I can pass an existing kernel to a Console application
- 1a45..f5a3: [DoctrineBundle] enhanced the Doctrine 2 integration further to better handle multiple connections/entity managers
- 85ed..8970: [DoctrineBundle] made mapping information more flexible to allow different metadata mapping files for each bundle
- 1be4..87e7: [DoctrineBundle] added doctrine:import-mapping command to allow you to easily import the mapping information from an existing database connection to a bundle
- 2db0..f579: [DoctrineBundle] Fixes for building when you have multiple bundles which mixes mapping information types
- 6ead..a392: [DoctrineBundle, WebBundle] enhanced API for retrieving database connections and entity managers from controllers to allow for specifying the name of the connection or entity manager
- 42ad..41d1: [DoctrineBundle] improvements for building entities and getting started
- 47ae..d3eb: [DoctrineBundle] integrated the new Doctrine 2.0 entity alias feature for the query language
- 3fbe..bc81: [DoctrineBundle] removed the need to pass the container to the extension (which is dangerous)
- 2e42..5aba: [ProfiledBundle] moved debug tools from WebBundle to ProfilerBundle
- 17d4..80bb: [DependencyInjection] stored references to shared services as soon as possible to avoid circular references on legal code
- e811..9ec2: [OutputEscaper] renamed Safe to SafeDecorator
- 4505..14f4: [ProfilerBundle] fixed storage read() method and unpack/pack data to avoid weird character in the data stream
- 8ed1..2311: [DoctrineBundle] fixed alias support to be in sync with the latest version of Doctrine
sfDoctrinePlugin:
- r28353: [1.3, 1.4] fixed escaping of Doctrine query parameters in WDT
sfPropelPlugin:
- r28393: [1.2, 1.3] removed unneeded code (which breaks the separation of concerns)
Development digest: 90 changesets, 18 bugs reported, 16 bugs fixed, 2 enhancements suggested, 3 enhancements closed, 8 documentation defects reported, 25 documentation defects fixed, and 16 documentation edits.
Documentation
- Updated symfony and TextMate, and How to Sort Admin Generator List By Foreign Table Name pages
- Updated symfony 1.4 reference:
- chapter 7: fixed default value
- chapter 10: fixed description of some settings and added an example
- Cristiano G. Betta (cristiano [at] cgbdigital [dot] com): Developer, UX designer and devoted geek from London, UK. Experience with Facebook and other social media development in Symfony and Kohana. Likes to tinker with data visualisations and craves a good user experience.
Plugins
- New plugins
- upPropelLockTableBehaviorPlugin: add methods on Propel objects to set locks.
- upPropelActAsTracableBehaviorPlugin: adds two fields on Propel objects to save its last edition.
- sfDoctrineDynamicFormRelationsPlugin: (no description)
- sfKrumoPlugin: uses Krumo (http://krumo.sourceforge.net/) to implement a nice replacement for print_r() and var_dump() PHP functions.
- sfHtml5FormPlugin: provides you with widgets and validators to use the new HTML5 input types for forms and filters.
- sfG1mrEditorPlugin: allows the use of Yahoo Rich Text Editor with sending pictures/uploads to text, on the forms.
- sfG1mrToolsPlugin: common tools of G1mr's projects.
- Updated plugins
- sfEasyAuthPlugin: created a compact log in form for sidebars, added a method to the Security User to retrieve the url users should be redirected to after logging in, profiles are now correctly retrieved by doctrine
- swBaseApplicationPlugin: added colorbox and jquery 1.4.2, removed jNice.css reference
- csDoctrineCommentsPlugin: created the initial directory structure
- sfDoctrineDynamicFormRelationsPlugin: initial import, updated README
- fcDbBackupPlugin: first commit, cleaned up syntax
- sfTrafficCMSPlugin: unbroken the updating of embedded models, fixed the bug with deleting embedded models and not getting an error message about it
- sfDoctrineJCroppablePlugin: fixed fatal bug when uploading new image
- sfExtjsThemePlugin: added edit_combo for non foreign edit fields, fixed the jsonCombo action to not show is null marker for edit combos, fixed a notice in jsonCombo with edit combos
- sfDoctrineSimpleForumPlugin: cleaned schema.yml (removed some useless 'performance enhancers'), updated and cleaned fixtures.yml, updated CSS and added some images, created admin features such as lock topic, sticky topic, delete, etc. (integrated into sfGuard permissions group of sf_doctrine_simple_forum_moderator_group), updated feed, updated routing.yml, tidied templates
- dcPropelReportsPlugin: updated event handling
- sfDoctrine2Plugin: updated form class to use D2 style reflection instead of ActiveEntity, moved isNew check out of constructor for better performance
- sfEasyGMapPlugin: added reverse geocoding an fix some bugs
- sfAmfPlugin: updated typo in amfBrowser link, updated secure flag for symfony 1.3-1-4 versions
- mgI18nPlugin: removed Doctrine dependency, merged lib, ajax and application tabs to one tab named 'Files', added a new database tab, the user can now lookup the database for messages, the import task now update target if the target is already in the database, fixed utf8 errors
- swCrossLinkApplicationPlugin: created the 1.2 and 1.3 branches, compile method is now public
- sfSympalPlugin: allowing for a lot rendering method to also be on the content type, setting proper project config instance when context is loaded, cleaned up some config options related to slot types, moved icons into CSS, rearranged the order of where we look for the getXXXSlotValue method when rendering a slot, changed the unpublished slot value to something more helpful
- sfSympalAdminPlugin: changed admin menu labels
- sfSympalEditorPlugin: re-established an "edit" mode with save and cancel buttons that save all content slots
- apostropheBlogPlugin: put titles on category admin generator pages, you can now properly attach media to events again, changes to index view of blog engine, created rss feeds for all blog filters, csrf and 1.4 compatibility fix for admin theme, changes to post and upcoming events partials
- apostrophePlugin: initial commit of minify module, made some private methods protected for easier overrides, renamed to lib/base to lib/action for consistency with the symfony standard, fixed apostophe logo in admin bar to link to the proper controller, added autocomplete plugin to assets because the Rich Time Picker uses autocomplete, added a new PDF slot (the default setting shows a basic PDF icon on the left, with the title, description and a download link on the right), significant progress on I18N, search markup was invalid with a strict doctype, wrapped aSlideshowSlot JS in CDATA tag to help with Strict DocType validation
- apostropheFormBuilderPlugin: slot type for rendering charts from form data
- New gallery: (English, and Russian) website of art exhibition called "New gallery" located in Kiev
They talked about us
- PHP Conference UK 2010
- Doctrine_Query_Extra: Extending the Doctrine Query Object
- Migration d'un gros projet symfony de la version 1.2 à 1.4
- Философия Symfony 2
- Symfony newsletter using Swift mailer
- Что новенького в Symfony 2?
- Job Queue in Symfony
- symfony: sfDoctrineGuardPlugin and customizing user profile
- OpenPNE3プラグイン開発勉強会、の復習
- Day 1 of learning Symfony
- О «symfony best practices»
- symfony 404 cache error in production
- Are you a plugin developer? Then sign up to receive donations from this site
- Apprentissage de la framework Symfony
- My Favorite Symfony Resources
- Ordenar por campos virtuales con el AdminGenerator de symfony
- Symfony 2.0 - Notes
- Reusing a edit/create form
- Accessing Symfony 1.0 Database attributes
- How to add a custom filter for the admin listing
- Symfony: Detect Which Version is Installed
- Symfony 2 wird die Welt retten aber was soll ich bis dahin machen? Teil 3/3 - Die Unterschiede
- Для экспертов в Symfony
- Static methods vs singletons: choose neither
- Symfony 2のアプリケーション構成を読む
- Symfony reloaded or same old frameworks speed holy wars
- symfony1.4(1.3)で簡単に確認画面を作るアドミンジェネレータ
- symfonyで sfWidgetFormInputCheckboxの隣にlabelを出力する
- Windows下Symfony的安装
- Symfony Live 2010
07 Mar 2010 9:05pm GMT
05 Mar 2010
DevZone - Items tagged as: Zend Framework
Ben Scholzen's Blog: Modern Application Design - Part 1
Ben Scholzen has started a serial about modern appication design on his blog. As base of this serial he is using his blog source for demonstration.
05 Mar 2010 10:13pm GMT
Matthew Weier O'Phinney's Blog: Responding to Different Content Types in RESTful ZF Apps
Continuing on from his previous articles on working with REST in Zend Framework applications (and making the endpoints for a web service) Matthew Weier O'Phinney has a new tutorial with the next logical step in the series, automatically responding to different content types in your application based on the content-type the client sends.
05 Mar 2010 9:11pm GMT
Michael Kimsal's Blog: Zend Framework and Doctrine integration - autoloading of doctrine models
Michael Kimsal has a new post today looking at using Doctrine models in a Zend Framework application and how to get them to autoload when you need them with the help of Zend's Zend_Loader_Autoloader.
05 Mar 2010 4:56am GMT
Rob Allen's Blog: Zend Framework, IIS and 500 errors
If you've been using the Zend Framework on a Windows platform (running IIS as the web server) and have been getting some 500 errors and have been left lacking the detail you need on the problem, you should read this new post from Rob Allen about an IIS setting that can help you out.
05 Mar 2010 4:53am GMT
How to avoid Identity Theft in Zend Framework with Zend Auth
While there are many major security issues possible in a web application, there is a particular one that bugged me for some time. The Identity theft - Broken account and session management issue. Why can one so easily still my session id cookie and suddenly gain access to my account in one particular web application? I know it its rather impossible to make this 100% hack-proof but I strongly believe that the system should be improved as much as possible. Our goal is to implement a Zend Auth extension that adds a new level of security to the previously mentioned class. This extension - let's call it Project_Application_Auth - would check the Zend Auth storage for the IP and/or User Agent. In order to do so, these should be set in the login process in the storage. If the IP is different then the initial IP from the login process and / or the User Agent is not the same as the initial User Agent from the login process, then our extension would tell us that it is not a secure identity (aka it is safe to assume it has been stolen) and thus we should disconnect the user.
05 Mar 2010 4:30am GMT
04 Mar 2010
CI News
EECI2010 Full Ticket Giveaway
The ExpressionEngine and CodeIgniter Conference (EECI2010) in May is the CodeIgniter and ExpressionEngine event to go to this year. We want you to join the fun, so we're giving away a full conference ticket to the year's biggest event. Read the full details and how to enter at the ExpressionEngine blog.
Read details for the EECI2010 Full Ticket Giveaway
04 Mar 2010 8:48pm GMT
symfony Project Blog
Symfony 2.0 and the PHP Ecosystem
Unless you've been living under a rock, you have already heard a lot about Symfony 2. The buzz on the Internet, and especially on Twitter and on blogs, have been terrific so far. Today, I won't really talk about the Symfony 2 features. If you want to give Symfony 2 a try, you'd better read the "Quick tour" tutorial on the Symfony reloaded website. This post is more about one key aspect of the Symfony 2 philosophy. Hopefully, it will help you better understand the reasoning behind most of our decisions.
Symfony 2 is all about having a better core architecture. The old Mojavi classes are now all gone. They have been replaced with a more flexible foundation. This will allow Symfony to be used to develop both very small websites like personal homepages and also very big ones that have specific needs. The new architecture also gives us the opportunity to fix the mistakes we made in symfony 1 and to incorporate all the feedback we received during the last four years.
Symfony 2 still aims to be a full-stack framework but with a slightly different philosophy. You know that we don't like to reinvent the wheel, and so symfony 1 is already built on top a lot of different third-party libraries (Propel, Doctrine, Swiftmailer just to name a few). For Symfony 2, we have decided to take it to the next level. The Symfony core team will concentrate more on providing a great low-level architecture and we will rely even more on third-party libraries whenever possible for everything else.
The first visible decision we made was to replace our logger and caching libraries with the Zend Framework ones. We spent a lot of time writing these classes and maintaining them over the years, but whenever we take a decision for Symfony 2, we try to think about what is best for the project in the long run. It's never about personal ego.
But of course, we won't use a library just because it exists. Five years ago, I decided to create lime for our unit tests, instead of using an existing library like SimpleTest or PHPUnit. And I did that for some good reasons: among them, I wanted a simple way to write unit tests to lower the barriers of entry to unit testing. But things have changed a lot since then. First, PHPUnit is now the de-facto standard library for unit testing, and PHP developers are more comfortable with the whole testing concept. So, the core team has decided to switch from lime to PHPUnit for Symfony 2.
I like what Paul Lomax tweeted some days ago about that: "Use what's out there; realise it sucks; write your own; wait until others suck less; dump your own; use other."
Using PHPUnit instead of lime basically means we have less code to maintain ourselves. It's like having Sebastian Bergmann on board; one more great PHP developer helping us making Symfony better. But using PHPUnit also has a lot of other advantages:
- We will play well with others (Zend Framework, Doctrine, Propel, ...);
- You will have better integration with tools like IDEs, Continuous Integration servers, ...;
- You will benefit from features that are not available in lime;
- You will have less Symfony-specific things to learn.
Bernhard will keep on working on Lime 2, but he will also have more time to work on core Symfony features like the new form framework.
Using third-party projects is great but only if they can be integrated into the Symfony core in a cohesive and transparent way. That's where the Dependency Injection Container comes into play. Symfony 2 is entirely built around a Dependency Injection Container. Besides the flexibility it gives to the developer, it's also a great way to easily integrate third-party code. If you are curious, have a look at the DoctrineBundle plugin or the Swiftmailer one to see what I mean.
Keep in mind that Symfony 2 is not ready for prime time. We have published a preview release to gather feedback early in the process. So, feel free to play with the new code base and don't hesitate to provide as much feedback as possible.
04 Mar 2010 1:32pm GMT
WithCake.com Companies Hiring
qpLogic Europe
We can use immediately an experienced Cake developer for assisting us with developing a multi-lingual application that needs some Jake/Joomla (css) integration. We have continuously Cake projects and prefer to work with a team of individual developers in multiple time zones. Please show me that you are experienced, affordable and have at least 24 hours available per week (40 is better ;-).
04 Mar 2010 11:54am GMT
02 Mar 2010
DevZone - Items tagged as: Zend Framework
ZendCasts.com: Creating Custom Zend_Form Decorators
On ZendCasts.com today there's a new screencast aimed at showing off custom Zend_Form decorators for your Zend Framework application.
02 Mar 2010 9:15pm GMT
Connecting Flex 4 and RESTful Web Services using Zend Framework
With Adobe's latest incarnation of the Flex Framework and the Flash Builder integrated development environment ( IDE ), creating truly engaging front-end clients is now more streamlined. Some of the useful tools and features covered in this article are the Data/Services, Test Operation, and Network Monitor additions to Flash Builder. In this article, I explain how to set up a simple Representational State Transfer ( REST ) service using the Zend Framework 1.9 locally and connect to it in the Flex 4 application.
02 Mar 2010 7:04pm GMT
28 Feb 2010
symfony Project Blog
A week of symfony #165 (22->28 February 2010)
This week, three symfony security releases were published (1.2.12, 1.3.3 and 1.4.3). In addition, Yaml component gained lots of fixes and Doctrine Bundle integration with Symfony 2 was improved.
Development mailing list
- Discussions about thoughts & doubts about Symfony 2 and Symfony 2 feedbacks
Development highlights
Symfony 1.X branch:
- r28260: [1.2, 1.3, 1.4] fixed sql injection vulnerability in doctrine admin generator
Symfony 2.X branch:
- d2da..58fe: [WebBundle] switch the order of the response status codes in the RedirectController's redirectAction
- 62c2..ba24: [Yaml] removed the unused value property from Parser. Tweaked one-line check to be self explaining
- 0dca..05ee: [Foundation] added kernel.bundles to the list of default parameters of the DIC
- f87f..e973: [DoctrineBundle] made the ORM integration of DoctrineBundle usable
- 68af..0f87: [WebBundle, DoctrineBundle] Use backslashes in namespaces
- caa7..fd8a, 46c4..809f: [Yaml] added backtick and question mark (?) to the list of characters that trigger quotes as it is reserved for future use
- 8302..3ee2: [Yaml] fixed offset when the document use --- or the %YAML element
- a80a..f39d: [Yaml] added support for compact notation
- 19f9..7728: [Yaml] fixed compact notation when there is an inlined hash
- 22e3..b933: [WebBundle] refactored the data collector sub-system
Development digest: 149 changesets, 36 bugs reported, 17 bugs fixed, 7 enhancements suggested, 5 documentation defects reported, 4 documentation defects fixed, and 12 documentation edits.
Documentation
- Updated PHPEdit extension for Symfony page
New Job Postings
- Senior Developer with strong Symfony experience at IPC Media - full-time based in London, UK - More information
- Senior / Junior Symfony / PHP-Developer at Utopia - full-time based in Munich, Germany - Contact: dr [at] utopia [dot] de
- Florian Heinze: Web developer and project manager with more than 10 years experience. Symfony, Doctrine, MySQL, NoSQL, JavaScript, etc. Clean and secure object oriented code. Based in Germany, OWL, Bielefeld.
Plugins
- New plugins
- mbJrollerMenuPlugin: Builds a menu from a YAML file with a defined structure. Requires sfAdminThemejRollerPlugin which gets all the styles and the Javascripts features.
- sfPHPUnit2Plugin: adds basic functionality for unit and functional testing with PHPUnit.
- sfJSLibJQueryLogPlugin: offers helpers that integrate the http://plugins.jquery.com/project/log JQuery Plugin. The plugin depends on sfJSLibManagerPlugin.
- dvbNewsletterPlugin: a newsletter management plugin.
- Updated plugins
- sfSympalCommentsPlugin: adding some top margin to the comments so they don't smash against the content
- sfDoctrineSimpleForumPlugin: fixed urls in default.css, importerd external images, almost fully I18N, recursive replies for idefinite depth, works with symfony 1.2
- sfDoctrineActAsTaggablePlugin: fixing schema in order to get a vaid yml syntax
- sfSphinxPlugin: fixed wrong references to internal methods
- sfTaskExtraPlugin: added propel:build-app-forms and propel:build-app-filters tasks, updated skeleton package.xml with correct symfony version requirements
- sfSolrPlugin: fixed tests, added Xms and Xmn options
- tdAudioPlugin: updated layout, forward404 if no audio added
- tdVideoPlugin: forward404 if no video added
- sfDoctrine2Plugin: added limit and hydrate options to runDql task, added callback to project config after Entity Manager is created
- tdVisualFactoryPlugin: removed unused admin generator for single images
- sfSympalPlugin: bringed in the assets in a more intelligent way - hook these up to the widget that actually requires them, added some doc-block to this useful but confusing method, made the markdown plugin proper (it now outputs its own setup javascript and includes the css and js that it needs), major refactoring of the frontend slot editing, adding saving of slots via ajax
- rsLucenePlugin: entities fix
- sfDoctrineApplyPlugin: stray use of nonexistent variable was crashing rather than producing a graceful error message in the event that email delivery failed outright
- sfOrmBreadcrumbsPlugin: initial commit
- sfSocialPlugin: fixed bug in groups, improved tests, migrated schema to alternate syntax
- sfJqueryReloadedPlugin: corrected channel setting for the next release
- sfDoctrineMasterSlavePlugin: fixed filtering of model builder options, fixed required symfony version markup, made example emulation database config a bit more sexy
- csGlossaryPlugin: changed private methods to protected (for overriding)
- sfEasyAuthPlugin: removed the option to not hash passwords in the setter (it was causing problems with Doctrine), deleting an object correctly deletes associated profiles
- sfUnobstrusiveWidgetPlugin: updated package jquery.uo, added spinner JS in the jquery.uo package, updated sfUoWidget->hasJsTranformer function to be able to test a specific transformer name
- sfDatagridPlugin: fixed an error_message into _call_action
- pkToolkitPlugin: fix for custom admin generator theme to address security problem found in symfony 1.2, 1.3, and 1.4
- sfTrafficCMSPlugin: default value for datepicker
- sfPropel15Plugin: fixed automated pk addition when concrete inheritance is set
- sfFCKEditorPlugin: simplified widget, removed reliance of obsolete editor helper classes, moved height/width into attributes array
- sfSympalBlogPlugin: removed unnecessary p tag
- apostropheFormBuilderPlugin: disabled changing layout type when editing existing layout, disabled the ability to change the type of an already existing layout, fixed calculation of rank to properly work when loading fixtures and in normal use, changed route class of a_form_submission_sequence, fixed doctrine routing issue for new form submission sequences, fixed link to fill out form from edit form page, fixed bootstrap code for unit test
- apostrophePlugin: all of our components and actions classes are now extensible at the app level, save slideshows without smooshing any other fields that might bein the values array, fixed csrf issue with batch actions in admin generator theme, replaced use of sfValidatorDoctrineChoiceMany with sfValidatorDoctrineChoice for sf1.4 compatibility, removed obsolete separate layout.php for media repository, fix for custom admin generator theme to address security problem found in symfony 1.2, 1.3, and 1.4, fixed bug in navigation component that caused caused the root page to lose its slots after the first when navigation was included in the homeTemplate, changes to navigation component
- apostropheBlogPlugin: added ability to filter blog posts by there category on an engine page, added app.yml hook for adjusting date and time formatting for upcoming events
- Mailing Report: (French) email marketing software built to send and analyze email campaigns
- hediyeDilegi.com: (Turkish) Wishlist and shopping lists: Collect items from anywhere by the bookmarklet, and share with friends & family
They talked about us
- Continuous Integration Of A symfony Project In Less Than 10 Minutes With CI Joe
- Symfony TV
- Yahoo! e l'open source al Symfony Live 2010
- Das war die Symfony Live 2010
- Un nuovo sito per esperti di symfony
- Symfony: справочник по документации
- Symfony Live: a smashing success
- Symfony Live 2010
- sfLive2010: Vídeo de la presentación de Symfony 2
- Forcing a javascript file to be loaded at the end in symfony
- Symfony Live 2010 : Les coulisses
- Primera imagen de phpBB4 sobre Symfony 2
- The Top Symfony Development Firms Have Been Ranked for February 2010 by bestwebdesignagencies.com
- Symfony 2 utilizará PHPUnit
- symfony live 2010
- Testing symfony projects with PHPUnit
- symfony CMS review series: Apostrophe
- Se publican las actualizaciones de seguridad 1.2.12
- Vérifier la valeur d'un champ dans un test fonctionnel
- Important symfony security update released
- Symfony 2.0 Preview
- Symfony 2.0 Preview Release testen
- Symfony Best Practise : Designing your Schema
- One fun, easy and complete Diem tutorial
- Fabien Potencier - the father and the mother of Symfony framework
- Symfony vs CakePHP
- symfonyとphp-twientでtwitterでログインするサイトをつくる
- Symfony Live 2010
- Framework Shopping
- Symfony Reloaded (Symfony 2)
- Stop building gold on top of crap
- Bash completion for symfony (autocomplete)
- Instalar Symfony en Windows Vista (con XAMPP)
- CouchDB logger for symfony
- Une faille de sécurité découverte dans Symfony 1.3.2 et 1.4.2
- Choice is a good thing
- Injecter des valeurs avant validation du formulaire Symfony
- symfonyの中級者向けチュートリアル
- PHP Framework Benchmarks: Entertaining But Ultimately Useless
- Symfony Live 2010
- Symfony 2.0, le framework PHP passe à la vitesse supérieure
28 Feb 2010 10:00pm GMT
27 Feb 2010
DevZone - Items tagged as: Zend Framework
NestedSetDbTable class
API for managing nested sets of data stored in a database. NestedSetDbTable class extends Zend_Db_Table_Abstract, to provide custom functionality for working with database tables that has hierarchical data in them data.
27 Feb 2010 9:47pm GMT
25 Feb 2010
WithCake.com Companies Hiring
London College of Fashion
London College of Fashion / University of the Arts London is looking to hire a freelance PHP developer with knowledge of Cake to work on its Showtime portfolio app (http://www.arts.ac.uk/showtime). We do want to meet with prospective developers, so London-based is a requirement. We're also looking for somebody who has a good feel for interface and some enthusiasm for the the creative arts! If interested drop us a line.
25 Feb 2010 5:21pm GMT
DevZone - Items tagged as: Zend Framework
Padraic Brady's Blog: PHP Framework Benchmarks: Entertaining But Ultimately Useless
In a new post to his blog Padraic Brady takes a humorous look at benchmarking PHP frameworks in a response to some of the other recent posts from developers on the Symfony and Solar frameworks.
25 Feb 2010 12:50pm GMT
symfony Project Blog
Security Release: 1.2.12, 1.3.3 and 1.4.3
A SQL injection vulnerability in the Doctrine admin generator was reported earlier today which has been addressed in these 1.2.12, 1.3.3 and 1.4.3 security releases. This vulnerability was limited to the Doctrine admin generator and did not affect the Propel admin generator or any other aspect of symfony's Doctrine integration.
We recommend all projects that use the Doctrine admin generator upgrade to these latest versions immediately.
The vulnerability
The admin generator in sfDoctrinePlugin was not properly filtering the GET request parameter that switches the sort order on record listing pages. By manipulating this parameter in the URL, it was possible to inject arbitrary SQL into the query that populates the list page. We have closed this hole by applying a simple whitelist filter which checks that this parameter is either "asc" or "desc," case-insensitive.
How to report a security issue
It behooves us all to review the process for reporting a security issue to the symfony core team. This process, described on the symfony wiki, is set aside from reporting other issues with the symfony code because security issues require special consideration. If you find a security vulnerability, please do not post to the symfony-users mailing list. Instead, send an email to security [at] symfony-project [dot] com describing the vulnerability and it will quickly be qualified and addressed. Once a fix is released, the vulnerability and fix will be announced on this blog.
How to upgrade
If you've checked out a copy of the a tag from Subversion, switch to the latest.
// symfony 1.2
$ svn switch http://svn.symfony-project.com/tags/RELEASE_1_2_12
// symfony 1.3
$ svn switch http://svn.symfony-project.com/tags/RELEASE_1_3_3
// symfony 1.4
$ svn switch http://svn.symfony-project.com/tags/RELEASE_1_4_3
If you are using the pear package then do this works for you.
// symfony 1.2
$ pear upgrade symfony/symfony-1.2.12
// symfony 1.3
$ pear upgrade symfony/symfony-1.3.3
// symfony 1.4
$ pear upgrade symfony/symfony-1.4.3
Once that's complete, clear your project's cache.
$ php symfony cache:clear
If you'd prefer to download the security fix as a patch, you may do so for the 1.2, 1.3 or 1.4 branches.
25 Feb 2010 7:47am GMT
DevZone - Items tagged as: Zend Framework
Cal Evans' Blog: How I got Zend_Tool working on Windows
A few version back the Zend Framework introduced a handy component that can help you get a Zend Framework started quickly - Zend_Tool (and the command line "zf"). It works like a charm on unix-based systems, but has some quirks about it on Windows. To help with the situation, Cal Evans has posted a guide on Zend_Tool and how he got it working on his Windows 7 platform.
25 Feb 2010 12:43am GMT
24 Feb 2010
DevZone - Items tagged as: Zend Framework
Zend Framework 1.10.2 Released
On behalf of the Zend Framework community, I'm pleased to announce the immediate availability of Zend Framework 1.10.2, our second maintenance release in the 1.10 series. You can download it from our downloads page: http://framework.zend.com/download/latest This release includes approximately 50 bugfixes, the majority of which were contributed during our Bug Hunt Days last week (more information on that in the days to come). The fixes contributed are helping stabilize and improve this release.
24 Feb 2010 11:04pm GMT
23 Feb 2010
CI News
EllisLab @ SXSW 2010 and You
Over the course of the last few years we have gradually changed our approach to SXSW, preferring to move toward a small-group discussion format.
This is a great move for EllisLab and for the community; there is an immeasurable value to this discourse. This year we are excited to continue with this format and to add to it; this year, you, through the services at UserVoice, will have the opportunity to choose where we meet and what we discuss.
Read the full details on the ExpressionEngine blog (direct link to entry). Of particular note for CodeIgniter users, we will will be offering private Lunch with EllisLab events to exceptional contributors to the community, including those who run CodeIgniter community sites. This is your opportunity to tell us what we can do to support your endeavor while enjoying a meal on our tab.
(Note: user your CodeIgniter.com account to log in to the ExpressionEngine.com forums)
23 Feb 2010 7:34pm GMT
22 Feb 2010
DevZone - Items tagged as: Zend Framework
Adrian Schneider's Blog: Zend Framework Models - Part 1: Concepts
Adrian Schneider has started up a new series of posts on his blog today with part of of his look at models in the Zend Framework .
22 Feb 2010 6:54pm GMT
21 Feb 2010
symfony Project Blog
Symfony Live Community Response
A conference such as Symfony Live always generates a lot of buzz. Especially when there are interesting announcements or rumours are made. This post will give you an overview of the community response to Symfony Live from various blogs and social networks.
Blogposts
A lot of people write about their experience at a conference like Symfony Live. Below is a list of blogposts about Symfony Live.
Dutch
English
- DevExp
- Doctrine
- Goyello
- Matthew Weier O'Phinney
- ServerGrove: Day 1 and Conclusion
- SolutionSet: Day 1 and Day 2
- Symfony Blog: Day 1 and Day 2
- The Net Circle
French
- Amicalement: Day 1 and Day 2
- Australopitech: Day 1 and Day 2
- Informat HIC
- Particul.es
- SymfoTips
German
- t3n
- Testically: Training Day, Day 1, Day 2, Conclusion
Russian
Ukrainian
Did you write a blogpost about Symfony Live 2010, and was it not included in this list? Please link your post in the comments and we'll add it
Flickr
Many of the PHP community are (amateur) photographers. And you can see that by the amount of photos published of the Symfony Live conference.
- AgencePix
- bascht
- bayarsaikhan
- Cat & Nat
- denderello
- Dextro
- kea42
- kris.wallsmith
- mvriel
- nicolas_martin
- skoop
- xavierbriand
Did you make pictures and publish them somewhere, and are they not included in this list? Please link your photos in the comments and we'll add them
Video
Did you make a video and publish it somewhere, but isn't included in this list? Please link your video in the comments and we'll add it
The most direct feedback you can get is from Twitter these days and indeed there were quite a lot of tweets about Symfony Live. The following is an overview of some awesome tweets that used the official #sflive2010 tag:
- "All #sflive2010 participants, have a lot of fun."- ElCondor35
- "Symfony Live begins. Love the music #sflive2010" - nlisgo
- "At #sflive2010 - internet for the first time in days is like a breath of fresh air" - weaverryan
- "Talk about Internationalisation just finished. Already learned nice things. #sflive2010" - littledesign
- "Admin generator - this will be one to check out if you're not here #sflive2010 @jcleveley http://yfrog.com/3ltkgnj" - weaverryan
- "customer will chew our balls if we don't get some work done this week... come on Gods of the airborne Internets! #sflive2010" - RussMonkey
- "#sflive2010 "GPL developers do exist in Redmond" OSTC: Linux geeks working at MS whose job is to improve open source performance on Windows" - tommybgoode
- "#sflive2010 : makes a baguette worth traveling for 900km" - Stormsson
- "we are at #sflive2010 in Paris, very nice conference and people!" - IDEATO
- "BREAKING NEWS !!!! The #sflive2010 will be recorded (sound and video) this afternoon and tomorrow !" hhamon
- "Our view from #sflive2010 http://yfrog.com/35dchuj" boxlightmedia
- "sfContext is anti-performance and anti-unitTesting #sflive2010" - sarahhaim
- "blargarbel #sflive2010" - baarserik
- "I just made my first joind.in comments, so should you!! The feedback really helps the speakers! #sflive2010 #joindin" - mvriel
- "Doctrine migrations with @denderello - giving this topic more attention, which it deserves http://yfrog.com/1du1lsj #sflive2010" - weaverryan
- "I don't want to have pain in the ass when I put something up to the server re: Database migration #quoteoftheday #sflive2010" - nlisgo
- "Doctrine Migration just rock ... O_o #sflive2010 thanks for this conference" - dfeyer
- "Thx to @denderello doctrine migration presentation i have great ideas about improving our Scrum/XP/Kanban based dev process #sflive2010" - CyrilCottet
- "#sflive2010: great people, lots of interesting discussions & new ideas - hope I'll be able to convince all devs to use #symfony for #phpBB4" - naderman
- "Doctrine 2 presentation not disappointing. Great things to look forward to. @jwage #sflive2010 http://yfrog.com/1dhlcqj" - nlisgo
- "@jwage introduced the flush & clear antipattern to #doctrine2. finally PHP gets the problems Java has had for a while :-) #sflive2010" - CodingFabian
- "@gerryvdm That's why we learn and try new stuff:) Not having a clue about something is just the first step to becoming an expert #sflive2010" - zegenie
- "Symfony Offline backend interface based on HTML5 O_o nice work #sflive2010" - dfeyer
- "Lol @skoop slide showing @stunami plugin sfImageTransform at number 10. Oh he was so chuffed it got to number 9! #sflive2010" - haswalt
- "Sensio core team in a police lineup. Who done it?! #sflive2010 http://yfrog.com/3i7j4pj" - nlisgo
- "Cool discussions at #sflive2010 nice to see the core team together!" - evertjes
- "OH: not everyone is the next Yahoo #sflive2010" - mvriel
- "#sflive2010 What a big news !!! phpBB will be completely rewritten with Symfony 2.0 !" - garulfo2
- "The real power of the symfony community revealed http://yfrog.com/auupzfj #sflive2010" - gilles_taupenas
- "Symfony 2.0 there will be bundles instead of plugins #sflive2010" - hoeboe
- "I enjoy the fact that Fabien is worried about spilling secrets to me at the #sflive2010 core team Q&A. ;-)" - weierophinney
- "Breaking news : the next James Bond movie will be coded with #symfony2 #symfony2partout #sflive2010" - mbontemps
- Keeping an eye on Symfony Live 2010. Will be interesting to see what is in Symfony 2. #sflive2010 - om4james
- The room is slowly filling and the tension is rising: at the end of the day we will have seen sf2.0! #sflive2010 - mvriel
- Youngest symfonian up early and ready for the last day of Symfony Live in Paris #sflive2010 http://yfrog.com/32t8hkj - nlisgo
- Sf2.0 speculations in the talks is increasing. #sflive2010 - mvriel
- I was never sure if we should go for dependency injections in our devs but now i'm fully convinced we shall give it a try #sflive2010 - CyrilCottet
- #sflive2010 OkAPI crew used Symfony components to avoid getting buried in maintenance of their own code. Very nice - tommybgoode
- while is faster than for, ++$i is faster than $i++, array_* functions are inefficient - very cool #sflive2010 - weaverryan
- #sflive2010 #php "Working by reference will usually make you waste memory" - futurecat
- Xavier de Cock explains with great simplicity the OpCode #sflive2010 - sarahhaim
- in_array & array_* function are performance killer #sflive2010 - dfeyer
- coding live in front of 250 peoples ... big balls here ! #sflive2010 - omansour
- Xavier de Cock gave good tips on how to write efficient code. Premature optimizations are evil but it's good to know this stuff #sflive2010 - jakub_zalas
- I love git status. And how git add stages modified and new files #git #sflive2010 - nlisgo
- all the buzz about git is starting to make sense - great git presentation at #sflive2010 - zegenie
- Git introduction was the best talk so far! #sflive2010 - baarserik
- Hot damn! The talk about #git was thus great I even did not get to tweet! #sflive2010 - mvriel
- First sentence in Zend framework talk : "I'm not the enemy !" :) #sflive2010 - CyrilCottet
- Great slide title in @weierophinney's session about sf/zf: "Service Layer Objects ar King". #sflive2010 - denderello
- Liked @weierophinney talk on "integrating zend with symfony", touched things I really hate with sf with examples howto solve it #sflive2010 - bjori
- The elePHPhant doesn't have a Symfony Live badge. Kick it's ass out of here!! @fabpot #sflive2010 - nlisgo
- Never before has "sfContext::getInstance() kills kittens" sounded as ominous as when spoken by @denderello at #sflive2010... - h4ppydotcom
- Some spunky transition effects by @kriswallsmith #sflive2010 - mvriel
- so, for those not attending #sflive2010: we are looking for more case studies for the symfony blog. mail me (address on #symfony about page) - skoop
- just had a great presentation about profiling and debugging symfony at #sflive2010 - sneakyvv
- #sflive2010 2 things sounds medieval now: symfony 1.x and SVN. good news, symfony2 is hosted on git. - futurecat
- #Symfony : a very fast dev environnement. It knows when to flush the cache #sflive2010 - vjousse
- loved the conference! I'm totaly into Symfony 2.0 #sflive2010 - hoeboe
- Standing ovations for Fabiens Symfony 2.0 presentation. #Symfony 2 and #Doctrine 2 combined will rule the world! #sflive2010 - chautzi
- Dear #sflive2010: you rocked! Thank you! Dear Paris: I'm sorry I didn't have time to learn more French! Thanks for being so nice about it! - tommybgoode
- Very impressed by @fabpot's work on Symfony 2. #sflive2010 - francoisz
- Thank you core team for a great #sflive2010 conference. On my way back to Copenhagen. - lasserfar
- In a git training at #sflive2010, @chacon is a great trainer. read the pro git book for free: http://progit.org/book/ - dustinwhittle
- Thanks all for good time at #sflive2010. Hope eveyone gets home ok. I need to get home and rest my brain now! - haswalt
- ok, i am sold, no more big conflicting merging session with svn, give me more git rebase #sflive2010 - el_boby
- Had a great time at #sflive2010 , thanks to all the organisers. See you all at the after-party 25 Feb Sway Bar in London before #phpuk2010 ! - boxlightmedia
- Arrived safely in Miami, very long day, up for 18hs and not done yet. What an awesome conference #sflive2010 - pgodel
- #sflive2010 in one sentence: "Kill the magic. Less magic, less WTF". - orso80
21 Feb 2010 9:45pm GMT
A week of symfony #164 (15->21 February 2010)
Symfony Live 2010 conference took place this week, resulting in astonishing success. Symfony 2 preview was released during the conference and it's been praised afterwards in hundreds of blog posts and tweets.
Development mailing list
- Discussions about sfAutoloadAgain
Development highlights
Symfony 1.X branch:
- r28046: [tools] prepared icu converter for icu 4.3 release preparing to fix some bugs
- r28050, r28051: [1.3, 1.4] added tests for ICU upgrade
- r28080: [lime 2.0] implemented the new CLI utility
- r28092: [lime 2.0] renamed mock method any() to method()
- r28111: [lime 2.0] added the new class LimeExecutable which allows to add any test files to the harness
- r28113: [lime 2.0] simplified the LimeLoader logic and introduced new interface LimeLoadable
Symfony 2.X branch:
- 5cde..4856: [Templating] added an output method to Engine
- 6796..9aed: [Foundation] added a check to the Universal class loader
- 0218..632f: [RequestHandler] added the Request Handler component
- 4a00..26c0: [Routing] added the Routing component
- 38ae..6677: [Foundation] added the missing parts of Symfony Foundation
- 5bf8..3521: [Framework] added the Symfony 2 full-stack framework code
- 1d8a..0d85: [WebBundle] made some error messages better
Development digest: 142 changesets, 26 bugs reported, 40 bugs fixed, 1 enhancement closed, 13 documentation defects reported, 4 documentation defects fixed, and 23 documentation edits.
Documentation
- Updated Debate about Symfony 2.0 features and changes, and Symfony IRC channels pages
New Job Postings
- Symfony Expert at Omniture Developer Connection - Contact: rpacker [at] adobe dot com
- Darmen Amanbayev (ioxanssen@gmail.com): has 3 years of web application experience and 2 of them - with Symfony, also works as PHP developer. Based in Astana, Kazakhstan.
New symfony bloggers
- Vivian Pennel (feed) (French)
- Keri Henare (feed) (English)
- Wojciech Sznapka (feed) (English, and Polish)
- typeed (feed) (Deutsch)
- Pugi-Ga-Pogi (feed) (English)
- Tworzeniu Stron | Łukasz Adamczewski (feed) (Polish)
- develop7's blog (feed) (Russian)
- 2cool4school (feed) (English, and French)
Plugins
- New plugins
- sfOrmBreadcrumbsPlugin: provides easy breadcrumbs integration and configuration for your project application.
- sfTeraWurflPlugin: provides an easy way to use Tera-Wurfl library which is a PHP and MySQL based library that uses the Wireless Universal Resource File (WURFL) to identify specific device capabilities and features.
- sfOauthPlugin: (no description)
- sfPicasaPlugin: a quick symfony wrapper for the Google Picasa API.
- Updated plugins
- sfSympalPlugin:
- introduced listeners (classes which reacts on dispatcher event)
- refactored events out of sfSympalConfiguration to the new event handling implementation
- fixes for installer
- removed requirement to use enableAllPluginsExcept manually in your ProjectConfiguration
- made sure app is enabled for sympal and prepared when installing
- renamed plugin related methods to be more appropriate
- added again the new configuration tests
- fixed issue with the order of loaded plugins and using enableAllPluginsExcept() which should not be used anymore
- fixed issue with broken tasks
- fixed issue with plugin manager
- fixed issue with old google analytics js and updated event listener to new implementation
- disallowed the editing of the site slug which is also the application name which breaks the application
- made sfSympalDataGrid implement Iterator and Countable
- removed old dependencies code as it is not used any longer
- removed sfSympalContext instance from slot model
- fixed sitemap.xml and added tests
- sfTrafficCMSPlugin: added auto-config for simple-page routing & model stuff for simple pages, delete checkboxes are now added to embedded models
- sfUnobstrusiveWidgetPlugin: added select_callback to treeview.jquery.uo JS script
- sfEasyAuthPlugin: major refactoring to change how inheritance works, fixed various bugs in the admin area, added indexes on the credential and profile_id columns, created a branch to integrate doctrine, renamed propel filters and generated doctrine ones, updated some references to propel, the admin filter now works on credentials, created an easy auth credential base class, created doctrine versions of all propel methods, updated the actions base class, created some basic Doctrine forms for registration
- sfSolrPlugin: fixed deletion by ids, refactored indexing task, removed debugging information, added more logging information, add omitNorms option in search.yml file
- sfPhpunitPlugin: selenium autocomplete methods, base testcase\testsuite don't implement fixture agregator interface by default, fixture throws exception if the requested fixture data object is not exist, all test can be run through standart phpunit command
- sfDoctrineJCroppablePlugin: now allows the loading of images from the data/images dir when doing a './symfony doctrine:build --all --and-load'
- mgI18nPlugin: added default relative url root to asset, made the form works with sf1.3 and upper
- sfJqueryFormValidationPlugin: continued work on new and updated version
- ahDoctrineEasyEmbeddedRelationsPlugin: no useless "add new" forms anymore when the embedded relation is one-to-one and a related object exists, added the git clone installation option to the README
- pmModuleEnablerPlugin: fixed 404 on logout
- sfDatagridPlugin: added Last and first page buttons
- sfExtjs3Plugin: added 'data' to sf_extjs3_list_attributes
- sfDoctrineMasterSlavePlugin: initial import
- ckWebServicePlugin: updated functional tests for doctrine/propel object mapping, updated README, updated package.xml for 4.0.0 release for sf1.3 and sf1.4, regenerated wsdl in fixture project
- sfTaskExtraPlugin: added doctrine:build-app-forms task, added doctrine:build-app-filters task
- tdVisitorCounterPlugin: fixed wrong i18n catalogue
- tdVideoPlugin: updated CSS to use background images
- tdAudioPlugin: updated css to use background images, updated form to handle embedded relation form
- tdGuestbookPlugin: updated css to use background images
- auto-pkw-gebrauchtwagen.at: (Deutsch) a classified ads site for cars
- University of Azores: (Portuguese) main website of the University of Azores and their Departments
- Millennium Trilogy: (English) a website for the New Zealand & Australian releases of the Millennium Trilogy movies
- Lido Auckland: (English) the Lido chain of cinemas
- IdeaHQ: (English) IdeaHQ invests seed capital at the very first stages of a business life
- Keri Henare: (English) personal website of Keri Henare
- LifeBloodLIVE: (English) Leukaemia & Blood Foundation New Zealand's community forum for support and information
- BabyAngel: (English) online supplier of fresh meal hampers, and care parcels in New Zealand
They talked about us
- Pre-Symfony Live report
- sfFormHierSelectPlugin pour intégrer jquery-option-tree dans votre projet symfony
- Symfony Development Services Are Now Available at a 7% Discount
- Se publica Symfony 1.2.11
- Se publican Symfony 1.3.2 y 1.4.2
- Run a Symfony Task from your Model or Action
- Symfony: памятка по форматированию даты - format_date()
- [DAY 1] Symfony live 2010 #sflive2010
- Sensio Labs dévoile Symfony 2.0
- symfony live 2010 - Internationalization
- Symfony Live 2010, impresiones
- Symfony Live 2010 : résumé de la première journée
- sfLive2010: Doctrine 2 no será como los demás ORM
- PHP: la conférence Symfony Live s'internationalise
- sfLive2010: phpBB4 será programado con Symfony 2
- Symfony Live - day 1
- Отключаем сессии в Symfony
- Symfony Live 2010. День первый
- symfony core team meets again at symfony live 2010
- User Dependent Forms with Symfony
- Symfony 2.0: des capacités d'intégration accrues
- Symfony live 2010 slides
- Symfony Live 2010
- sfLive 2010: Integrando Zend Framework con Symfony
- sfLive 2010: Preguntas y respuestas con los creadores de Symfony
- sfLive2010: Symfony 2 incluirá componentes de Zend Framework
- Symfony Live 2010: 1ere journée
- sfLive2010: Así es Symfony 2
- Symfony Live presentations
- sfLive2010: Todas las presentaciones de la conferencia
- Symfony Live 2010. День второй
- Прошла конференция Symfony Live 2010
- Symfony Reloaded - 2.0
- Symfony 2.0 sera disponible demain
- Symfony and jQuery: sfWidgetFormJQueryMultiSelect ver 0.1
- symfony Tip #1: Write A global/form Partial
- symfony live 2010: l'événement international incontournable
- Symfony 2.0
- Symfony Live 2010 & Symfony 2
- Symfony 2.0 - La nouvelle version du framework PHP est disponible
- Symfony Reloaded - Das ultimative PHP-Framework?
- Symfony 2.0, la nouvelle génération des frameworks PHP
- Symfony reloaded - Symfony 2.0 preview release
- symfony Tip #2: Circumvent The SQLSTATE[HY000] [2002] PDO Exception (Propel)
- Symfony Live Conference, Symfony 2.0, and Dependency Injection
- Symfony Live 2010, now what?
- Diem 5.0 Release Candidate
- Sensio Labs présente Symfony 2, nouvelle branche du célèbre framework PHP
- Symfony Live 2010: 2eme journée
- Symfony Live Presentation. Part 2
- An Open Letter To The phpBB Community
- In Symfony, how big should a module be?
- Kris Wallsmith on Symfony in the clouds
- Symfony Experts is a new site for urgent Symfony questions
- Formulardaten vor dem Abspeichern ändern
- Eigener Form-Validator
- symfony session storage with using MongoDB
- Try to customize the console script in Symfony2
- Przydatne komendy Symfony CLI
- Przydatne Sztuczki Symfony
- Symfony Live 2010 review
- What to do when symfony cli colorization does not work on unix systems
- Symfony 2.0a et Symfony live 2010
- Symfony 2, comment ça fonctionne?
- Symfony 2 Looking Good :)
- Continuous Integration Of A symfony Project In Less Than 10 Minutes With CI Joe
- Symfony: Upload d'image sans dupliquer les fichiers
- Symfony Reloaded Preview
- Generating pdf using mPDF library in Symfony
- Codeigniter or symfony framework
- Symfony2 と戯れてみた (その1)
- Symfony 2.0 preview
- Symfony Live 2010 Highlights
- Symfony ha ricaricato 2.0 - una nuova generazione di strutture del PHP
- Symfony 2.0 - New generation of PHP framework
21 Feb 2010 9:28pm GMT
19 Feb 2010
symfony Project Blog
Symfony Live Day 2
For the second day of this Symfony Live, management was easier because everybody knew the place, people coming from far away were less jet-lagged which was better to follow the upcoming sessions! Moreover, for the staff we were, people could fortunately enter the place without queuing because of us!
Sessions began with Lukas and Jordi who described us how they used symfony components like yaml, event dispatcher or request handler out of symfony. Beyond the pure usage, they described how they managed the integration inside the Okapi project and how they contributed to enhance the yaml component for example.
Then, Xavier made his best to present how to optimize PHP code. The session was fully understandable and based on the use of tools PHP developers would use more often to be sure they optimize what is valuable. On the top of that, he described the common things he learned during his investigations.
Right after the pause, everybody took a deep breath to dive in GIT world for a while. GIT is not so simple to use but, maybe thanks to Scott, I have been impressed by the simplicity over possibilities GIT provides. For us being attendees on Thursday at the one-day-GIT training, he definitely convinced us GIT usage is really made to help us along everyday-code-management tasks.
The following presentation was made by Matthew from Zend. His talk was first showing how it is easy to integrate Zend components in symfony. Then, he draw a map of what can be used from Zend framework. After his talk, I think some of us will soon play with the Zend Queues or some services components like the newly stable Zend_GData.
After lunch, Marcos reported how he implemented a symfony-based CMS for a publishing company.
Then Dennis came back on stage to clarify definitely the cases when to use event notifications, what their limits also.
Kris followed to tell us with some examples how it is cool to publish a symfony application to the cloud. He gave then some tricks to manage applications on top of highly distributed architectures. Nice feedbacks about Doctrine multiple connections for read/write split, CDN management and testing clues were happily provided by Kris, sometimes (surprisingly?) based on Zend components...
Then, Alvaro took the microphone to describe how he optimized a symfony application while encountering some high traffic at his company. Along all the issues Alvaro and the team had to cope with, he explained how they investigated and solved them with an impressive list of tools like CouchDB for log management, XHProf to profile the application, Tsung to benchmark it.
Then, Dustin presented the reasons that led Yahoo! to choose symfony. Adapting it to make it become ysymfony, he emphasized the good reasons why they migrated Yahoo Bookmarks, then Answers and Delicious in the end. After the migration presentations, he presented the interesting Yahoo! developper tools of the Yahoo! developper network and how it eases integration of external public data thanks to YQL. Then, Dustin gave some useful tips to help on scaling with PHP/symfony environments.
And to top it all off, Fabien came for the fairly long-awaited presentation of Symfony 2 (beware the capital S of Symfony that time, no way to mix). Still in development, Fabien presented the stable core of Symfony 2 which is Fast as hell ! Not to tease you anymore without giving you anything, the code and a quick tutorial have been published. To begin, we recommend you to visit the new Symfony reloaded site and to follow the tutorial to see how easy it is to develop with Symfony 2.
Videos in high quality will come, don't be disappointed! Of course, you will hear about it more and more during 2010 and be sure it will make some noise!
19 Feb 2010 7:00pm GMT
17 Feb 2010
symfony Project Blog
"symfony 1.2 is not supported anymore"
symfony 1.4 is the current Long Term Support release that will get bugfixes for 3 years.
symfony 1.2 was released December 1st 2008 and now deserves its rest. It was a major milestone release for symfony bridging the gap between 1.0 and 1.4. Based on the community feedback we decided to prolong its support to ease transition. This transition period however is now over. symfony 1.2 will no longer receive updates from the core team, 1.2.11 is the last release of that branch. We will focus on driving Symfony 2 from now on, while still maintaining 1.3 and 1.4.
I would like to thank you for your feedback on "my" release and hope Kris will serve you well (ok, to be fair, I will still help him) on symfony 1.3 and 1.4.
And if you like it hacky and unstable like me, join my on the Symfony 2 alpha train ;-)
Yours sincerely,
Fabian
former symfony 1.2 Release Manager
17 Feb 2010 9:40pm GMT
Symfony Live Day 1
Here is half of the way done at the moment. Symfony Live this year made us think our speakers can begin to live their own rock star life (see symfony stickers and you will feel confident about it). Yesterday morning at 8, some people were already waiting for their badge. Actually, they were right on time okay because the registration was beginning at 8... Unexpectedly it made us think at the first impression that the event were pushed from start by a high community pressure. For us, we could not be more pleased to see it.
Anyway... first issues were badge problems and #twitter would say far better than me what was the overall feeling about wifi connection. Anyway, after lunch, everybody pushed behind the not-so-unsignificant logistical problems.
The program of this tuesday was full of various subjects. Focusing on technical matters, we saw two interesting admin generator based sessions
- to know how to customize it in details thanks to John Cleveley in the morning
- and Thomas Parisot showing us the research Clever Age made to play with Google Gears and new HTML5 storage capabilities
Concerning I18N, Thomas Rabaix gave some methods to internationalize applications thanks to symfony core tools and plugins to ease the translation tasks.
A quite hard to build presentation aimed on symfony internals was held also by Geoffrey Bachelet.
The most important presentation of the day had been done to definitely know what Jonathan Wage has in mind to stabilize the upcoming Doctrine 2. Apart from this view of the future, the everyday task of making database schema migrations had been held by Dennis Benkert. Beyond giving some tips for command-line tools, he focused on how to migrate systematically and peacefully with Doctrine 1.2 migration tools based on good methods.
Then, the afternoon period went on with community aspects : how to contribute and what the core team makes with symfony for now and on. This part is quite important for the strength of the community. Microsoft making a chapter in 'More with symfony' book, beeing sfLive sponsor and holding a session about their Azure product used with PHP is a proof of that.
Find the slides of this Tuesday below. They are fully here for you to feel as you were here with us : enjoy your reading! To even improve your remote user experience, the sessions had been filmed starting from the afternoon. For the lucky ones being at symfony live, be prepared for today : it will reserve a bunch of other nice things.
Feel free to follow #sflive2010 in realtime and join us at the Github meetup tomorrow evening for the feedbacks and preparation of the GIT training session of Thursday!
17 Feb 2010 8:29am GMT
16 Feb 2010
DevZone - Items tagged as: Zend Framework
PHPBuilder.com: Create a Unit Conversion Application w/the Zend_Measure Component
On PHPBulder.com there's a new tutorial posted showing you how to create an application that can do unit conversion with the help of the Zend_Measure component of the Zend Framework .
16 Feb 2010 4:31pm GMT
14 Feb 2010
symfony Project Blog
A week of symfony #163 (8->14 February 2010)
Symfony published this week three new maintainance releases of its 1.2, 1.3 and 1.4 branches. Next week, the Symfony Live 2010 conference will host tens of sessions, workshops and social events attended by hundreds of symfony fans. Moreover, the first alpha version of Symfony 2 will be previewed during the conference.
Development mailing list
- Discussions about standalone validation and XHP php extension for templating
Development highlights
Symfony 1.X branch:
- r27736: [1.3, 1.4] fixed sfValidatorDoctrineChoice in cloned forms (embedForEach) doesn't function correctly
- r27738, r27989: [1.2, 1.3, 1.4] fixed XSS hole in select checkbox and radio widgets
- r27750: [1.3, 1.4] updated generated stub task to guess a default connection name based on ORM
- r27752: [1.3, 1.4] fixed initializion of output escaper array iterator
- r27755: [1.3, 1.4] fixed double escaping of partial vars
- r27836: [1.3, 1.4] fixed submission of disable form fields by browser
- Milestone 1.4.2 completed
- Milestone 1.3.2 completed
- r27954: [1.3, 1.4] fixed enabling of local csrf protection when disabled globally
- Milestone 1.2.11 completed
Symfony 2.X branch:
- 661a..febc: [DependencyInjection] removed Iterator interface support from Container as there is no real-world use case
- 7a26..b054: [DependencyInjection] added annotations support in the service Definition
- 8e81..718b: [Yaml] added specific exception classes
- 5d85..d804: [DependencyInjection] added the extension files in the list of loaded resources
- 4735..9d1f: [DependencyInjection] fixed XSD validation local path locations for extensions
- 9e57..86e8: [DependencyInjection] added a way to configure extensions in plain PHP, added a fluent interface to BuilderConfiguration
sfDoctrinePlugin:
- r27742: [1.3, 1.4] fixed generation of enum pk form widgets
- r27747: [1.3, 1.4] fixed doctrine pager iteration
- r27748: [1.3, 1.4] fixed form filtering by 0 on a number column
- r27749: [1.3, 1.4] updated doctrine forms to allow setting of defaults on numeric fields from within configure
- r27842: [1.3, 1.4] fixed typo, fixed consistent use of field rather than column name in doctrine form generators
- r27915: [1.3, 1.4] fixed use of array union operator
sfPropelPlugin:
- r27748: [1.3, 1.4] fixed form filtering by 0 on a number column
- r27749: [1.3, 1.4] updated propel forms to allow setting of defaults on numeric fields from within configure
- r27915: [1.3, 1.4] fixed use of array union operator
- r27940: [1.3, 1.4] fixed field name used when propel unique validator throws a non-global error
Development digest: 344 changesets, 28 bugs reported, 50 bugs fixed, 6 enhancements suggested, 12 enhancements closed, 6 documentation defects reported, 5 documentation defects fixed, and 12 documentation edits.
Documentation
- New How to rename a file after uploading it? page
- Updated sfGuard plugin - extra documentation, and Web Hosts available for Symfony Web Sites pages
New Job Postings
- Web developer with Symfony at Webstyle Systems - full-time based in Wroclaw, Poland - Contact: programista [at] ws-webstyle [dot] com
- Symfony freelance at Hypios - full-time based in Paris, France - Contact: jobs [at] hypios [dot] com
New symfony bloggers
- onesmallstepforsam (feed) (English)
Plugins
- New plugins
- dmTagPlugin: allows to add tags to your records. It packages a Doctrine behaviour, two front widgets and an admin interface to manage tags.
- ahDoctrineEasyEmbeddedRelationsPlugin: Easily embed related forms and add new as well as edit and delete existing related records within one form.
- sfDefineEnvironmentConfigCachingPlugin: provides a convinience of handling original yamls for defining environmental configurations.
- apostrophePlugin: Apostrophe is a content management system. Apostrophe is open source, and built upon the great work of other open source projects. That's why our apostrophePlugin is a plugin for the Symfony web application framework.
- laiguAdminThemePlugin: packages a new admin generator theme based on AJAX requests via ExtJs. You can use laiguAdminThemePlugin to create yours master-detail relations.
- sfDoctrinePaginationOnLoopPlugin: allows you simply go through any table data on loop which means if we reach the end of the table we must start from the beginning. Reverse order should also work.
- Updated plugins
- tdBlogPlugin: fixed some minor errors
- sfSympalTagsPlugin: added a table method to return Content objects matching a certain type, reworked a method used by sfSympalBlogPlugin to use a better query and also to return only a query
- sfSympalBlogPlugin: added a module to handle the listing of posts that match a specific tag, modified breadcrumbs
- sfSympalCommentsPlugin: loaded the stylesheet in first so that it can be overridden easily by a theme stylesheet
- sfSympalPlugin:
- splitted the published portion of the query into a separate function so that it can be used independently in other places
- improved the pager headline language based on how many results & pages are returned
- improved the stock 404 message that seems to most commonly occur if you have an sfSympalContent record without any related content type record
- cleared the cache only if the route has changed
- made the published_at slot renderer format configurable
- fixed issue where slug is set to menu name and used for label
- reworked the menu item test as I dive into reworking and finishing its functionality
- added test for hasChildren() and simplified the function slightly
- made automatic form rich date changing configurable
- fixed issue where rootSlugs is not an array
- fixed issue with CreatedBy is not present
- disallowed the deleting of yourself as a logged in user to avoid locking yourself out of Sympal
- enhanced theme configurations for available and disabled
- enhanced the themes modules to allow previewing and making it the default theme globally or for the current site by clicking buttons next to each theme
- refactored content routing to standalone class so it can be used and cached with the menus
- fixed shortcuts and adding shortcut to go between frontend and admin
- changed editor save to not disable edit mode when save is complete
- added menu to change language/culture
- fixed count of comments
- fixed change language menu from showing when i18n is off
- added more control over what happens when you access some unpublished content
- added online/offline functionality
- added a right panel with statistics in it to the dashboard
- initial entry of Zend lucene search functionality
- added clear cache progress screen inside a fancybox
- trying out fix for issue where context needs to exist for install
- improved task for building search indexes
- fixed issue with plugin install
- more configuration options for install and speeding things up a bit
- added breadcrumbs to admin pages
- diemPlugin:
- removed dmAuth and dmAuthAdmin modules
- improved user integration for social websites where each user has a page and can self register
- added unit and functional tests for user integration
- added default user widgets (form and signin)
- made password required when creating a new user
- refactored user actions
- improved admin secure page style
- updated test project for new theming syntax
- added user pages to test project
- added action.method_not_found to allow to extend actions with new methods
- made some action getters public to ease actions extension
- applied main/login -> main/signin convention change to PluginDmPageTable
- provided automated upgrade task for theming and user changes
- removed theme keys and renamed dmTheme->path to dmTheme->dir
- updated dmThemeManager to accept both old and new theme declaration syntax
- removed deprecated access_links configuration
- updated front html sitemap to exclude new main/signin page
- refactored dmFront actions to support user integration and be more extensible
- added signin/signout routes for admin and front
- updated front and admin toolbars to use new routes and new theming API
- updated project skeleton configuration for new login actions and theming API
- simplified dmZone.js
- overrided dmUser module in test project
- added exception check in dmTestFunctional
- improved front security functional tests
- renamed "Project" to "Content" in skeleton modules.yml
- PluginDmPageTable now adds a dmUser/signin widget when it creates the main/signin page
- proper doctypes generation + compliant html for each doctype
- fixed dmModuleManagerConfigHandler when Diem is embedded in the project
- fixed diagram generation use tempnam
- removed temp file and fix exception message
- fixed possible issue if trying to create basic pages when service container is not loaded
- added unit tests for theming, project config, project loremizer and DmTaggable behavior
- Swift mailer is now loaded by default on each request
- now stylesheets containing @import are never cached
- added dm.form_generator.validator_class event to allow plugins to change form validators classes
- added dispatcher dependency to dmAdminGeneratorBuilder
- added dm.admin_generator_builder.config event to allow to change the generator config
- media library nor more replaces media files, but create a new media for each uploaded file
- existing medias are now intelligently suffixed
- added PluginDmMediaForm->setMimeTypeWhiteList method to ease the media form validation
- removed deprecated class dmGalleryMediaForm. Admin gallery now just uses DmMediaForm
- added functional tests for admin galleries
- simplified handling of embedded media forms
- added unit tests for embedded media forms
- improved DmGallery Doctrine Template and added hasMedia(DmMedia) method
- removed deprecated attribute in DmMediaForRecordForm
- added "enabled" option to event_log and request_log services
- disabled log services when request has a "dm_nolog" parameter
- removed useless code in dmBaseLinkTag
- allowed to embed relations lists into admin forms
- allowed to add an empty field to the form by adding a "_empty_" field in the admin generator form display section
- escaped page name in default search results widget
- fixed flash messages translations in admin
- fixed dmBaseActions->download() default file_name
- added dm.content_chart.filter_modules event to allow to modify the modules shown in the content chart
- improved performances in dmDoctrineTable by caching isI18n
- removed deprecated code in dmFilesystem
- changed default front layout class to dm_layout
- added dmMenu->moveToFirst() & dmMenu->moveToLast() methods
- added dmAlternativePlugin
- dded jquery.jstree beta2
- added page_tree_view service with two implementations (front & admin)
- made front & admin page panel use the new jstree
- updated page tree sprite icons
- removed deprecated class dmRecursivePageList
- removed dmFlowPlayerPlugin tests from test project
- moved project to Git repository
- sfPhpunitPlugin: fixed notice, updated amftest case, fixed problem with using sabreamf multiple times, autocomplete for fixture magic methods, the default environment can now be set in runtime using the --env option, fixed path on windows
- tdVisitorCounterPlugin: fixed daily visitors chart max value bug
- sfPropel15Plugin: fixed problem with return values for preDelete behavior for SfPropelBehaviorSymfonyBehaviors
- csSecurityTaskExtraPlugin: updated README, tweaked the layout for group testing, better implementation (actually pulls from cached security.yml file) takes into account security handler, added symfony bootstraping in order to take advantage of security config handlers, added optional "module" argument to only view security for a particular module, allowed optional argument for targeting a specific module, added ability to filter by module for user/group security tasks, normalized keyword formats, added multiline credentials for better readability
- pmModuleEnablerPlugin: performance optimization
- sfXssSafePlugin: added helper to truncate escaped text, added class for cleanup
- bhLDAPAuthPlugin: recursive fix
- omCredentialsMapPlugin: optimization off sfFinder uses
- sfEasyAuthPlugin: extra credentials no longer have to refer to a class
- pkBlogPlugin: fix for upcoming events query
- npAssetsOptimizerPlugin: moved the general configuration to 'all' envs instead of the prod one by default
- sfSolrPlugin: refactored some part (try to remove SolrPhpClient direct dependency), fixed some test
- sfExtjs3Plugin: added Ext.form.Checkbox config
- sfJqueryReloadedPlugin: upgraded plugin to use latest stable release of jQuery v1.4.1, reverted the upgrade because it seems to break a number of heavily used jQuery plugins
- dmMediaUploadifyerPlugin: made action use ->renderAsync, added assets configuration, fixed possible issues when using without a virtual host, renamed module to dmMediaUploadifyerAdmin to match new plugin admin module conventions, removed dmMediaLibrary module and added a route to the upload action (flash doesn't like "+" in urls), made admin routing config handler load Diem routes in last position, fixed uploading more than 3 files
- swToolboxPlugin: added custom pager and hydratation option to the swDoctrineDatagrid
- sfDependencyInjectionContainerPlugin: updated plugin to make it compatible with sf 1.4, updated README
- sfDoctrine2plugin: added proxy class generation task, added app and env to task so it works in all scopes, added a task for checking if the project is production ready, fixed option name and indenting
- dmGoogleMapPlugin: now accepts decimal coords with ->coords() method, fixed issue with launcher in admin application
- sfPropelParanoidBehaviorPlugin: created branch to fix plugin using sf 1.0 mixins implementation, fixed mixin call for use with symfony 1.0 propel builders
- sfJqueryFormValidationPlugin: started re-engineering plugin to add support for embedded forms and to clean up the code
- My Poker Tour: (French) site pour vous aider à organiser vos parties de cartes entre amis
- Montreal Web Conference: (English) Meet the experts of web development in person and discover the web of tomorrow. Confoo is a major web conference. It cover every aspect of development, from back-end to frontend, from security to scaling, Confoo is also very much about PHP.
They talked about us
- rto: sfYaml complies for 43% with Yaml 1.2 spec
- Utilisation de sfUser et de ses « namespace »(s)
- Setting up subdomain virtual hosts for multiple applications in a symfony project
- Au boulot, moi, j'utilise Facebook!
- Ideenschmiede-Abarbeitungs-Prozess Version 0.1
- Lyra, tipo di contenuto 'pagina'
- Zend Framework mit Symfony nutzen
- Symfony Live Conference à Paris
- Extend CSS With Variables, Mixins, Operations and Nested Rules Using LESS
- Symfony Live 2010 coming!
- 外包 佣兵计划
- Menez le web à la baguette avec symfony (3) : refonte des glasses
- DigitalBase attending Symfony Live 2010
- jQuery DataTables and Symfony
- Important correction of the "More with symfony book"'s "Developing for Facebook" chapter
- symfonyでforwordする時に、リクエストパラメータを渡す方法
- Symfony Development using Textmate
- Symfony Live 2010: Nos vemos allí!
- Symfony 1.3.2 и 1.4.2
- Форма AJAX-авторизации
- Validation conditionnelle de formulaire
- 2/13 symfony 1.2.11
- Numa listagem do admin generator criar um link para um módulo e acção diferentes
- Symfony 1.4 - Doctrine Timestampable Behaviour
- Symfony 1.3 + propel install ubuntu környezetben I. rész
- Fechas, fechas y más fechas: Symfony, sfWidgetFormDate y sfValidateDate
- Symfony Live : Particul.es s'invite à Paris
- symfony 1.4.1 fragment cache(cache関数)のよくわからない挙動について
- symfony で携帯サイトを作る際に注意したこと。
- Symfony notes
- Продублировать paginate symfony admin generator
- Apostrophe 1.0!
- Simple theming with Symfony using plThemePlugin
- Symfony 1: Apache virtual host configuration
- symfony のFormで確認画面を実装する方法
- symfonyの非公式マスコットが作成されたようです
- Desarrollo ágil con symfony
- Getting More From The Lime Testing Framework
- Symfony Framework Support in NetBeans IDE 6.8
14 Feb 2010 9:30pm GMT
04 Feb 2010
CI News
Subversion Server Change
Our Subversion repositories have moved. Please update your repositories or check out new ones from the new location: http://svn.ellislab.com/CodeIgniter/trunk
As always, information about our Subversion repositories can be found on the download page and installation instructions.
04 Feb 2010 4:28pm GMT
17 Jan 2010
cakebaker
Rails 3 and Passenger
This weekend the RailsBridge people have organized a bugmash with the motto "Do One Thing for Rails 3″, and so I took the opportunity to experiment a bit with the coming Rails 3. After following the instructions for creating a new Rails 3 app (using the -database=mysql parameter for the "rails" command) I noticed that the [...]
17 Jan 2010 9:46am GMT
31 Dec 2009
cakebaker
Accepting the Google OpenID with PHP OpenID
If you are using the PHP OpenID library (which is also used by my OpenID component for CakePHP), it is possible that you get an "Invalid OpenID" error when you try to login with the Google OpenID (https://www.google.com/accounts/o8/id), or any other OpenID that uses "https". In this case, the following steps might help to fix this [...]
31 Dec 2009 4:45pm GMT
12 Dec 2009
cakebaker
Attribute Exchange support for the OpenID component
The OpenID Attribute Exchange specification (or AX for short) has been around for quite a while, though I ignored it so far because at the time it was introduced (almost) no OpenID provider supported it. However, after Yahoo! announced they support Attribute Exchange, and someone recently mentioned it in a mail, it was time for [...]
12 Dec 2009 5:30pm GMT
06 Dec 2009
CI News
CodeIgniter Community Chieftain Jamie Rumbelow
We're happy to announce the next CodeIgniter Community Chieftain, Jamie Rumbelow! This invitation only volunteer program focuses on identifying stellar examples from the community, and letting them utilize their strengths to help maintain the community and act as a liaison when needed to EllisLab.
Jamie will be taking the reigns from our first Community Chieftain, Michael Wales. Thanks Mike for your year and a half of volunteer service, and welcome aboard, Jamie!
06 Dec 2009 6:49pm GMT
27 Nov 2009
cakebaker
Render partial from an atom builder view
Thanks to the built-in AtomFeedHelper it is quite easy to generate an atom feed with Rails. Here an example from the API: # app/views/posts/index.atom.builder atom_feed do |feed| feed.title("My great blog!") feed.updated(@posts.first.created_at) @posts.each do |post| feed.entry(post) do |entry| entry.title(post.title) entry.content(post.body, :type => [...]
27 Nov 2009 4:15pm GMT
20 Nov 2009
cakebaker
Link-like buttons
Sometimes you want to make a button look like a link. For example, in an admin interface you might want to have "links" to edit and delete articles. The "edit" link will be a normal link. But for the "delete" link you "cannot" use a normal link, because a delete action changes the state on [...]
20 Nov 2009 8:05am GMT
12 Nov 2009
cakebaker
Don’t apologize for being a newbie
On mailing lists or in private mails I sometimes read statements like "I am sorry, but I am a newbie" or "Sorry for this newbie question". And I always wonder why do those people apologize for not being proficient? It is ok to be new and inexperienced with a framework/programming language/whatever. Everyone of us is from [...]
12 Nov 2009 4:16pm GMT
23 Oct 2009
cakebaker
The end of CakePHP?
Today, Nate Abele, lead developer of CakePHP, announced in a cryptic tweet that he leaves the project. This comes shortly after Gwoo, the project manager, left the project, too. It seems like they started to work on a fork of Cake3 called "Lithium". On Twitter people are a bit puzzled about those events, some even [...]
23 Oct 2009 2:49pm GMT
16 Oct 2009
cakebaker
My tool box
In the last few days several people in the Rails world wrote about their "tools of the trade". And as I have never written about the tools I use, I think it is a good time to do it now. There isn't much to say about the hardware I use: my only machine is a Dual-Core [...]
16 Oct 2009 3:54pm GMT
14 Sep 2009
cakebaker
Rails 2.3.4 and Ruby 1.9.1
This morning, the Ruby package for Arch Linux was upgraded from version 1.8.7 to 1.9.1. Unfortunately, after the upgrade all Rails applications (using Rails 2.3.4) stopped to work and showed an error like: undefined method `^' for "b":String (NoMethodError) Fortunately, I am not the first one who encountered this issue, and so it is already fixed in [...]
14 Sep 2009 9:43am GMT
11 Sep 2009
CI News
CodeIgniter v1.7.2 Released
EllisLab is pleased to release CodeIgniter version 1.7.2 for ready download. What's new? Among other changes:
- Compatible with PHP 5.3.0
- Added a new Cart Class.
- Improvements to the Form helper
- Added is_php() to Common functions to facilitate PHP version comparisons
- Modified show_error() to allow sending of HTTP server response codes, and all internal uses now send proper status codes.
- Numerous bug fixes
Version 1.7.2 has been baking in the subversion for quite some time, and has been compatible with PHP 5.3.0 since late July, but many users understandably haven't been running from the in-development version. While I'd have liked to have had time to add a few more "big ticket" items to this release, making it 1.8, time is a cruel mistress. Many of our users develop on Macs, and OS X Snow Leopard ships with PHP 5.3.0, so we felt is was more important to push out this stable maintenance release instead of waiting for an even later date - it's been almost seven months since a refresh, afterall. But there are still a few good surprises, and welcome changes. Enjoy!
11 Sep 2009 3:03pm GMT
08 Sep 2009
cakebaker
Extending CakePHP’s core components
In a recent comment David Cournoyer shared a tip about extending CakePHP's core components and I think it could also be useful for others. Let's say we want to add a method to the request handler component. And so we create a new class which inherits from the request handler component: // app/controllers/components/my_request_handler.php App::import('Component', 'RequestHandler'); class MyRequestHandlerComponent extends [...]
08 Sep 2009 6:12am GMT
11 Feb 2009
CI News
CodeIgniter 1.7.1 Released
CodeIgniter Version 1.7.1 has been released. This version contains many new features and enhancements, as well as nearly three dozen bug fixes. It also includes a critical security update for applications using the new Form Validation library with field arrays. For a list of all changes please see the Change Log.
If you are currently running CodeIgniter please read the update instructions.
Note: If your browser does not display the 1.7.1 user guide please clear your cache and reload the page.
11 Feb 2009 1:24am GMT
23 Oct 2008
CI News
CodeIgniter 1.7.0 Released
CodeIgniter Version 1.7 has been released. This version contains a number of new features and enhancements, as well as many small improvements and bug fixes. For a list of all changes please see the Change Log.
If you are currently running CodeIgniter please read the update instructions.
Note: If your browser does not display the 1.7 user guide please clear your cache and reload the page.
23 Oct 2008 11:48pm GMT
15 Aug 2008
CI News
CodeIgniter Community Voice - HOWTO: Set up a CodeIgniter project in Subversion
EllisLab is blessed with two of the greatest communities that can be found anywhere on the internet in ExpressionEngine and more recently CodeIgniter. Despite being a relative newcomer to the scene, the people attracted to CodeIgniter are among the smartest, most talented and down-to-earth developers around today. From time to time we want to highlight some of these talented people, and we've asked them to lend their voice to ours. Have your voice. I hope you enjoy what they have to say as much as I did.
This week, our Community Voice author is Bruce Alderson, known on the forums as madmaxx, who has written a wonderful guide on how he uses subversion with CodeIgniter. Bruce is an elder web monkey and systems programmer. He totally digs the craft of building software, making cool stuff, and causing people to laugh so hard liquids are forced from their nose. He's currently the Chief Monkey at Discovery Software and author of the not-at-all famous robotpony.ca. (Go read the one about shaving your yak)
After working with CodeIgniter for a few months (and WordPress for a few years), I've settled on a way to set up web projects that works well for development, deployment, and source control. Note that this style of layout only works on systems like Mac and Linux that have useful symlinks.
First, the folder layout
some-domain.com/
app/
config/
controllers/
(etc)
public/
.htaccess -> ../site-extras/.htaccess
favicon.ico -> ../site-extras/favicon.ico
js/ -> ../site-extras/js
images/ -> ../site-extras/images
system/
application/ -> ../../app/
site-extras/
js/
images/
.htaccessThe layout favours a vhost setup, and splits your code and resources out of the CodeIgniter sources. Splitting your stuff from the CodeIgniter stuff lets you link your Subversion repository to theirs, so that you can keep it in sync with their development.
How it's done
- Set up your source tree (not including the symlinks or CodeIgniter source) and add to your Subversion repo.
- Add a svn link to CodeIgniter's repo (via svn propedit svn:externals, with public http://dev.ellislab.com/svn/CodeIgniter/tags/v1.6.2/) and run a svn update to grab the framework. See the Subversion docs for details.
- Copy the CI application folder to the site root (as app), remove the .svn folders, symlink to application, and add it to your local svn repo.
- Symlink the other site-extras to the public webserver root, and configure your local machine (and public webserver) to point to this root for the domain's virtual host setup.
- Alternatively, you can modify the $application_path to point to ../public/app/ (I'm not sure which is better yet). See the CodeIgniter docs on apps for more details.
You now have a CodeIgnitor project ready for development. You can keep up-to-date with CodeIgniter updates, deploy easily, and get at your code without wading through extra levels of hierarchy.
15 Aug 2008 11:49am GMT
31 Jul 2008
CI News
CodeIgniter Community Voice - Generating PDF files using CodeIgniter
EllisLab is blessed with two of the greatest communities that can be found anywhere on the internet in ExpressionEngine and more recently CodeIgniter. Despite being a relative newcomer to the scene, the people attracted to CodeIgniter are among the smartest, most talented and down-to-earth developers around today. From time to time we want to highlight some of these talented people, and we've asked them to lend their voice to ours. Have your voice. I hope you enjoy what they have to say as much as I did.
This week, our Community Voice author is Chris Monnat, known on the forums as mrtopher, who writes a helpful step by step guide to generating PDF files from CodeIgniter. Chris is a full time web application developer and part time entrepreneur. In addition to building web sites for the medical industry during the day, at night Chris also runs his own development company Left of Center Communications. He recently started a personal blog at http://www.chrismonnat.com where he keeps a record of his exploits and discusses, among other things, CodeIgniter.
PDF files rock! Some of the programs used to view them could use some work, but the file format itself is real handy. As a programmer I have found PDF's to be most helpful when generating reports that need to be printable. I know we are all supposed to be doing our part to make our offices "greener" and use less resources like paper. But some things just need to be printed (especially when your talking about the financial and legal industries).
When generating reports in PDF format you suddenly have a lot more control over layout and design than you do with plain old HTML and CSS (although much progress is being made with print style sheets). You can create some really nice reports on the fly that your users can view, save for later or e-mail to their co-workers for review. In this post I will show you how I generate PDF reports using CodeIgniter.
Quick Note
There are a number of PHP libraries out there for generating PDF files (like FPDF, Panda and dompdf) but the best one I have come across is the R&OS pdf class. I was first introduced to it from the PHP Anthology first edition by Harry Fuecks. I have tried other PDF libraries (some PHP 5 specific and some not) and none of them have been able to provide me with the same control or ease of use that the R&OS class has which is why I'm using it for this tutorial.
Getting Started
Before we start, lets get everyone to the same place so you can follow along as we go. I've prepared a .zip file containing everything you'll need to follow along. The archive includes CI 1.6.3 along with all the code and libraries we will discuss in this tutorial. Simply download the archive, unzip it on your web server and follow along.
I have done all the work of downloading the code library and putting the files in their right place for you, but I wanted to mention where things were for the detail oriented among you. There are 2 files that are necessary in order to use the R&OS library: class.ezpdf.php and class.pdf.php. Those two files have been placed in the application/library folder. R&OS also requires some font files in order to function and they have been placed at the root of the .zip file in a folder called fonts.
You do have to make a minor modification to the class.ezpdf.php file so that it will work properly within CI. First I renamed the file to cezpdf.php, which makes it easier to load using the CI loader. Then you have to modify the include statement on line 3 to:
include_once(APPPATH . 'libraries/class.pdf.php');This will keep PHP from saying that it can't find included file. Once those modifications are made the R&OS class is ready to use with CI.
In the archive, I have also made a controller called tutorial.php and a helper called pdf_helper.php both in their respective directories. With the background info. out of the way, lets get our hands dirty with a real simple example.
Hello World
function hello_world()
{
$this->load->library('cezpdf');
$this->cezpdf->ezText('Hello World', 12, array('justification' => 'center'));
$this->cezpdf->ezSetDy(-10);
$content = 'The quick, brown fox jumps over a lazy dog. DJs flock by when MTV ax quiz prog.
Junk MTV quiz graced by fox whelps. Bawds jog, flick quartz, vex nymphs.';
$this->cezpdf->ezText($content, 10);
$this->cezpdf->ezStream();
}The above code produces a PDF file like this. In the above, first thing we do is load the R&OS library for use. Next we use the ezText() function to create a title for our document. This function takes the text it will display as the first argument, the size of that text and an optional array of additional configuration options. In this instance we pass along a justification option of center. That will center our title at the top of our document. After the title we insert some extra white space using the ezSetDy() function. After the whites pace we put the rest of the content for the document in a variable called $content and add it to our document using the ezText() function again. Finally, we create our document using the ezStream() function which actually creates the document and sends it to the users which prompts them to view/download the generated PDF document.
Handling Tabular Data
When your dealing with business reports the odds are good that you will need to generate reports with tables to display tabular data. From my experience with other PDF libraries, this is not an easy task. But with the R&OS library it's about as hard as creating an array.
function tables()
{
$this->load->library('cezpdf');
$db_data[] = array('name' => 'Jon Doe', 'phone' => '111-222-3333', 'email' => 'jdoe@someplace.com');
$db_data[] = array('name' => 'Jane Doe', 'phone' => '222-333-4444', 'email' => 'jane.doe@something.com');
$db_data[] = array('name' => 'Jon Smith', 'phone' => '333-444-5555', 'email' => 'jsmith@someplacepsecial.com');
$col_names = array(
'name' => 'Name',
'phone' => 'Phone Number',
'email' => 'E-mail Address'
);
$this->cezpdf->ezTable($table_data, $col_names, 'Contact List', array('width'=>550));
$this->cezpdf->ezStream();
}The above code should produce a PDF file like this. In the above code I create an array of data called $db_data. I put this together so that it imitates a typical database result set because that's usually where you will be getting your data from. Below my data array I have created a $col_names array that associates the data elements in the $db_data array with a column title for the table. This is where the R&OS gets the title to display at the top of each table column. Once I have the data and column titles I create the table by calling the ezTable() function. This function takes the data array, an associative array for column names, the title for the table and an optional array of configuration options. There are a number of options that can be configured through that last optional array, but I'm not going to go into them in this tutorial.
Headers and Footers
Most reports in a corporate setting come with some kind of standard header and/or footer. They can include anything from the date/time generated, the user who generated them, to page numbers and the like. Headers and footers are handy to have, but unfortunately there isn't a real good way to add them to printable reports generated in HTML and CSS. There's one more reason to use the portable document format when creating printable reports. The process of adding headers and footers to a PDF using the R&OS library is the slightest bit complicated. There are a lot of lines of code just to accomplish it, that's why I have created a helper file. Since the code is in a helper function, you just need load the helper and call the function whenever you need to add headers/footers to a PDF.
function prep_pdf($orientation = 'portrait')
{
$CI = & get_instance();
$CI->cezpdf->selectFont(base_url() . '/fonts');
$all = $CI->cezpdf->openObject();
$CI->cezpdf->saveState();
$CI->cezpdf->setStrokeColor(0,0,0,1);
if($orientation == 'portrait') {
$CI->cezpdf->ezSetMargins(50,70,50,50);
$CI->cezpdf->ezStartPageNumbers(500,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,578,40);
$CI->cezpdf->addText(50,32,8,'Printed on ' . date('m/d/Y h:i:s a'));
$CI->cezpdf->addText(50,22,8,'CI PDF Tutorial - http://www.christophermonnat.com');
}
else {
$CI->cezpdf->ezStartPageNumbers(750,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,800,40);
$CI->cezpdf->addText(50,32,8,'Printed on '.date('m/d/Y h:i:s a'));
$CI->cezpdf->addText(50,22,8,'CI PDF Tutorial - http://www.christophermonnat.com');
}
$CI->cezpdf->restoreState();
$CI->cezpdf->closeObject();
$CI->cezpdf->addObject($all,'all');
}An example of how I use this helper is provided in the headers() function of the tutorial.php controller. That code produces a PDF file like this. The above code is the prep_pdf() function located in the pdf_helper.php file. This function does all the hard work of creating a footer for my PDF reports for me. All I have to do is load the helper in my controller and call the function. Since the reports could be portrait or landscape I have also included the ability to pass the orientation to the function and the code will modify the document margins accordingly. I'm not going to go into a lot of detail about the above code because this tutorial could become very long. But the general idea is that I'm using the R&OS library to modify the margins of the document I'm creating, add page numbers and text to the very bottom of the document. R&OS has some functions that makes this easy like ezStartPageNumbers() and line(). Once all that is done I can add any kind of content to the document back in my controller and then just call ezStream() to generate the final document.
Wrap Up
I barely scratched the surface of what you can do with the R&OS PDF library in this tutorial. I encourage you to spend some quality time with the readme.pdf documentation file that comes with the library when you download it. That file goes over all the functions and their options in great detail. So there you have it, generating PDF files with CodeIgniter and the R&OS library. If this method doesn't quite do it for you, there are a few helpful articles on the CodeIgniter wiki, like this one and this one, which walk you through some additional options. Whatever solution you choose I hope this tutorial has helped to introduce you to some of the options you have at your disposal for creating PDF reports with CodeIgniter. Discuss this article
31 Jul 2008 4:33pm GMT
21 Jul 2008
CI News
CodeIgniter Community Voice - Lee’s Lost Bet
EllisLab is blessed with two of the greatest communities that can be found anywhere on the internet in ExpressionEngine and more recently CodeIgniter. Despite being a relative newcomer to the scene, the people attracted to CodeIgniter are among the smartest, most talented and down-to-earth developers around today. From time to time we want to highlight some of these talented people, and we've asked them to lend their voice to ours. Have your voice. I hope you enjoy what they have to say as much as I did.
This week, our Community Voice author is Lee Tengum, who discusses how CodeIgniter has cost him over $8,800 in beer and soft drinks. Lee is a bit of a serial entrepreneur, with 5 successful startups under his belt including the recently launched http://cleverandy.com. He has become something of a cookie! jar of startup knowledge. When he is not managing his team of contractors he blogs about the trials and tribulations of his startups at http://tumbledry.ca.
It all started with an idea at 4 a.m. on a Tuesday morning that brought us to CodeIgniter.
We were neck deep in a deadline and sinking fast. We knew we needed help.
After puling some strings that bought some time we quit work for a week - well, client work at least. There were our own issues to solve.
We had amassed a team of roughly 14 at this point and had no way to efficiently manage who was doing what for how much and how long; in fact we were often surprised by code submissions.
That's a sad place to be.
We had been building in the 'flavor of the weak' when it came to frameworks and often chose whatever the contractor was fluent in to save time (which != saved money).
Not only were we not communicating, but we were reinventing the wheel for every project. Have I mentioned how sad of a place that is to be?
Back to 4 a.m.
Doug is one of my closest friends, and a trusted peer. He suggested we should develop a contractor management system and that we should build it all on CodeIgniter. At this time I hadn't seen sleep in nearly a day, consumed almost seven liters of coffee, the "development tub" was empty and we were trying to finish a RoR project that a contractor bailed on. I didn't want to hear about another &^%in framework, I just wanted this to be done.
Thankfully my friend couldn't understand the word "no" and kept pressing. He went on about how anyone with knowledge of PHP can build with this, its development cycle and the community that was forming around it. I still wasn't convinced but he assured me this would be the last time we changed frameworks and proposed a friendly bet.
I hate that I love gambling. I don't have a problem, per say, but I always lose. The problem is that my pride drives me to bet anyways. Besides I relished the opportunity to prove him wrong.
So the bet was laid. We would build the contractor management system in CI and all client projects for one month with CI. At the end of that month if I wanted to go back to another framework and could justify it rationally with solid points then he would keep the Development Tub full for a full year (a cost of roughly $100/week). If we stayed with Code Igniter I would the one stocking the tub for the next year and I would also have accept his offer to buy into my company and become a partner.
On Wednesday morning we filled the tub (again not a problem… really) and set out to build our app. We outlined what we wanted, mapped it out on the whiteboard, set up a Basecamp project for it, defined our milestones and set Saturday as launch day.

Beer? Check.
Monster energy drinks? Check.
Coffee? Check.
M&M Peanuts? Check.
Babysitter? Check. (We're parents…)
Pizza? Maybe.
Basecamp set up? Check.
SVN Server? Check.
While I depleted the tub and read the user guide, Doug was getting down to business. By the time I'd figured out how I was going to tackle my portion of the build he'd built the user authentication as well as the management section. Doug was already adding features to our "Wish List" in Basecamp and checking off milestones. Roughly 9 hrs into our project we started completing items on the wish list, which had never happened before. The wish list had never become a checklist before a deadline and I was starting to worry.
In the wee hours of Thursday morning we headed home to sleep. The following day we sent login details to our contractors and set up a basecamp project to log bugs. We fixed the stupid little ones that we missed and made changes on the fly. By the end of the day I had a huge overview of our team of contractors and a vision of things to come. I never did see the 48 hr Milestone reminder emails from Basecamp… again I was seeing a change.
By the end of the month we had more than a few client sites built on CI. We also had a process for development laid out and the term Rapid Development was taking on meaning with me. I was happy, the clients were happy and we had a team we could manage… and then reality sunk in.
I hate losing, even more so I hate losing to people I like winning against. I lost the bet. Though I gained a valuable business partner, a managed team, profitability and a kick ass framework to build it upon… I am forever filling the tub.
And with ExpressionEngine 2 built on CI (Which we are using extensively for client sites now), the tub has gained a lifetime sponsor. Me.
That app was build on 1.4.0 on September 20th 2006 and since then we have revised many things including our checklist:
Beer? Check.
M&M Peanuts? Check.
Basecamp set up? Check.
SVN Server? Check.
See the difference? We don't live at the office any more. CodeIgniter gave us the freedom to build around our needs and wants and it gave us the structure we needed to become more efficient. Just don't bet against CI, it has cost me $8800 and counting…. weekly.
ABOUT LEE
Lee is a bit of a serial entrepreneur, with 5 successful startups under his belt including the recently launched http://cleverandy.com. He has become something of a cookie! jar of startup knowledge. When he is not managing his team of contractors he blogs about the trials and tribulations of his startups at http://tumbledry.ca.
21 Jul 2008 8:33pm GMT
17 Jul 2008
CI News
CodeIgniter Community Chieftain Michael Wales
We're happy to announce a new program for exceptional members of the CodeIgniter community, CodeIgniter Community Chieftains. As the community grows, the EllisLab development team often does not have the time that we would like to interact with the community in various ways, but it's always been a key part of our success. So as the need arises, we have created this program to help keep the wheels greased so to speak, making sure that our forums, wiki, and bug tracker are handling the needs of the community and are properly moderated.
This is an invitation only program as the aforementioned link explains, and we're proud to bring Michael Wales on board as our first CodeIgniter Community Chieftain. Most will need no introduction to Michael as you have likely already encountered him or some of his contributions in the community. Welcome aboard, Michael!
17 Jul 2008 7:33pm GMT
08 Jul 2008
CI News
CodeIgniter Brazil
Hermes Alves has launched a CodeIgniter resource in Portuguese, located at codeigniter.com.br. The site includes a discussion forum, mailing-list, and a few other resources. Kudos Hermes!
08 Jul 2008 6:08pm GMT
30 Jun 2008
CI News
CodeIgniter Community Voice - Mathew Davies
EllisLab is blessed with two of the greatest communities that can be found anywhere on the internet in ExpressionEngine and more recently CodeIgniter. Despite being a relative newcomer to the scene, the people attracted to CodeIgniter are among the smartest, most talented and down-to-earth developers around today. From time to time we want to highlight some of these talented people, and we've asked them to lend their voice to ours. Have your voice. I hope you enjoy what they have to say as much as I did.
This week, our Community Voice author is Mathew Davies (AKA Popcorn), author of the Redux Authentication library, a light, easy to use and fully featured auth engine. What follows is a brief discussion of some of the logic and security that went into the library, and considerations for your own programming.
Let me start by saying I love CodeIgniter, it's a developers dream. ![]()
Today I plan to talk about some of the security features that are used within my library : Redux Authentication.
Hash Once and Only Once!
Over at TalkPHP someone provided a code snippet which had this code :
$psd = sha1(md5(md5(sha1(md5(sha1(sha1(md5($_POST['password']))))))));I've made a similar mistake myself in the past. Someone on the CodeIgniter forums pointed out that a solution like the above will actually increase the probability of a collision. Here's what inparo had to say :
"It's safer if you only hash it once. The initial string is random in both length and characters. The first sha1 gives you a fixed length and reduced character set. By hashing this again you're actually increasing the probability of collisions."
So there you go folks, hash once. This also leads nicely to my next topic "salts"
Salts
A lot of people when hashing passwords will do something like this :
$password = md5($password);
You may think this is secure, but actually it's very insecure. Websites exist which store hashes of dictionary words, so if your database was ever stolen, the passwords could be looked up and revealed. This is where the power of the password salt comes in. Salts come in two varieties : A dynamic salt and a static salt. A dynamic salt is automatically generated and is usually very hard to guess. A good example of a dynamic salt would be :
$salt = microtime();It's not totally random, but you get the idea.
You would then concatenate the salt along with the password to provide a new hash. This new hash can't be looked up because of it's "randomness". You would then store it with other user info and select it when you need to log them in.
I know what you're thinking. If the database is stolen they've got the password and the dynamic salt "What good is that?!" This is where a static salt comes in.
A static salt is just that, a variable that is random in both length and characters. This is best stored in a configuration file somewhere. You then combine this with the dynamic salt to provide a very secure solution. Reasons being: (a) If the database is stolen, they are missing the static salt; (b) Two passwords the same will result in a different hash. Here's an example:
$dynamic_salt = microtime();
$static_salt = 'qGPBA8iCM3cUuCbBAQx3E0uOkKTrSeEUiSrAkykEk4sEniyP67Q2BTp8vtDqoqw'; // Grabbed from file.
$password = 'password'; // Password from input form.
$hashed_password = sha1($dynamic_salt.$password.$static_salt); // Super Secure!Forgotten Password
Ooops, the user has forgotten their password. What are we going to do? Michael Wales made a well informed post about this topic a while ago, but it was recently lost.
The best method is to use a secret question and answer system coupled with email verification.
The logic would be something like this:
User requests new password -> Sends email verification code -> Verification code is looked up in the database -> Show secret question -> Check Answers
I prefer this system because a hacker could of got into your email account and requested a new password, but would then struggle to get your secret question right. Keeping the users account secure.
DB Sessions
This will be a quick talk. At the moment Redux stores a "users_id" in the session cookie and uses this to figure out if the user is logged in or not. A hacker could use the algorithm in CodeIgniter's session library and craft his own cookie with a fake "user_id".
Database sessions move this data from the clients cookie to the database providing a scenario where the client can't edit it. Redux doesn't currently use this, but it is in the works.
Thanks for listening to me babble on, hope you enjoyed it.
PS : All examples above are used in Redux so go download it ![]()
- Mathew Davies
30 Jun 2008 9:07pm GMT
26 Jun 2008
CI News
CodeIgniter 1.6.3 Maintenance and Security Release
We are happy to release CodeIgniter version 1.6.3 today. Version 1.6.3 is primarily a maintenance release, with a variety of bug fixes and some refinement to existing features (with a few new ones tossed in for good measure). Details of course can be found in the Change Log.
Additionally, with the assistance of an outstanding community member, Pascal Kriete (Inparo), we have identified and eliminated a potential cross-site scripting vulnerability. No known sites have been affected, but as we take security very seriously, we felt it warranted a feature-light point release to help users protect their sites. We cannot thank Pascal enough for the manner in which he reported this issue to us, and then continuing to diligently work with us to make sure the vulnerability was plugged. If you're looking for a fresh set of eyes to do a security audit on your app, he comes highly recommended by the EllisLab staff.
Command line addicts: don't forget that starting with version 1.6.1, the CodeIgniter subversion contains tagged releases!
26 Jun 2008 11:52pm GMT