eZ Community » Forums » eZ Publish 5 Platform » Is legacy handler already suppose to...
expandshrink

Is legacy handler already suppose to work?

Is legacy handler already suppose to work?

Tuesday 01 May 2012 2:55:51 am - 6 replies

Hi

I'm trying the new api with an existing ez publish sample install with mysql, so I have changed my service.ini to use legacy handler api and added my db settings:

# Lots of stuff Here
....
[repository]
class=eZ\Publish\Core\Repository\Repository
arguments[persistence_handler]=@persistence_handler
arguments[io_handler]=@io_handler
arguments[service_settings][contentType][field_type]=%:field_type
 
 
#### Core\Io Services ####
 
[io_handler]
class=eZ\Publish\Core\IO\LegacyHandler
 
[io_handler_legacy]
class=eZ\Publish\Core\IO\LegacyHandler
 
#### Core\Persistence Services ####
 
## Example for setting up Legacy Persistence Handler (Storage Engine):
[persistence_handler]
class=eZ\Publish\Core\Persistence\Legacy\Handler
arguments[config][dsn]=mysql://root:root@localhost:3036/ez47
arguments[config][defer_type_update]=false
arguments[config][external_storage][ezauthor]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezbinaryfile]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\BinaryFileStorage
#arguments[config][external_storage][ezboolean]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezcountry]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezdatetime]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezemail]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezfloat]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezimage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ImageStorage
arguments[config][external_storage][ezinteger]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezkeyword]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\KeywordStorage
arguments[config][external_storage][ezmedia]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\MediaStorage
arguments[config][external_storage][ezobjectrelationlist]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ObjectRelationListStorage
arguments[config][external_storage][ezpage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezselection]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezstring]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezsrrating]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][eztext]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezurl]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\UrlStorage
arguments[config][external_storage][ezuser]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][external_storage][ezxmltext]=eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\NullStorage
arguments[config][field_converter][ezauthor]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezbinaryfile]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\BinaryFile
#arguments[config][field_converter][ezboolean]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\CheckBox
arguments[config][field_converter][ezcountry]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Country
arguments[config][field_converter][ezdatetime]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezemail]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezfloat]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Float
#arguments[config][field_converter][ezimage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Image
arguments[config][field_converter][ezinteger]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezkeyword]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezmedia]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Media
#arguments[config][field_converter][ezobjectrelationlist]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ObjectRelationList
arguments[config][field_converter][ezpage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezselection]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Selection
arguments[config][field_converter][ezstring]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezsrrating]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Rating
arguments[config][field_converter][eztext]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezurl]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Url
arguments[config][field_converter][ezuser]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezxmltext]=eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\XmlText
 
...
 
 
# Lots of stuff Here

Then I modified my blog class to just have one field, name, and added this code to the end of the index.php file:

$repository = $container->getRepository();
$contentService = $repository->getContentService();
$locationService = $repository->getLocationService();
$contentTypeService = $repository->getContentTypeService();
 
$contentType = $contentTypeService->loadContentTypeByIdentifier( 'blog' );
 
 
$contentCreateStruct = $contentService->newContentCreateStruct($contentType, 'eng-US');
 
$contentCreateStruct->setField('name', 'Test');
$contentCreateStruct->sectionId=1;
$contentCreateStruct->ownerId=14;
$contentCreateStruct->alwaysAvailable = true;
 
$parentLocationId = 2;
 
$repository->beginTransaction();
$content = $contentService->createContent( $contentCreateStruct, array( $locationService->newLocationCreateStruct( $parentLocationId ) ) );
 
$contentService->publishVersion( $content->getVersionInfo() );
$repository->commit();

Note that my installation is based in eng-US, and what I'm trying to do is simple publish a content with the new API, but I get this error message:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in /var/www/ezpublish/api/eZ/Publish/Core/Persistence/Legacy/Content/Gateway/EzcDatabase.php:861
Stack trace:
#0 /var/www/ezpublish/api/eZ/Publish/Core/Persistence/Legacy/Content/Gateway/EzcDatabase.php(861): PDOStatement->execute()
#1 /var/www/ezpublish/api/eZ/Publish/Core/Persistence/Legacy/Content/Handler.php(274): eZ\Publish\Core\Persistence\Legacy\Content\Gateway\EzcDatabase->loadVersionInfo('126', 1)
#2 /var/www/ezpublish/api/eZ/Publish/Core/Repository/ContentService.php(268): eZ\Publish\Core\Persistence\Legacy\Content\Handler->loadVersionInfo('126', 1)
#3 /var/www/ezpublish/api/eZ/Publish/Core/Repository/Values/Content/Content.php(86): eZ\Publish\Core\Repository\ContentService->loadVersionInfoById('126', 1)
#4 /var/www/ezpublish/api/index.php(74): eZ\Publish\Core\Repository\Values\Content\Content->getVersionInfo()
#5 {main}
  thrown in /var/www/ezpublish/api/eZ/Publish/Core/Persistence/Legacy/Content/Gateway/EzcDatabase.php on line 861

