Giter VIP home page Giter VIP logo

ezsystems / legacybridge Goto Github PK

View Code? Open in Web Editor NEW
18.0 33.0 31.0 1.26 MB

[Community co-maintained] Formerly LegacyBundle, this was moved out and can be used as a optional bridge between eZ Platform and eZ Publish Legacy to simplify migration to eZ Platform

Home Page: https://doc.ezplatform.com/en/latest/migrating/migrating_from_ez_publish_platform/

License: Other

PHP 98.34% Gherkin 1.20% Twig 0.46%

legacybridge's Introduction

eZ Platform Legacy Bridge

Build Status Downloads Latest version License

This package integrates eZ Publish Legacy into eZ Platform. It is an enhanced version of LegacyBundle that were part of eZ Publish 5.x, providing even more features to simplify running Platform stack and legacy together.

It is meant to be installed as an addition to eZ Platform 1.13.x - 2.x installs when you need legacy for migration.

NOTE: Legacy bridge will not be supported on eZ Platform 3.x eZ Platform 3.x aims to finally start improving database schema again, which will break legacy comparability. Recommendation is to use eZ Platform / Platform Enterprise 2.5LTS to handle migration needs, and once done evaluate 3.x upgrade.

See INSTALL.md for the installation procedure.

Reporting issues

As Legacy Bridge is co-maintained by the community and eZ Engineering (as active community members), issues found can be reported directly here on Github. There is no SLA on fixes, this is all on voluntary basis, and we welcome you in contributing to issues in any form you you are capable of.

For Enterprise Customers

As of version 1.3.0 you can optionally report issues via normal support channels as well where you do have an SLA on response time. But as always if you know a possible fix, proposing a PR as well here can speed up the issue identification and fixing a lot so we encourage eZ Partners to actively participate whenever they can, as it benefits themselves as well as the customer.

legacybridge's People

Contributors

adamwojs avatar andrerom avatar bdunogier avatar blankse avatar crevillo avatar dpobel avatar emodric avatar flovntp avatar glye avatar joekepley avatar julienlegrand07 avatar kmadejski avatar krbl avatar lolautruche avatar marioblazek avatar masev avatar mateuszbieniek avatar mloureiro avatar natanael89 avatar paradoxe avatar patrickallaert avatar pborreli avatar pedroresende avatar peterkeung avatar pspanja avatar salvatore-pollaci avatar salvatorepollaci avatar wizhippo avatar yannickroger avatar zerustech avatar

Stargazers

 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

legacybridge's Issues

Can't install on eZ Plaform 2.4

In Solver.php line 239:

Problem 1
- The requested package ezsystems/ezpublish-kernel could not be found in any version, there may be a typo in the package name.
Problem 2
- Installation request for ezsystems/cookbook-bundle ^1.0@dev -> satisfiable by ezsystems/cookbook-bundle[1.0.x-dev].
- ezsystems/cookbook-bundle 1.0.x-dev requires ezsystems/ezpublish-kernel ^5.4.10 || ^6.7 || ^7.0 -> no matching package found.
Problem 3
- Installation request for ezsystems/ez-support-tools ^0.2@dev -> satisfiable by ezsystems/ez-support-tools[0.2.x-dev].
- ezsystems/ez-support-tools 0.2.x-dev requires ezsystems/ezpublish-kernel ^6.2 || ^7.0 -> no matching package found.
Problem 4
- Installation request for ezsystems/ezplatform-admin-ui ^1.4@dev -> satisfiable by ezsystems/ezplatform-admin-ui[1.4.x-dev].
- ezsystems/ezplatform-admin-ui 1.4.x-dev requires ezsystems/ezpublish-kernel ^7.4@dev -> no matching package found.
Problem 5
- Installation request for ezsystems/ezplatform-design-engine ^2.0@dev -> satisfiable by ezsystems/ezplatform-design-engine[2.0.x-dev].
- ezsystems/ezplatform-design-engine 2.0.x-dev requires ezsystems/ezpublish-kernel ^6.0.0|^7.0 -> no matching package found.
Problem 6
- Installation request for ezsystems/ezplatform-http-cache ~0.8@dev -> satisfiable by ezsystems/ezplatform-http-cache[0.9.x-dev].
- ezsystems/ezplatform-http-cache 0.9.x-dev requires ezsystems/ezpublish-kernel ^6.13.4@dev || ^7.2@dev -> no matching package found.
Problem 7
- Installation request for ezsystems/ezplatform-richtext ^1.0@dev -> satisfiable by ezsystems/ezplatform-richtext[1.0.x-dev].
- ezsystems/ezplatform-richtext 1.0.x-dev requires ezsystems/ezpublish-kernel ^7.4@dev -> no matching package found.
Problem 8
- Installation request for ezsystems/ezplatform-solr-search-engine ^1.5.4@dev -> satisfiable by ezsystems/ezplatform-solr-search-engine[1.5.x-dev].
- ezsystems/ezplatform-solr-search-engine 1.5.x-dev requires ezsystems/ezpublish-kernel ~6.7.7@dev|^6.12.1@dev|^7.0@dev -> no matching package found.
Problem 9
- Installation request for ezsystems/ezplatform-standard-design ^0.1@dev -> satisfiable by ezsystems/ezplatform-standard-design[0.1.x-dev].
- ezsystems/ezplatform-standard-design 0.1.x-dev requires ezsystems/ezpublish-kernel ^7.0 -> no matching package found.
Problem 10
- Installation request for ezsystems/legacy-bridge ^2.0 -> satisfiable by ezsystems/legacy-bridge[v2.0.10].
- ezsystems/legacy-bridge v2.0.10 requires ezsystems/ezpublish-kernel ^7.0@dev -> no matching package found.
Problem 11
- Installation request for ezsystems/repository-forms ^2.4@dev -> satisfiable by ezsystems/repository-forms[2.4.x-dev].
- ezsystems/repository-forms 2.4.x-dev requires ezsystems/ezpublish-kernel ^7.0@dev -> no matching package found.

