I'm happy to announce you that we've just released version 1.4.10.
This release contains mainly bugfixes and some improvements (185 changes). 

We hope you enjoy the new release and look forward to your feedback.

And as usual, here are some impressions ;-) 

The latest version of pimcore contains some impressive new features, cool improvements and bugfixes (Release Notes).

We hope that you'll enjoy this new release and are looking forward to your feedback on Twitter, Facebook and Google+.

Following some impressions of the new release: 

RESTful API (beta) 

The new REST API allows you to easily get/update/delete the data in your project from external applications using simple HTTP calls. 
Currently only documents, assets and objects are supported, but we'll extend the API in the future to allow service calls to internal entities like static routes, redirects, ... 
Click here for more information. 

Key-Value Data Type for Objects

This new data type allows to you add an arbitrary number of key/value pairs to your object. This is especially useful for storing product attributes or similar structured content. 
Keys are defined and managed in a global list and can be organized into groups (optional).

Click here for more information.

Improved Permissions

Improved Multi-Site Support

Tree Previews

Previews are now generated on save (images, pages, ...) so they are displayed instantly when hovering a tree node. 

New Version of CKEditor (True WYSIWYG) 

Style Editor for Pages

See in action: 

Direct Link to YouTube

Page Preview for different Devices

Simple Newsletter Tool

Custom Meta Data on Pages

Bounce Mail Inbox

and much more ... ;-) 

pimcore goes barcamp

Hi folks, 
it has been a bit quiet out here lately. But that doesn't mean, that the pimcore project is less active. It is more vital than ever before and are happy to see that pimcore is used all over the world. This is amazing. 

A few weeks ago we made a small pimcore demo during a barcamp here in Salzburg. Thanks for this opportunity.

In this demo we made some live coding of about an hour and developed a small barcamp website with pimcore. 

Nothing big, but 

  • on the portal page you have area blocks where you can register, login, see tweets.
  • Once you are logged in you see a session list 
  • and for each session you can upload some images or videos and add comments to the sessions. 

We want to share the result of this live coding session with you. 

You can download the zip-file here: Demo.zip

  • The database dump is located in the root folder, please adapt the database settings in the system.xml
  • Login für the backend is: 
    • username = admin
    • password = demo123
  • An existing frontend member is: 
    • username = demo
    • password = demo123

But please keep in mind, that it is not optimized in terms of securitydemo or performance. Still, it's quite a cool demo and should give you a little head start of how to solve things with pimcore. 

We hope you like it ... 

Greets from Salzburg,

Christian and the pimcore team

Version 1.4.8 is out!

Yesterday we released version 1.4.8 containing many improvements and features. 

Some Highlights

Inheritance for Documents

 

 

Nested Areablocks

ZF 1.12 - utilizing the new ClassMap Autoloader

Some useful Utilities

Including some useful Keyboard Shortcuts

Multi-Site Improvements

  • Painless linking and hardlinking between different sites (absolutizing Links to different site)
  • Better support for Pretty-URL's in combination with hardlinks across different sites 
  • Site-specific redirects
  • Site-specific custom routes
  • Site-specific website settings
  • .... 

Localization

Now all languages supported by the ZF can be used for your project and the admin user interface. 

see also: The Translation Project


This was just a small overview, for a complete list of changes please visit the release notes.

or even more detailed in the commit history: 

https://github.com/pimcore/pimcore/commits/master

We hope you enjoy the new release and look forward to your feedback. 

Cheers, 
Bernhard & The pimcore Crew

Version 1.4.7 released!

Hey pimcore-friends, 

We've just released Version 1.4.7.
This release contains mainly bugfixes and some improvements. 

Checkout the release notes for more information: 

http://www.pimcore.org/issues/secure/ReleaseNote.jspa?projectId=10000&version=10111
https://github.com/pimcore/pimcore/commits/master

Cheers, 
Bernhard & The pimcore crew

Please visit the release notes to see all the changes in detail. 

Following some impressions of the new version: 

Cheers, 
Bernie & The pimcore crew

Hi folks,

