diff --git a/application/menunode.class.inc.php b/application/menunode.class.inc.php index 244209db6..a47a495a4 100644 --- a/application/menunode.class.inc.php +++ b/application/menunode.class.inc.php @@ -280,9 +280,11 @@ class ApplicationMenu $oMenuNode = static::GetMenuNode($sMenuGroupIdx); if (!($oMenuNode instanceof MenuGroup)) { - IssueLog::Error('Menu node was not displayed as a menu group as it is actually not a menu group', LogChannels::CONSOLE, [ + IssueLog::Error('Menu node without parent (root menu) must be of type menu group. Parent menu is missing or not visible to user.', LogChannels::CONSOLE, [ 'menu_node_class' => get_class($oMenuNode), + 'menu_node_id' => $oMenuNode->GetMenuID(), 'menu_node_label' => $oMenuNode->GetLabel(), + 'current_user_id' => UserRights::GetUserId(), ]); continue; } diff --git a/composer.json b/composer.json index 14db1f5cf..e5c33b6bd 100644 --- a/composer.json +++ b/composer.json @@ -44,9 +44,10 @@ "ext-libsodium": "Required to use the AttributeEncryptedString.", "ext-openssl": "Can be used as a polyfill if libsodium is not installed", "ext-mcrypt": "Can be used as a polyfill if either libsodium and openssl are not installed (libsodium and openssl are more secure)", + "ext-apcu": "For better performance and stability", + "ext-imap": "Required by the extension \"Mail to ticket automation\"" "ext-ldap": "Required to use LDAP as an identity provider", "ext-posix": "Not required by the core, but some extensions uses it.", - "ext-imap": "Required by the extension \"Mail to ticket automation\"" }, "config": { "platform": { diff --git a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml index cc7b33734..f395eb843 100755 --- a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml +++ b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml @@ -993,34 +993,6 @@ } ]]> - - - false - public - StimulusUserAction - Set('close_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('reason', ''); - return true; - }]]> - false protected diff --git a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml index fcd38726c..48973d78b 100755 --- a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml +++ b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml @@ -535,48 +535,6 @@ } ]]> - - - false - public - LifecycleAction - Set('approval_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('reject_reason', ''); - return true; - }]]> - - - - false - public - LifecycleAction - Set('close_date', time()); - return true; - }]]> - false protected diff --git a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml index f7ecb63bc..6be747b4c 100755 --- a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml +++ b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml @@ -1083,64 +1083,6 @@ } ]]> - - - false - public - LifecycleAction - Set('assignment_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('last_pending_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('resolution_date', time()); - $iTimeSpent = time() - AttributeDateTime::GetAsUnixSeconds($this->Get('start_date')); - $this->Set('time_spent', $iTimeSpent); - return true; - }]]> - - - - false - public - LifecycleAction - Set('close_date', time()); - return true; - }]]> - false public @@ -1238,67 +1180,6 @@ } }]]> - - - false - public - LifecycleAction - $this->GetKey(), - ) - ); - //automatically resolve child requests - while($oRequest = $oChildRequestSet->Fetch()) - { - if ( $oRequest->Get('status') != 'resolved') - { - $oRequest->set('servicesubcategory_id',$this->Get('servicesubcategory_id')); - $oRequest->set('service_id',$this->Get('service_id')); - $oRequest->set('team_id',$this->Get('team_id')); - $oRequest->set('agent_id',$this->Get('agent_id')); - $oRequest->set('resolution_code',$this->Get('resolution_code')); - $oRequest->set('solution','Automatically resolved by incident:[[Incident:'.$this->Get('ref').']]'); - $oRequest->ApplyStimulus('ev_autoresolve'); - $oRequest->DBUpdate(); - } - } - } - - //automatically resolve child incidents - $sOQL = "SELECT Incident WHERE parent_incident_id=:ticket"; - $oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), - array(), - array( - 'ticket' => $this->GetKey(), - ) - ); - while($oIncident = $oChildIncidentSet->Fetch()) - { - if ( $oIncident->Get('status') != 'resolved') - { - $oIncident->set('servicesubcategory_id',$this->Get('servicesubcategory_id')); - $oIncident->set('service_id',$this->Get('service_id')); - $oIncident->set('team_id',$this->Get('team_id')); - $oIncident->set('agent_id',$this->Get('agent_id')); - $oIncident->set('resolution_code',$this->Get('resolution_code')); - $oIncident->set('solution','Automatically resolved by incident:[[Incident:'.$this->Get('ref').']]'); - $oIncident->ApplyStimulus('ev_autoresolve'); - $oIncident->DBUpdate(); - } - } - return true; - - }]]> - - - - false - public - LifecycleAction - Set('assignment_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('resolution_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('close_date', time()); - return true; - }]]> - /** Compute the priority of the ticket based on its impact and urgency * @return integer The priority of the ticket 1(high) .. 3(low) diff --git a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml index 514b6543e..60a2c938e 100755 --- a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml +++ b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml @@ -1231,78 +1231,6 @@ } ]]> - - - false - public - LifecycleAction - Set('assignment_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('last_pending_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('resolution_date', time()); - $iTimeSpent = time() - AttributeDateTime::GetAsUnixSeconds($this->Get('start_date')); - $this->Set('time_spent', $iTimeSpent); - return true; - }]]> - - - - false - public - LifecycleAction - Set('close_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('approver_id', UserRights::GetUserId()); - return true; - }]]> - false public @@ -1399,41 +1327,6 @@ } }]]> - - - false - public - LifecycleAction - $this->GetKey(), - ) - ); - while($oRequest = $oChildRequestSet->Fetch()) - { - if ( $oRequest->Get('status') != 'resolved') - { - $oRequest->set('servicesubcategory_id',$this->Get('servicesubcategory_id')); - $oRequest->set('service_id',$this->Get('service_id')); - $oRequest->set('team_id',$this->Get('team_id')); - $oRequest->set('agent_id',$this->Get('agent_id')); - $oRequest->set('resolution_code',$this->Get('resolution_code')); - $oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]'); - $oRequest->ApplyStimulus('ev_autoresolve'); - $oRequest->DBUpdate(); - } - } - return true; - - }]]> - - - - false - public - LifecycleAction - Set('assignment_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('last_pending_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('resolution_date', time()); - $iTimeSpent = time() - AttributeDateTime::GetAsUnixSeconds($this->Get('start_date')); - $this->Set('time_spent', $iTimeSpent); - return true; - }]]> - - - - false - public - LifecycleAction - Set('close_date', time()); - return true; - }]]> - - - - false - public - LifecycleAction - Set('approver_id', UserRights::GetUserId()); - return true; - }]]> - false public @@ -1439,41 +1367,6 @@ 'panel_title_tooltip' => Dict::S($sTabCode."+"), ]); } - }]]> - - - - false - public - LifecycleAction - $this->GetKey(), - ) - ); - while($oRequest = $oChildRequestSet->Fetch()) - { - if ( $oRequest->Get('status') != 'resolved') - { - $oRequest->set('servicesubcategory_id',$this->Get('servicesubcategory_id')); - $oRequest->set('service_id',$this->Get('service_id')); - $oRequest->set('team_id',$this->Get('team_id')); - $oRequest->set('agent_id',$this->Get('agent_id')); - $oRequest->set('resolution_code',$this->Get('resolution_code')); - $oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]'); - $oRequest->ApplyStimulus('ev_autoresolve'); - $oRequest->DBUpdate(); - } - } - return true; - }]]> diff --git a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml index cb4ca344e..211141752 100755 --- a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml +++ b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml @@ -1469,7 +1469,6 @@ copy(service_id, service_id) - ongoing-tickets-for-portal-user diff --git a/setup/setuputils.class.inc.php b/setup/setuputils.class.inc.php index d036b0e7f..5ee8f700e 100644 --- a/setup/setuputils.class.inc.php +++ b/setup/setuputils.class.inc.php @@ -2169,6 +2169,7 @@ JS 'sodium' => 'Strong encryption will not be used.', 'openssl' => 'Strong encryption will not be used.', ], + 'apcu' => 'Performances will be slightly degraded.', 'ldap' => 'LDAP authentication will be disabled.', ];