diff --git a/composer.lock b/composer.lock index eb4523a2a5..482cce9daf 100644 --- a/composer.lock +++ b/composer.lock @@ -1,9 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], + "hash": "e5bed7b0b8cb8b45ffffc4965a7689db", "content-hash": "f3b1fc0a30bf14b05e57ce673550d9c0", "packages": [ { @@ -70,7 +71,7 @@ "source": "https://github.com/alchemy-fr/tcpdf-clone/tree/6.0.039", "issues": "https://github.com/alchemy-fr/tcpdf-clone/issues" }, - "time": "2013-10-13T16:11:17+00:00" + "time": "2013-10-13 16:11:17" }, { "name": "alchemy/binary-driver", @@ -127,21 +128,15 @@ "binary", "driver" ], - "time": "2016-03-02T13:49:15+00:00" + "time": "2016-03-02 13:49:15" }, { "name": "alchemy/embed-bundle", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/alchemy-fr/embed-bundle.git", - "reference": "c585ccf18e53a9a6f2b696ddbbc39521732dfdde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alchemy-fr/embed-bundle/zipball/c585ccf18e53a9a6f2b696ddbbc39521732dfdde", - "reference": "c585ccf18e53a9a6f2b696ddbbc39521732dfdde", - "shasum": "" + "reference": "cbaa5e34b7b6ccbe128f8c804649c8a3ecd1e621" }, "require-dev": { "phpunit/phpunit": "^4.7", @@ -177,11 +172,7 @@ } ], "description": "Embed resources bundle", - "support": { - "source": "https://github.com/alchemy-fr/embed-bundle/tree/2.0.7", - "issues": "https://github.com/alchemy-fr/embed-bundle/issues" - }, - "time": "2019-09-02T12:28:19+00:00" + "time": "2019-10-09 14:34:23" }, { "name": "alchemy/geonames-api-consumer", @@ -219,7 +210,7 @@ "keywords": [ "geonames" ], - "time": "2014-02-05T15:29:39+00:00" + "time": "2014-02-05 15:29:39" }, { "name": "alchemy/ghostscript", @@ -271,7 +262,7 @@ "ghostscript", "pdf" ], - "time": "2013-06-25T09:12:58+00:00" + "time": "2013-06-25 09:12:58" }, { "name": "alchemy/mediavorus", @@ -333,7 +324,7 @@ "keywords": [ "metadata" ], - "time": "2019-01-22T11:23:34+00:00" + "time": "2019-01-22 11:23:34" }, { "name": "alchemy/oauth2php", @@ -356,7 +347,7 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "time": "2019-01-17T14:34:10+00:00" + "time": "2019-01-17 14:34:10" }, { "name": "alchemy/phlickr", @@ -379,7 +370,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "time": "2014-12-15T14:27:57+00:00" + "time": "2014-12-15 14:27:57" }, { "name": "alchemy/phpexiftool", @@ -452,7 +443,7 @@ "exiftool", "metadata" ], - "time": "2019-02-13T13:06:43+00:00" + "time": "2019-02-13 13:06:43" }, { "name": "alchemy/queue-bundle", @@ -500,7 +491,7 @@ } ], "description": "Symfony bundle for alchemy/queue-component", - "time": "2016-10-04T14:19:39+00:00" + "time": "2016-10-04 14:19:39" }, { "name": "alchemy/queue-component", @@ -545,7 +536,7 @@ "MIT" ], "description": "Message queue component", - "time": "2016-10-05T10:41:36+00:00" + "time": "2016-10-05 10:41:36" }, { "name": "alchemy/rest-bundle", @@ -597,7 +588,7 @@ } ], "description": "Simple REST utility bundle", - "time": "2016-05-16T09:37:34+00:00" + "time": "2016-05-16 09:37:34" }, { "name": "alchemy/symfony-cors", @@ -644,7 +635,7 @@ } ], "description": "A library that adds CORS services to Silex/Symfony Applications", - "time": "2015-12-17T15:34:43+00:00" + "time": "2015-12-17 15:34:43" }, { "name": "alchemy/task-manager", @@ -707,7 +698,7 @@ "parallel", "process" ], - "time": "2016-11-30T13:34:30+00:00" + "time": "2016-11-30 13:34:30" }, { "name": "alchemy/worker-bundle", @@ -756,7 +747,7 @@ } ], "description": "Symfony bundle for alchemy/worker-component", - "time": "2016-12-06T10:39:58+00:00" + "time": "2016-12-06 10:39:58" }, { "name": "alchemy/worker-component", @@ -802,7 +793,7 @@ "MIT" ], "description": "Message queue worker component", - "time": "2016-11-14T16:41:16+00:00" + "time": "2016-11-14 16:41:16" }, { "name": "alchemy/zippy", @@ -864,7 +855,7 @@ "tar", "zip" ], - "time": "2016-02-15T22:46:40+00:00" + "time": "2016-02-15 22:46:40" }, { "name": "aws/aws-sdk-php", @@ -927,7 +918,7 @@ "s3", "sdk" ], - "time": "2016-07-25T18:03:20+00:00" + "time": "2016-07-25 18:03:20" }, { "name": "beberlei/assert", @@ -982,7 +973,7 @@ "assertion", "validation" ], - "time": "2017-01-24T15:14:39+00:00" + "time": "2017-01-24 15:14:39" }, { "name": "behat/transliterator", @@ -1022,7 +1013,7 @@ "slug", "transliterator" ], - "time": "2015-09-28T16:26:35+00:00" + "time": "2015-09-28 16:26:35" }, { "name": "box/spout", @@ -1090,7 +1081,7 @@ "write", "xlsx" ], - "time": "2017-09-25T19:44:35+00:00" + "time": "2017-09-25 19:44:35" }, { "name": "cocur/slugify", @@ -1154,7 +1145,7 @@ "slug", "slugify" ], - "time": "2016-08-09T20:10:17+00:00" + "time": "2016-08-09 20:10:17" }, { "name": "czproject/git-php", @@ -1196,7 +1187,7 @@ "keywords": [ "git" ], - "time": "2019-02-09T13:11:36+00:00" + "time": "2019-02-09 13:11:36" }, { "name": "dailymotion/sdk", @@ -1229,7 +1220,7 @@ "dailymotion", "sdk" ], - "time": "2015-11-20T11:18:32+00:00" + "time": "2015-11-20 11:18:32" }, { "name": "data-uri/data-uri", @@ -1274,7 +1265,7 @@ "data-uri", "uri" ], - "time": "2014-08-22T15:01:57+00:00" + "time": "2014-08-22 15:01:57" }, { "name": "dflydev/doctrine-orm-service-provider", @@ -1336,7 +1327,7 @@ "pimple", "silex" ], - "time": "2015-09-07T12:16:54+00:00" + "time": "2015-09-07 12:16:54" }, { "name": "doctrine/annotations", @@ -1404,7 +1395,7 @@ "docblock", "parser" ], - "time": "2015-08-31T12:32:49+00:00" + "time": "2015-08-31 12:32:49" }, { "name": "doctrine/cache", @@ -1416,7 +1407,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b", "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3", "shasum": "" }, @@ -1474,7 +1465,7 @@ "cache", "caching" ], - "time": "2016-10-29T11:16:17+00:00" + "time": "2016-10-29 11:16:17" }, { "name": "doctrine/collections", @@ -1540,7 +1531,7 @@ "collections", "iterator" ], - "time": "2015-04-14T22:21:58+00:00" + "time": "2015-04-14 22:21:58" }, { "name": "doctrine/common", @@ -1613,7 +1604,7 @@ "persistence", "spl" ], - "time": "2016-11-30T16:50:46+00:00" + "time": "2016-11-30 16:50:46" }, { "name": "doctrine/dbal", @@ -1684,7 +1675,7 @@ "persistence", "queryobject" ], - "time": "2017-01-23T23:17:10+00:00" + "time": "2017-01-23 23:17:10" }, { "name": "doctrine/inflector", @@ -1751,7 +1742,7 @@ "singularize", "string" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2015-11-06 14:35:42" }, { "name": "doctrine/instantiator", @@ -1805,7 +1796,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2015-06-14 21:17:01" }, { "name": "doctrine/lexer", @@ -1859,7 +1850,7 @@ "lexer", "parser" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2014-09-09 13:34:57" }, { "name": "doctrine/migrations", @@ -1933,7 +1924,7 @@ "database", "migrations" ], - "time": "2016-12-25T22:54:00+00:00" + "time": "2016-12-25 22:54:00" }, { "name": "doctrine/orm", @@ -2009,7 +2000,7 @@ "database", "orm" ], - "time": "2016-12-18T15:42:34+00:00" + "time": "2016-12-18 15:42:34" }, { "name": "elasticsearch/elasticsearch", @@ -2063,7 +2054,7 @@ "elasticsearch", "search" ], - "time": "2016-11-30T17:15:05+00:00" + "time": "2016-11-30 17:15:05" }, { "name": "evenement/evenement", @@ -2103,7 +2094,7 @@ "keywords": [ "event-dispatcher" ], - "time": "2012-05-30T15:01:08+00:00" + "time": "2012-05-30 15:01:08" }, { "name": "facebook/graph-sdk", @@ -2161,7 +2152,7 @@ "facebook", "sdk" ], - "time": "2017-08-16T17:28:07+00:00" + "time": "2017-08-16 17:28:07" }, { "name": "firebase/php-jwt", @@ -2204,7 +2195,7 @@ ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", "homepage": "https://github.com/firebase/php-jwt", - "time": "2015-07-22T18:31:08+00:00" + "time": "2015-07-22 18:31:08" }, { "name": "gedmo/doctrine-extensions", @@ -2282,7 +2273,7 @@ "tree", "uploadable" ], - "time": "2015-02-24T21:41:37+00:00" + "time": "2015-02-24 21:41:37" }, { "name": "goodby/csv", @@ -2339,7 +2330,7 @@ "export", "import" ], - "time": "2015-06-29T10:28:19+00:00" + "time": "2015-06-29 10:28:19" }, { "name": "google/apiclient", @@ -2398,7 +2389,7 @@ "keywords": [ "google" ], - "time": "2017-11-03T01:19:53+00:00" + "time": "2017-11-03 01:19:53" }, { "name": "google/apiclient-services", @@ -2435,7 +2426,7 @@ "keywords": [ "google" ], - "time": "2017-11-25T00:23:12+00:00" + "time": "2017-11-25 00:23:12" }, { "name": "google/auth", @@ -2480,7 +2471,7 @@ "google", "oauth2" ], - "time": "2017-10-10T17:01:45+00:00" + "time": "2017-10-10 17:01:45" }, { "name": "google/recaptcha", @@ -2525,7 +2516,7 @@ "recaptcha", "spam" ], - "time": "2017-03-09T18:44:34+00:00" + "time": "2017-03-09 18:44:34" }, { "name": "guzzle/guzzle", @@ -2621,7 +2612,7 @@ "web service" ], "abandoned": "guzzlehttp/guzzle", - "time": "2015-03-18T18:23:50+00:00" + "time": "2015-03-18 18:23:50" }, { "name": "guzzlehttp/guzzle", @@ -2686,7 +2677,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2017-06-22 18:50:49" }, { "name": "guzzlehttp/promises", @@ -2737,7 +2728,7 @@ "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "time": "2016-12-20 10:07:11" }, { "name": "guzzlehttp/psr7", @@ -2802,7 +2793,7 @@ "uri", "url" ], - "time": "2017-03-20T17:10:46+00:00" + "time": "2017-03-20 17:10:46" }, { "name": "guzzlehttp/ringphp", @@ -2853,7 +2844,7 @@ } ], "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2015-05-20T03:37:09+00:00" + "time": "2015-05-20 03:37:09" }, { "name": "guzzlehttp/streams", @@ -2903,7 +2894,7 @@ "Guzzle", "stream" ], - "time": "2014-10-12T19:18:40+00:00" + "time": "2014-10-12 19:18:40" }, { "name": "hoa/compiler", @@ -2983,7 +2974,7 @@ "trace", "uniform" ], - "time": "2015-10-29T21:35:12+00:00" + "time": "2015-10-29 21:35:12" }, { "name": "hoa/console", @@ -3055,7 +3046,7 @@ "tput", "window" ], - "time": "2015-07-27T07:52:10+00:00" + "time": "2015-07-27 07:52:10" }, { "name": "hoa/core", @@ -3123,7 +3114,7 @@ "protocol" ], "abandoned": "hoa/consistency", - "time": "2015-11-09T06:51:06+00:00" + "time": "2015-11-09 06:51:06" }, { "name": "hoa/dispatcher", @@ -3183,7 +3174,7 @@ "kit", "library" ], - "time": "2015-11-09T06:52:08+00:00" + "time": "2015-11-09 06:52:08" }, { "name": "hoa/file", @@ -3243,7 +3234,7 @@ "link", "temporary" ], - "time": "2015-11-09T06:55:20+00:00" + "time": "2015-11-09 06:55:20" }, { "name": "hoa/iterator", @@ -3296,7 +3287,7 @@ "iterator", "library" ], - "time": "2015-10-29T21:37:16+00:00" + "time": "2015-10-29 21:37:16" }, { "name": "hoa/math", @@ -3358,7 +3349,7 @@ "sampler", "set" ], - "time": "2015-10-26T15:22:52+00:00" + "time": "2015-10-26 15:22:52" }, { "name": "hoa/regex", @@ -3412,7 +3403,7 @@ "library", "regex" ], - "time": "2015-08-13T06:48:47+00:00" + "time": "2015-08-13 06:48:47" }, { "name": "hoa/router", @@ -3464,7 +3455,7 @@ "library", "router" ], - "time": "2015-10-21T14:12:51+00:00" + "time": "2015-10-21 14:12:51" }, { "name": "hoa/stream", @@ -3522,7 +3513,7 @@ "stream", "wrapper" ], - "time": "2015-10-26T12:21:43+00:00" + "time": "2015-10-26 12:21:43" }, { "name": "hoa/ustring", @@ -3581,7 +3572,7 @@ "string", "unicode" ], - "time": "2015-11-09T06:44:33+00:00" + "time": "2015-11-09 06:44:33" }, { "name": "hoa/visitor", @@ -3636,7 +3627,7 @@ "visit", "visitor" ], - "time": "2015-08-17T06:30:58+00:00" + "time": "2015-08-17 06:30:58" }, { "name": "igorw/get-in", @@ -3681,7 +3672,7 @@ "assoc-array", "hash-map" ], - "time": "2014-12-15T23:03:51+00:00" + "time": "2014-12-15 23:03:51" }, { "name": "imagine/imagine", @@ -3740,7 +3731,7 @@ "support": { "source": "https://github.com/alchemy-fr/Imagine/tree/alchemy-0.6.2" }, - "time": "2015-01-13T18:12:26+00:00" + "time": "2015-01-13 18:12:26" }, { "name": "ircmaxell/password-compat", @@ -3782,7 +3773,7 @@ "hashing", "password" ], - "time": "2014-11-20T16:49:30+00:00" + "time": "2014-11-20 16:49:30" }, { "name": "ircmaxell/security-lib", @@ -3828,7 +3819,7 @@ ], "description": "A Base Security Library", "homepage": "https://github.com/ircmaxell/SecurityLib", - "time": "2015-03-20T14:31:23+00:00" + "time": "2015-03-20 14:31:23" }, { "name": "jms/metadata", @@ -3879,7 +3870,7 @@ "xml", "yaml" ], - "time": "2016-12-05T10:18:33+00:00" + "time": "2016-12-05 10:18:33" }, { "name": "jms/parser-lib", @@ -3914,7 +3905,7 @@ "Apache2" ], "description": "A library for easily creating recursive-descent parsers.", - "time": "2012-11-18T18:08:43+00:00" + "time": "2012-11-18 18:08:43" }, { "name": "jms/serializer", @@ -3984,7 +3975,7 @@ "serialization", "xml" ], - "time": "2014-03-18T08:39:00+00:00" + "time": "2014-03-18 08:39:00" }, { "name": "jms/translation-bundle", @@ -4060,7 +4051,7 @@ "support": { "source": "https://github.com/alchemy-fr/JMSTranslationBundle/tree/rebase-2015-10-20" }, - "time": "2015-11-04T15:09:44+00:00" + "time": "2015-11-04 15:09:44" }, { "name": "justinrainbow/json-schema", @@ -4126,7 +4117,7 @@ "json", "schema" ], - "time": "2016-05-10T20:38:51+00:00" + "time": "2016-05-10 20:38:51" }, { "name": "league/flysystem", @@ -4209,7 +4200,7 @@ "sftp", "storage" ], - "time": "2017-01-30T17:41:17+00:00" + "time": "2017-01-30 17:41:17" }, { "name": "league/flysystem-aws-s3-v2", @@ -4256,7 +4247,7 @@ } ], "description": "Flysystem adapter for AWS S3 SDK v2", - "time": "2015-10-15T15:55:48+00:00" + "time": "2015-10-15 15:55:48" }, { "name": "league/fractal", @@ -4317,7 +4308,7 @@ "league", "rest" ], - "time": "2016-12-02T14:55:48+00:00" + "time": "2016-12-02 14:55:48" }, { "name": "media-alchemyst/media-alchemyst", @@ -4391,7 +4382,7 @@ "video", "video processing" ], - "time": "2019-01-25T12:09:11+00:00" + "time": "2019-01-25 12:09:11" }, { "name": "monolog/monolog", @@ -4469,7 +4460,7 @@ "logging", "psr-3" ], - "time": "2016-11-26T00:15:39+00:00" + "time": "2016-11-26 00:15:39" }, { "name": "mrclay/minify", @@ -4509,7 +4500,7 @@ ], "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", "homepage": "http://code.google.com/p/minify/", - "time": "2013-07-23T19:58:28+00:00" + "time": "2013-07-23 19:58:28" }, { "name": "neutron/process-manager", @@ -4548,7 +4539,7 @@ "homepage": "http://www.lickmychip.com/" } ], - "time": "2014-02-13T20:27:33+00:00" + "time": "2014-02-13 20:27:33" }, { "name": "neutron/recaptcha", @@ -4592,7 +4583,7 @@ } ], "description": "ReCaptcha Client", - "time": "2013-02-14T13:42:00+00:00" + "time": "2013-02-14 13:42:00" }, { "name": "neutron/signal-handler", @@ -4635,7 +4626,7 @@ "keywords": [ "signal" ], - "time": "2014-01-15T17:24:13+00:00" + "time": "2014-01-15 17:24:13" }, { "name": "neutron/silex-filesystem-provider", @@ -4679,7 +4670,7 @@ "silex", "temporary-filesystem" ], - "time": "2012-11-08T21:07:08+00:00" + "time": "2012-11-08 21:07:08" }, { "name": "neutron/silex-imagine-provider", @@ -4726,7 +4717,7 @@ "imagine", "silex" ], - "time": "2013-05-03T18:48:51+00:00" + "time": "2013-05-03 18:48:51" }, { "name": "neutron/temporary-filesystem", @@ -4766,7 +4757,7 @@ } ], "description": "Symfony filesystem extension to handle temporary files", - "time": "2016-03-05T10:22:50+00:00" + "time": "2016-03-05 10:22:50" }, { "name": "nikic/php-parser", @@ -4811,7 +4802,7 @@ "parser", "php" ], - "time": "2015-09-19T14:15:08+00:00" + "time": "2015-09-19 14:15:08" }, { "name": "ocramius/proxy-manager", @@ -4874,7 +4865,7 @@ "proxy pattern", "service proxies" ], - "time": "2015-08-09T04:28:19+00:00" + "time": "2015-08-09 04:28:19" }, { "name": "pagerfanta/pagerfanta", @@ -4941,7 +4932,7 @@ "paginator", "paging" ], - "time": "2016-11-28T09:17:04+00:00" + "time": "2016-11-28 09:17:04" }, { "name": "paragonie/random-lib", @@ -5003,7 +4994,7 @@ "random-numbers", "random-strings" ], - "time": "2017-10-06T23:34:21+00:00" + "time": "2017-10-06 23:34:21" }, { "name": "paragonie/random_compat", @@ -5051,7 +5042,7 @@ "pseudorandom", "random" ], - "time": "2016-11-07T23:38:38+00:00" + "time": "2016-11-07 23:38:38" }, { "name": "paragonie/sodium_compat", @@ -5133,7 +5124,7 @@ "secret-key cryptography", "side-channel resistant" ], - "time": "2019-03-20T17:19:05+00:00" + "time": "2019-03-20 17:19:05" }, { "name": "php-ffmpeg/php-ffmpeg", @@ -5202,7 +5193,7 @@ "video", "video processing" ], - "time": "2014-08-26T08:46:56+00:00" + "time": "2014-08-26 08:46:56" }, { "name": "php-mp4box/php-mp4box", @@ -5253,7 +5244,7 @@ "gpac", "mp4box" ], - "time": "2013-06-25T10:13:06+00:00" + "time": "2013-06-25 10:13:06" }, { "name": "php-unoconv/php-unoconv", @@ -5303,7 +5294,7 @@ "keywords": [ "unoconv" ], - "time": "2013-06-25T10:09:59+00:00" + "time": "2013-06-25 10:09:59" }, { "name": "php-xpdf/php-xpdf", @@ -5355,7 +5346,7 @@ "pdf", "xpdf" ], - "time": "2016-07-04T07:30:16+00:00" + "time": "2016-07-04 07:30:16" }, { "name": "phpcollection/phpcollection", @@ -5403,7 +5394,7 @@ "sequence", "set" ], - "time": "2015-05-17T12:39:23+00:00" + "time": "2015-05-17 12:39:23" }, { "name": "phpexiftool/exiftool", @@ -5436,7 +5427,7 @@ "exiftool", "metadatas" ], - "time": "2016-01-25T11:10:14+00:00" + "time": "2016-01-25 11:10:14" }, { "name": "phpoption/phpoption", @@ -5486,7 +5477,7 @@ "php", "type" ], - "time": "2015-07-25T16:39:46+00:00" + "time": "2015-07-25 16:39:46" }, { "name": "phpseclib/phpseclib", @@ -5578,7 +5569,7 @@ "x.509", "x509" ], - "time": "2017-10-23T05:04:54+00:00" + "time": "2017-10-23 05:04:54" }, { "name": "pimple/pimple", @@ -5624,7 +5615,7 @@ "container", "dependency injection" ], - "time": "2013-11-22T08:30:29+00:00" + "time": "2013-11-22 08:30:29" }, { "name": "psr/cache", @@ -5670,7 +5661,7 @@ "psr", "psr-6" ], - "time": "2016-08-06T20:24:11+00:00" + "time": "2016-08-06 20:24:11" }, { "name": "psr/http-message", @@ -5720,7 +5711,7 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2016-08-06 14:39:51" }, { "name": "psr/log", @@ -5767,7 +5758,7 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2016-10-10 12:19:37" }, { "name": "ramsey/uuid", @@ -5849,7 +5840,7 @@ "identifier", "uuid" ], - "time": "2016-11-22T19:21:44+00:00" + "time": "2016-11-22 19:21:44" }, { "name": "react/promise", @@ -5892,7 +5883,7 @@ "promise", "promises" ], - "time": "2016-12-22T14:09:01+00:00" + "time": "2016-12-22 14:09:01" }, { "name": "roave/security-advisories", @@ -6017,7 +6008,7 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2017-01-24T18:32:04+00:00" + "time": "2017-01-24 18:32:04" }, { "name": "seld/jsonlint", @@ -6063,7 +6054,7 @@ "parser", "validator" ], - "time": "2016-11-14T17:59:58+00:00" + "time": "2016-11-14 17:59:58" }, { "name": "silex/silex", @@ -6141,7 +6132,7 @@ "microframework" ], "abandoned": "symfony/flex", - "time": "2016-01-06T14:59:35+00:00" + "time": "2016-01-06 14:59:35" }, { "name": "silex/web-profiler", @@ -6187,7 +6178,7 @@ "description": "A WebProfiler for Silex", "homepage": "http://silex.sensiolabs.org/", "abandoned": true, - "time": "2016-01-10T11:39:13+00:00" + "time": "2016-01-10 11:39:13" }, { "name": "simple-bus/doctrine-orm-bridge", @@ -6241,7 +6232,7 @@ "doctrine", "event bus" ], - "time": "2015-04-29T12:27:27+00:00" + "time": "2015-04-29 12:27:27" }, { "name": "simple-bus/jms-serializer-bridge", @@ -6290,7 +6281,7 @@ "message", "serialization" ], - "time": "2015-07-29T07:48:42+00:00" + "time": "2015-07-29 07:48:42" }, { "name": "simple-bus/message-bus", @@ -6340,7 +6331,7 @@ "message", "message bus" ], - "time": "2016-02-12T08:35:53+00:00" + "time": "2016-02-12 08:35:53" }, { "name": "simple-bus/serialization", @@ -6388,7 +6379,7 @@ "messages", "serialization" ], - "time": "2015-05-08T13:34:17+00:00" + "time": "2015-05-08 13:34:17" }, { "name": "sorien/silex-dbal-profiler", @@ -6436,7 +6427,7 @@ "profiler", "silex" ], - "time": "2016-10-26T11:08:02+00:00" + "time": "2016-10-26 11:08:02" }, { "name": "sorien/silex-pimple-dumper", @@ -6478,7 +6469,7 @@ "plugin", "silex" ], - "time": "2015-11-11T07:16:28+00:00" + "time": "2015-11-11 07:16:28" }, { "name": "swftools/swftools", @@ -6532,7 +6523,7 @@ "flash", "swf" ], - "time": "2013-07-03T13:11:36+00:00" + "time": "2013-07-03 13:11:36" }, { "name": "swiftmailer/swiftmailer", @@ -6586,7 +6577,7 @@ "mail", "mailer" ], - "time": "2016-12-29T10:02:40+00:00" + "time": "2016-12-29 10:02:40" }, { "name": "symfony/polyfill-apcu", @@ -6639,7 +6630,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-intl-icu", @@ -6697,7 +6688,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-mbstring", @@ -6756,7 +6747,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-php54", @@ -6814,7 +6805,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-php55", @@ -6870,7 +6861,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-php56", @@ -6926,7 +6917,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-php70", @@ -6985,7 +6976,7 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/polyfill-util", @@ -7037,7 +7028,7 @@ "polyfill", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2016-11-14 01:06:16" }, { "name": "symfony/security-acl", @@ -7098,7 +7089,7 @@ ], "description": "Symfony Security Component - ACL (Access Control List)", "homepage": "https://symfony.com", - "time": "2015-12-28T09:39:46+00:00" + "time": "2015-12-28 09:39:46" }, { "name": "symfony/symfony", @@ -7233,7 +7224,7 @@ "keywords": [ "framework" ], - "time": "2017-01-12T20:27:46+00:00" + "time": "2017-01-12 20:27:46" }, { "name": "themattharris/tmhoauth", @@ -7275,7 +7266,7 @@ "oauth", "twitter" ], - "time": "2014-08-06T22:29:35+00:00" + "time": "2014-08-06 22:29:35" }, { "name": "twig/extensions", @@ -7327,7 +7318,7 @@ "i18n", "text" ], - "time": "2016-10-25T17:34:14+00:00" + "time": "2016-10-25 17:34:14" }, { "name": "twig/twig", @@ -7388,7 +7379,7 @@ "keywords": [ "templating" ], - "time": "2017-01-11T19:36:15+00:00" + "time": "2017-01-11 19:36:15" }, { "name": "vierbergenlars/php-semver", @@ -7436,7 +7427,7 @@ "semver", "versioning" ], - "time": "2013-09-20T10:41:27+00:00" + "time": "2013-09-20 10:41:27" }, { "name": "webmozart/assert", @@ -7486,7 +7477,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2016-11-23 20:04:58" }, { "name": "webmozart/json", @@ -7535,7 +7526,7 @@ } ], "description": "A robust JSON decoder/encoder with support for schema validation.", - "time": "2016-01-14T12:11:46+00:00" + "time": "2016-01-14 12:11:46" }, { "name": "webmozart/path-util", @@ -7581,7 +7572,7 @@ } ], "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "time": "2015-12-17T08:42:14+00:00" + "time": "2015-12-17 08:42:14" }, { "name": "willdurand/negotiation", @@ -7633,7 +7624,7 @@ "header", "negotiation" ], - "time": "2016-10-14T09:17:47+00:00" + "time": "2016-10-14 09:17:47" }, { "name": "zend/gdata", @@ -7674,7 +7665,7 @@ "gdata", "zend" ], - "time": "2013-01-30T15:31:21+00:00" + "time": "2013-01-30 15:31:21" }, { "name": "zendframework/zend-code", @@ -7726,7 +7717,7 @@ "code", "zf2" ], - "time": "2016-04-20T17:26:42+00:00" + "time": "2016-04-20 17:26:42" }, { "name": "zendframework/zend-eventmanager", @@ -7780,7 +7771,7 @@ "events", "zf2" ], - "time": "2016-02-18T20:53:00+00:00" + "time": "2016-02-18 20:53:00" } ], "packages-dev": [ @@ -7828,77 +7819,7 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2016-07-18T14:02:57+00:00" - }, - { - "name": "php-amqplib/php-amqplib", - "version": "v2.6.3", - "source": { - "type": "git", - "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "fa2f0d4410a11008cb36b379177291be7ee9e4f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fa2f0d4410a11008cb36b379177291be7ee9e4f6", - "reference": "fa2f0d4410a11008cb36b379177291be7ee9e4f6", - "shasum": "" - }, - "require": { - "ext-bcmath": "*", - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "replace": { - "videlalvaro/php-amqplib": "self.version" - }, - "require-dev": { - "phpunit/phpunit": "^4.8", - "scrutinizer/ocular": "^1.1", - "squizlabs/php_codesniffer": "^2.5" - }, - "suggest": { - "ext-sockets": "Use AMQPSocketConnection" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "PhpAmqpLib\\": "PhpAmqpLib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Alvaro Videla", - "role": "Original Maintainer" - }, - { - "name": "John Kelly", - "email": "johnmkelly86@gmail.com", - "role": "Maintainer" - }, - { - "name": "Raúl Araya", - "email": "nubeiro@gmail.com", - "role": "Maintainer" - } - ], - "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", - "homepage": "https://github.com/php-amqplib/php-amqplib/", - "keywords": [ - "message", - "queue", - "rabbitmq" - ], - "time": "2016-04-11T14:30:01+00:00" + "time": "2016-07-18 14:02:57" }, { "name": "phpdocumentor/reflection-common", @@ -7952,7 +7873,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2015-12-27 11:43:31" }, { "name": "phpdocumentor/reflection-docblock", @@ -7997,7 +7918,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "time": "2016-09-30 07:12:33" }, { "name": "phpdocumentor/type-resolver", @@ -8044,7 +7965,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2016-11-25 06:54:22" }, { "name": "phpspec/prophecy", @@ -8107,7 +8028,7 @@ "spy", "stub" ], - "time": "2016-11-21T14:58:47+00:00" + "time": "2016-11-21 14:58:47" }, { "name": "phpunit/php-code-coverage", @@ -8169,7 +8090,7 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2015-10-06 15:47:00" }, { "name": "phpunit/php-file-iterator", @@ -8216,7 +8137,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2016-10-03 07:40:28" }, { "name": "phpunit/php-text-template", @@ -8257,7 +8178,7 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", @@ -8301,7 +8222,7 @@ "keywords": [ "timer" ], - "time": "2016-05-12T18:03:57+00:00" + "time": "2016-05-12 18:03:57" }, { "name": "phpunit/php-token-stream", @@ -8350,7 +8271,7 @@ "keywords": [ "tokenizer" ], - "time": "2016-11-15T14:06:22+00:00" + "time": "2016-11-15 14:06:22" }, { "name": "phpunit/phpunit", @@ -8422,7 +8343,7 @@ "testing", "xunit" ], - "time": "2017-01-26T16:15:36+00:00" + "time": "2017-01-26 16:15:36" }, { "name": "phpunit/phpunit-mock-objects", @@ -8479,7 +8400,7 @@ "xunit" ], "abandoned": true, - "time": "2015-10-02T06:51:40+00:00" + "time": "2015-10-02 06:51:40" }, { "name": "sebastian/comparator", @@ -8543,7 +8464,7 @@ "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2017-01-29 09:50:25" }, { "name": "sebastian/diff", @@ -8595,7 +8516,7 @@ "keywords": [ "diff" ], - "time": "2015-12-08T07:14:41+00:00" + "time": "2015-12-08 07:14:41" }, { "name": "sebastian/environment", @@ -8645,7 +8566,7 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2016-08-18 05:49:44" }, { "name": "sebastian/exporter", @@ -8712,7 +8633,7 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2016-06-17 09:04:28" }, { "name": "sebastian/global-state", @@ -8763,7 +8684,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2015-10-12 03:26:01" }, { "name": "sebastian/recursion-context", @@ -8816,7 +8737,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11T19:50:13+00:00" + "time": "2015-11-11 19:50:13" }, { "name": "sebastian/version", @@ -8851,7 +8772,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "time": "2015-06-21 13:59:46" } ], "aliases": [ diff --git a/lib/Alchemy/Phrasea/Controller/Admin/FieldsController.php b/lib/Alchemy/Phrasea/Controller/Admin/FieldsController.php index 02822d9228..51ac40ab51 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/FieldsController.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/FieldsController.php @@ -314,6 +314,8 @@ class FieldsController extends Controller ->set_readonly($data['readonly']) ->set_type($data['type']) ->set_tbranch($data['tbranch']) + ->set_generate_cterms($data['generate_cterms']) + ->set_gui_editable($data['gui_editable']) ->set_report($data['report']) ->setVocabularyControl(null) ->setVocabularyRestricted(false); @@ -349,7 +351,7 @@ class FieldsController extends Controller { return [ 'name', 'multi', 'thumbtitle', 'tag', 'business', 'indexable', 'aggregable', - 'required', 'separator', 'readonly', 'type', 'tbranch', 'report', + 'required', 'separator', 'readonly', 'gui_editable', 'type', 'tbranch', 'generate_cterms', 'report', 'vocabulary-type', 'vocabulary-restricted', 'dces-element', 'labels' ]; } diff --git a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php index 39361d46da..0c3bffb63e 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php +++ b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php @@ -594,6 +594,8 @@ class V1Controller extends Controller ], 'separator' => $databox_field->get_separator(), 'thesaurus_branch' => $databox_field->get_tbranch(), + 'generate_cterms' => $databox_field->get_generate_cterms(), + 'gui_editable' => $databox_field->get_gui_editable(), 'type' => $databox_field->get_type(), 'indexable' => $databox_field->is_indexable(), 'multivalue' => $databox_field->is_multi(), diff --git a/lib/Alchemy/Phrasea/Controller/Prod/EditController.php b/lib/Alchemy/Phrasea/Controller/Prod/EditController.php index 849c5af046..e164221a51 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/EditController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/EditController.php @@ -75,6 +75,8 @@ class EditController extends Controller 'format' => '', 'explain' => '', 'tbranch' => $meta->get_tbranch(), + 'generate_cterms' => $meta->get_generate_cterms(), + 'gui_editable' => $meta->get_gui_editable(), 'maxLength' => $meta->get_tag() ->getMaxLength(), 'minLength' => $meta->get_tag() diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index eef6327696..c525bf815c 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -16,7 +16,7 @@ class Version /** * @var string */ - private $number = '4.1.0-alpha.16a'; + private $number = '4.1.0-alpha.17a'; /** * @var string diff --git a/lib/Alchemy/Phrasea/Databox/Field/DbalDataboxFieldRepository.php b/lib/Alchemy/Phrasea/Databox/Field/DbalDataboxFieldRepository.php index a8209285ca..5f7e210a76 100644 --- a/lib/Alchemy/Phrasea/Databox/Field/DbalDataboxFieldRepository.php +++ b/lib/Alchemy/Phrasea/Databox/Field/DbalDataboxFieldRepository.php @@ -36,6 +36,8 @@ final class DbalDataboxFieldRepository implements DataboxFieldRepository 'label_fr', 'label_de', 'label_nl', + 'generate_cterms', + 'gui_editable', ]; /** @var DataboxFieldFactory */ diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/KeyValue/GeolocationKey.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/KeyValue/GeolocationKey.php index 9d8942e8f7..4ab7998d2b 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/KeyValue/GeolocationKey.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/KeyValue/GeolocationKey.php @@ -58,6 +58,11 @@ class GeolocationKey implements Key $this->key = $key; } + public function getFieldType(QueryContext $context) + { + return $this->type; + } + public function getIndexField(QueryContext $context, $raw = false) { return $this->key; diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Indexer/Record/Hydrator/ThesaurusHydrator.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Indexer/Record/Hydrator/ThesaurusHydrator.php index 4107285ac2..6f6c502151 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Indexer/Record/Hydrator/ThesaurusHydrator.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Indexer/Record/Hydrator/ThesaurusHydrator.php @@ -42,7 +42,7 @@ class ThesaurusHydrator implements HydratorInterface $fields = []; $index_fields = []; foreach ($structure as $name => $field) { - $fields[$name] = $field->getThesaurusRoots(); + $fields[$name] = $field; // ->getThesaurusRoots(); $index_fields[$name] = $field->getIndexField(); } // Hydrate records with concepts @@ -51,7 +51,13 @@ class ThesaurusHydrator implements HydratorInterface } } - private function hydrate(array &$record, array $fields, array $index_fields) + /** + * @param array $record + * @param Field[] $fields + * @param array $index_fields + * @throws Exception + */ + private function hydrate(array &$record, $fields, array $index_fields) { if (!isset($record['databox_id'])) { throw new Exception('Expected a record with the "databox_id" key set.'); @@ -61,7 +67,8 @@ class ThesaurusHydrator implements HydratorInterface $terms = array(); $filters = array(); $field_names = array(); - foreach ($fields as $name => $root_concepts) { + foreach ($fields as $name => $field) { + $root_concepts = $field->getThesaurusRoots(); // Loop through all values to prepare bulk query $field_values = \igorw\get_in($record, explode('.', $index_fields[$name])); if ($field_values !== null) { @@ -84,13 +91,17 @@ class ThesaurusHydrator implements HydratorInterface $bulk = $this->thesaurus->findConceptsBulk($terms, null, $filters, true); foreach ($bulk as $offset => $item_concepts) { + $name = $field_names[$offset]; if ($item_concepts && is_array($item_concepts) && count($item_concepts)>0) { - $name = $field_names[$offset]; foreach ($item_concepts as $concept) { $record['concept_path'][$name][] = $concept->getPath(); } - } else { - $this->candidate_terms->insert($field_names[$offset], $values[$offset]); + } + else { + $field = $fields[$name]; + if($field->get_generate_cterms()) { + $this->candidate_terms->insert($field_names[$offset], $values[$offset]); + } } } } diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Structure/Field.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Structure/Field.php index 3b71f6f451..f2dc5d0e7b 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Structure/Field.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Structure/Field.php @@ -43,6 +43,8 @@ class Field implements Typed private $thesaurus_roots; + private $generate_cterms; + private $used_by_collections; public static function createFromLegacyField(databox_field $field, $with = Structure::WITH_EVERYTHING) @@ -75,6 +77,7 @@ class Field implements Typed 'private' => $field->isBusiness(), 'facet' => $facet, 'thesaurus_roots' => $roots, + 'generate_cterms' => $field->get_generate_cterms(), 'used_by_collections' => $databox->get_collection_unique_ids() ]); } @@ -103,6 +106,7 @@ class Field implements Typed $this->is_private = \igorw\get_in($options, ['private'], false); $this->facet = \igorw\get_in($options, ['facet']); $this->thesaurus_roots = \igorw\get_in($options, ['thesaurus_roots'], null); + $this->generate_cterms = \igorw\get_in($options, ['generate_cterms'], false); $this->used_by_collections = \igorw\get_in($options, ['used_by_collections'], []); Assertion::boolean($this->is_searchable); @@ -126,6 +130,7 @@ class Field implements Typed 'private' => $this->is_private, 'facet' => $this->facet, 'thesaurus_roots' => $this->thesaurus_roots, + 'generate_cterms' => $this->generate_cterms, 'used_by_collections' => $this->used_by_collections ]); } @@ -190,6 +195,11 @@ class Field implements Typed return $this->thesaurus_roots; } + public function get_generate_cterms() + { + return $this->generate_cterms; + } + /** * Merge with another field, returning the new instance * diff --git a/lib/classes/databox.php b/lib/classes/databox.php index c02ef4ffba..01aa2eea31 100644 --- a/lib/classes/databox.php +++ b/lib/classes/databox.php @@ -462,6 +462,8 @@ class databox extends base implements ThumbnailedElement ->set_aggregable((isset($field['aggregable']) ? (string) $field['aggregable'] : 0)) ->set_type($type) ->set_tbranch(isset($field['tbranch']) ? (string) $field['tbranch'] : '') + ->set_generate_cterms((isset($field['generate_cterms']) && (string) $field['generate_cterms'] == 1)) + ->set_gui_editable((isset($field['gui_editable']) && (string) $field['gui_editable'] == 1)) ->set_thumbtitle(isset($field['thumbtitle']) ? (string) $field['thumbtitle'] : (isset($field['thumbTitle']) ? $field['thumbTitle'] : '0')) ->set_report(isset($field['report']) ? (string) $field['report'] : '1') ->save(); @@ -1214,21 +1216,40 @@ class databox extends base implements ThumbnailedElement $domct = $this->get_dom_cterms(); if ($domct !== false) { + $changed = false; $nodesToDel = []; + // loop on first level : "fields" for($n = $domct->documentElement->firstChild; $n; $n = $n->nextSibling) { if($n->nodeType == XML_ELEMENT_NODE && !($n->getAttribute('delbranch'))){ - $nodesToDel[] = $n; + $nodesToDel2 = []; + // loop on 2nd level : "terms" + for($n2 = $n->firstChild; $n2; $n2 = $n2->nextSibling) { + // do not remove "rejected" candidates + if(substr($n2->getAttribute('id'), 0, 1) != 'R') { + $nodesToDel2[] = $n2; + } + } + foreach($nodesToDel2 as $n2) { + $n->removeChild($n2); + $changed = true; + } + // if a field has no more candidates, we can remove it + if(!($n->firstChild)) { + $nodesToDel[] = $n; + } } } foreach($nodesToDel as $n) { $n->parentNode->removeChild($n); + $changed = true; } - if(!empty($nodesToDel)) { + if($changed) { $this->saveCterms($domct); } } - } catch (\Exception $e) { - + } + catch (\Exception $e) { + // no-op } } diff --git a/lib/classes/databox/field.php b/lib/classes/databox/field.php index 35fc525265..09dab67d46 100644 --- a/lib/classes/databox/field.php +++ b/lib/classes/databox/field.php @@ -43,6 +43,8 @@ class databox_field implements cache_cacheableInterface protected $report; protected $type; protected $tbranch; + protected $generate_cterms; + protected $gui_editable; protected $separator; protected $thumbtitle; @@ -166,6 +168,8 @@ class databox_field implements cache_cacheableInterface $this->position = (int)$row['sorter']; $this->type = $row['type'] ?: self::TYPE_STRING; $this->tbranch = $row['tbranch']; + $this->generate_cterms = (bool)$row['generate_cterms']; + $this->gui_editable = (bool)$row['gui_editable']; $this->VocabularyType = $row['VocabularyControlType']; $this->VocabularyRestriction = (bool)$row['RestrictToVocabularyControl']; @@ -306,6 +310,8 @@ class databox_field implements cache_cacheableInterface `report` = :report, `type` = :type, `tbranch` = :tbranch, + `generate_cterms` = :generate_cterms, + `gui_editable` = :gui_editable, `sorter` = :position, `thumbtitle` = :thumbtitle, `VocabularyControlType` = :VocabularyControlType, @@ -329,6 +335,8 @@ class databox_field implements cache_cacheableInterface ':report' => $this->report ? '1' : '0', ':type' => $this->type, ':tbranch' => $this->tbranch, + ':generate_cterms' => $this->generate_cterms ? '1' : '0', + ':gui_editable' => $this->gui_editable ? '1' : '0', ':position' => $this->position, ':thumbtitle' => $this->thumbtitle, ':VocabularyControlType' => $this->getVocabularyControl() ? $this->getVocabularyControl()->getType() : null, @@ -380,6 +388,8 @@ class databox_field implements cache_cacheableInterface $meta->setAttribute('aggregable', $this->aggregable); $meta->setAttribute('type', $this->type); $meta->setAttribute('tbranch', $this->tbranch); + $meta->setAttribute('generate_cterms', $this->generate_cterms ? '1' : '0'); + $meta->setAttribute('gui_editable', $this->gui_editable ? '1' : '0'); if ($this->multi) { $meta->setAttribute('separator', $this->separator); } @@ -711,6 +721,28 @@ class databox_field implements cache_cacheableInterface return $this; } + /** + * @param boolean $generate_cterms + * @return databox_field + */ + public function set_generate_cterms($generate_cterms) + { + $this->generate_cterms = $generate_cterms; + + return $this; + } + + /** + * @param boolean $gui_editable + * @return databox_field + */ + public function set_gui_editable($gui_editable) + { + $this->gui_editable = $gui_editable; + + return $this; + } + /** * * @param string $separator @@ -795,6 +827,24 @@ class databox_field implements cache_cacheableInterface return $this->tbranch; } + /** + * + * @return boolean + */ + public function get_generate_cterms() + { + return $this->generate_cterms; + } + + /** + * + * @return boolean + */ + public function get_gui_editable() + { + return $this->gui_editable; + } + /** * @param Boolean $all If set to false, returns a one-char separator to use for serialiation * @@ -905,6 +955,8 @@ class databox_field implements cache_cacheableInterface 'sorter' => $this->position, 'thumbtitle' => $this->thumbtitle, 'tbranch' => $this->tbranch, + 'generate_cterms' => $this->generate_cterms, + 'gui_editable' => $this->gui_editable, 'separator' => $this->separator, 'required' => $this->required, 'report' => $this->report, @@ -943,10 +995,10 @@ class databox_field implements cache_cacheableInterface } $sql = "INSERT INTO metadatas_structure - (`id`, `name`, `src`, `readonly`, `required`, `indexable`, `type`, `tbranch`, + (`id`, `name`, `src`, `readonly`, `gui_editable`, `required`, `indexable`, `type`, `tbranch`, `generate_cterms`, `thumbtitle`, `multi`, `business`, `aggregable`, `report`, `sorter`, `separator`) - VALUES (null, :name, '', 0, 0, 1, 'string', '', + VALUES (null, :name, '', 0, 1, 0, 1, 'string', '', 1, null, 0, 0, 0, 1, :sorter, '')"; diff --git a/lib/classes/patch/410alpha17a.php b/lib/classes/patch/410alpha17a.php new file mode 100644 index 0000000000..ff682b1ef9 --- /dev/null +++ b/lib/classes/patch/410alpha17a.php @@ -0,0 +1,67 @@ +release; + } + + /** + * {@inheritdoc} + */ + public function getDoctrineMigrations() + { + return []; + } + + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + + /** + * {@inheritdoc} + */ + public function apply(base $databox, Application $app) + { + // -- done by xml schema -- + // $sql = "ALTER TABLE `metadatas_structure` ADD `generate_cterms` INT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `tbranch`"; + // $databox->get_connection()->executeQuery($sql); + // $sql = "ALTER TABLE `metadatas_structure` ADD `gui_editable` INT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `readonly`"; + // $databox->get_connection()->executeQuery($sql); + + return true; + } +} diff --git a/lib/conf.d/bases_structure.xml b/lib/conf.d/bases_structure.xml index a666eaeb5c..b989e2f9d6 100644 --- a/lib/conf.d/bases_structure.xml +++ b/lib/conf.d/bases_structure.xml @@ -2033,6 +2033,22 @@ + + generate_cterms + int(1) unsigned + + + 1 + + + + gui_editable + int(1) unsigned + + + 1 + + diff --git a/templates/web/admin/fields/templates.html.twig b/templates/web/admin/fields/templates.html.twig index c785a9a701..191f3f18b8 100644 --- a/templates/web/admin/fields/templates.html.twig +++ b/templates/web/admin/fields/templates.html.twig @@ -189,6 +189,14 @@ + + + + +