Potential causes:

Read https://getcomposer.org/doc/articles/troubleshooting.md for further common problems.

ezpublish_legacy handle Not foud error (404)

in my configuration
ezplatform.yml

ez_publish_legacy:
    #enabled: false
    system:
        ztest:
            legacy_mode: false

routing.yml

#...
_ezplatformRepositoryFormsRoutes:
    resource: "@EzSystemsRepositoryFormsBundle/Resources/config/routing.yml"

_contentOnTheFly:
    resource: "@ContentOnTheFlyBundle/Resources/config/routing.yml"
    prefix:   '%ezpublish_rest.path_prefix%'

_ezpublishLegacyRoutes:
    resource: "@EzPublishLegacyBundle/Resources/config/routing.yml"

#<end of file>

My eZPlatform is v1.8.1 but this problem is also on v1.3.x

setCurrentUserReference in eZContentObjectEditHandler not transmitted to other services

Hi,

I try to use symfony stack in eZContentObjectEditHandler but when I login with admin account it seems to not transmit the new user to ezpublish.api.service.content

Here is the short code

class MyHandler extends eZContentObjectEditHandler
{
    function publish($contentObjectID, $contentObjectVersion)
    {
        $serviceContainer = ezpKernel::instance()->getServiceContainer();
        $admin = $serviceContainer->get('ezpublish.api.service.user')->loadUser(14);
        $serviceContainer->get('ezpublish.api.repository')->getPermissionResolver()->setCurrentUserReference($admin);
        echo $serviceContainer->get('ezpublish.api.repository')->getPermissionResolver()->getCurrentUserReference()->getUserId(); // 14
        $serviceContainer->get('ezpublish.api.service.content')->loadContent($contentObjectID, null, $contentObjectVersion); // Same echo inside the loadContent function = 10 (anonymous)
    }
}

And obviously I get the error

User does not have access to 'versionread' 'content' with: contentId '343', versionNo '1''

Unable to load datatype 'ezrichtext'

Hi,

I installed an EzPlatform 2.0 following this page : https://www.ezplatform.com/
I created the database and install data with commands :

$ php app/console doctrine:database:create
$ php app/console ezplatform:install clean

After I installed LegacyBridge 2.0

Every work fine, I can access the Legacy backend.
But when I want to edit one existing class "article" class, I get this error:

attribute 'ezrichtext': () Unable to load datatype : ezrichtext

I seems that EzPlatform replaced ezxmltext by ezrichtext. But when I install clean data with php app/console ezplatform:install clean it create "article" class with ezrichtext that does not exists in Legacy, right ?

So, how to not have this issue ?

Thanks

Declare incompatibility with php 7.4 in composer.json

The legacy kernel generates a lot of php warnings with php 7.4, of the type:

Notice: Trying to access array offset on value of type null

Those are of course all fatal errors for Symfony in Dev mode.

So, until we fix them all, one by one, it would be better to add to composer.json an incompatibility requirement

Tag 1.0.0

Now that eZ Platform is tagged stable (1.0.0), can legacy bridge also be tagged?

Question: Is it possible to create content via the contentService in a pre-publish triggered legacy workflow?

I'm currently using https://github.com/stevecohenfr/legacy-publish-handler-bundle to call a symfony method via a pre-published triggered Legacy Workflow(all it does is create a legacy extension with a workflow event type which calls a symfony method when triggered). In such symfony method I'm trying to create a folder content object as so:

// Login admin user
$this->user = $this->userService->loadUserByLogin($username);
$this->permissionResolver->setCurrentUserReference($this->user);

$contentType = $this->contentTypeService->loadContentTypeByIdentifier($contentTypeIdentifier);
$contentCreateStruct = $this->contentService->newContentCreateStruct($contentType, $locale);
$locationCreateStruct = $this->locationService->newLocationCreateStruct($parentLocationId);
$draft = $this->contentService->createContent($contentCreateStruct, [$locationCreateStruct]);
$content = $this->contentService->publishVersion($draft->versionInfo);

But the workflow fails as a fatal error is thrown. In particular the following happens:

  • LegacyPublishVersionSlot's 'receive' method is executed which excutes eZContentOperationCollection::registerSearchObject($signal->contentId)
  • eZContentOperationCollection's 'registerSearchObject' method calls eZContentObject::fetch( $objectID )
  • eZContentObject's 'fetch' method executes a mysql query(found here: eZContentObject::createFetchSQLString) which returns no rows
SELECT ezcontentobject.*,
                               ezcontentclass.serialized_name_list as serialized_name_list,
                               ezcontentclass.identifier as contentclass_identifier,
                               ezcontentclass.is_container as is_container
                           FROM
                               ezcontentobject,
                               ezcontentclass
                           WHERE
                               ezcontentobject.id='<NEW FOLDER CONTENT ID>' AND
                               ezcontentclass.id = ezcontentobject.contentclass_id AND
                               ezcontentclass.version=0

The problem here is that the query returns no rows as a previously opened transaction which has no knowledge of this new content id currently present in DB is still open.
If I force to rollback such transaction(while debugging with xdebug) or I comment the 'eZContentOperationCollection::registerSearchObject($signal->contentId)' call in 'LegacyPublishVersionSlot' I don't get the fatal error.

Question: Is there any workaround to such problem, i.e. creating content via the contentService in a pre-publish triggered legacy workflow?
I really would like to avoid creating a full old-style legacy extension.

Thanks

Can't install on eZ Platform 2.5

$ composer require --update-no-dev "ezsystems/legacy-bridge"

Output:

Using version ^2.0 for ezsystems/legacy-bridge                                              
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies                                                                       
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.10
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.9
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.8
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.7
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.6
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.5
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.4
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.3
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.2
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.1
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.0
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.10
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.9
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.8
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.7
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.6
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.5
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.4
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.3
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.2
    - Conclusion: don't install ezsystems/legacy-bridge v2.0.1
    - Conclusion: remove ezsystems/ezpublish-kernel v7.5.1
    - Installation request for ezsystems/legacy-bridge ^2.0 -> satisfiable by ezsystems/legacy-bridge[v2.0.0, v2.0.1, v2.0.10, v2.0.2, v2.0.3, v2.0.4, v2.0.5, v2.0.6, v2.0.7, v2.0.8, v2.0.9].
    - Conclusion: don't install ezsystems/ezpublish-kernel v7.5.1
    - ezsystems/legacy-bridge v2.0.0 requires ezsystems/ezpublish-legacy >=2017.10@dev -> satisfiable by ezsystems/ezpublish-legacy[v2017.10.0, v2017.10.1, v2017.12.0, v2017.12.1, v2017.12.1.1, v2017.12.2, v2017.12.2.1, v2017.12.2.2, v2017.12.3, v2017.12.3.1, v2017.12.3.2, v2017.12.4, v2017.12.4.1, v2017.12.4.2, v2017.12.4.3, v2017.12.5, v2017.12.6, v2018.06.0, v2018.06.1, v2018.06.1.1, v2018.06.1.2, v2018.06.1.3, v2018.06.1.4, v2018.09.0, v2018.09.1, v2018.09.1.1, v2018.09.1.2, v2018.09.1.3, v2018.09.2, v2018.09.3, v2018.09.4].
    - ezsystems/ezpublish-legacy v2017.10.0 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.10.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.0 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.1.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.2.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.2.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.3 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.3.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.3.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.4 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.4.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.4.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.4.3 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.5 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2017.12.6 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.0 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.1.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.1.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.1.3 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.06.1.4 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.0 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.1.1 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.1.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.1.3 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.2 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.3 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-legacy v2018.09.4 conflicts with ezsystems/ezpublish-kernel[v7.5.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.10.0].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.10.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.0].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.1.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.2.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.2.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.3].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.3.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.3.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.4].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.4.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.4.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.4.3].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.5].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2017.12.6].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.0].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.1.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.1.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.1.3].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.06.1.4].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.0].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.1.1].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.1.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.1.3].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.2].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.3].
    - ezsystems/ezpublish-kernel v7.5.1 conflicts with ezsystems/ezpublish-legacy[v2018.09.4].
    - Installation request for ezsystems/ezpublish-kernel (locked at v7.5.1) -> satisfiable by ezsystems/ezpublish-kernel[v7.5.1].

Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.

