GithubHelp home page GithubHelp logo

pimcore / pimcore Goto Github PK

View Code? Open in Web Editor NEW
3.2K 178.0 1.4K 509.31 MB

Core Framework for the Open Source Data & Experience Management Platform (PIM, MDM, CDP, DAM, DXP/CMS & Digital Commerce)

Home Page: http://www.pimcore.com

License: Other

Shell 0.01% PHP 82.63% HTML 0.01% CSS 0.03% JavaScript 17.22% Twig 0.11%
pimcore cms pim shop ecommerce ecommerce-platform master-data-management dam wcms digital-platform

pimcore's Introduction

Pimcore Inspire 2024 - A Must-Attend Conference for Pimcore Developers!

Pimcore - Own the digital World

Pimcore Core Framework - Open Source Data & Experience Management Platform: PIM, MDM, CDP, DAM, DXP/CMS & Digital Commerce

Packagist Software License Gitter

Contribute

Bug fixes: please create a pull request including a step by step description to reproduce the problem
Contribute features: contact the core-team on our Gitter channel before you start developing
Security vulnerabilities: please see our security policy

For details, please have a look at our contributing guide.

Overview

Technology and Architecture

Key Benefits and Advantages

โš’ Data Modelling and UI Design at the same Time

No matter if you're dealing with unstructured web documents or structured data for MDM/PIM, you define the UI design (web documents by a template and structured data with an intuitive graphical editor), Pimcore knows how to persist the data efficiently and optimized for fast access.

๐ŸŽ› Agnostic and Universal Framework for your Data

Due to the framework approach, Pimcore is very flexible and adapts perfectly to your needs. Built on top of the well-known Symfony Framework you have a solid and modern foundation for your project.

๐Ÿš€ Extensible and huge Symfony Community

Benefit from all existing Symfony Components and Bundles provided by the community or create your own Bundles to extend your Projects with reusable components.

๐Ÿ’Ž Your Digital World consolidated in one Platform

No more API, import/export and synchronization hell between MDM/PIM, E-Commerce, DAM, and your Web-CMS. All is working seamlessly together, natively ... this is what Pimcore is built for.

โœจ๏ธ Modern and Intuitive UI

We love good-looking user interfaces, designed to be efficient for daily use and optimized for a great experience for editors.

Preview and Demo

Data Objects

Pimcore Admin Interface Screenshot PIM/MDM Manage any structured data based on a predefined data model, either manually or automatically via the APIs. Define the structure and attributes of your objects by using the class editor. Manage any data โ€“ products (PIM/MDM), categories, customers (CDP), orders (digital commerce), blog articles (DXP/CMS). Data Objects provide the possibility to manage structured data for multiple output channels from a single source. By centralizing data in one place, Pimcore's data objects enable you to achieve better data completeness and data quality, allowing you to create and maintain a consistent, up-to-date customer experience across multiple touchpoints in less time.

Digital Assets

Pimcore Admin Interface Screenshot DAM Assets are the DAM part of Pimcore. Store, manage and organize digital files such as images, videos, PDFs, Word/Excel documents in a folder structure. Preview 200+ file types directly in Pimcore, edit pictures, and enrich files with additional meta-data. Facial recognition for focal points in images is available. Editors only need to maintain one high-resolution version of a file in the system. Pimcore can automatically generate all required output formats for various channels such as commerce, apps, websites. Of course, including comprehensive user management and version control.

Documents

Pimcore Admin Interface Screenshot CMS The DXP/CMS part of Pimcore for managing unstructured content such as the pages of a website and its navigation. Based on Twig templates, documents render physical HTML/CSS pages and provide the capabilities to manage the presentation of data, exactly how customers will experience it. They can be composed by administrators by arranging predefined layout elements. Pimcore documents provide multilingual and multi-site capabilities for websites, including emails and newsletters. Total frontend flexibility enables a perfect blend of content and commerce. You can also use them to create content for offline channels, such as printed catalogs (web-to-print).

Demo (Community Edition)

Admin-URL (stable): https://demo.pimcore.fun/admin/
Admin-URL (dev): https://11.x-dev.pimcore.fun/admin/
Username: admin
Password: demo

Getting Started

Only 3 commands to start! ๐Ÿ˜Ž