pimcore 1.4.5 with lots of improvements and new features has been around for few weeks now. We hope you like it?

One major objective during the development of this version was performance testing and optimization. In this blog post we want to share with you some of the tests we did and the results we got, and by doing so give you some answers about the performance and scalability of pimcore in combination with big datasets – a question we frequently hear from you, our clients and others.

What we did

Our goal was to test and optimize the pimcore backend and api (cli scripts for importing, updating …) for performance with big datasets. We concentrated our tests on the objects part of pimcore, but all optimizations were also added for documents and assets if possible.

Our dataset

To get a big dataset, we took a real world example of a PIM installation and enlarged the dataset extensively. By doing so, we ended up with the following dataset:

Object count

3.2 mio

Product count

2.5 mio

Relation count

20 mio

Version count

5 mio


The relation count might seem a little low. But this is in fact a quite realistic number because of two reasons:

  • There are lots of ‘small’ accessory products with don’t have that many relations for them self
  • The clever use of inheritance not only reduces the maintenance effort but also decreases the number of relations to save. If relations are assigned to parent objects and inherited by concrete product, the relation itself has to be saved only once (although many products use this relation).

The products themselves were quite complex product with extensive use of different datatypes for attributes, object bricks, field collections and inheritance.

Attributes per product

60

Average object bricks per product

4

Average attributes per object brick

30



 

Our results

First of all, it has to be said, that our test dataset was not designed to get good performance results, but to be as realistic as possible and therefore get a real world impression of how pimcore performs. The performance also depends strongly on the data model and use cases. With less complex objects you will get completely different results. So these results can only give a feeling of what is easily possible.

The performance of pimcore while working with the backend is quite hard to quantify since it is dependent from many different factors.

But from an editors perspective, a normal and quick working was possible and the pimcore backend stayed perfectly responsive.

Most of the common interactions (like opening sub trees, opening objects, moving objects, saving objects, searching for objects) were executed in less than a second in most of the time. If the cache was not filled, huge amount of sub objects had to be loaded or a complex fulltext searches were made, the requests needed about two to five, maximum ten, seconds.

But of course there are interactions (like renaming or moving folders with huge amount of objects within them etc.) which took much longer simply because of the data amount that has to be processed.

In terms of batch script performance we made three simple tests – copying products and saving the new ones (to simulate import performance), updating products and saving the modified products and deleting products:

 

1000

10000

Copy Products

50 sec

490 sec

Update Products

80 sec

480 sec

Delete Products

40 sec

420 sec


Again, one needs to take in to consideration, that in this case the products where quite complex and that the results of such tests are strongly dependent on the use case, data model and so on.

 

How we did it

First of all, we got our self a server – not the biggest or newest one, but the important thing is a server with plenty of RAM and fast HDD-access:

Processor

2 x Quad-Core AMD Opteron(tm) Processor 2350

RAM

48 GB

HDD pimcore

SATA 1,5 TB

HDD database

SSD 120 GB

Installed Software

  • Debian 6.0.4
  • php 5.3.9-ZS5.6.0
  • Apache/2.2.16 (Debian)

Configuration of database

Since MySQL made lots of performance improvements in the last versions, it is important to use the latest version (in our case MySQL 5.5.20).

Configuration wise we supplied the MySQL with plenty of RAM and configured cache sizes etc. optimized for our use case. You can find information about that either in the MySQL documentation, at http://www.mysqlperformanceblog.com/ or at Google ;).

We also took advantage of the partitioning feature of MySQL and split up the big tables into partitions.

Again the optimized configuration of MySQL is highly dependent on your use case and needs to be planned carefully during the setup of the system. Most performance improvements can be reached by setting up the MySQL properly.

Configuration of cache

Since memcache doesn’t support tags, we simulate this feature with a database table. But with these big scale datasets this solution is far too slow.

