diff --git a/composer.json b/composer.json index ac2129184..af5ee781d 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,7 @@ "monolog/monolog": "1.19.0", "geshi/geshi": "dev-master", "libchart/libchart": "1.4.0", - "phpmailer/phpmailer": "5.2.*", + "phpmailer/phpmailer": "5.2.4", "pear/archive_tar": "1.4.*", "pear/console_getopt": "1.4.*", "TYPO3/class-alias-loader": "^1.0", diff --git a/composer.lock b/composer.lock index fe91c2de3..5feaa8b7d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "ca4e31d385248c976ef1b88d6f6c725f", - "content-hash": "674fafac9f49f8b6da9f7a0189549eb1", + "content-hash": "41742709993d30b70991d5277781b2d8", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -48,7 +47,7 @@ "oauth", "oauth2" ], - "time": "2013-08-12 16:35:58" + "time": "2013-08-12T16:35:58+00:00" }, { "name": "colosa/MichelangeloFE", @@ -67,7 +66,7 @@ "keywords": [ "js app ProcessMaker" ], - "time": "2017-09-05 17:01:30" + "time": "2018-01-27T00:51:59+00:00" }, { "name": "colosa/pmDynaform", @@ -83,7 +82,7 @@ "keywords": [ "js lib ProcessMaker Dynaforms" ], - "time": "2017-09-05 17:02:30" + "time": "2017-11-30T19:21:05+00:00" }, { "name": "colosa/pmUI", @@ -99,7 +98,7 @@ "keywords": [ "js lib ProcessMaker UI" ], - "time": "2017-08-10 14:57:39" + "time": "2017-10-17T17:56:43+00:00" }, { "name": "dapphp/securimage", @@ -146,7 +145,7 @@ "captcha", "security" ], - "time": "2016-12-04 17:45:57" + "time": "2016-12-04T17:45:57+00:00" }, { "name": "doctrine/inflector", @@ -213,7 +212,7 @@ "singularize", "string" ], - "time": "2015-11-06 14:35:42" + "time": "2015-11-06T14:35:42+00:00" }, { "name": "erusev/parsedown", @@ -255,7 +254,7 @@ "markdown", "parser" ], - "time": "2017-05-14 14:47:48" + "time": "2017-05-14T14:47:48+00:00" }, { "name": "geshi/geshi", @@ -295,7 +294,7 @@ ], "description": "Generic Syntax Highlighter", "homepage": "http://qbnz.com/highlighter/", - "time": "2017-07-30 00:08:49" + "time": "2017-07-30T00:08:49+00:00" }, { "name": "google/apiclient", @@ -329,7 +328,7 @@ "src/" ] }, - "notification-url": "https://packagist.org/downloads/", + "notification-url": "http://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -338,7 +337,7 @@ "keywords": [ "google" ], - "time": "2015-10-16 22:11:08" + "time": "2015-10-16T22:11:08+00:00" }, { "name": "laravel/framework", @@ -467,7 +466,7 @@ "framework", "laravel" ], - "time": "2017-08-30 09:26:16" + "time": "2017-08-30T09:26:16+00:00" }, { "name": "league/flysystem", @@ -550,7 +549,7 @@ "sftp", "storage" ], - "time": "2017-08-06 17:41:04" + "time": "2017-08-06T17:41:04+00:00" }, { "name": "libchart/libchart", @@ -578,7 +577,7 @@ ], "authors": [ { - "name": "Jean-Marc Tr??meaux", + "name": "Jean-Marc Trémeaux", "homepage": "http://naku.dohcrew.com/", "role": "Developer" }, @@ -596,7 +595,7 @@ "line charts", "pie charts" ], - "time": "2013-10-19 22:21:30" + "time": "2013-10-19T22:21:30+00:00" }, { "name": "luracast/restler", @@ -604,12 +603,12 @@ "source": { "type": "git", "url": "https://github.com/Luracast/Restler.git", - "reference": "581d8d6dc5d37f439765f89725a92f85e98f1826" + "reference": "cd0c21b4f7c0a99261ad618e90a5263483e78007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Luracast/Restler/zipball/581d8d6dc5d37f439765f89725a92f85e98f1826", - "reference": "581d8d6dc5d37f439765f89725a92f85e98f1826", + "url": "https://api.github.com/repos/Luracast/Restler/zipball/cd0c21b4f7c0a99261ad618e90a5263483e78007", + "reference": "cd0c21b4f7c0a99261ad618e90a5263483e78007", "shasum": "" }, "require": { @@ -675,7 +674,7 @@ "rest", "server" ], - "time": "2017-01-11 03:42:36" + "time": "2017-01-11T03:42:36+00:00" }, { "name": "monolog/monolog", @@ -753,7 +752,7 @@ "logging", "psr-3" ], - "time": "2016-04-12 18:29:35" + "time": "2016-04-12T18:29:35+00:00" }, { "name": "mtdowling/cron-expression", @@ -797,7 +796,7 @@ "cron", "schedule" ], - "time": "2017-01-23 04:29:33" + "time": "2017-01-23T04:29:33+00:00" }, { "name": "nesbot/carbon", @@ -850,7 +849,7 @@ "datetime", "time" ], - "time": "2017-01-16 07:55:07" + "time": "2017-01-16T07:55:07+00:00" }, { "name": "paragonie/random_compat", @@ -898,7 +897,7 @@ "pseudorandom", "random" ], - "time": "2017-03-13 16:27:32" + "time": "2017-03-13T16:27:32+00:00" }, { "name": "pear/archive_tar", @@ -964,7 +963,7 @@ "archive", "tar" ], - "time": "2017-06-11 17:28:11" + "time": "2017-06-11T17:28:11+00:00" }, { "name": "pear/console_getopt", @@ -1011,7 +1010,7 @@ } ], "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "time": "2015-07-20 20:28:12" + "time": "2015-07-20T20:28:12+00:00" }, { "name": "pear/pear-core-minimal", @@ -1055,7 +1054,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2017-02-28 16:46:11" + "time": "2017-02-28T16:46:11+00:00" }, { "name": "pear/pear_exception", @@ -1110,59 +1109,35 @@ "keywords": [ "exception" ], - "time": "2015-02-10 20:07:52" + "time": "2015-02-10T20:07:52+00:00" }, { "name": "phpmailer/phpmailer", - "version": "v5.2.25", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "2baf20b01690fba8cf720c1ebcf9b988eda50915" + "reference": "adb0197c106fad05c1fab28dbed5437133836c44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2baf20b01690fba8cf720c1ebcf9b988eda50915", - "reference": "2baf20b01690fba8cf720c1ebcf9b988eda50915", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/adb0197c106fad05c1fab28dbed5437133836c44", + "reference": "adb0197c106fad05c1fab28dbed5437133836c44", "shasum": "" }, "require": { - "ext-ctype": "*", "php": ">=5.0.0" }, "require-dev": { - "doctrine/annotations": "1.2.*", - "jms/serializer": "0.16.*", - "phpdocumentor/phpdocumentor": "2.*", - "phpunit/phpunit": "4.8.*", - "symfony/debug": "2.8.*", - "symfony/filesystem": "2.8.*", - "symfony/translation": "2.8.*", - "symfony/yaml": "2.8.*", - "zendframework/zend-cache": "2.5.1", - "zendframework/zend-config": "2.5.1", - "zendframework/zend-eventmanager": "2.5.1", - "zendframework/zend-filter": "2.5.1", - "zendframework/zend-i18n": "2.5.1", - "zendframework/zend-json": "2.5.1", - "zendframework/zend-math": "2.5.1", - "zendframework/zend-serializer": "2.5.*", - "zendframework/zend-servicemanager": "2.5.*", - "zendframework/zend-stdlib": "2.5.1" - }, - "suggest": { - "league/oauth2-google": "Needed for Google XOAUTH2 authentication" + "phpdocumentor/phpdocumentor": "*", + "phpunit/phpunit": "*" }, "type": "library", "autoload": { "classmap": [ "class.phpmailer.php", - "class.phpmaileroauth.php", - "class.phpmaileroauthgoogle.php", - "class.smtp.php", "class.pop3.php", - "extras/EasyPeasyICS.php", - "extras/ntlm_sasl_client.php" + "class.smtp.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1187,7 +1162,7 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2017-08-28 11:12:07" + "time": "2013-02-21T11:44:28+00:00" }, { "name": "psr/log", @@ -1225,7 +1200,7 @@ "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2012-12-21T11:40:51+00:00" }, { "name": "ralouphie/getallheaders", @@ -1265,7 +1240,7 @@ } ], "description": "A polyfill for getallheaders.", - "time": "2016-02-11 07:05:27" + "time": "2016-02-11T07:05:27+00:00" }, { "name": "ramsey/uuid", @@ -1347,7 +1322,7 @@ "identifier", "uuid" ], - "time": "2017-08-04 13:39:04" + "time": "2017-08-04T13:39:04+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -1401,7 +1376,7 @@ "mail", "mailer" ], - "time": "2017-05-01 15:54:03" + "time": "2017-05-01T15:54:03+00:00" }, { "name": "symfony/console", @@ -1469,7 +1444,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-08-27 14:52:21" + "time": "2017-08-27T14:52:21+00:00" }, { "name": "symfony/css-selector", @@ -1522,7 +1497,7 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/debug", @@ -1578,7 +1553,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-08-27 14:52:21" + "time": "2017-08-27T14:52:21+00:00" }, { "name": "symfony/event-dispatcher", @@ -1641,7 +1616,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/finder", @@ -1690,7 +1665,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/http-foundation", @@ -1743,7 +1718,7 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2017-08-10 07:07:06" + "time": "2017-08-10T07:07:06+00:00" }, { "name": "symfony/http-kernel", @@ -1829,7 +1804,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2017-08-28 22:35:03" + "time": "2017-08-28T22:35:03+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -1888,7 +1863,7 @@ "portable", "shim" ], - "time": "2017-06-14 15:44:48" + "time": "2017-06-14T15:44:48+00:00" }, { "name": "symfony/process", @@ -1937,7 +1912,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/routing", @@ -2015,7 +1990,7 @@ "uri", "url" ], - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/translation", @@ -2080,7 +2055,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/var-dumper", @@ -2148,7 +2123,7 @@ "debug", "dump" ], - "time": "2017-08-27 14:52:21" + "time": "2017-08-27T14:52:21+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -2195,7 +2170,7 @@ ], "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2016-09-20 12:50:39" + "time": "2016-09-20T12:50:39+00:00" }, { "name": "typo3/class-alias-loader", @@ -2253,7 +2228,7 @@ "classloader", "composer" ], - "time": "2015-10-06 10:25:44" + "time": "2015-10-06T10:25:44+00:00" }, { "name": "vlucas/phpdotenv", @@ -2303,7 +2278,7 @@ "env", "environment" ], - "time": "2016-09-01 10:05:43" + "time": "2016-09-01T10:05:43+00:00" } ], "packages-dev": [ @@ -2360,7 +2335,7 @@ "assertion", "validation" ], - "time": "2017-05-04 02:00:24" + "time": "2017-05-04T02:00:24+00:00" }, { "name": "behat/behat", @@ -2442,7 +2417,7 @@ "symfony", "testing" ], - "time": "2017-05-15 16:49:16" + "time": "2017-05-15T16:49:16+00:00" }, { "name": "behat/gherkin", @@ -2501,7 +2476,7 @@ "gherkin", "parser" ], - "time": "2017-08-30 11:04:43" + "time": "2017-08-30T11:04:43+00:00" }, { "name": "behat/mink", @@ -2559,7 +2534,7 @@ "testing", "web" ], - "time": "2016-03-05 08:26:18" + "time": "2016-03-05T08:26:18+00:00" }, { "name": "behat/mink-selenium2-driver", @@ -2620,7 +2595,7 @@ "testing", "webdriver" ], - "time": "2016-03-05 09:10:18" + "time": "2016-03-05T09:10:18+00:00" }, { "name": "behat/transliterator", @@ -2664,7 +2639,7 @@ "slug", "transliterator" ], - "time": "2017-04-04 11:38:05" + "time": "2017-04-04T11:38:05+00:00" }, { "name": "clue/graph", @@ -2709,7 +2684,7 @@ "network", "vertex" ], - "time": "2015-03-07 18:11:31" + "time": "2015-03-07T18:11:31+00:00" }, { "name": "container-interop/container-interop", @@ -2740,7 +2715,7 @@ ], "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14 19:40:03" + "time": "2017-02-14T19:40:03+00:00" }, { "name": "doctrine/instantiator", @@ -2794,7 +2769,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "facebook/webdriver", @@ -2846,7 +2821,7 @@ "selenium", "webdriver" ], - "time": "2017-04-28 14:54:49" + "time": "2017-04-28T14:54:49+00:00" }, { "name": "florianwolters/component-core-stringutils", @@ -2891,7 +2866,7 @@ "string", "wrapper" ], - "time": "2013-07-01 10:24:07" + "time": "2013-07-01T10:24:07+00:00" }, { "name": "florianwolters/component-util-reflection", @@ -2935,7 +2910,7 @@ "reflection", "utility" ], - "time": "2013-03-19 16:42:41" + "time": "2013-03-19T16:42:41+00:00" }, { "name": "florianwolters/component-util-singleton", @@ -2986,7 +2961,7 @@ "singleton", "utility" ], - "time": "2013-06-29 12:35:22" + "time": "2013-06-29T12:35:22+00:00" }, { "name": "graphp/algorithms", @@ -3036,11 +3011,11 @@ "prim", "shortest path" ], - "time": "2015-03-08 10:12:01" + "time": "2015-03-08T10:12:01+00:00" }, { "name": "guzzle/guzzle", - "version": "v3.1.2", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", @@ -3050,86 +3025,10 @@ "type": "zip", "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7901ea7d27373d0cc85eac6f6694e4c2ced90a26", "reference": "7901ea7d27373d0cc85eac6f6694e4c2ced90a26", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.3.2", - "symfony/event-dispatcher": ">=2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" - }, - "require-dev": { - "doctrine/common": "*", - "monolog/monolog": "1.*", - "phpunit/phpunit": "3.7.*", - "symfony/class-loader": "*", - "zend/zend-cache1": "1.12", - "zend/zend-log1": "1.12", - "zendframework/zend-cache": "2.0.*", - "zendframework/zend-log": "2.0.*" + "shasum": "25bc38119541c151c455c3140b4dc388d7ec4187" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Tests": "tests/", - "Guzzle": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" - } - ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "abandoned": "guzzlehttp/guzzle", - "time": "2013-01-28 00:07:40" + "abandoned": "guzzlehttp/guzzle" }, { "name": "instaclick/php-webdriver", @@ -3188,7 +3087,7 @@ "webdriver", "webtest" ], - "time": "2017-06-30 04:02:48" + "time": "2017-06-30T04:02:48+00:00" }, { "name": "lmc/steward", @@ -3263,7 +3162,7 @@ "testing", "webdriver" ], - "time": "2017-06-05 23:56:28" + "time": "2017-06-05T23:56:28+00:00" }, { "name": "myclabs/deep-copy", @@ -3305,7 +3204,7 @@ "object", "object graph" ], - "time": "2017-04-12 18:52:22" + "time": "2017-04-12T18:52:22+00:00" }, { "name": "nette/caching", @@ -3374,7 +3273,7 @@ "nette", "sqlite" ], - "time": "2017-08-18 15:20:18" + "time": "2017-08-18T15:20:18+00:00" }, { "name": "nette/finder", @@ -3430,7 +3329,7 @@ ], "description": "Nette Finder: Files Searching", "homepage": "https://nette.org", - "time": "2017-07-10 23:47:08" + "time": "2017-07-10T23:47:08+00:00" }, { "name": "nette/reflection", @@ -3494,7 +3393,7 @@ "nette", "reflection" ], - "time": "2017-07-11 19:28:57" + "time": "2017-07-11T19:28:57+00:00" }, { "name": "nette/utils", @@ -3573,7 +3472,7 @@ "utility", "validation" ], - "time": "2017-08-20 17:32:29" + "time": "2017-08-20T17:32:29+00:00" }, { "name": "ondram/ci-detector", @@ -3626,7 +3525,7 @@ "teamcity", "travis" ], - "time": "2017-05-26 16:39:57" + "time": "2017-05-26T16:39:57+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3680,7 +3579,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2015-12-27T11:43:31+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -3725,7 +3624,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": "2017-08-08 06:39:58" + "time": "2017-08-08T06:39:58+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -3772,7 +3671,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-06-03 08:32:36" + "time": "2017-06-03T08:32:36+00:00" }, { "name": "phpspec/prophecy", @@ -3835,7 +3734,7 @@ "spy", "stub" ], - "time": "2017-09-04 11:05:03" + "time": "2017-09-04T11:05:03+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3898,7 +3797,7 @@ "testing", "xunit" ], - "time": "2017-04-02 07:44:40" + "time": "2017-04-02T07:44:40+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3945,7 +3844,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03 07:40:28" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -3986,7 +3885,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -4035,7 +3934,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", @@ -4084,7 +3983,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27 10:12:30" + "time": "2017-02-27T10:12:30+00:00" }, { "name": "phpunit/phpunit", @@ -4166,7 +4065,7 @@ "testing", "xunit" ], - "time": "2017-06-21 08:11:54" + "time": "2017-06-21T08:11:54+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -4225,7 +4124,7 @@ "mock", "xunit" ], - "time": "2017-06-30 09:13:00" + "time": "2017-06-30T09:13:00+00:00" }, { "name": "psr/container", @@ -4274,7 +4173,7 @@ "container-interop", "psr" ], - "time": "2017-02-14 16:28:37" + "time": "2017-02-14T16:28:37+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -4319,7 +4218,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04 06:30:41" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", @@ -4383,7 +4282,7 @@ "compare", "equality" ], - "time": "2017-01-29 09:50:25" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", @@ -4435,7 +4334,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22 07:24:03" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", @@ -4485,7 +4384,7 @@ "environment", "hhvm" ], - "time": "2016-11-26 07:53:53" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", @@ -4552,7 +4451,7 @@ "export", "exporter" ], - "time": "2016-11-19 08:54:04" + "time": "2016-11-19T08:54:04+00:00" }, { "name": "sebastian/global-state", @@ -4603,7 +4502,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/object-enumerator", @@ -4649,7 +4548,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18 15:18:39" + "time": "2017-02-18T15:18:39+00:00" }, { "name": "sebastian/recursion-context", @@ -4702,7 +4601,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19 07:33:16" + "time": "2016-11-19T07:33:16+00:00" }, { "name": "sebastian/resource-operations", @@ -4744,7 +4643,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", @@ -4787,7 +4686,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -4838,7 +4737,7 @@ "phpcs", "standards" ], - "time": "2017-07-18 01:12:32" + "time": "2017-07-18T01:12:32+00:00" }, { "name": "symfony/class-loader", @@ -4894,7 +4793,7 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/config", @@ -4956,7 +4855,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-08-03 08:59:45" + "time": "2017-08-03T08:59:45+00:00" }, { "name": "symfony/dependency-injection", @@ -5026,7 +4925,7 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-08-28 22:20:37" + "time": "2017-08-28T22:20:37+00:00" }, { "name": "symfony/filesystem", @@ -5075,7 +4974,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/options-resolver", @@ -5129,7 +5028,7 @@ "configuration", "options" ], - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/stopwatch", @@ -5178,7 +5077,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "symfony/yaml", @@ -5233,7 +5132,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-07-29T21:54:42+00:00" }, { "name": "webmozart/assert", @@ -5283,7 +5182,7 @@ "check", "validate" ], - "time": "2016-11-23 20:04:58" + "time": "2016-11-23T20:04:58+00:00" }, { "name": "wimg/php-compatibility", @@ -5335,7 +5234,7 @@ "phpcs", "standards" ], - "time": "2017-08-07 19:39:05" + "time": "2017-08-07T19:39:05+00:00" } ], "aliases": [], diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 204f42066..e429ce24a 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -440,8 +440,16 @@ function executePlugins() // -> Execute functions if (!empty($cronFiles)) { setExecutionMessage('Executing registered cron files for Workspace: ' . config("system.workspace")); + /** + * @var \ProcessMaker\Plugins\Interfaces\CronFile $cronFile + */ foreach($cronFiles as $cronFile) { - executeCustomCronFunction(PATH_PLUGINS . $cronFile->namespace . PATH_SEP . 'bin' . PATH_SEP . $cronFile->cronFile . '.php', $cronFile->cronFile); + $path = PATH_PLUGINS . $cronFile->getNamespace() . PATH_SEP . 'bin' . PATH_SEP . $cronFile->getCronFile() . '.php'; + if (file_exists($path)) { + executeCustomCronFunction($path, $cronFile->getCronFile()); + } else { + setExecutionMessage('File ' . $cronFile->getCronFile() . '.php ' . 'does not exist.'); + } } } diff --git a/workflow/engine/classes/PMPluginRegistry.php b/workflow/engine/classes/PMPluginRegistry.php index 6d6f68cac..b4c994244 100644 --- a/workflow/engine/classes/PMPluginRegistry.php +++ b/workflow/engine/classes/PMPluginRegistry.php @@ -1480,21 +1480,22 @@ class PMPluginRegistry /** * Register a cron file in the singleton * - * @param unknown_type $namespace - * @param unknown_type $cronFile + * @param string $pluginName + * @param string $cronFileToRegister */ - public function registerCronFile($namespace, $cronFile) + public function registerCronFile($pluginName, $cronFileToRegister) { $found = false; - foreach ($this->_aCronFiles as $row => $detail) { - if ($cronFile == $detail->cronFile && $namespace == $detail->namespace) { - $detail->cronFile = $cronFile; + foreach ($this->_aCronFiles as $cronFile) { + if ($cronFile instanceof cronFile && + $cronFileToRegister === $cronFile->cronFile && + $pluginName === $cronFile->namespace) { + $cronFile->cronFile = $cronFileToRegister; $found = true; } } if (!$found) { - $cronFile = new cronFile($namespace, $cronFile); - $this->_aCronFiles[] = $cronFile; + $this->_aCronFiles[] = new cronFile($pluginName, $cronFileToRegister); } } diff --git a/workflow/engine/classes/ProcessMap.php b/workflow/engine/classes/ProcessMap.php index 727c3aa74..1de1a9084 100644 --- a/workflow/engine/classes/ProcessMap.php +++ b/workflow/engine/classes/ProcessMap.php @@ -803,7 +803,7 @@ class ProcessMap if ($val->equalStepIdTo($aRow['STEP_UID_OBJ'])) { $sTitle = $val->getStepTitle(); if (trim($val->getSetupStepPage()) != '') { - $urlEdit = "externalStepEdit('" . $aRow['STEP_UID'] . "', '" . $val->sSetupStepPage . "');"; + $urlEdit = "externalStepEdit('" . $aRow['STEP_UID'] . "', '" . $val->getSetupStepPage() . "');"; $linkEditValue = 'Edit'; } else { $urlEdit = ""; diff --git a/workflow/engine/classes/model/map/PluginsRegistryMapBuilder.php b/workflow/engine/classes/model/map/PluginsRegistryMapBuilder.php index 42470e305..45a097191 100644 --- a/workflow/engine/classes/model/map/PluginsRegistryMapBuilder.php +++ b/workflow/engine/classes/model/map/PluginsRegistryMapBuilder.php @@ -109,6 +109,8 @@ class PluginsRegistryMapBuilder $tMap->addColumn('PLUGIN_REST_SERVICE', 'PluginRestService', 'string', CreoleTypes::LONGVARCHAR, false, null); + $tMap->addColumn('PLUGIN_CRON_FILES', 'PluginCronFiles', 'string', CreoleTypes::LONGVARCHAR, false, null); + $tMap->addColumn('PLUGIN_TASK_EXTENDED_PROPERTIES', 'PluginTaskExtendedProperties', 'string', CreoleTypes::LONGVARCHAR, false, null); $tMap->addColumn('PLUGIN_ATTRIBUTES', 'PluginAttributes', 'string', CreoleTypes::LONGVARCHAR, false, null); diff --git a/workflow/engine/classes/model/om/BasePluginsRegistry.php b/workflow/engine/classes/model/om/BasePluginsRegistry.php index a3e4d77b8..5a3d466db 100644 --- a/workflow/engine/classes/model/om/BasePluginsRegistry.php +++ b/workflow/engine/classes/model/om/BasePluginsRegistry.php @@ -159,6 +159,12 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent */ protected $plugin_rest_service; + /** + * The value for the plugin_cron_files field. + * @var string + */ + protected $plugin_cron_files; + /** * The value for the plugin_task_extended_properties field. * @var string @@ -427,6 +433,17 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent return $this->plugin_rest_service; } + /** + * Get the [plugin_cron_files] column value. + * + * @return string + */ + public function getPluginCronFiles() + { + + return $this->plugin_cron_files; + } + /** * Get the [plugin_task_extended_properties] column value. * @@ -933,6 +950,28 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent } // setPluginRestService() + /** + * Set the value of [plugin_cron_files] column. + * + * @param string $v new value + * @return void + */ + public function setPluginCronFiles($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->plugin_cron_files !== $v) { + $this->plugin_cron_files = $v; + $this->modifiedColumns[] = PluginsRegistryPeer::PLUGIN_CRON_FILES; + } + + } // setPluginCronFiles() + /** * Set the value of [plugin_task_extended_properties] column. * @@ -1038,16 +1077,18 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent $this->plugin_rest_service = $rs->getString($startcol + 21); - $this->plugin_task_extended_properties = $rs->getString($startcol + 22); + $this->plugin_cron_files = $rs->getString($startcol + 22); - $this->plugin_attributes = $rs->getString($startcol + 23); + $this->plugin_task_extended_properties = $rs->getString($startcol + 23); + + $this->plugin_attributes = $rs->getString($startcol + 24); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 24; // 24 = PluginsRegistryPeer::NUM_COLUMNS - PluginsRegistryPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 25; // 25 = PluginsRegistryPeer::NUM_COLUMNS - PluginsRegistryPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating PluginsRegistry object", $e); @@ -1318,9 +1359,12 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent return $this->getPluginRestService(); break; case 22: - return $this->getPluginTaskExtendedProperties(); + return $this->getPluginCronFiles(); break; case 23: + return $this->getPluginTaskExtendedProperties(); + break; + case 24: return $this->getPluginAttributes(); break; default: @@ -1365,8 +1409,9 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent $keys[19] => $this->getPluginCss(), $keys[20] => $this->getPluginJs(), $keys[21] => $this->getPluginRestService(), - $keys[22] => $this->getPluginTaskExtendedProperties(), - $keys[23] => $this->getPluginAttributes(), + $keys[22] => $this->getPluginCronFiles(), + $keys[23] => $this->getPluginTaskExtendedProperties(), + $keys[24] => $this->getPluginAttributes(), ); return $result; } @@ -1465,9 +1510,12 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent $this->setPluginRestService($value); break; case 22: - $this->setPluginTaskExtendedProperties($value); + $this->setPluginCronFiles($value); break; case 23: + $this->setPluginTaskExtendedProperties($value); + break; + case 24: $this->setPluginAttributes($value); break; } // switch() @@ -1582,11 +1630,15 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent } if (array_key_exists($keys[22], $arr)) { - $this->setPluginTaskExtendedProperties($arr[$keys[22]]); + $this->setPluginCronFiles($arr[$keys[22]]); } if (array_key_exists($keys[23], $arr)) { - $this->setPluginAttributes($arr[$keys[23]]); + $this->setPluginTaskExtendedProperties($arr[$keys[23]]); + } + + if (array_key_exists($keys[24], $arr)) { + $this->setPluginAttributes($arr[$keys[24]]); } } @@ -1688,6 +1740,10 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent $criteria->add(PluginsRegistryPeer::PLUGIN_REST_SERVICE, $this->plugin_rest_service); } + if ($this->isColumnModified(PluginsRegistryPeer::PLUGIN_CRON_FILES)) { + $criteria->add(PluginsRegistryPeer::PLUGIN_CRON_FILES, $this->plugin_cron_files); + } + if ($this->isColumnModified(PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES)) { $criteria->add(PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES, $this->plugin_task_extended_properties); } @@ -1792,6 +1848,8 @@ abstract class BasePluginsRegistry extends BaseObject implements Persistent $copyObj->setPluginRestService($this->plugin_rest_service); + $copyObj->setPluginCronFiles($this->plugin_cron_files); + $copyObj->setPluginTaskExtendedProperties($this->plugin_task_extended_properties); $copyObj->setPluginAttributes($this->plugin_attributes); diff --git a/workflow/engine/classes/model/om/BasePluginsRegistryPeer.php b/workflow/engine/classes/model/om/BasePluginsRegistryPeer.php index f6c8814a7..47f9954dc 100644 --- a/workflow/engine/classes/model/om/BasePluginsRegistryPeer.php +++ b/workflow/engine/classes/model/om/BasePluginsRegistryPeer.php @@ -25,7 +25,7 @@ abstract class BasePluginsRegistryPeer const CLASS_DEFAULT = 'classes.model.PluginsRegistry'; /** The total number of columns. */ - const NUM_COLUMNS = 24; + const NUM_COLUMNS = 25; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -97,6 +97,9 @@ abstract class BasePluginsRegistryPeer /** the column name for the PLUGIN_REST_SERVICE field */ const PLUGIN_REST_SERVICE = 'PLUGINS_REGISTRY.PLUGIN_REST_SERVICE'; + /** the column name for the PLUGIN_CRON_FILES field */ + const PLUGIN_CRON_FILES = 'PLUGINS_REGISTRY.PLUGIN_CRON_FILES'; + /** the column name for the PLUGIN_TASK_EXTENDED_PROPERTIES field */ const PLUGIN_TASK_EXTENDED_PROPERTIES = 'PLUGINS_REGISTRY.PLUGIN_TASK_EXTENDED_PROPERTIES'; @@ -114,10 +117,10 @@ abstract class BasePluginsRegistryPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('PrUid', 'PluginNamespace', 'PluginDescription', 'PluginClassName', 'PluginFriendlyName', 'PluginFile', 'PluginFolder', 'PluginSetupPage', 'PluginCompanyLogo', 'PluginWorkspaces', 'PluginVersion', 'PluginEnable', 'PluginPrivate', 'PluginMenus', 'PluginFolders', 'PluginTriggers', 'PluginPmFunctions', 'PluginRedirectLogin', 'PluginSteps', 'PluginCss', 'PluginJs', 'PluginRestService', 'PluginTaskExtendedProperties', 'PluginAttributes', ), - BasePeer::TYPE_COLNAME => array (PluginsRegistryPeer::PR_UID, PluginsRegistryPeer::PLUGIN_NAMESPACE, PluginsRegistryPeer::PLUGIN_DESCRIPTION, PluginsRegistryPeer::PLUGIN_CLASS_NAME, PluginsRegistryPeer::PLUGIN_FRIENDLY_NAME, PluginsRegistryPeer::PLUGIN_FILE, PluginsRegistryPeer::PLUGIN_FOLDER, PluginsRegistryPeer::PLUGIN_SETUP_PAGE, PluginsRegistryPeer::PLUGIN_COMPANY_LOGO, PluginsRegistryPeer::PLUGIN_WORKSPACES, PluginsRegistryPeer::PLUGIN_VERSION, PluginsRegistryPeer::PLUGIN_ENABLE, PluginsRegistryPeer::PLUGIN_PRIVATE, PluginsRegistryPeer::PLUGIN_MENUS, PluginsRegistryPeer::PLUGIN_FOLDERS, PluginsRegistryPeer::PLUGIN_TRIGGERS, PluginsRegistryPeer::PLUGIN_PM_FUNCTIONS, PluginsRegistryPeer::PLUGIN_REDIRECT_LOGIN, PluginsRegistryPeer::PLUGIN_STEPS, PluginsRegistryPeer::PLUGIN_CSS, PluginsRegistryPeer::PLUGIN_JS, PluginsRegistryPeer::PLUGIN_REST_SERVICE, PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES, PluginsRegistryPeer::PLUGIN_ATTRIBUTES, ), - BasePeer::TYPE_FIELDNAME => array ('PR_UID', 'PLUGIN_NAMESPACE', 'PLUGIN_DESCRIPTION', 'PLUGIN_CLASS_NAME', 'PLUGIN_FRIENDLY_NAME', 'PLUGIN_FILE', 'PLUGIN_FOLDER', 'PLUGIN_SETUP_PAGE', 'PLUGIN_COMPANY_LOGO', 'PLUGIN_WORKSPACES', 'PLUGIN_VERSION', 'PLUGIN_ENABLE', 'PLUGIN_PRIVATE', 'PLUGIN_MENUS', 'PLUGIN_FOLDERS', 'PLUGIN_TRIGGERS', 'PLUGIN_PM_FUNCTIONS', 'PLUGIN_REDIRECT_LOGIN', 'PLUGIN_STEPS', 'PLUGIN_CSS', 'PLUGIN_JS', 'PLUGIN_REST_SERVICE', 'PLUGIN_TASK_EXTENDED_PROPERTIES', 'PLUGIN_ATTRIBUTES', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) + BasePeer::TYPE_PHPNAME => array ('PrUid', 'PluginNamespace', 'PluginDescription', 'PluginClassName', 'PluginFriendlyName', 'PluginFile', 'PluginFolder', 'PluginSetupPage', 'PluginCompanyLogo', 'PluginWorkspaces', 'PluginVersion', 'PluginEnable', 'PluginPrivate', 'PluginMenus', 'PluginFolders', 'PluginTriggers', 'PluginPmFunctions', 'PluginRedirectLogin', 'PluginSteps', 'PluginCss', 'PluginJs', 'PluginRestService', 'PluginCronFiles', 'PluginTaskExtendedProperties', 'PluginAttributes', ), + BasePeer::TYPE_COLNAME => array (PluginsRegistryPeer::PR_UID, PluginsRegistryPeer::PLUGIN_NAMESPACE, PluginsRegistryPeer::PLUGIN_DESCRIPTION, PluginsRegistryPeer::PLUGIN_CLASS_NAME, PluginsRegistryPeer::PLUGIN_FRIENDLY_NAME, PluginsRegistryPeer::PLUGIN_FILE, PluginsRegistryPeer::PLUGIN_FOLDER, PluginsRegistryPeer::PLUGIN_SETUP_PAGE, PluginsRegistryPeer::PLUGIN_COMPANY_LOGO, PluginsRegistryPeer::PLUGIN_WORKSPACES, PluginsRegistryPeer::PLUGIN_VERSION, PluginsRegistryPeer::PLUGIN_ENABLE, PluginsRegistryPeer::PLUGIN_PRIVATE, PluginsRegistryPeer::PLUGIN_MENUS, PluginsRegistryPeer::PLUGIN_FOLDERS, PluginsRegistryPeer::PLUGIN_TRIGGERS, PluginsRegistryPeer::PLUGIN_PM_FUNCTIONS, PluginsRegistryPeer::PLUGIN_REDIRECT_LOGIN, PluginsRegistryPeer::PLUGIN_STEPS, PluginsRegistryPeer::PLUGIN_CSS, PluginsRegistryPeer::PLUGIN_JS, PluginsRegistryPeer::PLUGIN_REST_SERVICE, PluginsRegistryPeer::PLUGIN_CRON_FILES, PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES, PluginsRegistryPeer::PLUGIN_ATTRIBUTES, ), + BasePeer::TYPE_FIELDNAME => array ('PR_UID', 'PLUGIN_NAMESPACE', 'PLUGIN_DESCRIPTION', 'PLUGIN_CLASS_NAME', 'PLUGIN_FRIENDLY_NAME', 'PLUGIN_FILE', 'PLUGIN_FOLDER', 'PLUGIN_SETUP_PAGE', 'PLUGIN_COMPANY_LOGO', 'PLUGIN_WORKSPACES', 'PLUGIN_VERSION', 'PLUGIN_ENABLE', 'PLUGIN_PRIVATE', 'PLUGIN_MENUS', 'PLUGIN_FOLDERS', 'PLUGIN_TRIGGERS', 'PLUGIN_PM_FUNCTIONS', 'PLUGIN_REDIRECT_LOGIN', 'PLUGIN_STEPS', 'PLUGIN_CSS', 'PLUGIN_JS', 'PLUGIN_REST_SERVICE', 'PLUGIN_CRON_FILES', 'PLUGIN_TASK_EXTENDED_PROPERTIES', 'PLUGIN_ATTRIBUTES', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) ); /** @@ -127,10 +130,10 @@ abstract class BasePluginsRegistryPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('PrUid' => 0, 'PluginNamespace' => 1, 'PluginDescription' => 2, 'PluginClassName' => 3, 'PluginFriendlyName' => 4, 'PluginFile' => 5, 'PluginFolder' => 6, 'PluginSetupPage' => 7, 'PluginCompanyLogo' => 8, 'PluginWorkspaces' => 9, 'PluginVersion' => 10, 'PluginEnable' => 11, 'PluginPrivate' => 12, 'PluginMenus' => 13, 'PluginFolders' => 14, 'PluginTriggers' => 15, 'PluginPmFunctions' => 16, 'PluginRedirectLogin' => 17, 'PluginSteps' => 18, 'PluginCss' => 19, 'PluginJs' => 20, 'PluginRestService' => 21, 'PluginTaskExtendedProperties' => 22, 'PluginAttributes' => 23, ), - BasePeer::TYPE_COLNAME => array (PluginsRegistryPeer::PR_UID => 0, PluginsRegistryPeer::PLUGIN_NAMESPACE => 1, PluginsRegistryPeer::PLUGIN_DESCRIPTION => 2, PluginsRegistryPeer::PLUGIN_CLASS_NAME => 3, PluginsRegistryPeer::PLUGIN_FRIENDLY_NAME => 4, PluginsRegistryPeer::PLUGIN_FILE => 5, PluginsRegistryPeer::PLUGIN_FOLDER => 6, PluginsRegistryPeer::PLUGIN_SETUP_PAGE => 7, PluginsRegistryPeer::PLUGIN_COMPANY_LOGO => 8, PluginsRegistryPeer::PLUGIN_WORKSPACES => 9, PluginsRegistryPeer::PLUGIN_VERSION => 10, PluginsRegistryPeer::PLUGIN_ENABLE => 11, PluginsRegistryPeer::PLUGIN_PRIVATE => 12, PluginsRegistryPeer::PLUGIN_MENUS => 13, PluginsRegistryPeer::PLUGIN_FOLDERS => 14, PluginsRegistryPeer::PLUGIN_TRIGGERS => 15, PluginsRegistryPeer::PLUGIN_PM_FUNCTIONS => 16, PluginsRegistryPeer::PLUGIN_REDIRECT_LOGIN => 17, PluginsRegistryPeer::PLUGIN_STEPS => 18, PluginsRegistryPeer::PLUGIN_CSS => 19, PluginsRegistryPeer::PLUGIN_JS => 20, PluginsRegistryPeer::PLUGIN_REST_SERVICE => 21, PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES => 22, PluginsRegistryPeer::PLUGIN_ATTRIBUTES => 23, ), - BasePeer::TYPE_FIELDNAME => array ('PR_UID' => 0, 'PLUGIN_NAMESPACE' => 1, 'PLUGIN_DESCRIPTION' => 2, 'PLUGIN_CLASS_NAME' => 3, 'PLUGIN_FRIENDLY_NAME' => 4, 'PLUGIN_FILE' => 5, 'PLUGIN_FOLDER' => 6, 'PLUGIN_SETUP_PAGE' => 7, 'PLUGIN_COMPANY_LOGO' => 8, 'PLUGIN_WORKSPACES' => 9, 'PLUGIN_VERSION' => 10, 'PLUGIN_ENABLE' => 11, 'PLUGIN_PRIVATE' => 12, 'PLUGIN_MENUS' => 13, 'PLUGIN_FOLDERS' => 14, 'PLUGIN_TRIGGERS' => 15, 'PLUGIN_PM_FUNCTIONS' => 16, 'PLUGIN_REDIRECT_LOGIN' => 17, 'PLUGIN_STEPS' => 18, 'PLUGIN_CSS' => 19, 'PLUGIN_JS' => 20, 'PLUGIN_REST_SERVICE' => 21, 'PLUGIN_TASK_EXTENDED_PROPERTIES' => 22, 'PLUGIN_ATTRIBUTES' => 23, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) + BasePeer::TYPE_PHPNAME => array ('PrUid' => 0, 'PluginNamespace' => 1, 'PluginDescription' => 2, 'PluginClassName' => 3, 'PluginFriendlyName' => 4, 'PluginFile' => 5, 'PluginFolder' => 6, 'PluginSetupPage' => 7, 'PluginCompanyLogo' => 8, 'PluginWorkspaces' => 9, 'PluginVersion' => 10, 'PluginEnable' => 11, 'PluginPrivate' => 12, 'PluginMenus' => 13, 'PluginFolders' => 14, 'PluginTriggers' => 15, 'PluginPmFunctions' => 16, 'PluginRedirectLogin' => 17, 'PluginSteps' => 18, 'PluginCss' => 19, 'PluginJs' => 20, 'PluginRestService' => 21, 'PluginCronFiles' => 22, 'PluginTaskExtendedProperties' => 23, 'PluginAttributes' => 24, ), + BasePeer::TYPE_COLNAME => array (PluginsRegistryPeer::PR_UID => 0, PluginsRegistryPeer::PLUGIN_NAMESPACE => 1, PluginsRegistryPeer::PLUGIN_DESCRIPTION => 2, PluginsRegistryPeer::PLUGIN_CLASS_NAME => 3, PluginsRegistryPeer::PLUGIN_FRIENDLY_NAME => 4, PluginsRegistryPeer::PLUGIN_FILE => 5, PluginsRegistryPeer::PLUGIN_FOLDER => 6, PluginsRegistryPeer::PLUGIN_SETUP_PAGE => 7, PluginsRegistryPeer::PLUGIN_COMPANY_LOGO => 8, PluginsRegistryPeer::PLUGIN_WORKSPACES => 9, PluginsRegistryPeer::PLUGIN_VERSION => 10, PluginsRegistryPeer::PLUGIN_ENABLE => 11, PluginsRegistryPeer::PLUGIN_PRIVATE => 12, PluginsRegistryPeer::PLUGIN_MENUS => 13, PluginsRegistryPeer::PLUGIN_FOLDERS => 14, PluginsRegistryPeer::PLUGIN_TRIGGERS => 15, PluginsRegistryPeer::PLUGIN_PM_FUNCTIONS => 16, PluginsRegistryPeer::PLUGIN_REDIRECT_LOGIN => 17, PluginsRegistryPeer::PLUGIN_STEPS => 18, PluginsRegistryPeer::PLUGIN_CSS => 19, PluginsRegistryPeer::PLUGIN_JS => 20, PluginsRegistryPeer::PLUGIN_REST_SERVICE => 21, PluginsRegistryPeer::PLUGIN_CRON_FILES => 22, PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES => 23, PluginsRegistryPeer::PLUGIN_ATTRIBUTES => 24, ), + BasePeer::TYPE_FIELDNAME => array ('PR_UID' => 0, 'PLUGIN_NAMESPACE' => 1, 'PLUGIN_DESCRIPTION' => 2, 'PLUGIN_CLASS_NAME' => 3, 'PLUGIN_FRIENDLY_NAME' => 4, 'PLUGIN_FILE' => 5, 'PLUGIN_FOLDER' => 6, 'PLUGIN_SETUP_PAGE' => 7, 'PLUGIN_COMPANY_LOGO' => 8, 'PLUGIN_WORKSPACES' => 9, 'PLUGIN_VERSION' => 10, 'PLUGIN_ENABLE' => 11, 'PLUGIN_PRIVATE' => 12, 'PLUGIN_MENUS' => 13, 'PLUGIN_FOLDERS' => 14, 'PLUGIN_TRIGGERS' => 15, 'PLUGIN_PM_FUNCTIONS' => 16, 'PLUGIN_REDIRECT_LOGIN' => 17, 'PLUGIN_STEPS' => 18, 'PLUGIN_CSS' => 19, 'PLUGIN_JS' => 20, 'PLUGIN_REST_SERVICE' => 21, 'PLUGIN_CRON_FILES' => 22, 'PLUGIN_TASK_EXTENDED_PROPERTIES' => 23, 'PLUGIN_ATTRIBUTES' => 24, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) ); /** @@ -275,6 +278,8 @@ abstract class BasePluginsRegistryPeer $criteria->addSelectColumn(PluginsRegistryPeer::PLUGIN_REST_SERVICE); + $criteria->addSelectColumn(PluginsRegistryPeer::PLUGIN_CRON_FILES); + $criteria->addSelectColumn(PluginsRegistryPeer::PLUGIN_TASK_EXTENDED_PROPERTIES); $criteria->addSelectColumn(PluginsRegistryPeer::PLUGIN_ATTRIBUTES); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 535c5b295..d1f220a62 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -5677,7 +5677,6 @@ - @@ -5739,6 +5738,7 @@ +
diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index ee9e2b359..80e48a228 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -3181,6 +3181,7 @@ CREATE TABLE `PLUGINS_REGISTRY` `PLUGIN_CSS` MEDIUMTEXT, `PLUGIN_JS` MEDIUMTEXT, `PLUGIN_REST_SERVICE` MEDIUMTEXT, + `PLUGIN_CRON_FILES` MEDIUMTEXT, `PLUGIN_TASK_EXTENDED_PROPERTIES` MEDIUMTEXT, `PLUGIN_ATTRIBUTES` MEDIUMTEXT, PRIMARY KEY (`PR_UID`) diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index c6a8c0db6..6488c1631 100644 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -1127,9 +1127,9 @@ try { $sNamespace = ''; $sStepName = ''; foreach ($externalSteps as $key => $val) { - if ($val->sStepId == $_GET['UID']) { - $sNamespace = $val->sNamespace; - $sStepName = $val->sStepName; + if ($val->getStepId() == $_GET['UID']) { + $sNamespace = $val->getNamespace(); + $sStepName = $val->getStepName(); } } diff --git a/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php b/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php index 9d95a1786..f02a66b25 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php +++ b/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php @@ -90,6 +90,7 @@ class PluginAdapter '_aJavascripts' => ['name' => 'PLUGIN_JS', 'type' => 'array'], '_aJs' => ['name' => 'PLUGIN_JS', 'type' => 'array'], '_restServices' => ['name' => 'PLUGIN_REST_SERVICE', 'type' => 'array'], + '_aCronFiles' => ['name' => 'PLUGIN_CRON_FILES', 'type' => 'array'], '_aTaskExtendedProperties' => ['name' => 'PLUGIN_TASK_EXTENDED_PROPERTIES', 'type' => 'array'], ]; diff --git a/workflow/engine/src/ProcessMaker/Plugins/Interfaces/CronFile.php b/workflow/engine/src/ProcessMaker/Plugins/Interfaces/CronFile.php index bce110c6d..ca4db7a57 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/Interfaces/CronFile.php +++ b/workflow/engine/src/ProcessMaker/Plugins/Interfaces/CronFile.php @@ -53,4 +53,24 @@ class CronFile { return $CronFile == $this->CronFile; } + + /** + * Get plugin name + * + * @return string + */ + public function getNamespace() + { + return $this->Namespace; + } + + /** + * Get Cron file + * + * @return string + */ + public function getCronFile() + { + return $this->CronFile; + } } diff --git a/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php b/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php index 1dd08cfd0..c571a6e0e 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php +++ b/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php @@ -1354,22 +1354,23 @@ class PluginRegistry /** * Register a cron file - * @param string $Namespace Name of Plugin - * @param string $CronFile + * @param string $pluginName Name of Plugin + * @param string $cronFileToRegister */ - public function registerCronFile($Namespace, $CronFile) + public function registerCronFile($pluginName, $cronFileToRegister) { $found = false; /** @var CronFile $cronFile */ foreach ($this->_aCronFiles as $cronFile) { - if ($cronFile->equalCronFileTo($CronFile) && $cronFile->equalNamespaceTo($Namespace)) { - $cronFile->setCronFile($CronFile); + if ($cronFile instanceof CronFile && + $cronFile->equalNamespaceTo($pluginName) && + $cronFile->equalCronFileTo($cronFileToRegister)) { + $cronFile->setCronFile($cronFileToRegister); $found = true; } } if (!$found) { - $CronFile = new CronFile($Namespace, $CronFile); - $this->_aCronFiles[] = $CronFile; + $this->_aCronFiles[] = new CronFile($pluginName, $cronFileToRegister); } } diff --git a/workflow/engine/src/ProcessMaker/Plugins/Traits/PluginStructure.php b/workflow/engine/src/ProcessMaker/Plugins/Traits/PluginStructure.php index bfd03254c..1d6c5cd38 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/Traits/PluginStructure.php +++ b/workflow/engine/src/ProcessMaker/Plugins/Traits/PluginStructure.php @@ -5,6 +5,7 @@ namespace ProcessMaker\Plugins\Traits; use BasePeer; use G; use PluginsRegistry; +use ProcessMaker\Plugins\Interfaces\CronFile; use ProcessMaker\Plugins\Interfaces\CssFile; use ProcessMaker\Plugins\Interfaces\FolderDetail; use ProcessMaker\Plugins\Interfaces\JsFile; @@ -116,6 +117,7 @@ trait PluginStructure $this->buildCss(G::json_decode($plugin['PluginCss'], true)); $this->buildJs(G::json_decode($plugin['PluginJs'], true)); $this->buildRestService(G::json_decode($plugin['PluginRestService'], true)); + $this->buildCronFiles($plugin['PluginNamespace'], G::json_decode($plugin['PluginCronFiles'], true)); $this->buildAttributes($plugin['PluginNamespace'], G::json_decode($plugin['PluginAttributes'])); } } @@ -261,6 +263,23 @@ trait PluginStructure $this->_restServices = array_merge($this->_restServices, $restServices); } + /** + * Builds an array with the Cron Files configurations and set to the respective attribute + * + * @param string $pluginName + * @param array $cronFilesToAdd + */ + private function buildCronFiles($pluginName, $cronFilesToAdd) + { + $cronFiles = []; + if ($cronFilesToAdd) { + foreach ($cronFilesToAdd as $cronFile) { + $cronFiles[] = new CronFile($pluginName, $cronFile['CronFile']); + } + } + $this->_aCronFiles = array_merge($this->_aCronFiles, $cronFiles); + } + /** * Build other properties that are not considered in the schema of the table * @param string $namespace diff --git a/workflow/public_html/pmGmail/sso.php b/workflow/public_html/pmGmail/sso.php index 346c6a701..03da58904 100644 --- a/workflow/public_html/pmGmail/sso.php +++ b/workflow/public_html/pmGmail/sso.php @@ -1,5 +1,7 @@ error->message); } //getting the enviroment $enviroment = $decodedResp->enviroment; -if(count($decodedResp->user) > 1){ - echo Bootstrap::LoadTranslation( 'ID_EMAIL_MORE_THAN_ONE_USER' ); +if (count($decodedResp->user) > 1) { + echo Bootstrap::LoadTranslation('ID_EMAIL_MORE_THAN_ONE_USER'); die; -} else if(count($decodedResp->user) < 1){ - echo Bootstrap::LoadTranslation( 'ID_USER_NOT_FOUND' ); +} else if (count($decodedResp->user) < 1) { + echo Bootstrap::LoadTranslation('ID_USER_NOT_FOUND'); die; } //validationg if there is an actual PM session -if( !isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp->user['0']->USR_UID){ - $url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='.$gmailToken; +if (!isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp->user['0']->USR_UID) { + $url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=' . $gmailToken; // init curl object $ch = curl_init(); // define options $optArray = array( - CURLOPT_URL => $url, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_SSL_VERIFYPEER => false, - CURLOPT_SSL_VERIFYHOST => false + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_SSL_VERIFYHOST => false ); // apply those options curl_setopt_array($ch, $optArray); @@ -88,9 +90,9 @@ if( !isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp curl_close($ch); //First validate if this user (mail) corresponds to a PM user - if(isset($response->email) && ($gmail == $response->email)){ + if (isset($response->email) && ($gmail == $response->email)) { //If the email corresponds I get the username and with the gmail user_id the session is created. - if($decodedResp->user['0']->USR_STATUS == "ACTIVE"){ + if ($decodedResp->user['0']->USR_STATUS == "ACTIVE") { //User Active! lets create the Session @session_destroy(); session_start(); @@ -109,28 +111,27 @@ if( !isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp $_SESSION['USERNAME_PREVIOUS1'] = $decodedResp->user['0']->USR_USERNAME; $_SESSION['USERNAME_PREVIOUS2'] = $decodedResp->user['0']->USR_USERNAME; $_SESSION['WORKSPACE'] = $pmws; - $_SESSION['USR_FULLNAME'] = $decodedResp->user['0']->USR_FIRSTNAME. ' ' .$decodedResp->user['0']->USR_LASTNAME; + $_SESSION['USR_FULLNAME'] = $decodedResp->user['0']->USR_FIRSTNAME . ' ' . $decodedResp->user['0']->USR_LASTNAME; $_SESSION['__sw__'] = 1; initUserSession( - $decodedResp->user['0']->USR_UID, - $decodedResp->user['0']->USR_USERNAME + $decodedResp->user['0']->USR_UID, $decodedResp->user['0']->USR_USERNAME ); //session created } else { - echo Bootstrap::LoadTranslation( 'ID_USER_NOT_ACTIVE' ); + echo Bootstrap::LoadTranslation('ID_USER_NOT_ACTIVE'); die; } } else { - echo Bootstrap::LoadTranslation( 'ID_USER_DOES_NOT_CORRESPOND' ); + echo Bootstrap::LoadTranslation('ID_USER_DOES_NOT_CORRESPOND'); die; } } -$_SESSION['server'] = 'https://' . $server . '/sys'. $pmws .'/en/'.$enviroment.'/'; -$_SESSION['PMCase'] = 'cases/cases_Open?APP_UID='.$appUid.'&DEL_INDEX='.$delIndex.'&action='.$action.'&gmail=1'; +$_SESSION['server'] = 'https://' . $server . '/sys' . $pmws . '/en/' . $enviroment . '/'; +$_SESSION['PMCase'] = 'cases/cases_Open?APP_UID=' . $appUid . '&DEL_INDEX=' . $delIndex . '&action=' . $action . '&gmail=1'; $_SESSION['PMProcessmap'] = 'designer?prj_uid=' . $proUid . '&prj_readonly=true&app_uid=' . $appUid; $_SESSION['PMUploadedDocuments'] = 'cases/ajaxListener?action=uploadedDocuments'; $_SESSION['PMGeneratedDocuments'] = 'cases/casesGenerateDocumentPage_Ajax.php?actionAjax=casesGenerateDocumentPage'; -header( 'location:' . 'templateForm.php' ); +header('location:' . 'templateForm.php');