COMPOSER_MEMORY_LIMIT=-1 composer create-project pimcore/skeleton ./my-project
cd ./my-project
./vendor/bin/pimcore-install

This will install an empty skeleton application, but we're also offering a demo package for your convenience - of course also with 3 commands ๐Ÿ’ช Click here for more installation options and a detailed guide

Supported Versions and LTS

Community support of a minor version of Pimcore packages ends with the release of the next minor version. After end of community support, long term supported is provided in combination with enterprise edition.

LTS versions are based on our Platform Version Releases which cover the Core Framework as well as extensions provided by Pimcore. For details on versions and their support state see our documentation.

Copyright and License

Copyright: Pimcore GmbH For licensing details please visit LICENSE.md

pimcore's People

Contributors

aashan10 avatar andreas-gruenwald avatar aryaantony92 avatar blackbitdevs avatar blankse avatar brusch avatar cleggypdc avatar corepex avatar ctippler avatar datom avatar dpfaffenbauer avatar dvesh3 avatar fashxp avatar jdreesen avatar jorisros avatar jremmurd avatar kingjia90 avatar lukmzig avatar maff avatar martineiber avatar mattamon avatar mcassier31 avatar mcop1 avatar niklasbr avatar podarcis avatar robertst7 avatar solverat avatar thomaskeil avatar ultramegatom avatar weisswurstkanone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pimcore's Issues

Add contents of text assets to search index

Hello,

Uploading asset of type .xls, .pdf, .doc, etc. add the text contained in those asset in the database for search by keyword in Pimcore admin.

CSV asset are not parsed for text, so they can't be searched by their content.
Would be nice like the other one to parse it (i think the process behind is convert it to PDF and after parse it...).

Best regards.

RFC - Add event before object is loaded in UI

Problem

When an object is opened in de backend I want Pimcore to load an object specific layout (not class level specific). I want to manipulate the loaded layout. The only thing I can currently do is specify a class specific default layout, I need an object specific layout.

Usecase

In my case I use the custom layouts for specific product layouts. So object A of type/class 'product' should load custom layout 1 named 'hardware' and object B of type/class 'product' should load custom layout 2 named 'software'. The reason that I don't use different objects is because I want 1 attribute set which all different product types can use to prevent duplicate attributes. So when a product object is saved it should save the selected layout for the specific object ( custom functionality I made). Pimcore has an event called 'preSendData' which is called right before al the object data is send. Although this is nice, I want to manipulate the loaded layout when you open a object.

Solution

In the /Pimcore/models/Object/ObjectController.php add an event so the object data can be manipulated before the object is loaded in de GUI. That way one of the things is that I can change the layout it should load. This would be a simple but great improvement for pimcore.
I have added the next code/event at the start of the getAction() function in the ObjectController to solve my problem. Maybe you can add an event ( similar to the one I use ).