Installation failed, reverting ./composer.json to its original content.

My actual composer.json

{
    "name": "ezsystems/ezplatform",
    "description": "eZ Platform distribution",
    "homepage": "https://github.com/ezsystems/ezplatform",
    "license": "GPL-2.0-only",
    "type": "project",
    "authors": [
        {
            "name": "eZ dev-team & eZ Community",
            "homepage": "https://github.com/ezsystems/ezplatform/contributors"
        }
    ],
    "replace": {
        "ezsystems/ezpublish-community": "*"
    },
    "autoload": {
        "psr-4": {
            "AppBundle\\": "src/AppBundle/"
        },
        "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
    },
    "autoload-dev": {
        "psr-4": { "Tests\\": "tests/" },
        "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
    },
    "require": {
        "php": "^7.1",
        "doctrine/doctrine-bundle": "^1.9.1",
        "doctrine/orm": "^2.6.3",
        "ezsystems/doctrine-dbal-schema": "~0.1.1",
        "ezsystems/ez-support-tools": "~1.0.0",
        "ezsystems/ezplatform-admin-ui": "~1.5.1",
        "ezsystems/ezplatform-admin-ui-assets": "~4.1.0",
        "ezsystems/ezplatform-admin-ui-modules": "~1.5.1",
        "ezsystems/ezplatform-core": "~1.0.2",
        "ezsystems/ezplatform-cron": "~2.0.0",
        "ezsystems/ezplatform-design-engine": "~2.0.0",
        "ezsystems/ezplatform-graphql": "~1.0.1",
        "ezsystems/ezplatform-http-cache": "~0.9.0",
        "ezsystems/ezplatform-matrix-fieldtype": "~1.0.1",
        "ezsystems/ezplatform-richtext": "~1.1.1",
        "ezsystems/ezplatform-solr-search-engine": "~1.6.0",
        "ezsystems/ezplatform-standard-design": "~0.2.0",
        "ezsystems/ezplatform-user": "~1.0.2",
        "ezsystems/ezplatform-xmltext-fieldtype": "^1.8",
        "ezsystems/repository-forms": "~2.5.0",
        "ezsystems/symfony-tools": "~1.0.2",
        "friendsofsymfony/jsrouting-bundle": "^1.6.3",
        "friendsofsymfony/rest-bundle": "^2.5",
        "incenteev/composer-parameter-handler": "^2.1.3",
        "jms/serializer-bundle": "^2.4",
        "knplabs/knp-menu-bundle": "^2.2.1",
        "leafo/scssphp": "^0.7.7",
        "nelmio/api-doc-bundle": "^3.4",
        "netgen/ezplatform-search-extra": "^1.6",
        "netgen/metadata-bundle": "^2.0",
        "overblog/graphql-bundle": "^0.11.11",
        "sensio/distribution-bundle": "^5.0.23",
        "sensiolabs/security-checker": "^5.0",
        "symfony/assetic-bundle": "^2.8.2",
        "symfony/monolog-bundle": "^3.3.1",
        "symfony/swiftmailer-bundle": "^3.2.4",
        "symfony/symfony": "^3.4.18",
        "symfony/thanks": "^1.1.0",
        "symfony/webpack-encore-bundle": "^1.0.0",
        "twig/extensions": "^1.5.3",
        "twig/twig": "^2.5",
        "white-october/pagerfanta-bundle": "^1.2.2",
        "willdurand/js-translation-bundle": "^2.6.6"
    },
    "require-dev": {
        "behat/behat": "^3.5.0",
        "behat/mink-extension": "^2.3.1",
        "behat/mink-goutte-driver": "^1.2.1",
        "behat/mink-selenium2-driver": "^1.3.1",
        "behat/symfony2-extension": "^2.1.5",
        "bex/behat-screenshot": "^1.2.7",
        "ezsystems/behat-screenshot-image-driver-cloudinary": "~1.1.1",
        "ezsystems/behatbundle": "~6.5.7",
        "overblog/graphiql-bundle": "^0.1.2",
        "phpunit/phpunit": "^6.5.13",
        "sensio/generator-bundle": "^3.1.7",
        "symfony/phpunit-bridge": "^3.4.18",
        "liuggio/fastest": "^1.6"
    },
    "conflict": {
        "symfony/symfony": "3.4.9||3.4.12||3.4.16",
        "doctrine/dbal": "2.7.0",
        "twig/twig": "2.6.1",
        "symfony/webpack-encore-bundle": "1.2.0||1.2.1"
    },
    "scripts": {
        "symfony-scripts": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "eZ\\Bundle\\EzPublishCoreBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
            "@php bin/console bazinga:js-translation:dump web/assets --merge-domains",
            "@php bin/console assetic:dump",
            "yarn install",
            "yarn encore dev",
            "@php bin/security-checker security:check"
        ],
        "post-install-cmd": [
            "@symfony-scripts"
        ],
        "post-update-cmd": [
            "@symfony-scripts"
        ],
        "post-create-project-cmd": [
            "eZ\\Bundle\\EzPublishCoreBundle\\Composer\\ScriptHandler::installWelcomeText"
        ],
        "ezplatform-install": [
            "@php bin/console ezplatform:install clean"
        ]
    },
    "config": {
        "bin-dir": "bin",
        "sort-packages": true,
        "preferred-install": {
            "ezsystems/*": "dist"
        }
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-bin-dir": "bin",
        "symfony-var-dir": "var",
        "symfony-web-dir": "web",
        "symfony-tests-dir": "tests",
        "symfony-assets-install": "relative",
        "incenteev-parameters": {
            "keep-outdated": true,
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.5.x-dev"
        }
    }
}