If I put the commit before the publish version function I see that it lefts some garbage in some db tables, like ezcontentobject_name, so, is it a bug?

Modified on Tuesday 01 May 2012 3:02:50 am by Thiago Campos Viana

Tuesday 01 May 2012 3:58:41 pm

Content and ContentType service is still work in progress, so it is probably a bug in getVersionInfo() or one of the other functions mentioned in the stack trace.

From a quick look I'm not sure what is wrong in EzcDatabase->loadVersionInfo(), but the second query ($qName), seem to use $q to generate where condition and not $qName as it should.

Modified on Tuesday 01 May 2012 4:27:19 pm by André R

Tuesday 01 May 2012 4:49:13 pm

Reproduced.

Put the following in settings/override/service.ini:

## Override settings
[io_handler]
class=eZ\Publish\Core\IO\LegacyHandler
 
[persistence_handler]
class=eZ\Publish\Core\Persistence\Legacy\Handler
arguments[config][dsn]=mysql://root:password@127.0.0.1/ezp_temp
arguments[config][defer_type_update]=false
arguments[config][external_storage][ezbinaryfile]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\BinaryFileStorage
#arguments[config][external_storage][ezimage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ImageStorage
arguments[config][external_storage][ezkeyword]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\KeywordStorage
arguments[config][external_storage][ezmedia]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\MediaStorage
arguments[config][external_storage][ezobjectrelationlist]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ObjectRelationListStorage
arguments[config][external_storage][ezurl]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\UrlStorage
arguments[config][field_converter][ezauthor]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezbinaryfile]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\BinaryFile
arguments[config][field_converter][ezboolean]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\CheckBox
arguments[config][field_converter][ezcountry]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Country
arguments[config][field_converter][ezdatetime]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezemail]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezfloat]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Float
#arguments[config][field_converter][ezimage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Image
arguments[config][field_converter][ezinteger]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezkeyword]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezmedia]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Media
#arguments[config][field_converter][ezobjectrelationlist]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\ObjectRelationList
arguments[config][field_converter][ezpage]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezselection]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Selection
arguments[config][field_converter][ezstring]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezsrrating]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Rating
arguments[config][field_converter][eztext]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\TextLine
arguments[config][field_converter][ezurl]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Url
arguments[config][field_converter][ezuser]=\eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\Integer
arguments[config][field_converter][ezxmltext]=eZ\Publish\Core\Persistence\Legacy\Content\FieldValue\Converter\XmlText

 

And the following simplified php in end of index.php:

$repository = $container->getRepository();
$contentService = $repository->getContentService();
$content = $contentService->loadContent( 63 );
$content->getVersionInfo();

 

And the issue was in fact what I mentioned above, and hence fixed as of: https://github.com/ezsystems/ezp-next/commit/a0a4a18ba1c28dbefb2c7f0f1dafcb19b9d6d55a

But after that there is a $contentCreateStruct issue caused by content service not creating all fields with default values it seems:

Fatal error: Uncaught exception 'eZ\Publish\Core\Base\Exceptions\InvalidArgumentType' with message 'Argument '$inputValue->text' is invalid: expected value to be of type 'string'' in /ezpnext/eZ/Publish/Core/Content/FieldType/XmlText/Type.php:118

Stack trace:
#0 /ezpnext/eZ/Publish/Core/Repository/ContentService.php(558): eZ\Publish\Core\Content\FieldType\XmlText\Type->acceptValue(Object(eZ\Publish\Core\Content\FieldType\XmlText\Value))
#1 /ezpnext/index.php(66): eZ\Publish\Core\Repository\ContentService->createContent(Object(eZ\Publish\Core\Repository\Values\Content\ContentCreateStruct), Array)
#2 {main} thrown in /ezpnext/eZ/Publish/Core/Content/FieldType/XmlText/Type.php on line 118

Modified on Tuesday 01 May 2012 5:09:37 pm by André R

Tuesday 01 May 2012 6:55:08 pm

It worked! I mean, more or less, anyway, it's a wip:

eZ\Publish\Core\Repository\ContentService line 589 has:

"name"              => array( "eng-US" => "Some name" ),

So this is why I got "Some name" as the name for the created content object. It isn't creating url alias also.

About the default value problem, this is why I tried to do with a class with just one attribute, and I commented some lines in service.ini because this was causing non-existing class errors.

Anyway, main problem has been solved.

Tuesday 22 May 2012 6:29:49 pm

The reply has been removed because of violation of forum rules.

Tuesday 22 May 2012 6:32:26 pm

The reply has been removed because of violation of forum rules.

Tuesday 22 May 2012 6:44:29 pm

The reply has been removed because of violation of forum rules.

expandshrink

You must be logged in to post messages in this topic!

36 542 Users on board!

Forums menu

Proudly Developed with from