public function getAction(){
   $object = "";
   $returnValueContainer = new Model\Tool\Admin\EventDataContainer($this);
   \Pimcore::getEventManager()->trigger("admin.object.get.preCreateData", $this, [
        "object" => $object,
        "returnValueContainer" => $returnValueContainer
    ]);

Predefined asset metadata for all asset types

Adding a Predefined asset metadata without selecting a target type is possible, but nothing happens.
It makes sense that selecting nothing will apply the definition to all types of assets.

Locking node in the tree results in all nodes collapsed

This is very annoying when we have a lot of levels and we have to lock some nodes in depth.
Would be great if the system remember and auto-open the nodes again for us (after reloading the tree). In terms of performance it may be more efficient if the system only updates the nodes (properties and colors) without reloading the tree but not sure if there is good way for this implementation.

So the main improvement idea is that to keep the tree nodes open state just like before the locking/unlocking operation.

No more HTTP keep-alive connection is possible

I posted problem (in old Jira ticket) about HTTP keep-alive/pagespeed problem. I was trying to search more deeper why it happens.
But it seems that now all pimcore request send back HTTP closed connection (even desactivating page speed i got closed connection, and the demo website send closed connection too).

So we cannot make persistant keep-alive connection with Pimcore framework for now. Only way would be to unregister the event "system.shutdown" or use Cli script.

Is it intended ?

After studying the code, process seems like that (Pimcore 3.0.6 Stable):

  • startup.php:

_create an event:_
Pimcore::getEventManager()->attach("system.shutdown", array("Pimcore", "shutdown"), 9999);
when triggered this will call Pimcore::shutdown() method wich set self::$inShutdown = true; making outputBufferEnd() function send "Connection: close"
OutputBufferStart() is started in the Pimcore::run() method and use as callback outputBufferEnd() (in case of non PHP-CLI).

_send this event:_
This event is always launched at the end by register_shutdown_function()

So actually Pimcore is ALWAYS sending "Close: connection". The only case it is not closed is in CLI mode where outputBufferEnd() is not used as callback for outputBufferStart().

Custom Class Grouping

Instead of automated algorithm for grouping it will be much much better to have the opportunity to customize the groups by making folders in the Class Definitions GUI. This way we will not be isolated by automated algorithm for grouping and eventual problems from it.

So for example I may create a folder Catalog inside of it i will put two classes Product and Category.
When creating object I will get the folder Catalog and from it the both object types.

Note: if this issue is going to be implemented this one is void: #187

Disabling output cache does not work

The documentation describes several ways of disabling the cache: https://www.pimcore.org/wiki/display/PIMCORE3/Output-Cache

Our server does not use Memcache or any other additional caching mechanisms.

On one our websites we store a visitors email address in a session to display it on the following page. Because we don't want the email address to be cached, we disable the output cache for this page.

    public function successAction() {

        //disable output cache to prevent this page from being cached.
        $front = Zend_Controller_Front::getInstance();
        $front->unregisterPlugin("Pimcore\Controller\Plugin\Cache");

        $session = new Zend_Session_Namespace('trial');
        $email = $session->email;

        if(isset($email) && !$this->view->editmode) {
            $text = $this->view->wysiwyg('body')->text;
            $text = str_replace('{{email}}', $email, $text);
            $this->view->wysiwyg('body')->text = $text;
        }
    }

When another person requests the same page however, the email address of the previous visitor is still visible. Adding a regex to disable the output cache for the page in System settings does not work either.
Only when ?nocache=true is added to the URI, the cache is bypassed and we see "{{email}}" (the placeholder) displayed.

\Pimcore\Model\Cache::disable(); does not disable the output cache either, while the documentation says it disables all caches.

Problem with Backend cache growing object size stored.

Following the discussion here : https://www.pimcore.org/board/viewtopic.php?f=7&t=1386&p=9480

It seems that the stored cached object (called back in getById) take more size than the object itself. Maybe some information is appended in the time making it growing... but problem is after some days, getList method can use all memory if many object are fetched from the cache.

We got problem with Redis2 cache, but user in the forum reported having same problem with memcache.
I think it is a global cache problem (not depending from the backend cahce method), as the memory problem is object use more and more memory and finally overflow the PHP limit.

As other user we only had this problem with the recents Pimcore versions. Maybe something changed.

Best regards!


Fact posted by us on the forum at the mentionned thread:

I got the same problem with Redis as backend cache.

\Pimcore\Cache\Backend\Redis2
true

127.0.0.1
6379
1
1
<use_lua>1</use_lua>

So it doesn't come specificaly from Memcached, but from the global cache mecanism maybe.

Pimcore 3.0.6 (last stable version):
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 512 bytes) in .../pimcore/lib/Zend/Cache/Core.php on line 313

It works well and after some days we got this error. Flushing the cache make it work again.
Ok after further investigation, it seems that the cached object (when you get them with getById) take more memory than if you do not fetch them from the cache.


After more investigation we found:

If i keep code fetching from cache i got (memory_get_usage() / memory_get_usage(true) is given)