Insufficient directory permissions

I walked through the install procedure and when I access /ezsetup I'm getting an Issue that I'm missing some directories. I edited the config.php file in ezpublish_legacy folder for changing the ezpublish folder to app. I tried clearing the cache.

eZ Publish cannot create some important directories, without this the setup cannot finish and parts of eZ Publish will fail.
The nonexistent directories are: ../ezpublish/logs ../ezpublish/cache ../ezpublish/config

You can try the following shell commands to create necessary directories:

cd /var/www/restek.com/public_html/ezpublish_legacy
mkdir -p ../ezpublish/logs \
../ezpublish/cache \
../ezpublish/config

Richtext stops rendinger embeds correctly once legacybridge bundle is enabled

On eZ Platform 2.5.8, legacy-bridge v2.1.3, once I enable legacy bridge in AppKernel.php, new stack admin won't render embeds correctly. It will not show the image, just the object name (as link)

behavior:

<div class=" ez-embed-type-image">
    
    
<!-- START vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/Resources/views/viewbase_layout.html.twig (EzPublishCoreBundle::viewbase_layout.html.twig) -->
<a href="/admin/Media/Images/vbanner">vbanner</a>

<!-- STOP vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/Resources/views/viewbase_layout.html.twig (EzPublishCoreBundle::viewbase_layout.html.twig) -->

</div>

Expected behavior:

<div class=" ez-embed-type-image">
    
    
<!-- START vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/Resources/views/default/content/embed_image.html.twig (EzPublishCoreBundle:default:content/embed_image.html.twig) -->

    <figure class="ezimage-field"><img src="http://localhost:8080/var/site/storage/images/_aliases/medium/5/5/2/0/255-1-eng-GB/vbanner.gif" alt="" width="200" height="150"></figure>

<!-- STOP vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishCoreBundle/Resources/views/default/content/embed_image.html.twig (EzPublishCoreBundle:default:content/embed_image.html.twig) -->

</div>

dumpAssets called too early on post-install-cmd script

Hi,
First of all, thanks for this hopeful repository to me! 👍

Use case:

  • legacy bridge already set up on a Git repository
  • php composer.phar install --prefer-dist
  • Incenteev\ParameterHandler\ScriptHandler::buildParameters => OK
  • [...]
  • Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets => OK
  • eZ\Bundle\EzPublishCoreBundle\Composer\ScriptHandler::dumpAssets => KO because:
    The source file "/ezroot/app/../web/extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js" does not exist.

To fix

I need to launch manually php app/console ezpublish:legacy:assets_install --symlink.

Installation problem with legacy generateautoload. config.php not configured at this time

When we use the composer requirecommand to add bundle legacyBridge, there is an error when composer launch the autoload generation script :


