From f33f59b3ececdfc9d8dbfa91daac3f888e94d734 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Thu, 10 Jan 2019 15:26:21 +0100 Subject: [PATCH 01/13] Gitflow config file --- .gitflow | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitflow diff --git a/.gitflow b/.gitflow new file mode 100644 index 0000000000..44adde7837 --- /dev/null +++ b/.gitflow @@ -0,0 +1,9 @@ +[gitflow "branch"] +master = master +develop = develop +[gitflow "prefix"] +feature = feature/ +release = release/ +hotfix = hotfix/ +versiontag = +support = support/ \ No newline at end of file From b2bd5bac759db83d5d6d04cfc042dd9e35a7a422 Mon Sep 17 00:00:00 2001 From: bruno DA SILVA Date: Tue, 15 Jan 2019 17:22:36 +0100 Subject: [PATCH 02/13] :page_facing_up: Add Combodo license --- .gitignore | 1 + datamodel.combodo-notify-on-expiration.xml | 4 ++++ de.dict.combodo-notify-on-expiration.php | 18 +++--------------- en.dict.combodo-notify-on-expiration.php | 18 +++--------------- fr.dict.combodo-notify-on-expiration.php | 20 ++++---------------- main.combodo-notify-on-expiration.php | 20 +++----------------- module.combodo-notify-on-expiration.php | 20 ++++++-------------- triggerexpirationrule.class.inc.php | 20 ++++---------------- 8 files changed, 28 insertions(+), 93 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..723ef36f4e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/datamodel.combodo-notify-on-expiration.xml b/datamodel.combodo-notify-on-expiration.xml index 16193c7807..56c449203f 100644 --- a/datamodel.combodo-notify-on-expiration.xml +++ b/datamodel.combodo-notify-on-expiration.xml @@ -1,4 +1,8 @@ + diff --git a/de.dict.combodo-notify-on-expiration.php b/de.dict.combodo-notify-on-expiration.php index 408b273cbc..d59183fb38 100644 --- a/de.dict.combodo-notify-on-expiration.php +++ b/de.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ExpirationRule diff --git a/en.dict.combodo-notify-on-expiration.php b/en.dict.combodo-notify-on-expiration.php index d9f0ae5f41..a687f92761 100644 --- a/en.dict.combodo-notify-on-expiration.php +++ b/en.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ExpirationRule diff --git a/fr.dict.combodo-notify-on-expiration.php b/fr.dict.combodo-notify-on-expiration.php index 9916c99c31..0782200f5f 100644 --- a/fr.dict.combodo-notify-on-expiration.php +++ b/fr.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ClosingRule @@ -74,5 +62,5 @@ Dict::Add('FR FR', 'French', 'Français', array( 'Class:TriggerOnExpirationRule' => 'Déclencheur sur préavis atteint', 'Class:TriggerOnExpirationRule+' => 'Déclencheur activé lorsqu\'une régle de préavis est applicable à l\'objet', - + )); diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index b28db9825d..a6b42b4376 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -1,29 +1,15 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ diff --git a/module.combodo-notify-on-expiration.php b/module.combodo-notify-on-expiration.php index 2f09b61617..0c3ed7ca34 100644 --- a/module.combodo-notify-on-expiration.php +++ b/module.combodo-notify-on-expiration.php @@ -1,18 +1,10 @@ Date: Tue, 15 Jan 2019 17:22:36 +0100 Subject: [PATCH 03/13] :page_facing_up: Add Combodo license --- .gitignore | 1 + datamodel.combodo-notify-on-expiration.xml | 4 ++++ de.dict.combodo-notify-on-expiration.php | 18 +++------------ en.dict.combodo-notify-on-expiration.php | 18 +++------------ fr.dict.combodo-notify-on-expiration.php | 20 ++++------------ license.combodo-notify-on-expiration.xml | 27 ++++++++++++++++++++++ main.combodo-notify-on-expiration.php | 20 +++------------- module.combodo-notify-on-expiration.php | 20 +++++----------- triggerexpirationrule.class.inc.php | 20 ++++------------ 9 files changed, 55 insertions(+), 93 deletions(-) create mode 100644 .gitignore create mode 100644 license.combodo-notify-on-expiration.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..723ef36f4e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/datamodel.combodo-notify-on-expiration.xml b/datamodel.combodo-notify-on-expiration.xml index 16193c7807..56c449203f 100644 --- a/datamodel.combodo-notify-on-expiration.xml +++ b/datamodel.combodo-notify-on-expiration.xml @@ -1,4 +1,8 @@ + diff --git a/de.dict.combodo-notify-on-expiration.php b/de.dict.combodo-notify-on-expiration.php index 408b273cbc..d59183fb38 100644 --- a/de.dict.combodo-notify-on-expiration.php +++ b/de.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ExpirationRule diff --git a/en.dict.combodo-notify-on-expiration.php b/en.dict.combodo-notify-on-expiration.php index d9f0ae5f41..a687f92761 100644 --- a/en.dict.combodo-notify-on-expiration.php +++ b/en.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ExpirationRule diff --git a/fr.dict.combodo-notify-on-expiration.php b/fr.dict.combodo-notify-on-expiration.php index 9916c99c31..0782200f5f 100644 --- a/fr.dict.combodo-notify-on-expiration.php +++ b/fr.dict.combodo-notify-on-expiration.php @@ -1,28 +1,16 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ // ClosingRule @@ -74,5 +62,5 @@ Dict::Add('FR FR', 'French', 'Français', array( 'Class:TriggerOnExpirationRule' => 'Déclencheur sur préavis atteint', 'Class:TriggerOnExpirationRule+' => 'Déclencheur activé lorsqu\'une régle de préavis est applicable à l\'objet', - + )); diff --git a/license.combodo-notify-on-expiration.xml b/license.combodo-notify-on-expiration.xml new file mode 100644 index 0000000000..054cbab8ea --- /dev/null +++ b/license.combodo-notify-on-expiration.xml @@ -0,0 +1,27 @@ + + + + Notify on expiration + 2010-2019 Combodo SARL + Combodo Software License + Combodo Software License +