Is going to getById object ID: 46 (memory before: 3.47 mb / 3.75 mb)
Is going to getById object ID: 48 (memory before: 36.19 mb / 44.25 mb)
Is going to getById object ID: 50 (memory before: 36.66 mb / 44.25 mb)
Is going to getById object ID: 52 (memory before: 38.32 mb / 44.25 mb)
Is going to getById object ID: 54 (memory before: 38.7 mb / 44.25 mb)
Is going to getById object ID: 56 (memory before: 40.33 mb / 44.25 mb)
Is going to getById object ID: 58 (memory before: 41.08 mb / 44.75 mb)
Is going to getById object ID: 60 (memory before: 41.24 mb / 44.75 mb)
Is going to getById object ID: 94 (memory before: 41.46 mb / 44.75 mb)
Is going to getById object ID: 97 (memory before: 41.75 mb / 44.75 mb)
Is going to getById object ID: 104 (memory before: 42.22 mb / 44.75 mb)
Is going to getById object ID: 105 (memory before: 42.22 mb / 44.75 mb)
Is going to getById object ID: 107 (memory before: 42.22 mb / 44.75 mb)
Is going to getById object ID: 108 (memory before: 42.65 mb / 44.75 mb)
Is going to getById object ID: 109 (memory before: 43.28 mb / 44.75 mb)
Is going to getById object ID: 110 (memory before: 43.45 mb / 44.75 mb)
Is going to getById object ID: 111 (memory before: 43.83 mb / 44.75 mb)
Is going to getById object ID: 112 (memory before: 43.91 mb / 44.75 mb)
Is going to getById object ID: 113 (memory before: 75.75 mb / 83.75 mb)
Is going to getById object ID: 114 (memory before: 76.14 mb / 83.75 mb)
Is going to getById object ID: 115 (memory before: 80.45 mb / 84.75 mb)
Is going to getById object ID: 116 (memory before: 83.59 mb / 84.75 mb)
Is going to getById object ID: 117 (memory before: 83.77 mb / 84.75 mb)
Is going to getById object ID: 118 (memory before: 83.93 mb / 84.75 mb)
Is going to getById object ID: 119 (memory before: 84.04 mb / 84.75 mb)
Is going to getById object ID: 120 (memory before: 84.17 mb / 84.75 mb)
Is going to getById object ID: 121 (memory before: 84.31 mb / 84.75 mb)
Is going to getById object ID: 122 (memory before: 84.46 mb / 85 mb)
Is going to getById object ID: 123 (memory before: 84.66 mb / 85.25 mb)
Is going to getById object ID: 124 (memory before: 84.74 mb / 85.25 mb)
Is going to getById object ID: 126 (memory before: 84.83 mb / 85.25 mb)
Is going to getById object ID: 127 (memory before: 85.06 mb / 85.5 mb)
Is going to getById object ID: 128 (memory before: 85.29 mb / 85.75 mb)
Is going to getById object ID: 129 (memory before: 85.52 mb / 86 mb)
Is going to getById object ID: 130 (memory before: 85.6 mb / 86 mb)
Is going to getById object ID: 131 (memory before: 86.98 mb / 87.75 mb)
Is going to getById object ID: 132 (memory before: 87.08 mb / 87.75 mb)
Is going to getById object ID: 914 (memory before: 87.17 mb / 87.75 mb)
Is going to getById object ID: 936 (memory before: 87.45 mb / 88 mb)

And if i disable cache loading (by directly editing getById method in \pimcore\models\Object\AbstractObject.php and disable $object = Cache::load($cacheKey) line 238) i got:

Is going to getById object ID: 46 (memory before: 3.47 mb / 3.75 mb)
Is going to getById object ID: 48 (memory before: 5.49 mb / 5.75 mb)
Is going to getById object ID: 50 (memory before: 5.92 mb / 6.25 mb)
Is going to getById object ID: 52 (memory before: 6.46 mb / 6.75 mb)
Is going to getById object ID: 54 (memory before: 6.8 mb / 7 mb)
Is going to getById object ID: 56 (memory before: 7.22 mb / 7.5 mb)
Is going to getById object ID: 58 (memory before: 7.44 mb / 7.75 mb)
Is going to getById object ID: 60 (memory before: 7.59 mb / 7.75 mb)
Is going to getById object ID: 94 (memory before: 7.79 mb / 8 mb)
Is going to getById object ID: 97 (memory before: 8.18 mb / 8.75 mb)
Is going to getById object ID: 104 (memory before: 8.18 mb / 8.75 mb)
Is going to getById object ID: 105 (memory before: 8.18 mb / 8.75 mb)
Is going to getById object ID: 107 (memory before: 8.18 mb / 8.75 mb)
Is going to getById object ID: 108 (memory before: 8.57 mb / 9 mb)
Is going to getById object ID: 109 (memory before: 8.57 mb / 9 mb)
Is going to getById object ID: 110 (memory before: 8.72 mb / 9.25 mb)
Is going to getById object ID: 111 (memory before: 8.72 mb / 9.25 mb)
Is going to getById object ID: 112 (memory before: 8.8 mb / 9.25 mb)
Is going to getById object ID: 113 (memory before: 8.8 mb / 9.25 mb)
Is going to getById object ID: 114 (memory before: 8.8 mb / 9.25 mb)
Is going to getById object ID: 115 (memory before: 9.03 mb / 9.5 mb)
Is going to getById object ID: 116 (memory before: 9.03 mb / 9.5 mb)
Is going to getById object ID: 117 (memory before: 9.19 mb / 9.75 mb)
Is going to getById object ID: 118 (memory before: 9.34 mb / 9.75 mb)
Is going to getById object ID: 119 (memory before: 9.34 mb / 9.75 mb)
Is going to getById object ID: 120 (memory before: 9.46 mb / 10 mb)
Is going to getById object ID: 121 (memory before: 9.6 mb / 10 mb)
Is going to getById object ID: 122 (memory before: 9.73 mb / 10.25 mb)
Is going to getById object ID: 123 (memory before: 9.92 mb / 10.5 mb)
Is going to getById object ID: 124 (memory before: 9.99 mb / 10.5 mb)
Is going to getById object ID: 126 (memory before: 9.99 mb / 10.5 mb)
Is going to getById object ID: 127 (memory before: 10.2 mb / 10.75 mb)
Is going to getById object ID: 128 (memory before: 10.4 mb / 11 mb)
Is going to getById object ID: 129 (memory before: 10.4 mb / 11 mb)
Is going to getById object ID: 130 (memory before: 10.49 mb / 11 mb)
Is going to getById object ID: 131 (memory before: 10.49 mb / 11 mb)
Is going to getById object ID: 132 (memory before: 10.57 mb / 11 mb)
Is going to getById object ID: 914 (memory before: 10.65 mb / 11.25 mb)
Is going to getById object ID: 936 (memory before: 10.92 mb / 11.5 mb)

There is a problem as cached data take many more memory than directly fetching them freshly.
So actullay i thing it use the 128mb available at the end and Zend_Cache has no more memory to unserialize it in /pimcore/lib/Zend/Cache/Core.php on line 313, making the fatal error.

inheritance of checkbox

Hi all

When we use inheritance on a class, we can have different values between parents and children objects but not for checkbox field.
If we uncheck the field in a child of a parent who have the field checked, when we reopen the child the checkbox still checked.
Is it a normal behaviour? Is it a bug?

Regards

Asset document thumbnail generation should work asynchronously

Hello all.
We currently have several projects in which PDFs or OpenOffice documents are HUGE.
As a result, Ghostscript or LibreOffice consume all CPUs and RAM in order to build preview.

A nice way to handle that would be to globaly call asynchonous services so that php-fpm is not stuck and so that site navigation is not stuck either.

Hope this is clear.

Also you might have workaround to provide to us in order to avoid this problem.

Arnaud.

user documentation for document areas

add possibility to include user documentation directly to document areas.
e.g. with optional help.php which is shown - if available - as popup behind a ? in edit mode of area

Object image with related asset does not change when new asset image is uploaded

Description:
When uploading a new image to an asset, objects which have references to the asset will not display the new uploaded image after reloading the object. The new image is not displayed even if the image is removed from the object, saved, and related again. The listing the image from the object tree view the wrong image is displayed also.

Though under the objects version the correct image is displayed.

Recreate:

  1. Create class called Image with an Image attribute and create an object.
  2. Upload new image asset.
  3. Relate object and asset and save object.
  4. Upload new image to the asset and save.
  5. Reload object. The new picture is not displayed on the object.
  6. Remove the objects related image and save.
  7. Relate the asset again and save. Still the old image is displayed.

Events for Pimcore\Controller\Action\Frontend::init

https://www.pimcore.org/board/viewtopic.php?f=17&t=2308

@brusch lastly added the following comment on the old JIRA tracker:
Hi,
Why you don't put the code into Website\Controller\Action::init();

public function init() {
// your code
parent::init();
// your code
}

isn't this just the same as having events in Pimcore\Controller\Action\Frontend?
Thanks for clarifying!
Please recreate at GitHub if still up-to-date

ANSWER:
Yes the result is exactly the same however the point is to make the plugins/core more extendable and advance the system.

So by having these events we have the opportunity to build in algorithms at these events in the plugins without requiring code skills to fully install the plugin itself.