In our tests we used the NoSQL database MongoDB (http://www.mongodb.org/) as cache instead – with great results. Tagged caching is supported this way out-of-the-box and it is really fast. The MongoDB cache backend (Pimcore_Cache_Backend_Mongodb) is shipped with pimcore 1.4.5 and can be configured in the cache.xml.

Configuration for cli scripts

Since php is only single threaded and not exactly built for long running import processes, we looked for a way to deal with these drawbacks and came up with the job server gearman (http://gearman.org). The idea behind is to

  • split up huge workloads (of importing, updating, …) to small work packages and
  • run them in parallel.

With gearman and a small framework we built around it, we now have a generic way for this task, can take advantage of multi core server processors and get quite good performance of importing or updating pimcore data.

 

What we learned

The most important thing we learned is that pimcore is perfectly scalable. Since pimcore is built on a solid technical base, it can take full advantage of all performance improvement and scalability functionalities of this technical base.

So right now we are far from the limit what is possible. In our case we just used one single server with quite old components. Use modern components, Intel processors (for which php is more optimized for), a dedicated database server, more than just one application server to name just a few possible next steps.

But of course, during our tests and with your input in the forum we found a few bottlenecks within pimcore all of which we fixed in pimcore 1.4.5. So if you plan to set up a big system, use the latest version. 

So that is that. We hope this gives you a good impression of what is possible with pimcore and how you can make it happen.


As always, comments, suggestions and feedback are welcome.


Whatever you are up to with pimcore in the upcoming weeks, may it be good fun and profitable.
Have a nice day and a good spring,

Christian and the pimcore team

Version 1.4.5 released!

Hey pimcore-friends,

A new pimcore version is available!
It's a mix out of impressive new features, cool improvements and bugfixes (Release Notes).
We hope that you'll enjoy this new release and are looking forward to your feedback on Twitter, Facebook and Google+.

The following gallery should give you a quick overview of this release: 

Tag & Snippet - Management

Gives all the freedom to the marketing department ...

Website / HTTP Error Log

See what happens on your website ...

Area Block Improvements

Drag and drop insert / reorder, ... reordering without reloads, ... toolbar, ... 

HTML5 Video

Automatic conversion, individual players, ... see here.

 

Miscellaneous


lots of performance improvements and many many more. 

Let me know what you think!

Cheers, 
Bernie & The pimcore crew

Google Summer of Code

Hey guys,

as spring is on its way, we already are thinking about summer activities. One of them could be adding a bunch of new cool features to pimcore. As we could use some help we are thinking about proposing pimcore to Google Summer of Code 2012.

We have some ideas for projects we want to offer. Have a look at them unter Google Summer of Code in our wiki. What do you think about them? Do you have any additional ideas and suggestions? We started a forum thread for feedback, discussion and suggestions and we are happy about any of them - goto the Forum Topic.

And if we get approved by Google and you would like to collaborate with the pimcore core team (with a little help of Google ;-) ), feel free to apply for one of these projects.

Have a nice spring start and stay tuned…

Christian & the pimcore crew

Bugfix Release 1.4.4

Hi everybody, 

We've just released Version 1.4.4.
This release contains mainly bugfixes that can't wait any longer ;-)

For a full list of changes, please see the release notes.

Cheers, 
Bernie & The pimcore crew

Version 1.4.3 released!

Hi pimcore-friends,

I'm happy to announce you that we've released version 1.4.3 yesterday evening. 
This release comes with lots of new features, improvements and bugfixes. We've really worked hard on that release and I hope that you'll enjoy working with this exciting new version. 

We'll present you some of the new features in detail later, in the meantime you can get an complete overview at the release notes.

Also a big thank you to all of you for the great collaboration!

Cheers, 
Bernhard & The pimcore Crew

Christmas is over and the pimcore team starts into the new year with the old (and some new) energy and vigor.

It has been discussed several times and there were many feature requests regarding user permissions. Now the time has come: User permissions will be remodeled.With the next pimcore version we are planning to introduce a new permission system based on the classic approach of users, groups and roles. Users will no longer have all permissions by default. Permissions will have to be allocated to users. The same is true for new elements/nodes created. Users will not have all permissions on new elements by default. We still do not plan user permissions on field basis, but we aim at making user permission on element basis better configurable. This implies that a user can be a member of one or more groups. The administration interface will be redesigned completely and thereby shall perform better than the existing one. We set up a Forum Thread. Please let us know your thoughts, experiences and expectations towards a user permission system in pimcore while we are still brooding over that matter.

Merry christmas pimcore

Merry Christmas Everyone,

this is the second Christmas for pimcore. And let me tell you: We have a lot of presents for pimcore during the whole next year. So, be prepared.

Merry Christmas & Frohe Weihnachten with the pimcore/elements crew.

Get Adobe Flash player

Hi folks,
weeks ago we released pimcore 1.4.2 but never talked much about it. After the summer break (which wasn’t really a break) there is so much to do, the weather during the last weeks was simply too nice, so … well can imagine the rest of the story.
But better late than never and therefore I am going to talk about the most important changes of 1.4.2. Some of them we already showed at a previous blog post, but here they are once more and altogether.

Image Thumbnail pipeline

One of the most significant changes is the all new thumbnail functionality. Now it is possible to define the most complex thumbnail calculations with the image thumbnail pipeline. So far all of the old transformations and some pretty cool new ones (e.g. rounded corners) are supported.
And the best thing of all: new filters and transformations can be added easily.
Have a look at the video and the detailed documentation. Thumbnails

Get Adobe Flash player

Field specific Image Cropping for Documents

A quite simple jet really powerful feature is the field specific image cropping for documents. Sit back and watch the movie. Image

Get Adobe Flash player

Copy documents and rewrite relations to new documents

To save editors lots of work we added a new document copy-paste mode. When copying the sub tree /de to /en with 'updating references', links within the sub tree will be rewritten. E.g. a link in the document /de/service to /de/info will point from /en/service to /en/info. Copy documents and rewrite relations to new documents (since 1.4.2)

Hardlinks for documents

Another nice feature for documents are hardlinks for documents. These work similar to hardlinks in file systems. Watch the video for detailed explanation. Hardlinks for documents (since 1.4.2)

Get Adobe Flash player

Possibility to open elements included by $this->inc() directly in the editmode

If in your template elements are included by $this->inc(), you can navigate to this element via right click in the editmode.

Object data type ‘Hotspot image’

In addition to the old image data type there is now an image data type where hotspots can be defined. So important areas within an image can be marked and highlighted for special treatment in the frontend. Other Fields - Image, Image with Hotspots, Checkbox, Link

Object data type ‘Objects with metadata’

In addition to the simple objects relation data type, this new ‘Objects with metadata’ data type makes it possible to store meta data to relations between objects. Href, Multihref, Objects - Relations, Dependencies and Lazy Loading

Object Preview

Another cool feature for editors is the object preview. So editors easily can check how a specific object would look like in the frontend. Enjoy the video. Object Preview (since 1.4.2)

Get Adobe Flash player



In general we made lots of bug fixes and improvements, which should make developing and working with pimcore an even better experience.
For example we improved working with big amount of objects in the backend. So batch updates, copying and deleting of big and huge amounts of objects shouldn’t be a problem anymore.
Additionally we made lots of general performance improvements – especially concerning database (additional indices, optimized storage engines), properties and caching in general.

So is pimcore still alive? The answer is: yes it is. We use it in our daily working live and we as well as our customers are enthusiastic about it. We get lots of inquiries of people and companies how use pimcore or considering using it. And there are you, our community, who use pimcore, make suggestions for improvements and give us feedback. Pimcore is more alive than ever before, even if our weakest point – documentation and communication – still needs much improvement. Speaking of which, we would appreciate your support to complete and improve the documentation.

That said, we hope you like the new pimcore version. Stay tuned, have fun, take care and enjoy the weekend…
Cheers,
Christian & the pimcore crew

We're on GitHub!

Starting with today, we are offering an always up-to-date mirror of our SVN repository on GitHub. 
We think it should make it a lot easier for you to submit code contributions, bugfixes, ...  to the pimcore project.

Have fun with forking pimcore, and we hope that we'll get lots of pull requests :-)

GitHub project pagehttps://github.com/pimcore/pimcore

Repository (SSH): git://github.com/pimcore/pimcore.git

Repository (HTTP)https://github.com/pimcore/pimcore.git