Version 1.0

+

Copyright (c) 2018 Combodo SARL. All rights reserved.

+

Redistribution and use in source and binary forms, with or without modification, of this software is permitted provided that the following conditions are met:

+
    +
  1. Combodo grants you a non-exclusive, non-sublicensable and non-transferable license to install and use the software for your own business purposes, in accordance with this agreement, the documentation and all laws.
  2. +
  3. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  4. +
  5. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  6. +
  7. The redistribution of the software covered by this license is limited to the individual or the company who purchased the software and its affiliates.
  8. +
  9. You cannot rent, lease, distribute, sell, sublicense, or transfer the software.
  10. +
  11. The use of the software is limited to only one set of production data (i.e. only one instance of iTop managing production data).
  12. +
  13. In the context of this license, the interaction with the installed software across a computer network is not considered as a redistribution.
  14. +
  15. Combodo SARL may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number.
  16. +Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by Combodo SARL. No one other than Combodo SARL has the right to modify the terms applicable to covered code created under this License. +
+

THIS SOFTWARE IS PROVIDED BY COMBODO SARL “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COMBODO SARL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +For more information on Combodo SARL, please see https://www.combodo.com.

+]]>
+
+
\ No newline at end of file diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index b28db9825d..a6b42b4376 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -1,29 +1,15 @@ * @author Romain Quetiez * @author Denis Flaven * @author Guillaume Lajarige * @author Vincent Dumas - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ diff --git a/module.combodo-notify-on-expiration.php b/module.combodo-notify-on-expiration.php index 2f09b61617..0c3ed7ca34 100644 --- a/module.combodo-notify-on-expiration.php +++ b/module.combodo-notify-on-expiration.php @@ -1,18 +1,10 @@ Date: Wed, 16 Jan 2019 16:02:21 +0100 Subject: [PATCH 04/13] :bookmark: Change develop module version (0.1.0 to 1.0.0) --- module.combodo-notify-on-expiration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module.combodo-notify-on-expiration.php b/module.combodo-notify-on-expiration.php index 0c3ed7ca34..9f3f1f515c 100644 --- a/module.combodo-notify-on-expiration.php +++ b/module.combodo-notify-on-expiration.php @@ -8,7 +8,7 @@ SetupWebPage::AddModule( __FILE__, // Path to the current file, all other file names are relative to the directory containing this file - 'combodo-notify-on-expiration/0.1.0', + 'combodo-notify-on-expiration/1.0.0', array( // Identification // From ea4870e226051bc71fcf8b50dbea4ce3ad91a3cf Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Wed, 16 Jan 2019 16:49:26 +0100 Subject: [PATCH 05/13] :see_no_evil: update PHP Storm ignore rule --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 723ef36f4e..e68d15f7c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.idea \ No newline at end of file +/.idea/** \ No newline at end of file From 1b1ba860d2f854228f5394c80118c03e9f081f0f Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Wed, 16 Jan 2019 16:41:39 +0100 Subject: [PATCH 06/13] :art: Change line endings from CrLf to Lf --- de.dict.combodo-notify-on-expiration.php | 132 +++++++++--------- en.dict.combodo-notify-on-expiration.php | 132 +++++++++--------- fr.dict.combodo-notify-on-expiration.php | 132 +++++++++--------- module.combodo-notify-on-expiration.php | 164 +++++++++++------------ 4 files changed, 280 insertions(+), 280 deletions(-) diff --git a/de.dict.combodo-notify-on-expiration.php b/de.dict.combodo-notify-on-expiration.php index d59183fb38..2b5f444a9d 100644 --- a/de.dict.combodo-notify-on-expiration.php +++ b/de.dict.combodo-notify-on-expiration.php @@ -1,66 +1,66 @@ - - * @author Romain Quetiez - * @author Denis Flaven - * @author Guillaume Lajarige - * @author Vincent Dumas - */ - -// ExpirationRule -Dict::Add('DE DE', 'German', 'Deutsch', array( - // Class - 'Class:ExpirationRule/Name' => '%1$s~~', - 'Class:ExpirationRule' => 'Expiration rule~~', - 'Class:ExpirationRule+' => '~~', - 'Class:ExpirationRule/Attribute:name' => 'Name~~', - 'Class:ExpirationRule/Attribute:name+' => '~~', - 'Class:ExpirationRule/Attribute:class' => 'Class~~', - 'Class:ExpirationRule/Attribute:class+' => '~~', - 'Class:ExpirationRule/Attribute:description' => 'Description', - 'Class:ExpirationRule/Attribute:description+' => '', - 'Class:ExpirationRule/Attribute:status' => 'Status~~', - 'Class:ExpirationRule/Attribute:status+' => '~~', - 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active~~', - 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive~~', - 'Class:ExpirationRule/Attribute:type' => 'Applied option~~', - 'Class:ExpirationRule/Attribute:type+' => 'Which option will be used regarding the filled fields. If both are filled, advanced option is applied~~', - 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple~~', - 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Advanced~~', - 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date to check~~', - 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Attribute code of the date to check~~', - 'Class:ExpirationRule/Attribute:term_of_notice' => 'Term of notice~~', - 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Number of days before the date to check, to trigger the notification~~', - 'Class:ExpirationRule/Attribute:oql_scope' => 'OQL scope~~', - 'Class:ExpirationRule/Attribute:oql_scope+' => 'OQL query to define which objects are concerned by this rule.~~', - - // Integrity errors - 'Class:ExpirationRule/Error:ClassNotValid' => 'Class must be a valid class from datamodel, "%1$s" given~~', - 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" is not a valid attribute for class "%1$s"~~', - 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" must be a date attribute of class "%1$s"~~', - 'Class:ExpirationRule/Error:NoOptionFilled' => 'Either option 1 or option 2 must be filled~~', - 'Class:ExpirationRule/Error:OptionOneMissingField' => 'All fields of option 1 must be filled~~', - - // Presentation - 'ExpirationRule:general' => 'General informations~~', - 'ExpirationRule:simple' => 'Fill either option 1 (simple) ...~~', - 'ExpirationRule:advanced' => '... or option 2 (advanced)~~', - - // Menus - 'Menu:ExpirationRule' => 'Expiration rules~~', - 'Menu:ExpirationRule+' => 'Expiration rules~~', - - // Tabs - 'UI:AutocloseTicket:Preview' => 'Preview~~', - 'UI:AutocloseTicket:Title' => '%1$s reach their term of notice today~~', - - 'Class:TriggerOnExpirationRule' => 'Trigger (on expiration)~~', - 'Class:TriggerOnExpirationRule+' => 'Trigger activated when an object is in scope of an expiration rule~~', - -)); + + * @author Romain Quetiez + * @author Denis Flaven + * @author Guillaume Lajarige + * @author Vincent Dumas + */ + +// ExpirationRule +Dict::Add('DE DE', 'German', 'Deutsch', array( + // Class + 'Class:ExpirationRule/Name' => '%1$s~~', + 'Class:ExpirationRule' => 'Expiration rule~~', + 'Class:ExpirationRule+' => '~~', + 'Class:ExpirationRule/Attribute:name' => 'Name~~', + 'Class:ExpirationRule/Attribute:name+' => '~~', + 'Class:ExpirationRule/Attribute:class' => 'Class~~', + 'Class:ExpirationRule/Attribute:class+' => '~~', + 'Class:ExpirationRule/Attribute:description' => 'Description', + 'Class:ExpirationRule/Attribute:description+' => '', + 'Class:ExpirationRule/Attribute:status' => 'Status~~', + 'Class:ExpirationRule/Attribute:status+' => '~~', + 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active~~', + 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive~~', + 'Class:ExpirationRule/Attribute:type' => 'Applied option~~', + 'Class:ExpirationRule/Attribute:type+' => 'Which option will be used regarding the filled fields. If both are filled, advanced option is applied~~', + 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple~~', + 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Advanced~~', + 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date to check~~', + 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Attribute code of the date to check~~', + 'Class:ExpirationRule/Attribute:term_of_notice' => 'Term of notice~~', + 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Number of days before the date to check, to trigger the notification~~', + 'Class:ExpirationRule/Attribute:oql_scope' => 'OQL scope~~', + 'Class:ExpirationRule/Attribute:oql_scope+' => 'OQL query to define which objects are concerned by this rule.~~', + + // Integrity errors + 'Class:ExpirationRule/Error:ClassNotValid' => 'Class must be a valid class from datamodel, "%1$s" given~~', + 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" is not a valid attribute for class "%1$s"~~', + 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" must be a date attribute of class "%1$s"~~', + 'Class:ExpirationRule/Error:NoOptionFilled' => 'Either option 1 or option 2 must be filled~~', + 'Class:ExpirationRule/Error:OptionOneMissingField' => 'All fields of option 1 must be filled~~', + + // Presentation + 'ExpirationRule:general' => 'General informations~~', + 'ExpirationRule:simple' => 'Fill either option 1 (simple) ...~~', + 'ExpirationRule:advanced' => '... or option 2 (advanced)~~', + + // Menus + 'Menu:ExpirationRule' => 'Expiration rules~~', + 'Menu:ExpirationRule+' => 'Expiration rules~~', + + // Tabs + 'UI:AutocloseTicket:Preview' => 'Preview~~', + 'UI:AutocloseTicket:Title' => '%1$s reach their term of notice today~~', + + 'Class:TriggerOnExpirationRule' => 'Trigger (on expiration)~~', + 'Class:TriggerOnExpirationRule+' => 'Trigger activated when an object is in scope of an expiration rule~~', + +)); diff --git a/en.dict.combodo-notify-on-expiration.php b/en.dict.combodo-notify-on-expiration.php index a687f92761..eff13c0db4 100644 --- a/en.dict.combodo-notify-on-expiration.php +++ b/en.dict.combodo-notify-on-expiration.php @@ -1,66 +1,66 @@ - - * @author Romain Quetiez - * @author Denis Flaven - * @author Guillaume Lajarige - * @author Vincent Dumas - */ - -// ExpirationRule -Dict::Add('EN US', 'English', 'English', array( - // Class - 'Class:ExpirationRule/Name' => '%1$s', - 'Class:ExpirationRule' => 'Expiration rule', - 'Class:ExpirationRule+' => '', - 'Class:ExpirationRule/Attribute:name' => 'Name', - 'Class:ExpirationRule/Attribute:name+' => '', - 'Class:ExpirationRule/Attribute:class' => 'Class', - 'Class:ExpirationRule/Attribute:class+' => '', - 'Class:ExpirationRule/Attribute:description' => 'Description', - 'Class:ExpirationRule/Attribute:description+' => '', - 'Class:ExpirationRule/Attribute:status' => 'Status', - 'Class:ExpirationRule/Attribute:status+' => '', - 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active', - 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive', - 'Class:ExpirationRule/Attribute:type' => 'Applied option', - 'Class:ExpirationRule/Attribute:type+' => 'Which option will be used regarding the filled fields. If both are filled, advanced option is applied', - 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple', - 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Advanced', - 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date to check', - 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Attribute code of the date to check', - 'Class:ExpirationRule/Attribute:term_of_notice' => 'Term of notice', - 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Number of days before the date to check, to trigger the notification', - 'Class:ExpirationRule/Attribute:oql_scope' => 'OQL scope', - 'Class:ExpirationRule/Attribute:oql_scope+' => 'OQL query to define which objects are concerned by this rule (stimulus to apply). Note that the OQL will automatically be restricted to the states in which the stimulus is available.', - - // Integrity errors - 'Class:ExpirationRule/Error:ClassNotValid' => 'Class must be a valid class from datamodel, "%1$s" given', - 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" is not a valid attribute for class "%1$s"', - 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" must be a date attribute of class "%1$s"', - 'Class:ExpirationRule/Error:NoOptionFilled' => 'Either option 1 or option 2 must be filled', - 'Class:ExpirationRule/Error:OptionOneMissingField' => 'All fields of option 1 must be filled', - - // Presentation - 'ExpirationRule:general' => 'General informations', - 'ExpirationRule:simple' => 'Fill either option 1 (simple) ...', - 'ExpirationRule:advanced' => '... or option 2 (advanced)', - - // Menus - 'Menu:ExpirationRule' => 'Expiration rules', - 'Menu:ExpirationRule+' => 'Expiration rules', - - // Tabs - 'UI:ExpiredObject:Preview' => 'Preview', - 'UI:ExpiredObject:Title' => '%1$s will enter their term of notice today', - - 'Class:TriggerOnExpirationRule' => 'Trigger (on expiration)', - 'Class:TriggerOnExpirationRule+' => 'Trigger activated when an object is in scope of an expiration rule', - -)); + + * @author Romain Quetiez + * @author Denis Flaven + * @author Guillaume Lajarige + * @author Vincent Dumas + */ + +// ExpirationRule +Dict::Add('EN US', 'English', 'English', array( + // Class + 'Class:ExpirationRule/Name' => '%1$s', + 'Class:ExpirationRule' => 'Expiration rule', + 'Class:ExpirationRule+' => '', + 'Class:ExpirationRule/Attribute:name' => 'Name', + 'Class:ExpirationRule/Attribute:name+' => '', + 'Class:ExpirationRule/Attribute:class' => 'Class', + 'Class:ExpirationRule/Attribute:class+' => '', + 'Class:ExpirationRule/Attribute:description' => 'Description', + 'Class:ExpirationRule/Attribute:description+' => '', + 'Class:ExpirationRule/Attribute:status' => 'Status', + 'Class:ExpirationRule/Attribute:status+' => '', + 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active', + 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive', + 'Class:ExpirationRule/Attribute:type' => 'Applied option', + 'Class:ExpirationRule/Attribute:type+' => 'Which option will be used regarding the filled fields. If both are filled, advanced option is applied', + 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple', + 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Advanced', + 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date to check', + 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Attribute code of the date to check', + 'Class:ExpirationRule/Attribute:term_of_notice' => 'Term of notice', + 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Number of days before the date to check, to trigger the notification', + 'Class:ExpirationRule/Attribute:oql_scope' => 'OQL scope', + 'Class:ExpirationRule/Attribute:oql_scope+' => 'OQL query to define which objects are concerned by this rule (stimulus to apply). Note that the OQL will automatically be restricted to the states in which the stimulus is available.', + + // Integrity errors + 'Class:ExpirationRule/Error:ClassNotValid' => 'Class must be a valid class from datamodel, "%1$s" given', + 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" is not a valid attribute for class "%1$s"', + 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" must be a date attribute of class "%1$s"', + 'Class:ExpirationRule/Error:NoOptionFilled' => 'Either option 1 or option 2 must be filled', + 'Class:ExpirationRule/Error:OptionOneMissingField' => 'All fields of option 1 must be filled', + + // Presentation + 'ExpirationRule:general' => 'General informations', + 'ExpirationRule:simple' => 'Fill either option 1 (simple) ...', + 'ExpirationRule:advanced' => '... or option 2 (advanced)', + + // Menus + 'Menu:ExpirationRule' => 'Expiration rules', + 'Menu:ExpirationRule+' => 'Expiration rules', + + // Tabs + 'UI:ExpiredObject:Preview' => 'Preview', + 'UI:ExpiredObject:Title' => '%1$s will enter their term of notice today', + + 'Class:TriggerOnExpirationRule' => 'Trigger (on expiration)', + 'Class:TriggerOnExpirationRule+' => 'Trigger activated when an object is in scope of an expiration rule', + +)); diff --git a/fr.dict.combodo-notify-on-expiration.php b/fr.dict.combodo-notify-on-expiration.php index 0782200f5f..b6c8db9351 100644 --- a/fr.dict.combodo-notify-on-expiration.php +++ b/fr.dict.combodo-notify-on-expiration.php @@ -1,66 +1,66 @@ - - * @author Romain Quetiez - * @author Denis Flaven - * @author Guillaume Lajarige - * @author Vincent Dumas - */ - -// ClosingRule -Dict::Add('FR FR', 'French', 'Français', array( - // Class - 'Class:ExpirationRule/Name' => '%1$s', - 'Class:ExpirationRule' => 'Régle de Préavis', - 'Class:ExpirationRule+' => '', - 'Class:ExpirationRule/Attribute:name' => 'Nom', - 'Class:ExpirationRule/Attribute:name+' => '', - 'Class:ExpirationRule/Attribute:class' => 'Classe', - 'Class:ExpirationRule/Attribute:class+' => '', - 'Class:ExpirationRule/Attribute:description' => 'Description', - 'Class:ExpirationRule/Attribute:description+' => '', - 'Class:ExpirationRule/Attribute:status' => 'Statut', - 'Class:ExpirationRule/Attribute:status+' => '', - 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active', - 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive', - 'Class:ExpirationRule/Attribute:type' => 'Option retenue', - 'Class:ExpirationRule/Attribute:type+' => 'Quelle option sera utilisée au regard des champs remplis. Si les 2 options sont remplies, l\'option avancée sera appliquée', - 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple', - 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Avancée', - 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date à utiliser', - 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Code du champ date à controler', - 'Class:ExpirationRule/Attribute:term_of_notice' => 'Préavis en jours', - 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Nombre de jours avant la date pour déclencher la notification', - 'Class:ExpirationRule/Attribute:oql_scope' => 'Périmêtre en OQL', - 'Class:ExpirationRule/Attribute:oql_scope+' => 'Requête OQL définissant les objets concernés par cette règle (trigger à déclencher).', - - // Integrity errors - 'Class:ExpirationRule/Error:ClassNotValid' => 'La classe doit faire partie du modèle de données, "%1$s" donnée', - 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" n\'est pas un attribut valide pour la classe "%1$s"', - 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" doit être un attribut de type date pour la classe "%1$s"', - 'Class:ExpirationRule/Error:NoOptionFilled' => 'Une des 2 options doit être remplie', - 'Class:ExpirationRule/Error:OptionOneMissingField' => 'Tous les champs de l\'option 1 doivent être remplis', - - // Presentation - 'ExpirationRule:general' => 'Informations générales', - 'ExpirationRule:simple' => 'Remplir l\'option (simple) ...', - 'ExpirationRule:advanced' => '... oo l\'option 2 (avancée)', - - // Menus - 'Menu:ExpirationRule' => 'Régles de préavis', - 'Menu:ExpirationRule+' => 'Régles de préavis', - - // Tabs - 'UI:ExpiredObject:Preview' => 'Aperçu', - 'UI:ExpiredObject:Title' => '%1$s ont leur préavis qui démarre aujourd\'hui', - - 'Class:TriggerOnExpirationRule' => 'Déclencheur sur préavis atteint', - 'Class:TriggerOnExpirationRule+' => 'Déclencheur activé lorsqu\'une régle de préavis est applicable à l\'objet', - -)); + + * @author Romain Quetiez + * @author Denis Flaven + * @author Guillaume Lajarige + * @author Vincent Dumas + */ + +// ClosingRule +Dict::Add('FR FR', 'French', 'Français', array( + // Class + 'Class:ExpirationRule/Name' => '%1$s', + 'Class:ExpirationRule' => 'Régle de Préavis', + 'Class:ExpirationRule+' => '', + 'Class:ExpirationRule/Attribute:name' => 'Nom', + 'Class:ExpirationRule/Attribute:name+' => '', + 'Class:ExpirationRule/Attribute:class' => 'Classe', + 'Class:ExpirationRule/Attribute:class+' => '', + 'Class:ExpirationRule/Attribute:description' => 'Description', + 'Class:ExpirationRule/Attribute:description+' => '', + 'Class:ExpirationRule/Attribute:status' => 'Statut', + 'Class:ExpirationRule/Attribute:status+' => '', + 'Class:ExpirationRule/Attribute:status/Value:active' => 'Active', + 'Class:ExpirationRule/Attribute:status/Value:inactive' => 'Inactive', + 'Class:ExpirationRule/Attribute:type' => 'Option retenue', + 'Class:ExpirationRule/Attribute:type+' => 'Quelle option sera utilisée au regard des champs remplis. Si les 2 options sont remplies, l\'option avancée sera appliquée', + 'Class:ExpirationRule/Attribute:type/Value:simple' => 'Simple', + 'Class:ExpirationRule/Attribute:type/Value:advanced' => 'Avancée', + 'Class:ExpirationRule/Attribute:date_to_check_att' => 'Date à utiliser', + 'Class:ExpirationRule/Attribute:date_to_check_att+' => 'Code du champ date à controler', + 'Class:ExpirationRule/Attribute:term_of_notice' => 'Préavis en jours', + 'Class:ExpirationRule/Attribute:term_of_notice+' => 'Nombre de jours avant la date pour déclencher la notification', + 'Class:ExpirationRule/Attribute:oql_scope' => 'Périmêtre en OQL', + 'Class:ExpirationRule/Attribute:oql_scope+' => 'Requête OQL définissant les objets concernés par cette règle (trigger à déclencher).', + + // Integrity errors + 'Class:ExpirationRule/Error:ClassNotValid' => 'La classe doit faire partie du modèle de données, "%1$s" donnée', + 'Class:ExpirationRule/Error:AttributeNotValid' => '"%2$s" n\'est pas un attribut valide pour la classe "%1$s"', + 'Class:ExpirationRule/Error:AttributeMustBeDate' => '"%2$s" doit être un attribut de type date pour la classe "%1$s"', + 'Class:ExpirationRule/Error:NoOptionFilled' => 'Une des 2 options doit être remplie', + 'Class:ExpirationRule/Error:OptionOneMissingField' => 'Tous les champs de l\'option 1 doivent être remplis', + + // Presentation + 'ExpirationRule:general' => 'Informations générales', + 'ExpirationRule:simple' => 'Remplir l\'option (simple) ...', + 'ExpirationRule:advanced' => '... oo l\'option 2 (avancée)', + + // Menus + 'Menu:ExpirationRule' => 'Régles de préavis', + 'Menu:ExpirationRule+' => 'Régles de préavis', + + // Tabs + 'UI:ExpiredObject:Preview' => 'Aperçu', + 'UI:ExpiredObject:Title' => '%1$s ont leur préavis qui démarre aujourd\'hui', + + 'Class:TriggerOnExpirationRule' => 'Déclencheur sur préavis atteint', + 'Class:TriggerOnExpirationRule+' => 'Déclencheur activé lorsqu\'une régle de préavis est applicable à l\'objet', + +)); diff --git a/module.combodo-notify-on-expiration.php b/module.combodo-notify-on-expiration.php index 9f3f1f515c..2f1db04d57 100644 --- a/module.combodo-notify-on-expiration.php +++ b/module.combodo-notify-on-expiration.php @@ -1,82 +1,82 @@ - 'Notify on expiration', - 'category' => 'business', - - // Setup - // - 'dependencies' => array( - - ), - 'mandatory' => false, - 'visible' => true, - 'installer' => 'NotifyOnExpirationInstaller', - - // Components - // - 'datamodel' => array( - 'model.combodo-notify-on-expiration.php', - 'main.combodo-notify-on-expiration.php', - 'triggerexpirationrule.class.inc.php', - ), - 'webservice' => array( - - ), - 'data.struct' => array( - // add your 'structure' definition XML files here, - ), - 'data.sample' => array( - // add your sample data XML files here, - ), - - // Documentation - // - 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any - 'doc.more_information' => '', // hyperlink to more information, if any - - // Default settings - // - 'settings' => array( - // Module specific settings go here, if any - 'time' => '03:00', - 'enabled' => true, - 'debug' => false - ), - ) -); - -if (!class_exists('NotifyOnExpirationInstaller')) -{ - // Module installation handler - // - class NotifyOnExpirationInstaller extends ModuleInstallerAPI - { - public static function BeforeWritingConfig(Config $oConfiguration) - { - return $oConfiguration; - } - - /** - * Handler called after the creation/update of the database schema - * @param $oConfiguration Config The new configuration of the application - * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install) - * @param $sCurrentVersion string Current version number of the module - */ - public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion) - { - - } - } -} + 'Notify on expiration', + 'category' => 'business', + + // Setup + // + 'dependencies' => array( + + ), + 'mandatory' => false, + 'visible' => true, + 'installer' => 'NotifyOnExpirationInstaller', + + // Components + // + 'datamodel' => array( + 'model.combodo-notify-on-expiration.php', + 'main.combodo-notify-on-expiration.php', + 'triggerexpirationrule.class.inc.php', + ), + 'webservice' => array( + + ), + 'data.struct' => array( + // add your 'structure' definition XML files here, + ), + 'data.sample' => array( + // add your sample data XML files here, + ), + + // Documentation + // + 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any + 'doc.more_information' => '', // hyperlink to more information, if any + + // Default settings + // + 'settings' => array( + // Module specific settings go here, if any + 'time' => '03:00', + 'enabled' => true, + 'debug' => false + ), + ) +); + +if (!class_exists('NotifyOnExpirationInstaller')) +{ + // Module installation handler + // + class NotifyOnExpirationInstaller extends ModuleInstallerAPI + { + public static function BeforeWritingConfig(Config $oConfiguration) + { + return $oConfiguration; + } + + /** + * Handler called after the creation/update of the database schema + * @param $oConfiguration Config The new configuration of the application + * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install) + * @param $sCurrentVersion string Current version number of the module + */ + public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion) + { + + } + } +} From 8c642827f39ab8089119b2f6d9fc13ebc41672db Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Wed, 16 Jan 2019 17:16:44 +0100 Subject: [PATCH 07/13] :art: Change config key constants names --- main.combodo-notify-on-expiration.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index a6b42b4376..c6d9f7999b 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -19,10 +19,11 @@ class NotifyOnExpiration implements iScheduledProcess { const MODULE_CODE = 'combodo-notify-on-expiration'; - const MODULE_SETTING_ENABLED = 'enabled'; - const MODULE_SETTING_DEBUG = 'debug'; - const MODULE_SETTING_WEEKDAYS = 'week_days'; - const MODULE_SETTING_TIME = 'time'; + + const KEY_MODULE_SETTING_ENABLED = 'enabled'; + const KEY_MODULE_SETTING_DEBUG = 'debug'; + const KEY_MODULE_SETTING_WEEKDAYS = 'week_days'; + const KEY_MODULE_SETTING_TIME = 'time'; const DEFAULT_MODULE_SETTING_ENABLED = true; const DEFAULT_MODULE_SETTING_DEBUG = false; @@ -36,7 +37,8 @@ class NotifyOnExpiration implements iScheduledProcess */ function __construct() { - $this->bDebug = (bool) MetaModel::GetModuleSetting(static::MODULE_CODE, static::MODULE_SETTING_DEBUG, static::DEFAULT_MODULE_SETTING_DEBUG); + $this->bDebug = (bool)MetaModel::GetModuleSetting(static::MODULE_CODE, static::KEY_MODULE_SETTING_DEBUG, + static::DEFAULT_MODULE_SETTING_DEBUG); } /** @@ -46,7 +48,8 @@ class NotifyOnExpiration implements iScheduledProcess */ public function GetNextOccurrence() { - $bEnabled = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::MODULE_SETTING_ENABLED, static::DEFAULT_MODULE_SETTING_ENABLED); + $bEnabled = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::KEY_MODULE_SETTING_ENABLED, + static::DEFAULT_MODULE_SETTING_ENABLED); if (!$bEnabled) { $oRet = new DateTime('3000-01-01'); @@ -59,7 +62,8 @@ class NotifyOnExpiration implements iScheduledProcess // 2nd - Find the next active week day // - $sRunTime = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::MODULE_SETTING_TIME, static::DEFAULT_MODULE_SETTING_TIME); + $sRunTime = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::KEY_MODULE_SETTING_TIME, + static::DEFAULT_MODULE_SETTING_TIME); if (!preg_match('/^([01]?\d|2[0-3]):[0-5]?\d(:[0-5]?\d)?$/', $sRunTime, $aMatches)) { throw new Exception(static::MODULE_CODE.": wrong format for setting 'time' (found '$sRunTime')"); @@ -225,7 +229,8 @@ class NotifyOnExpiration implements iScheduledProcess { static $aWEEKDAYTON = array('monday' => 1, 'tuesday' => 2, 'wednesday' => 3, 'thursday' => 4, 'friday' => 5, 'saturday' => 6, 'sunday' => 7); $aDays = array(); - $sWeekDays = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::MODULE_SETTING_WEEKDAYS, static::DEFAULT_MODULE_SETTING_WEEKDAYS); + $sWeekDays = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::KEY_MODULE_SETTING_WEEKDAYS, + static::DEFAULT_MODULE_SETTING_WEEKDAYS); if ($sWeekDays != '') { $aWeekDaysRaw = explode(',', $sWeekDays); From 885f4a64a4d03573d600bccec871e2b66a5b84f9 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Wed, 16 Jan 2019 17:25:48 +0100 Subject: [PATCH 08/13] :art: PHP code formatting --- main.combodo-notify-on-expiration.php | 41 +++++++++++++++++---------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index c6d9f7999b..2b9fb1ee2e 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -70,7 +70,7 @@ class NotifyOnExpiration implements iScheduledProcess } $oNow = new DateTime(); $iNextPos = false; - for ($iDay = $oNow->format('N') ; $iDay <= 7 ; $iDay++) + for ($iDay = $oNow->format('N'); $iDay <= 7; $iDay++) { $iNextPos = array_search($iDay, $aDays); if ($iNextPos !== false) @@ -101,8 +101,9 @@ class NotifyOnExpiration implements iScheduledProcess $oRet = clone $oNow; $oRet->modify('+'.$iMove.' days'); } - $oRet->setTime((int)$aMatches[1], (int) $aMatches[2]); + $oRet->setTime((int)$aMatches[1], (int)$aMatches[2]); } + return $oRet; } @@ -123,11 +124,11 @@ class NotifyOnExpiration implements iScheduledProcess $this->Trace('Processing '.$oRulesSet->Count().' active expiration rules...'); $iTotalProcessedObjectsCount = 0; - while($oRule = $oRulesSet->Fetch()) + while ($oRule = $oRulesSet->Fetch()) { $iRuleProcessedObjectsCount = 0; $this->Trace('Processing rule "'.$oRule->Get('friendlyname').'" (#'.$oRule->GetKey().')...'); - + try { // Retrieving rule's params @@ -139,11 +140,11 @@ class NotifyOnExpiration implements iScheduledProcess // Prepare the Rule information to be passed to the notification $aRuleContext = $oRule->ToArgs('rule'); - - // Get applicable Triggers for this object class + + // Get applicable Triggers for this object class $sClassList = implode("', '", MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL)); $oTriggerSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT TriggerOnExpirationRule AS t WHERE t.target_class IN ('$sClassList')")); - + $oSet = new DBObjectSet($oSearch); $this->Trace('|- Objects:'); /** @var $oToTrigger DBObject */ @@ -162,9 +163,9 @@ class NotifyOnExpiration implements iScheduledProcess { $oTrigger->DoActivate($aContext); } - // The same set of Triggers is reused for each object returned by the Rule as they all belongs to the same class + // The same set of Triggers is reused for each object returned by the Rule as they all belongs to the same class $oTriggerSet->Rewind(); - + $iRuleProcessedObjectsCount++; $iTotalProcessedObjectsCount++; @@ -187,14 +188,14 @@ class NotifyOnExpiration implements iScheduledProcess $this->Trace('Stopped because time limit exceeded!'); } } - catch(Exception $e) + catch (Exception $e) { $this->Trace('Skipping rule as there was an exception! ('.$e->getMessage().')'); } } // Report - if($aReport['reached_deadline'] === 0) + if ($aReport['reached_deadline'] === 0) { return 'No object to process'; } @@ -203,17 +204,18 @@ class NotifyOnExpiration implements iScheduledProcess $iClosedCount = count($aReport['triggered']); $iNotClosedCount = count($aReport['not_triggered']); - $sReport = $aReport['reached_deadline'] . " objects reached triggering date"; + $sReport = $aReport['reached_deadline']." objects reached triggering date"; $sReport .= " - ".$iClosedCount." were triggered"; - if($iClosedCount > 0) + if ($iClosedCount > 0) { $sReport .= " (".implode(", ", $aReport['triggered']).")"; } $sReport .= " - ".$iNotClosedCount." were not triggered"; - if($iNotClosedCount > 0) + if ($iNotClosedCount > 0) { $sReport .= " (".implode(", ", $aReport['not_triggered']).")"; } + return $sReport; } } @@ -227,7 +229,15 @@ class NotifyOnExpiration implements iScheduledProcess */ public function InterpretWeekDays() { - static $aWEEKDAYTON = array('monday' => 1, 'tuesday' => 2, 'wednesday' => 3, 'thursday' => 4, 'friday' => 5, 'saturday' => 6, 'sunday' => 7); + static $aWEEKDAYTON = array( + 'monday' => 1, + 'tuesday' => 2, + 'wednesday' => 3, + 'thursday' => 4, + 'friday' => 5, + 'saturday' => 6, + 'sunday' => 7, + ); $aDays = array(); $sWeekDays = MetaModel::GetConfig()->GetModuleSetting(static::MODULE_CODE, static::KEY_MODULE_SETTING_WEEKDAYS, static::DEFAULT_MODULE_SETTING_WEEKDAYS); @@ -253,6 +263,7 @@ class NotifyOnExpiration implements iScheduledProcess } $aDays = array_unique($aDays); sort($aDays); + return $aDays; } From f9cff178a8e27c2307df4ba4ce5da3bc9a514ecb Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Wed, 16 Jan 2019 17:26:41 +0100 Subject: [PATCH 09/13] :rotating_light: PHP code : remove warnings --- main.combodo-notify-on-expiration.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index 2b9fb1ee2e..0a2f47b6ea 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -45,6 +45,7 @@ class NotifyOnExpiration implements iScheduledProcess * Gives the exact time at which the process must be run next time * * @return \DateTime + * @throws \Exception */ public function GetNextOccurrence() { @@ -109,6 +110,13 @@ class NotifyOnExpiration implements iScheduledProcess /** * @inheritdoc + * + * @throws \CoreException + * @throws \CoreUnexpectedValue + * @throws \MissingQueryArgument + * @throws \MySQLException + * @throws \MySQLHasGoneAwayException + * @throws \OQLException */ public function Process($iTimeLimit) { @@ -147,18 +155,19 @@ class NotifyOnExpiration implements iScheduledProcess $oSet = new DBObjectSet($oSearch); $this->Trace('|- Objects:'); - /** @var $oToTrigger DBObject */ + /** @var DBObject $oToTrigger */ while ((time() < $iTimeLimit) && $oToTrigger = $oSet->Fetch()) { // Catching exceptions so the process don't get stucked on this object try { $aReport['reached_deadline']++; - // + // // $aContext['ruleName'] = $oRule->Get('name'); // Combine the current object :this and :rule to be available in the notification $aContext = $oToTrigger->ToArgs('this'); $aContext = array_merge($aContext, $aRuleContext); + /** @var TriggerOnExpirationRule $oTrigger */ while ($oTrigger = $oTriggerSet->Fetch()) { $oTrigger->DoActivate($aContext); @@ -226,6 +235,7 @@ class NotifyOnExpiration implements iScheduledProcess * Note: This comes from itop-backup scheduled task. * * @returns array of int (monday = 1) + * @throws \Exception */ public function InterpretWeekDays() { From 3e8d5fdfd07567c7677096eccb0ed6349c73afbd Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 18 Jan 2019 10:45:00 +0100 Subject: [PATCH 10/13] :rotating_light: Fix undefined variable copy/paste from autoclose that was not changed --- main.combodo-notify-on-expiration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index 0a2f47b6ea..db9c231237 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -184,7 +184,7 @@ class NotifyOnExpiration implements iScheduledProcess } // Trigger was NOT applied because of an exception, which is NOT normal catch (Exception $e) { - $aReport['not_triggered'][] = $oToClose->Get('friendlyname'); + $aReport['not_triggered'][] = $oToTrigger->Get('friendlyname'); $this->Trace('| |- [KO] /!\\ '.$sClass.' #'.$oToTrigger->GetKey().' exception raised! Error message: '.$e->getMessage()); } From 32c6a3381e53a02514e32cddd9b03b5319a00529 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 18 Jan 2019 10:51:48 +0100 Subject: [PATCH 11/13] :ok_hand: Replace Exception by iTop exception impl --- main.combodo-notify-on-expiration.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/main.combodo-notify-on-expiration.php b/main.combodo-notify-on-expiration.php index db9c231237..5a705122f5 100644 --- a/main.combodo-notify-on-expiration.php +++ b/main.combodo-notify-on-expiration.php @@ -45,7 +45,7 @@ class NotifyOnExpiration implements iScheduledProcess * Gives the exact time at which the process must be run next time * * @return \DateTime - * @throws \Exception + * @throws \CoreUnexpectedValue */ public function GetNextOccurrence() { @@ -67,7 +67,7 @@ class NotifyOnExpiration implements iScheduledProcess static::DEFAULT_MODULE_SETTING_TIME); if (!preg_match('/^([01]?\d|2[0-3]):[0-5]?\d(:[0-5]?\d)?$/', $sRunTime, $aMatches)) { - throw new Exception(static::MODULE_CODE.": wrong format for setting 'time' (found '$sRunTime')"); + throw new CoreUnexpectedValue(static::MODULE_CODE.": wrong format for setting 'time' (found '$sRunTime')"); } $oNow = new DateTime(); $iNextPos = false; @@ -235,7 +235,7 @@ class NotifyOnExpiration implements iScheduledProcess * Note: This comes from itop-backup scheduled task. * * @returns array of int (monday = 1) - * @throws \Exception + * @throws \CoreUnexpectedValue */ public function InterpretWeekDays() { @@ -263,13 +263,13 @@ class NotifyOnExpiration implements iScheduledProcess } else { - throw new Exception(static::MODULE_CODE.": wrong format for setting 'week_days' (found '$sWeekDay')"); + throw new CoreUnexpectedValue(static::MODULE_CODE.": wrong format for setting 'week_days' (found '$sWeekDay')"); } } } if (count($aDays) == 0) { - throw new Exception(static::MODULE_CODE.": missing setting 'week_days'"); + throw new CoreUnexpectedValue(static::MODULE_CODE.": missing setting 'week_days'"); } $aDays = array_unique($aDays); sort($aDays); From 90ae0c2ac71274b68c0db2eb1f68ace7a4e1bd90 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 18 Jan 2019 17:21:33 +0100 Subject: [PATCH 12/13] :bug: Fix XML was not recognized by setup Move license comment underneath itop_design node --- datamodel.combodo-notify-on-expiration.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/datamodel.combodo-notify-on-expiration.xml b/datamodel.combodo-notify-on-expiration.xml index 56c449203f..021eaed4e6 100644 --- a/datamodel.combodo-notify-on-expiration.xml +++ b/datamodel.combodo-notify-on-expiration.xml @@ -1,9 +1,9 @@ + - cmdbAbstractObject @@ -29,12 +29,12 @@ false - - description - - true - html - + + description + + true + html + class @@ -286,7 +286,7 @@ $oBlock->Display($oPage, 'rel_preview_rule_'.$this->GetKey(), $aParams); }]]> - + From 1c7e4ca91b4b31f1c360ada58e7db56839f2f7a0 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Fri, 18 Jan 2019 17:24:17 +0100 Subject: [PATCH 13/13] :ok_hand: Remove unexisting file from module descriptor --- module.combodo-notify-on-expiration.php | 1 - 1 file changed, 1 deletion(-) diff --git a/module.combodo-notify-on-expiration.php b/module.combodo-notify-on-expiration.php index 2f1db04d57..8c4e7b5c45 100644 --- a/module.combodo-notify-on-expiration.php +++ b/module.combodo-notify-on-expiration.php @@ -27,7 +27,6 @@ SetupWebPage::AddModule( // Components // 'datamodel' => array( - 'model.combodo-notify-on-expiration.php', 'main.combodo-notify-on-expiration.php', 'triggerexpirationrule.class.inc.php', ),