width or height undefined in thumbnail configuration

If the width or height is undefined in a thumbnail configuration over url the thumbnail generator fires PHP errors cause the incomplete dimensions. to fix this i modificated the getThumbnail method in the Pimcore\Model\Asset\Image Class.

public function getThumbnail($config = null, $deferred = false) {
    if( is_array( $config ) && ( isset( $config['width'] ) == true || isset( $config['width'] ) == true ) ) {
        if( @$config['width'] == 'undefined' )
            $config['width'] = round( ( $this->getWidth() / $this->getHeight() ) * $config['height'] );
        if( @$config['height'] == 'undefined' )
            $config['height'] = round( ( $this->getHeight() / $this->getWidth() ) * $config['width'] );
    }
    $thumb = new Image\Thumbnail($this, $config, $deferred);
    return $thumb;
}

"Edit Content for Target Groups" also in E-Mail documents

It would be nice to have the possibility to edit content for specific target groups (Personas) also in Email-Documents, not only in Pages. So we could slightly modify Newsletter content for specific target groups.
The assignment of the right Persona when sending a newsletter should be based on the "Persona"-field of the object class which is used for sending the newsletter. Of course this would only work if the object class has a single Persona field, but not a Persona multiselect.

Object bricks error while filter an export in object grid

I have some object bricks ( Name: MOTClothing , Field name: occasion ) which are linked with object class (Product class - MOTProduct ). There is a export option in object (product) grid. The grid contains object bricks - occasion also. If we CSV export products it's works. But if I try to filter with object bricks - occasion and CSV export then I will get fatal error like,

Fatal error: Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli prepare error: Unknown column 'MOTClothing.occasion' in 'where clause'' in /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Statement/Mysqli.php:77 Stack trace: #0 /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Statement.php(115): Zend_Db_Statement_Mysqli->_prepare('SELECT object_l...') #1 /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Adapter/Mysqli.php(388): Zend_Db_Statement->__construct(Object(Zend_Db_Adapter_Mysqli), 'SELECT object_l...') #2 /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Adapter_Mysqli->prepare('SELECT object_l...') #3 /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Adapter/Abstract.php(737): Zend_Db_Adapter_Abstract->query('SELECT object_l...', Array) #4 [internal function]: Zend_Db_Adapter_Abstract->fetchAll('SELECT object_l...', Array) #5 /home/ecomweb1/connect.com/pimcore/pimcore/lib/Pimcore/Resource/Wrapper.php(230): call_user_func_arra in /home/ecomweb1/connect.com/pimcore/pimcore/lib/Zend/Db/Statement/Mysqli.php on line 77

I tried with some other object bricks and different server but still i got error.
Its seems like the filter passing wrong element.

Other filter and CSV export working fine, only problem with object bricks.

image

image

image

image

image

image

Load the vendor autload before the custom startup.php

// do some general stuff
$websiteStartup = PIMCORE_CONFIGURATION_DIRECTORY . "/startup.php";
if(@is_file($websiteStartup)) {
    include_once($websiteStartup);
}

$composerStartup = PIMCORE_DOCUMENT_ROOT . "/vendor/autoload.php";
if(@is_file($composerStartup)) {
    include_once($composerStartup);
}

Is there any advantage in loading the custom startup.php before the vendor autoload file? based on my personal experience it would be more appropriate to load the vendor autoload before the custom startup.php

Here is a scenario:
https://github.com/apostle/apostle-php

so there is an onetime initial method call to setup the configuration Apostle::setup("your-domain-key");

so if you try to call it from startup.php this would throw an error because vendor files not loaded yet, a work around is to use the 'system.startup' event.

Any suggestions?

timeout should be a parameter and not set manually in the code

Hello all.
When calculating previews for PDFs or Office documents, a timeout is set as a defaut to build previews such as :
/usr/bin/timeout -k 1m 240s /usr/local/bin/gs -sDEVICE=png16m -dFirstPage=1 -dLastPage=1 -r200 -o /var/www/rec.pimcore.duodisplay.galilee.fr/website/var/tmp/document-image-cache/document_5670__thumbnail_1.png /var/www/rec.pimcore.duodisplay.galilee.fr/website/var/assets/orders/l-150155-39971/item-01/pattern-10698/current/flag-v-hit-s-10698.pdf