...
> post-update-cmd: eZ\Bundle\EzPublishLegacyBundle\Composer\ScriptHandler::generateAutoloads
Running script 'bin/php/ezpgenerateautoloads.php' in eZ Publish legacy context
PHP Warning:  require(Base/src/base.php): failed to open stream: No such file or directory in /ezp-root/ezpublish_legacy/bin/php/ezpgenerateautoloads.php on line 52
PHP Stack trace:
PHP   1. {main}() /ezp-root/app/console:0
PHP   2. Symfony\Component\Console\Application->run() /ezp-root/app/console:26
PHP   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:120
PHP   4. Symfony\Component\Console\Application->doRun() /ezp-root/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
PHP   5. Symfony\Component\Console\Application->doRunCommand() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:189
PHP   6. Symfony\Component\Console\Command\Command->run() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:846
PHP   7. eZ\Bundle\EzPublishLegacyBundle\Command\LegacyEmbedScriptCommand->execute() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:256
PHP   8. eZ\Publish\Core\MVC\Legacy\Kernel->run() /ezp-root/vendor/ezsystems/legacy-bridge/bundle/Command/LegacyEmbedScriptCommand.php:77
PHP   9. ezpKernel->run() /ezp-root/vendor/ezsystems/legacy-bridge/mvc/Kernel.php:118
PHP  10. eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler->run() /ezp-root/ezpublish_legacy/kernel/private/classes/ezpkernel.php:53
PHP  11. include() /ezp-root/vendor/ezsystems/legacy-bridge/mvc/Kernel/CLIHandler.php:124
PHP Fatal error:  require(): Failed opening required 'Base/src/base.php' (include_path='.:/usr/share/php:/usr/share/pear') in /ezp-root/ezpublish_legacy/bin/php/ezpgenerateautoloads.php on line 52
PHP Stack trace:
PHP   1. {main}() /ezp-root/app/console:0
PHP   2. Symfony\Component\Console\Application->run() /ezp-root/app/console:26
PHP   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:120
PHP   4. Symfony\Component\Console\Application->doRun() /ezp-root/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
PHP   5. Symfony\Component\Console\Application->doRunCommand() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:189
PHP   6. Symfony\Component\Console\Command\Command->run() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:846
PHP   7. eZ\Bundle\EzPublishLegacyBundle\Command\LegacyEmbedScriptCommand->execute() /ezp-root/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:256
PHP   8. eZ\Publish\Core\MVC\Legacy\Kernel->run() /ezp-root/vendor/ezsystems/legacy-bridge/bundle/Command/LegacyEmbedScriptCommand.php:77
PHP   9. ezpKernel->run() /ezp-root/vendor/ezsystems/legacy-bridge/mvc/Kernel.php:118
PHP  10. eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler->run() /ezp-root/ezpublish_legacy/kernel/private/classes/ezpkernel.php:53
PHP  11. include() /ezp-root/vendor/ezsystems/legacy-bridge/mvc/Kernel/CLIHandler.php:124
...

WORKAROUND :

The problem occur because the ezpublish_legacy/config.php is not set at this step.

  • You need to copy ezpublish_legacy/config.php-RECOMMENDED to ezpublish_legacy/config.php
  • edit the file ezpublish_legacy/config.php and uncomment the line define( 'EZP_APP_FOLDER_NAME', 'app' );

You can relaunch composer require|install command or just the ../ezpgenerateautoload.php command

[Feature] Handle storage folder

Find a way to handle storage folder, however as it should not be versioned the question is how. So might be current status Q where user needs to pick this is maybe right approach, otherwise it will need to be configurable.

SignalSlot not fired

Hi,

I try to catch the onPublish signal slot but is seems to not work with LegacyBridge.
Is there a way to catch this event in the symfony stack ? I don't want to do it in legacy stack.

Thanks

PersistenceCachePurger does not purge urlAlias cache items on Content Publish

I am using the UrlAliasService lookup method to obtain UrlAlias by url. Internally such method depends on UrlAliasHandler lookup method

/vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/Persistence/Cache/UrlAliasHandler.php
public function lookup($url)
    {
        $cacheItem = $this->cache->getItem(
            'ez-urlAlias-url-' . str_replace(['/', ':', '(', ')', '@'], ['_S', '_C', '_B', '_B', '_A'], $url)
        );
        if ($cacheItem->isHit()) {
            if (($return = $cacheItem->get()) === self::NOT_FOUND) {
                throw new NotFoundException('UrlAlias', $url);
            }

            return $return;
        }

        $this->logger->logCall(__METHOD__, array('url' => $url));
        try {
            $urlAlias = $this->persistenceHandler->urlAliasHandler()->lookup($url);
        } catch (APINotFoundException $e) {
            $cacheItem->set(self::NOT_FOUND)
                ->expiresAfter(30)
                ->tag(['urlAlias-notFound']);
            $this->cache->save($cacheItem);
            throw $e;
        }

        $cacheItem->set($urlAlias);
        $cacheItem->tag($this->getCacheTags($urlAlias));
        $this->cache->save($cacheItem);

        return $urlAlias;
    }

So the above method depends on tags such as 'urlAlias-location-path-99' where 99 is the content's location id.

If I'm right, PersistenceCachePurger is not purging such cache tag items, infact on publish the following is called:

public function contentVersion($contentId, $versionNo)
    {
        if ($this->allCleared === true || $this->isSwitchedOff()) {
            return;
        }

        // todo Once we can require 2.2.2+, simplify to just invalidate "content-{$contentId}-version-{$versionNo}"
        $this->cache->deleteItem("ez-content-version-info-${contentId}-${versionNo}");
        $this->cache->invalidateTags(["content-${contentId}-version-list", "content-{$contentId}-version-{$versionNo}"]);
    }

Whereas something like the following should also get purged:

$this->cache->invalidateTags(['urlAlias-location-' . $locationId, 'urlAlias-location-path-' . $locationId]);

Content Approval Workflow - Failed to steal cronjob part lock

I am using eZ Platform 2.2 Community Edition + Legacy Bridge + Netgen Admin UI and I have followed the following guide http://share.ez.no/learn/ez-publish/creating-a-simple-custom-workflow-event to build a simple content approval workflow.
As stated at the end of this guide(https://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Workflow-events/Approve) once the approver has approved a content, the “cronjobs/workflow.php” cronjob must be run for the content to be published completely.

If i run the following command:
bin/console ezpublish:legacy:script runcronjobs.php -s ngadminui frequent

I get the following output:

Running script 'runcronjobs.php' in eZ Publish legacy context
Using siteaccess ngadminui for cronjob
Running cronjob part 'frequent'
Running cronjobs/notification.php at: 31/07/2018 8:59 amFailed to steal cronjob part lock.

Forcing to steal the mutex lock: cronjobs/notification.php
Stealing mutex. Old process has run too long.
Completing cronjobs/notification.php at: 31/07/2018 8:59 am
Elapsed time: 00:00:00

Running cronjobs/workflow.php at: 31/07/2018 8:59 am
Forcing to steal the mutex lock: cronjobs/workflow.phpFailed to steal cronjob part lock.

Stealing mutex. Old process has run too long.
Completing cronjobs/workflow.php at: 31/07/2018 8:59 am
Elapsed time: 00:00:00

There are a few eZ Publish forum posts regarding this problem(e.g. http://share.ez.no/forums/developer/runcrnjobs.php-mutex-stealing) but they resolve it setting safe_mode=On. But such php.ini directive has been removed for php7.

How can I resolve this issue?

Thanks

hasInstance method is missing in the Kernel.php

NB: I move my remark from #93 to this issue.


Hello,

We're trying to migrate our former sites developed with eZ Publish 5.x in Legacy mode to eZ Platform 6.9.x with LegacyBridge 1.2.x.

I've noticed that the following folder has been moved from eZ Publish 5.x:
vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/MVC/Legacy
to
vendor/ezsystems/legacy-bridge/mvc

And the method hasInstance() has been removed from the class Kernel.php.

Could you give us the reason? Is it because it was used for Singleton Pattern which is considered now as an anti-pattern?

And is it possible to reintegrate it again?

The issue is that method is called in the following class:
vendor/ezsystems/legacy-bridge/bundle/Collector/TemplateDebugInfo.php

And other various classes as well.

Thank you in advance for your feedback.

Regards,

Quentin

Here is the method hasInstance extracted from eZ Publish 5.x :

     /**
      * Checks if LegacyKernel has already been instantiated.
      *
      * @return bool
      */
     public static function hasInstance()
     {
         return static::$instance !== null;
     }

@quentinthai This method has been removed in eb717c1 but should still work since Kernel extends ezpKernel (from ezpublish-legacy) which does have this class.

Can you please show the error + stack trace you get?


@lolautruche, sure, here is my stack trace :

`Whoops, looks like something went wrong.

1/1
UndefinedMethodException in TemplateDebugInfo.php line 29:
Attempted to call an undefined method named "hasInstance" of class "eZ\Publish\Core\MVC\Legacy\Kernel".
in /home/users/webthai/ezplatform-poc/vendor/ezsystems/legacy-bridge/bundle/Collector/TemplateDebugInfo.php line 29`


@lolautruche : And I didn't commit any code. It's just a remark... Sorry, I've just realized that I should have created an issue instead... ^^

Could you explain your remark please?

but should still work since Kernel extends ezpKernel (from ezpublish-legacy) which does have this class. ?

It seems the ezpKernel class doesn't define the hasInstance method... and we use eZ Publish Legacy 2014.11 which is the minimum version required by LegacyBridge according to its composer.json

[Feature] allow overtaking legacy db connection and log writer

A lot of subtle issues arise from the fact that ez4 and ez5/6/7 do not share the same db connection.
What if they did?
It seems to me that it would not be too hard to implement that by way of a legacy extension which provides customized ez4 db connectors (which are just wrappers around the doctrine connection in use by ez5).

In a similar vein, it could be useful to be able to route the ez4 log writing through the sf logging configuration.
Albeit this is not easy to do in a 'clean' way, it should be possible to achieve by providing an override for eZ4 kernel class eZLog, and running the legacy autoload generation command with the appropriate allow-overrides flag.

WDYT?

Error after installing in EzPlatform 2.0

Hi,

I try to install LegacyBridge 2.0 on the new EzPlatform 2.0 but at the end i get this error

An error occurred when executing the "'cache:clear --no-warmup'" command:
// Clearing the cache for the dev environment with debug
// true
Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Type error: Argument 1 passed to eZ\Publish\Core\MVC\Legacy\Kernel\Loader::setCLIHandler() must implement interface ezpKernelHandler, instan
ce of eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler given, called in /Users/steve/Projects/Web/BuildSuccess/www/vendor/ezsystems/legacy-bridge/mvc/Kernel/Loader.php on line 237 in /Users/steve/Projects/Web/BuildSuccess
/www/vendor/ezsystems/legacy-bridge/mvc/Kernel/Loader.php:255

Is LegacyBridge compatible with EzPlatform 2.0 ?

Thanks

Installation Composer Installation failed

I downloaded the latest version of ezplatform via composer (composer create-project --no-dev ezsystems/ezplatform) and went through the install.md procedures and when I try the composer require command (composer require --update-no-dev "ezsystems/legacy-bridge:^1.0.4" "sensio/distribution-bundle:^3.0.36|^4.0.6") I'm getting a Installation failed message.

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install sensio/distribution-bundle v4.0.12
    - Conclusion: don't install sensio/distribution-bundle v4.0.11
    - Conclusion: don't install sensio/distribution-bundle v4.0.10
    - Conclusion: don't install sensio/distribution-bundle v4.0.9
    - Conclusion: don't install sensio/distribution-bundle v4.0.8
    - Conclusion: don't install sensio/distribution-bundle v4.0.7
    - Conclusion: don't install sensio/distribution-bundle v4.0.6
    - Conclusion: remove sensiolabs/security-checker v4.0.0
    - Installation request for sensio/distribution-bundle ^3.0.36|^4.0.6 -> satisfiable by sensio/distribution-bundle[v3.0.36, v4.0.10, v4.0.11, v4.0.12, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - Conclusion: don't install sensiolabs/security-checker v4.0.0
    - sensio/distribution-bundle v3.0.36 requires sensiolabs/security-checker ~3.0 -> satisfiable by sensiolabs/security-checker[v3.0.0, v3.0.1, v3.0.2].
    - Can only install one of: sensiolabs/security-checker[v3.0.0, v4.0.0].
    - Can only install one of: sensiolabs/security-checker[v3.0.1, v4.0.0].
    - Can only install one of: sensiolabs/security-checker[v3.0.2, v4.0.0].
    - Installation request for sensiolabs/security-checker (locked at v4.0.0) -> satisfiable by sensiolabs/security-checker[v4.0.0].


Installation failed, reverting ./composer.json to its original content.

Redis for session in LegacyBridge

Hi,

We use Redis as stash default driver with snc_redis vendor. And also another redis instance in another port for session.
Here is my configuration :

stash:
    caches:
        default:
            drivers: [ Redis ]
            Redis:
                servers:
                    -
                        server: 'myredis'
                        port: 6380
snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: redis://myredis
            logging: %kernel.debug%
        cache:
            type: predis
            alias: cache
            dsn: redis://myredis:6380
            logging: true
        session:
            type: predis
            alias: session
            dsn: redis://myredis:6379`

But my backoffice sessions still use file sessions in /var/lib/php/sessions/. If i change my php.ini like this :

[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = redis
session.save_path = "tcp://localhost:6379"

it works, but I don't want to change the whole configuration of my server.

Why the backoffice does not use the symfony configuration for the session handler ?
Do I need to configure ezpublish_legacy to use Redis handler ?

Thanks,
Steve

ezpublish:legacy:assets_install should prompt user before deleting non empty folders

Issue: eZ Platform install with already existing image/binary files in web/var, folder with all files will be deleted by this command regardless of being empty or not when setting up symlink from ezpublish_legacy/var.

So ezpublish:legacy:assets_install should when encountering non-empty folders, either:

  • prompt user before removing
  • move files over for the user and inform about it
  • skip the folder and give warning to user that command needs to be re-executed once files have been moved over.
  • ...

Legacy Bridge / eZ platform 2.5 SignalSlot LegacyMoveSubtreeSlot

Hello,

Under an ez platform 2.5 project with legacy bridge
we have errors when we want to move a rental from the BO. The location is well moved if we load the page.

The error is at the class level LegacyMoveSubtreeSlot

Line 35 returns a $node null so the $signal->locationId has a number.

I think the query that is at the level of the fetch function of the eZContentObjectTreeNode class that does not find a result

Best,
Amine

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.