However, 240s is sometimes not enough time to build a preview.
Then, previews get killed and each time we re-open asset folders, previews try be be re-generated, causing a long long refreshment time.

This parameter should either be configurable from the backoffice, or you should remember the preview could not be done and therefore not try to do it again and again and again.
It would be good to be able to right click on an asset and force the building of the previews manually if not done. This would launch the command without any timeout.

ExtJS 6

Upgrade to the latest version of ExtJS

->save() will null password field on object

  • Load an object that has a password field (e.g. getById)
  • Update some fields you want ($object->setMyField1())
  • $object->save()

No password-type fields of an object are nullified.

I presume this happens because getter of a password field will always return null (which is good) but then hydrator will still call it to compose sql update query.

Need some mechanism to mark fields that do not need to be updated or only update those fields that where forcefully updated with setter.

Add the choice between DateTime and Zend_Date for dates getter.

Actually the getter for the date of object send back Zend_Date object.
It would be great to be able to choose (at the object field level or as system configuration) beetwen this format or the DateTime format (and maybe string format as raw data for the date). Or just adopt DateTime instead Zend_Date (but would break many application using Pimcore).

Reason is Zend_Date is so slow that now DateTime is widespread it would be maybe better to use it as it is greatly faster. More and more application make use of dates (i think to all aplication making use of period, range, date for booking services, hotel...). Using Zend_Date for some complex algorithm like yield management is a no way as it is up to 10 times slower than native php DateTime.
Searching google for "zend date slow" show it is not the holy grail for managing date now. You can find a benchmark here:
http://riotech.blogspot.fr/2009/03/zenddate-vs-datetime-performance.html
It show a 60x improvment by using DateTime (but biased because we can improve Zend_Date by caching it).

Maybe extend DateTime use for creation/modification date (and planified event for publish, etc.) would imporve as well Pimcore globaly.

Third point to take into account is that if you plan to move from ZF1, using DateTime will make process of migration easier for actual Pimcore user. So implementaing DateTime as soon as possible will remove this hard dependency to ZF1. One way to handle this would be new installation are by default using DateTime, but in system config it can be switched to Zend_Date wich will be indicated as deprecated. Updating old Pimcore would keep Zend_Date as prefered method for global configuration.

Another good point is when ZF1 will be end of life, Pimcore won't suffer of this (or less).

Regards.

Add default Page to Persona Selector

Issue:
After you selected an persona und the document windows you cannot switch back to the default page without refreshing it.

Resolution:
Add an button or an Option in the dropdown to switch back to the default version.
image

Email documents: allow address format: 'John Doe <[email protected]>'

Document_Email has the fields To/From/CC/BCC under the settings tab.
When entering an email address with a name in the following format:
John Doe <[email protected]> it is sometimes silently ignored. When reading the property getCc() it is present, but when reading getCcAsArray() it is empty.

It would also be very nice if you could directly pass the input to Pimcore_Mail like this: Pimcore_Mail->addCc('John Doe <[email protected]>');
without having to write additional code to separate the name and email address.

Store object/document/asset tree level information

Add DB column for documents, objects and assets - o_treeLevel or o_pathLevel or o_level
This will allow easy level-based SQL conditions/orders when retrieving objects and object collections (listing) based on the tree level

Exchange leafo/lessphp with oyejorge/less.php for better compatibility with twbs/bootstrap

(https://www.pimcore.org/wiki/pages/viewpage.action?pageId=14551673)

It turns out the lessphp lib (http://leafo.net/lessphp v0.4.0) used in Pimcore is not fully compatible with Bootstraps less. But I found another one wich could be used as just an easy replacement: https://github.com/oyejorge/less.php
Just use composer to 'require' the library oyejorge/less.php and (hack) replace the file pimcore/lib/lessc.inc.php with the one from oyejorge. The autoloading mechanism from composer should take care of finding the correct classes in the vendor map, the classes used in the replacement of lessc.inc.php .

Add OCR when parsing asset (PDF, images, ...)

Currently, asset PDF, Word, XLS, etc. are converted into PDF and after the text is extracted to be put in the database for the full text search admin.
I don't know if there is possibility to make OCR during this process (desactivated by default from system settings because could be ressource hug i imagine).
So for instance, upload scanned document (i thing a PDF which has been signed by a customer, and after scanned and uploaded in Pimcore, text should be easily for OCR as it is machine text and not hand written text...).

Could be really great for lawyer, contractor, .... documents : )
More and more company are going the way to scan documents and put them in the cloud, so going this direction of OCR add a great value to Pimcore search capabilities.

Best regards.

Yivan added a comment - 18/Jun/15 2:44 PM
By OCR, i mean ROC (optical character recognition)
Bernhard Rusch added a comment - 10/Jul/15 2:58 PM
Are there any good open source cross platform libraries which we can utilize?

Yivan added a comment - 13/Jul/15 3:55 PM

I made some research on it.
Tesseract is the best free option I think. It is included on the native linux repository, and is well maintened by community:
https://github.com/tesseract-ocr/tesseract
It has been compiled for Windows too and is compatible Mac too, so cross-plateform.

It works in command line:
tesseract image.jpg outpout.txt [options]
So it can be integrated in the pimcore workflow (Document -> Image (already exist for document thumbnail) -> Txt (tesseract) -> Parse the txt and save in the search table in database (already exist as txt )).

You can get more information here:
Official project page: https://github.com/tesseract-ocr/tesseract
Detailled information about installation, optimisation, etc. : http://williamjturkel.net/2013/07/06/doing-ocr-using-command-line-tools-in-linux/
Possibility to improve OCR quality; http://vbridge.co.uk/2012/11/05/how-we-tuned-tesseract-to-perform-as-well-as-a-commercial-ocr-package/

For this last link, it is showed that changing the contrast, or other filter by preprocessing the image can improve the OCR recognition.
I think it is better to keep Tesseract with native best/recommanded option, but add in the system config the possibility to configure a pimcore thumbnail filter for OCR so user can use native pimcore filter to change image quality to improve OCR (change output quality, contrast, color, etc.).
Maybe as extra option, check if "textcleaner" program (this is the command line program used in the third link to improve OCR) is installed on the system a check box to activate it or not before OCR.

All of this will make Pimcore a great tool for OCR as it will compete with professional and expensive OCR document management.

One very good use too, will be that the user could find directly image containing specific text! So great for a DAM : )
Bernhard Rusch added a comment - 14/Jul/15 8:31 AM
Thanks for your feedback. Have you tried tesseract with some of your assets? Can you confirm it's working almost perfectly and acn really compete with commercial solutions?

Document is losing content - Personas

When I edit the different Persona Versions of a document it looses its content of the Persona Versions when i click on the "Yes"-Button when pimcore is asking if i want to continue without saving.
1439402678

Can someone confirm this behavior?

Assets: ContentOptimizedFormat on PNG causes Problems with X-Content-Type-Options: nosniff

When using ContentOptimizedFormat on PNG's without Alpha-Channels, Pimcore converts those Thumbnails to JPEGS but keeps the file suffix to PNG.

When sending the HTTP-Header "X-Content-Type-Options: nosniff",
that causes a problem on IE11 so the Image won't be displayed.

Currently i have no Test-Setup to show you the problem. I tested it on the Pimcore-Demo, everything seems alright there, because of the missing Header "X-Content-Type-Options: nosniff".

http://answers.microsoft.com/en-us/ie/forum/ie11-iewindows8_1/image-is-not-decoded-by-ie-11/b4a5467b-ad7e-4612-8ea5-d2508533381c

Add class name to the opened object panel element in the class property

azzaaa
Please look at the attachment.
The idea is that the class in the selected element will be "x-panel x-panel-noborder class-CLASSNAME" instead of "x-panel x-panel-noborder" as is at this time.
This will enhance the styles related for specific type of object.

For example if we have class "Article" the panel will have a class "class-article" and by this class we can style for example the way the styles in the WYSIWYG redactor will appear strictly for this type of objects from custom plugin which has own CSS for the backend.

It is just simple improvement in the code but will allow enhanced styling.

Cannot filter on checkbox value "No" in Object Grid View

There seems to be a problem when filter for checkbox values "No" in the object grid view if the checkbox value never has been set to true.
If I manually set a checkbox value to True, save the object and then set it to false again, it will appear in the filter results for "No".

I would expect filtering checkboxes for "No" values would return all objects where the checkbox is unchecked.

I was able to reproduce this behaviour on demo.pimcore.org on the "news" class, see attached images.

Regards.

image

image

image

image

image

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.