From 84c14b18db27b99e18e9d14118a79ad1b39d40c8 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 14 Nov 2018 15:00:10 -0400 Subject: [PATCH 01/38] PMC-40: Action by Email: Email response configuration Adding schema.sql file --- .../engine/classes/model/AbeConfiguration.php | 5 +- .../model/map/AbeConfigurationMapBuilder.php | 4 + .../classes/model/om/BaseAbeConfiguration.php | 194 ++++++++++++++---- .../model/om/BaseAbeConfigurationPeer.php | 28 ++- workflow/engine/config/schema.xml | 13 +- workflow/engine/data/mysql/schema.sql | 2 + 6 files changed, 196 insertions(+), 50 deletions(-) diff --git a/workflow/engine/classes/model/AbeConfiguration.php b/workflow/engine/classes/model/AbeConfiguration.php index 6b740d85a..6722958cf 100644 --- a/workflow/engine/classes/model/AbeConfiguration.php +++ b/workflow/engine/classes/model/AbeConfiguration.php @@ -26,6 +26,7 @@ class AbeConfiguration extends BaseAbeConfiguration 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', + 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', @@ -33,7 +34,8 @@ class AbeConfiguration extends BaseAbeConfiguration 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', - 'ABE_EMAIL_SERVER_UID' + 'ABE_EMAIL_SERVER_UID', + 'ABE_EMAIL_SERVER_RECEIVER_UID' ]; public function load($abeUid) @@ -136,6 +138,7 @@ class AbeConfiguration extends BaseAbeConfiguration $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_SUBJECT_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CUSTOM_GRID); diff --git a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php index 8652ef90a..c74d98fa0 100644 --- a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php +++ b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php @@ -83,6 +83,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_ACTION_FIELD', 'AbeActionField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_ACTION_BODY_FIELD', 'AbeActionBodyField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_CASE_NOTE_IN_RESPONSE', 'AbeCaseNoteInResponse', 'int', CreoleTypes::INTEGER, false, null); $tMap->addColumn('ABE_FORCE_LOGIN', 'AbeForceLogin', 'int', CreoleTypes::INTEGER, false, null); @@ -99,6 +101,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_EMAIL_SERVER_UID', 'AbeEmailServerUid', 'string', CreoleTypes::VARCHAR, false, 32); + $tMap->addColumn('ABE_EMAIL_SERVER_RECEIVER_UID', 'AbeEmailServerReceiverUid', 'string', CreoleTypes::VARCHAR, false, 32); + } // doBuild() } // AbeConfigurationMapBuilder diff --git a/workflow/engine/classes/model/om/BaseAbeConfiguration.php b/workflow/engine/classes/model/om/BaseAbeConfiguration.php index 7de6b6b1a..a83b0448d 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfiguration.php +++ b/workflow/engine/classes/model/om/BaseAbeConfiguration.php @@ -81,6 +81,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_action_field = ''; + /** + * The value for the abe_action_body_field field. + * @var string + */ + protected $abe_action_body_field = ''; + /** * The value for the abe_case_note_in_response field. * @var int @@ -129,6 +135,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_email_server_uid = ''; + /** + * The value for the abe_email_server_receiver_uid field. + * @var string + */ + protected $abe_email_server_receiver_uid = ''; + /** * Flag to prevent endless save loop, if this object is referenced * by another object which falls in this transaction. @@ -242,6 +254,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_action_field; } + /** + * Get the [abe_action_body_field] column value. + * + * @return string + */ + public function getAbeActionBodyField() + { + + return $this->abe_action_body_field; + } + /** * Get the [abe_case_note_in_response] column value. * @@ -372,6 +395,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_email_server_uid; } + /** + * Get the [abe_email_server_receiver_uid] column value. + * + * @return string + */ + public function getAbeEmailServerReceiverUid() + { + + return $this->abe_email_server_receiver_uid; + } + /** * Set the value of [abe_uid] column. * @@ -570,6 +604,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeActionField() + /** + * Set the value of [abe_action_body_field] column. + * + * @param string $v new value + * @return void + */ + public function setAbeActionBodyField($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->abe_action_body_field !== $v || $v === '') { + $this->abe_action_body_field = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_ACTION_BODY_FIELD; + } + + } // setAbeActionBodyField() + /** * Set the value of [abe_case_note_in_response] column. * @@ -760,6 +816,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeEmailServerUid() + /** + * Set the value of [abe_email_server_receiver_uid] column. + * + * @param string $v new value + * @return void + */ + public function setAbeEmailServerReceiverUid($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->abe_email_server_receiver_uid !== $v || $v === '') { + $this->abe_email_server_receiver_uid = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID; + } + + } // setAbeEmailServerReceiverUid() + /** * Hydrates (populates) the object variables with values from the database resultset. * @@ -795,28 +873,32 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->abe_action_field = $rs->getString($startcol + 8); - $this->abe_case_note_in_response = $rs->getInt($startcol + 9); + $this->abe_action_body_field = $rs->getString($startcol + 9); - $this->abe_force_login = $rs->getInt($startcol + 10); + $this->abe_case_note_in_response = $rs->getInt($startcol + 10); - $this->abe_create_date = $rs->getTimestamp($startcol + 11, null); + $this->abe_force_login = $rs->getInt($startcol + 11); - $this->abe_update_date = $rs->getTimestamp($startcol + 12, null); + $this->abe_create_date = $rs->getTimestamp($startcol + 12, null); - $this->abe_subject_field = $rs->getString($startcol + 13); + $this->abe_update_date = $rs->getTimestamp($startcol + 13, null); - $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 14); + $this->abe_subject_field = $rs->getString($startcol + 14); - $this->abe_custom_grid = $rs->getString($startcol + 15); + $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 15); - $this->abe_email_server_uid = $rs->getString($startcol + 16); + $this->abe_custom_grid = $rs->getString($startcol + 16); + + $this->abe_email_server_uid = $rs->getString($startcol + 17); + + $this->abe_email_server_receiver_uid = $rs->getString($startcol + 18); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 17; // 17 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 19; // 19 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating AbeConfiguration object", $e); @@ -1048,29 +1130,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->getAbeActionField(); break; case 9: - return $this->getAbeCaseNoteInResponse(); + return $this->getAbeActionBodyField(); break; case 10: - return $this->getAbeForceLogin(); + return $this->getAbeCaseNoteInResponse(); break; case 11: - return $this->getAbeCreateDate(); + return $this->getAbeForceLogin(); break; case 12: - return $this->getAbeUpdateDate(); + return $this->getAbeCreateDate(); break; case 13: - return $this->getAbeSubjectField(); + return $this->getAbeUpdateDate(); break; case 14: - return $this->getAbeMailserverOrMailcurrent(); + return $this->getAbeSubjectField(); break; case 15: - return $this->getAbeCustomGrid(); + return $this->getAbeMailserverOrMailcurrent(); break; case 16: + return $this->getAbeCustomGrid(); + break; + case 17: return $this->getAbeEmailServerUid(); break; + case 18: + return $this->getAbeEmailServerReceiverUid(); + break; default: return null; break; @@ -1100,14 +1188,16 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $keys[6] => $this->getDynUid(), $keys[7] => $this->getAbeEmailField(), $keys[8] => $this->getAbeActionField(), - $keys[9] => $this->getAbeCaseNoteInResponse(), - $keys[10] => $this->getAbeForceLogin(), - $keys[11] => $this->getAbeCreateDate(), - $keys[12] => $this->getAbeUpdateDate(), - $keys[13] => $this->getAbeSubjectField(), - $keys[14] => $this->getAbeMailserverOrMailcurrent(), - $keys[15] => $this->getAbeCustomGrid(), - $keys[16] => $this->getAbeEmailServerUid(), + $keys[9] => $this->getAbeActionBodyField(), + $keys[10] => $this->getAbeCaseNoteInResponse(), + $keys[11] => $this->getAbeForceLogin(), + $keys[12] => $this->getAbeCreateDate(), + $keys[13] => $this->getAbeUpdateDate(), + $keys[14] => $this->getAbeSubjectField(), + $keys[15] => $this->getAbeMailserverOrMailcurrent(), + $keys[16] => $this->getAbeCustomGrid(), + $keys[17] => $this->getAbeEmailServerUid(), + $keys[18] => $this->getAbeEmailServerReceiverUid(), ); return $result; } @@ -1167,29 +1257,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->setAbeActionField($value); break; case 9: - $this->setAbeCaseNoteInResponse($value); + $this->setAbeActionBodyField($value); break; case 10: - $this->setAbeForceLogin($value); + $this->setAbeCaseNoteInResponse($value); break; case 11: - $this->setAbeCreateDate($value); + $this->setAbeForceLogin($value); break; case 12: - $this->setAbeUpdateDate($value); + $this->setAbeCreateDate($value); break; case 13: - $this->setAbeSubjectField($value); + $this->setAbeUpdateDate($value); break; case 14: - $this->setAbeMailserverOrMailcurrent($value); + $this->setAbeSubjectField($value); break; case 15: - $this->setAbeCustomGrid($value); + $this->setAbeMailserverOrMailcurrent($value); break; case 16: + $this->setAbeCustomGrid($value); + break; + case 17: $this->setAbeEmailServerUid($value); break; + case 18: + $this->setAbeEmailServerReceiverUid($value); + break; } // switch() } @@ -1250,35 +1346,43 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } if (array_key_exists($keys[9], $arr)) { - $this->setAbeCaseNoteInResponse($arr[$keys[9]]); + $this->setAbeActionBodyField($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setAbeForceLogin($arr[$keys[10]]); + $this->setAbeCaseNoteInResponse($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setAbeCreateDate($arr[$keys[11]]); + $this->setAbeForceLogin($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setAbeUpdateDate($arr[$keys[12]]); + $this->setAbeCreateDate($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setAbeSubjectField($arr[$keys[13]]); + $this->setAbeUpdateDate($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setAbeMailserverOrMailcurrent($arr[$keys[14]]); + $this->setAbeSubjectField($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { - $this->setAbeCustomGrid($arr[$keys[15]]); + $this->setAbeMailserverOrMailcurrent($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { - $this->setAbeEmailServerUid($arr[$keys[16]]); + $this->setAbeCustomGrid($arr[$keys[16]]); + } + + if (array_key_exists($keys[17], $arr)) { + $this->setAbeEmailServerUid($arr[$keys[17]]); + } + + if (array_key_exists($keys[18], $arr)) { + $this->setAbeEmailServerReceiverUid($arr[$keys[18]]); } } @@ -1328,6 +1432,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_ACTION_FIELD, $this->abe_action_field); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD)) { + $criteria->add(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, $this->abe_action_body_field); + } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE)) { $criteria->add(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, $this->abe_case_note_in_response); } @@ -1360,6 +1468,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, $this->abe_email_server_uid); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID)) { + $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, $this->abe_email_server_receiver_uid); + } + return $criteria; } @@ -1430,6 +1542,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeActionField($this->abe_action_field); + $copyObj->setAbeActionBodyField($this->abe_action_body_field); + $copyObj->setAbeCaseNoteInResponse($this->abe_case_note_in_response); $copyObj->setAbeForceLogin($this->abe_force_login); @@ -1446,6 +1560,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeEmailServerUid($this->abe_email_server_uid); + $copyObj->setAbeEmailServerReceiverUid($this->abe_email_server_receiver_uid); + $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php index 213759db2..07f5b2bf0 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php +++ b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php @@ -25,7 +25,7 @@ abstract class BaseAbeConfigurationPeer const CLASS_DEFAULT = 'classes.model.AbeConfiguration'; /** The total number of columns. */ - const NUM_COLUMNS = 17; + const NUM_COLUMNS = 19; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -58,6 +58,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_ACTION_FIELD field */ const ABE_ACTION_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_FIELD'; + /** the column name for the ABE_ACTION_BODY_FIELD field */ + const ABE_ACTION_BODY_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_BODY_FIELD'; + /** the column name for the ABE_CASE_NOTE_IN_RESPONSE field */ const ABE_CASE_NOTE_IN_RESPONSE = 'ABE_CONFIGURATION.ABE_CASE_NOTE_IN_RESPONSE'; @@ -82,6 +85,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_EMAIL_SERVER_UID field */ const ABE_EMAIL_SERVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_UID'; + /** the column name for the ABE_EMAIL_SERVER_RECEIVER_UID field */ + const ABE_EMAIL_SERVER_RECEIVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_RECEIVER_UID'; + /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -93,10 +99,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeActionBodyField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', 'AbeEmailServerReceiverUid', ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', 'ABE_EMAIL_SERVER_RECEIVER_UID', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -106,10 +112,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeForceLogin' => 10, 'AbeCreateDate' => 11, 'AbeUpdateDate' => 12, 'AbeSubjectField' => 13, 'AbeMailserverOrMailcurrent' => 14, 'AbeCustomGrid' => 15, 'AbeEmailServerUid' => 16, ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_FORCE_LOGIN => 10, AbeConfigurationPeer::ABE_CREATE_DATE => 11, AbeConfigurationPeer::ABE_UPDATE_DATE => 12, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 13, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 14, AbeConfigurationPeer::ABE_CUSTOM_GRID => 15, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 16, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_FORCE_LOGIN' => 10, 'ABE_CREATE_DATE' => 11, 'ABE_UPDATE_DATE' => 12, 'ABE_SUBJECT_FIELD' => 13, 'ABE_MAILSERVER_OR_MAILCURRENT' => 14, 'ABE_CUSTOM_GRID' => 15, 'ABE_EMAIL_SERVER_UID' => 16, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeActionBodyField' => 9, 'AbeCaseNoteInResponse' => 10, 'AbeForceLogin' => 11, 'AbeCreateDate' => 12, 'AbeUpdateDate' => 13, 'AbeSubjectField' => 14, 'AbeMailserverOrMailcurrent' => 15, 'AbeCustomGrid' => 16, 'AbeEmailServerUid' => 17, 'AbeEmailServerReceiverUid' => 18, ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD => 9, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 10, AbeConfigurationPeer::ABE_FORCE_LOGIN => 11, AbeConfigurationPeer::ABE_CREATE_DATE => 12, AbeConfigurationPeer::ABE_UPDATE_DATE => 13, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 14, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 15, AbeConfigurationPeer::ABE_CUSTOM_GRID => 16, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 17, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID => 18, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_ACTION_BODY_FIELD' => 9, 'ABE_CASE_NOTE_IN_RESPONSE' => 10, 'ABE_FORCE_LOGIN' => 11, 'ABE_CREATE_DATE' => 12, 'ABE_UPDATE_DATE' => 13, 'ABE_SUBJECT_FIELD' => 14, 'ABE_MAILSERVER_OR_MAILCURRENT' => 15, 'ABE_CUSTOM_GRID' => 16, 'ABE_EMAIL_SERVER_UID' => 17, 'ABE_EMAIL_SERVER_RECEIVER_UID' => 18, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -228,6 +234,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_FORCE_LOGIN); @@ -244,6 +252,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID); + } const COUNT = 'COUNT(ABE_CONFIGURATION.ABE_UID)'; diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 74d40bc8e..ee62f0ff8 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -5091,6 +5091,16 @@ + + + + + + + + + + @@ -5138,6 +5148,7 @@ + @@ -5766,7 +5777,7 @@ - + diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index a0a1b1d13..18efed744 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2864,6 +2864,7 @@ CREATE TABLE `ABE_CONFIGURATION` `DYN_UID` VARCHAR(32) default '' NOT NULL, `ABE_EMAIL_FIELD` VARCHAR(255) default '' NOT NULL, `ABE_ACTION_FIELD` VARCHAR(255) default '', + `ABE_ACTION_BODY_FIELD` VARCHAR(255) default '', `ABE_CASE_NOTE_IN_RESPONSE` INTEGER default 0, `ABE_FORCE_LOGIN` INTEGER default 0, `ABE_CREATE_DATE` DATETIME NOT NULL, @@ -2872,6 +2873,7 @@ CREATE TABLE `ABE_CONFIGURATION` `ABE_MAILSERVER_OR_MAILCURRENT` INTEGER default 0, `ABE_CUSTOM_GRID` MEDIUMTEXT, `ABE_EMAIL_SERVER_UID` VARCHAR(32) default '', + `ABE_EMAIL_SERVER_RECEIVER_UID` VARCHAR(32) default '', PRIMARY KEY (`ABE_UID`), KEY `indexAbeProcess`(`PRO_UID`), KEY `indexAbeProcessTask`(`PRO_UID`, `TAS_UID`) From 2c7461b4a1964a43fd0bd4dcec497ef5d3541ed7 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 14 Nov 2018 15:00:10 -0400 Subject: [PATCH 02/38] PMC-40: Action by Email: Email response configuration --- config/app.php | 11 +- .../classes/ActionsByEmailCoreClass.php | 1201 +++++++++++++---- workflow/engine/classes/SpoolRun.php | 20 + workflow/engine/classes/WsBase.php | 4 +- .../engine/classes/model/AbeConfiguration.php | 5 +- workflow/engine/classes/model/AppMessage.php | 19 + .../model/map/AbeConfigurationMapBuilder.php | 4 + .../classes/model/om/BaseAbeConfiguration.php | 194 ++- .../model/om/BaseAbeConfigurationPeer.php | 28 +- workflow/engine/config/schema.xml | 13 +- .../translations/english/processmaker.en.po | 12 + workflow/engine/data/mysql/insert.sql | 2 + workflow/engine/data/mysql/schema.sql | 2 + .../ProcessMaker/Util/WsMessageResponse.php | 32 + 14 files changed, 1229 insertions(+), 318 deletions(-) create mode 100644 workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php diff --git a/config/app.php b/config/app.php index 18c615493..548de0a20 100644 --- a/config/app.php +++ b/config/app.php @@ -12,19 +12,20 @@ return [ 'log' => env('APP_LOG', 'single'), 'log_level' => env('APP_LOG_LEVEL', 'debug'), 'cache_lifetime' => env('APP_CACHE_LIFETIME', 60), - + 'key' => env('APP_KEY', 'base64:rU28h/tElUn/eiLY0qC24jJq1rakvAFRoRl1DWxj/kM='), + 'cipher' => 'AES-256-CBC', 'providers' => [ - FilesystemServiceProvider::class, CacheServiceProvider::class, - ViewServiceProvider::class, + FilesystemServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, - + Illuminate\Encryption\EncryptionServiceProvider::class, + ViewServiceProvider::class ], - 'aliases' => [ + 'Crypt' => Illuminate\Support\Facades\Crypt::class ], ]; diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 87eac721e..166485a06 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -1,308 +1,985 @@ defineWorkspace(); + $this->defineServicePath(); } /** - * @param $data - * @param $dataAbe + * Set the action by email request + * + * @param array $v + */ + public function setAbeRequest($v) + { + $this->abeRequest = $v; + } + + /** + * Get the action by email request + * + * @return array + */ + public function getAbeRequest() + { + return $this->abeRequest; + } + + /** + * Set the specific task property + * + * @param array $item + * + * @return void + */ + public function addItemAbeRequest(array $item) + { + $this->abeRequest = array_merge($this->abeRequest, $item); + } + + /** + * Get the specific task property + * + * @param string $key + * + * @return string + */ + public function getItemAbeRequest($key) + { + if (array_key_exists($key, $this->getAbeRequest())) { + return $this->abeRequest[$key]; + } else { + return []; + } + } + + /** + * Set the application uid + * + * @param string $v + */ + public function setAppUid($v) + { + $this->appUid = $v; + } + + /** + * Get the application uid + * + * @return string + */ + public function getAppUid() + { + return $this->appUid; + } + + /** + * Set the case number + * + * @param integer $v + */ + public function setAppNumber($v) + { + $this->appNumber = $v; + } + + /** + * Get the case number + * + * @return integer + */ + public function getAppNumber() + { + return $this->appNumber; + } + + /** + * Set the case properties + * + * @param array $v + */ + public function setCaseProperties(array $v) + { + $this->caseProperties = $v; + } + + /** + * Get the case properties + * + * @return array + */ + public function getCaseProperties() + { + return $this->caseProperties; + } + + /** + * Get the specific case property + * + * @param string $key + * + * @return array + */ + public function getCasePropertiesKey($key) + { + if (array_key_exists($key, $this->getCaseProperties())) { + return $this->caseProperties[$key]; + } else { + return []; + } + } + + /** + * Set the email from + * + * @param string $v + */ + public function setEmailFrom($v) + { + $this->emailFrom = $v; + } + + /** + * Get the email from + * + * @return string + */ + public function getEmailFrom() + { + return $this->emailFrom; + } + + /** + * Set the email to + * + * @param string $v + */ + public function setEmailTo($v) + { + $this->emailTo = $v; + + } + + /** + * Get the email to + * + * @return string + */ + public function getEmailTo() + { + return $this->emailTo; + } + + /** + * Set the index + * + * @param integer $v + */ + public function setIndex($v) + { + $this->index = $v; + } + + /** + * Get the index + * + * @return integer + */ + public function getIndex() + { + return $this->index; + } + + /** + * Set prefix + * + * @param array $v + */ + public function setPrefix(array $v) + { + $this->prefix = $v; + } + + /** + * Get prefix + * + * @return array + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * Set the previous user + * + * @param string $v + */ + public function setPreviousUser($v) + { + $this->previousUser = $v; + } + + /** + * Get the previous user + * + * @return string + */ + public function getPreviousUser() + { + return $this->previousUser; + } + + /** + * Set the reply to + * + * @param string $v + */ + public function setReplyTo($v) + { + $this->replyTo = $v; + } + + /** + * Get the reply to + * + * @return string + */ + public function getReplyTo() + { + return $this->replyTo; + } + + /** + * Set the task + * + * @param string $v + */ + public function setTask($v) + { + $this->task = $v; + } + + /** + * Get the task + * + * @return string + */ + public function getTask() + { + return $this->task; + } + + /** + * Set in the task the action by email properties + * + * @param array $v + */ + public function setTaskAbeProperties(array $v) + { + $this->taskAbeProperties = $v; + } + + /** + * Get the task the action by email properties + * + * @return array + */ + public function getTaskAbeProperties() + { + return $this->taskAbeProperties; + } + + /** + * Add a item in the action by email properties + * + * @param array $item + * + * @return void + */ + public function addItemAbeProperties(array $item) + { + $this->taskAbeProperties = array_merge($this->taskAbeProperties, $item); + } + + /** + * Get the specific task property + * + * @param string $key + * + * @return array + */ + public function getItemAbeProperties($key) + { + if (array_key_exists($key, $this->getTaskAbeProperties())) { + return $this->taskAbeProperties[$key]; + } else { + return []; + } + } + + /** + * Set the link + */ + public function defineServicePath() + { + $this->servicePath = System::getServerMainPath() . '/services/ActionsByEmail'; + } + + /** + * Get the link + * + * @return string + */ + public function getServicePath() + { + return $this->servicePath; + } + + /** + * Set the user uid + * + * @param string $v + */ + public function setUser($v) + { + $this->user = $v; + } + + /** + * Get the user uid + * + * @return string + */ + public function getUser() + { + return $this->user; + } + + /** + * Set the subject + * + * @param string $v + */ + public function setSubject($v) + { + $this->subject = $v; + } + + /** + * Get the subject + * + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * Set the workspace name + */ + public function defineWorkspace() + { + $this->workspace = config("system.workspace"); + } + + /** + * Get the workspace name + * + * @return string + */ + public function getWorkspace() + { + return $this->workspace; + } + + /** + * Get the email server definition + * + * @param string $emailServerKey + * + * @return object + */ + private function getEmailServer($emailServerKey) + { + $emailServer = new EmailServer(); + $emailSetup = (!is_null(EmailServerPeer::retrieveByPK($emailServerKey))) ? + $emailServer->getEmailServer($emailServerKey, true) : + $emailServer->getEmailServerDefault(); + + return $emailSetup; + } + + /** + * Define the properties in the task related the action by email configuration + * + * @return void + */ + private function defineTaskAbeProperties() + { + $actionEmailTable = new AbeConfiguration(); + $properties = $actionEmailTable->getTaskConfiguration($this->getCasePropertiesKey('PRO_UID'), $this->getTask()); + $this->setTaskAbeProperties($properties); + } + + /** + * Define the email from + * + * @param array $emailServerSetup + * + * @return void + */ + private function defineEmailFrom(array $emailServerSetup) + { + $from = ''; + if (!$this->getItemAbeProperties('ABE_MAILSERVER_OR_MAILCURRENT') && !empty($this->getItemAbeProperties('ABE_TYPE'))) { + if (!empty($this->getPreviousUser())) { + $user = new Users(); + $userDetails = $user->loadDetails($this->getPreviousUser()); + $from = ($userDetails["USR_FULLNAME"] . ' <' . $userDetails["USR_EMAIL"] . '>'); + } else { + global $RBAC; + $currentUser = $RBAC->aUserInfo['USER_INFO']; + $from = ($currentUser["USR_FIRSTNAME"] . ' ' . $currentUser["USR_LASTNAME"] . ' <' . $currentUser["USR_EMAIL"] . '>'); + } + } + //Define the email from + $emailFrom = G::buildFrom($emailServerSetup, $from); + $this->setEmailFrom($emailFrom); + } + + /** + * Define the email to + * + * @param string $emailField + * @param array $caseData + * + * @return void + */ + private function defineEmailTo($emailField, array $caseData) + { + $emailField = str_replace($this->getPrefix(), '', $emailField); + if ($emailField != '' && isset($caseData[$emailField])) { + $emailTo = trim($caseData[$emailField]); + } else { + $userInstance = new Users(); + $emailTo = $userInstance->getAllInformation($this->getUser())['mail']; + } + + $this->setEmailTo($emailTo); + } + + /** + * Define the reply to + * + * @param string $receiverUid + * + * @return void + */ + private function defineReplyTo($receiverUid) + { + $emailServer = $this->getEmailServer($receiverUid); + $replyTo = $emailServer["MESS_ACCOUNT"]; + + $this->setReplyTo($replyTo); + } + + /** + * Define the subject + * + * @param string $subjectField + * @param array $caseData + * + * @return void + */ + private function defineSubject($subjectField, array $caseData) + { + $subject = G::replaceDataField($subjectField, $caseData); + if (empty($subject)) { + $subject = $this->getCasePropertiesKey('APP_TITLE'); + } + + $this->setSubject($subject); + } + + /** + * Validate and set the fields that we need for the action by email + * + * @param object $data + */ + private function validateAndSetValues($data) + { + try { + if (!is_object($data)) { + throw new Exception('The parameter $data is null.'); + } + // Validate the tas_uid + if (empty($data->TAS_UID)) { + throw new Exception('The parameter $data->TAS_UID is null or empty.'); + } else { + $this->setTask($data->TAS_UID); + } + // Validate the app_uid + if (empty($data->APP_UID)) { + throw new Exception('The parameter $data->APP_UID is null or empty.'); + } else { + $this->setAppUid($data->APP_UID); + } + // Validate the del_index + if (empty($data->DEL_INDEX)) { + throw new Exception('The parameter $data->DEL_INDEX is null or empty.'); + } elseif ($data->DEL_INDEX === 1) { + // Processmaker log + $context = Bootstrap::getDefaultContextLog(); + $context['delIndex'] = $data->DEL_INDEX; + Bootstrap::registerMonolog('ActionByEmail', 250, 'Actions by email does not work in the initial task', $context); + + return; + } else { + $this->setIndex($data->DEL_INDEX); + } + // Validate the usr_uid + if (empty($data->USR_UID)) { + throw new Exception('The parameter $data->USR_UID is null or empty.'); + } else { + $this->setUser($data->USR_UID); + } + // Define the previous user + if (!empty($data->PREVIOUS_USR_UID)) { + $this->setPreviousUser($data->PREVIOUS_USR_UID); + } + } catch (Exception $e) { + $token = strtotime("now"); + PMException::registerErrorLog($e, $token); + G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", [$token])); + die; + } + } + + /** + * Send the action by email + * + * @param object $data + * @param array $dataAbe + * + * @return void * @throws Exception */ - public function sendActionsByEmail($data, $dataAbe) + public function sendActionsByEmail($data, array $dataAbe) { try { // Validations - try { - if (!is_object($data)) { - throw new Exception('The parameter $data is null.'); - } - if (!isset($data->TAS_UID)) { - throw new Exception('The parameter $data->TAS_UID is null.'); - } + self::validateAndSetValues($data); - if (!isset($data->APP_UID)) { - throw new Exception('The parameter $data->APP_UID is null.'); - } - - if (!isset($data->DEL_INDEX)) { - throw new Exception('The parameter $data->DEL_INDEX is null.'); - } - - if (!isset($data->USR_UID)) { - throw new Exception('The parameter $data->USR_UID is null.'); - } - - if ($data->TAS_UID === '') { - throw new Exception('The parameter $data->TAS_UID is empty.'); - } - - if ($data->APP_UID === '') { - throw new Exception('The parameter $data->APP_UID is empty.'); - } - - if ($data->DEL_INDEX === '') { - throw new Exception('The parameter $data->DEL_INDEX is empty.'); - } - - if ($data->DEL_INDEX === 1) { - error_log('The parameter $data->DEL_INDEX is 1, you can not use ActionsByEmail in the initial task', 0); - return; - } - - if ($data->USR_UID === '') { - error_log('The parameter $data->USR_UID is empty, the routed task may be a self-service type, actions by email does not work with self-service task types.', 0); - } - } catch(Exception $e) { - $token = strtotime("now"); - PMException::registerErrorLog($e, $token); - G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) ); - die; - } - - $emailServer = new \ProcessMaker\BusinessModel\EmailServer(); - - $emailSetup = (!is_null(\EmailServerPeer::retrieveByPK($dataAbe['ABE_EMAIL_SERVER_UID']))) ? - $emailServer->getEmailServer($dataAbe['ABE_EMAIL_SERVER_UID'], true) : - $emailServer->getEmailServerDefault(); - - if (!empty($emailSetup)) { + $emailServerSetup = $this->getEmailServer($dataAbe['ABE_EMAIL_SERVER_UID']); + if (!empty($emailServerSetup)) { $cases = new Cases(); - $caseFields = $cases->loadCase($data->APP_UID, $data->DEL_INDEX); - $actionEmailTable = new AbeConfiguration(); - $configuration = $actionEmailTable->getTaskConfiguration($caseFields['PRO_UID'], $data->TAS_UID); - $caseFields['APP_DATA']['PRO_ID'] = $configuration['PRO_ID']; - $caseFields['APP_DATA']['TAS_ID'] = $configuration['TAS_ID']; + $caseFields = $cases->loadCase($this->getAppUid(), $this->getIndex()); + $this->setCaseProperties($caseFields); + $this->defineTaskAbeProperties(); + $caseFields['APP_DATA']['PRO_ID'] = $this->getItemAbeProperties('PRO_ID'); + $caseFields['APP_DATA']['TAS_ID'] = $this->getItemAbeProperties('TAS_ID'); + if (!empty($this->getTaskAbeProperties())) { + $this->defineEmailTo($this->getItemAbeProperties('ABE_EMAIL_FIELD'), $caseFields['APP_DATA']); - if (!empty($configuration)) { - $configuration['ABE_EMAIL_FIELD'] = str_replace('@@', '', $configuration['ABE_EMAIL_FIELD']); - if ($configuration['ABE_EMAIL_FIELD'] != '' && isset($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']])) { - $email = trim($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']]); - } else { - $userInstance = new Users(); - $userInfo = $userInstance->getAllInformation($data->USR_UID); - $email = $userInfo['mail']; - } + if (!empty($this->getEmailTo())) { + $this->defineSubject($this->getItemAbeProperties('ABE_SUBJECT_FIELD'), $caseFields['APP_DATA']); - if ($email != '') { - $subject = G::replaceDataField( $configuration['ABE_SUBJECT_FIELD'], $caseFields['APP_DATA'] ); - if($subject == ''){ - $subject = $caseFields['APP_TITLE']; - } + $request = [ + 'ABE_REQ_UID' => '', + 'ABE_UID' => $this->getItemAbeProperties('ABE_UID'), + 'APP_UID' => $this->getAppUid(), + 'DEL_INDEX' => $this->getIndex(), + 'ABE_REQ_SENT_TO' => $this->getEmailTo(), + 'ABE_REQ_SUBJECT' => $this->getSubject(), + 'ABE_REQ_BODY' => '', + 'ABE_REQ_ANSWERED' => 0, + 'ABE_REQ_STATUS' => 'PENDING' + ]; + $this->setAbeRequest($request); + $this->registerRequest(); - $abeRequest = array(); - $abeRequest['ABE_REQ_UID'] = ''; - $abeRequest['ABE_UID'] = $configuration['ABE_UID']; - $abeRequest['APP_UID'] = $data->APP_UID; - $abeRequest['DEL_INDEX'] = $data->DEL_INDEX; - $abeRequest['ABE_REQ_SENT_TO'] = $email; - $abeRequest['ABE_REQ_SUBJECT'] = $subject; - $abeRequest['ABE_REQ_BODY'] = ''; - $abeRequest['ABE_REQ_ANSWERED'] = 0; - $abeRequest['ABE_REQ_STATUS'] = 'PENDING'; - - try { - $abeRequestsInstance = new AbeRequests(); - $abeRequest['ABE_REQ_UID'] = $abeRequestsInstance->createOrUpdate($abeRequest); - } catch (Exception $error) { - throw $error; - } - - if ($configuration['ABE_TYPE'] != '') { + if (!empty($this->getItemAbeProperties('ABE_TYPE'))) { // Email - $_SESSION['CURRENT_DYN_UID'] = $configuration['DYN_UID']; - + $_SESSION['CURRENT_DYN_UID'] = $this->getItemAbeProperties('DYN_UID'); $__ABE__ = ''; - - $link = System::getServerMainPath() . '/services/ActionsByEmail'; - switch ($configuration['ABE_TYPE']) { + switch ($this->getItemAbeProperties('ABE_TYPE')) { case 'CUSTOM': - $customGrid = unserialize($configuration['ABE_CUSTOM_GRID']); - $variableService = new \ProcessMaker\Services\Api\Project\Variable(); - $variables = $variableService->doGetVariables($caseFields['PRO_UID']); - $field = new stdClass(); - $field->label = ''; - $actionField = str_replace(array('@@', '@#', '@=', '@%', '@?', '@$'), '', $configuration['ABE_ACTION_FIELD']); - - $obj = new PmDynaform($configuration['DYN_UID']); - $configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID']; - $file = $obj->printPmDynaformAbe($configuration); - $__ABE__ .= $file; - $__ABE__ .= '
' . $field->label . '
'; - $index = 1; - $__ABE__ .= '
'; - foreach ($customGrid as $key => $value) { - $__ABE__ .= '' . (($index % 5 == 0) ? '' : ' '); - $index++; - } - $__ABE__ .= '
' . $value['abe_custom_label']; - $__ABE__ .= '
'; + $__ABE__ .= $this->getCustomTemplate(); + break; + case 'RESPONSE': + $this->defineReplyTo($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']); + $__ABE__ .= $this->getResponseTemplate(); break; case 'LINK': - $__ABE__ .= 'Please complete this form'; + $__ABE__ .= $this->getServicePathTemplate(); break; - // coment case 'FIELD': - $variableService = new \ProcessMaker\Services\Api\Project\Variable(); - $variables = $variableService->doGetVariables($caseFields['PRO_UID']); - $field = new stdClass(); - $field->label = 'Test'; - $field->type = 'dropdown'; - $field->options = array(); - $field->value = ''; - $actionField = str_replace(array('@@','@#','@=','@%','@?','@$'), '', $configuration['ABE_ACTION_FIELD']); - $dynaform = $configuration['DYN_UID']; - $variables = G::json_decode($configuration['DYN_CONTENT'], true); - if(isset($variables['items'][0]['items'])){ - $fields = $variables['items'][0]['items']; - foreach ($fields as $key => $value) { - foreach($value as $var){ - if(isset($var['variable'])){ - if ($var['variable'] == $actionField) { - $field->label = $var['label']; - $field->type = $var['type']; - $values = $var['options']; - foreach ($values as $val){ - $field->options[$val['value']] = $val['value']; - } - } - } - } - } - } - - $obj = new PmDynaform($configuration['DYN_UID']); - $configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID']; - $file = $obj->printPmDynaformAbe($configuration); - $__ABE__ .= $file; - $__ABE__ .= '' . $field->label . '
'; - switch ($field->type) { - case 'dropdown': - case 'radio': - case 'radiogroup': - $index = 1; - $__ABE__.='
'; - break; - case 'yesno': - $__ABE__ .= ''; - $__ABE__ .= ''; - break; - case 'checkbox': - $__ABE__ .= ''; - $__ABE__ .= ''; - break; - } - $__ABE__ .= '
'; - foreach ($field->options as $optValue => $optName) { - $__ABE__ .= '' . (($index % 5 == 0) ? '' : ' '); - $index++; - } - - $__ABE__.='
' . $optName; - $__ABE__ .= '
' . G::LoadTranslation('ID_YES_VALUE') . '' . G::LoadTranslation('ID_NO_VALUE') . 'CheckUncheck
'; + $__ABE__ .= $this->getFieldTemplate(); break; } - - $__ABE__ = preg_replace('/\/', '' , $__ABE__); - $__ABE__ = preg_replace('/\]*\/>/', '' , $__ABE__); + $__ABE__ = preg_replace('/\/', '', $__ABE__); + $__ABE__ = preg_replace('/\]*\/>/', '', $__ABE__); $__ABE__ = preg_replace('/]*>(.*?)<\/select>/is', "", $__ABE__); - $__ABE__ = preg_replace('/align=\"center\"/', '' , $__ABE__); - $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', $__ABE__); + $__ABE__ = preg_replace('/align=\"center\"/', '', $__ABE__); + $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', + $__ABE__); $caseFields['APP_DATA']['__ABE__'] = $__ABE__; - $user = new Users(); - - if (!$configuration['ABE_MAILSERVER_OR_MAILCURRENT'] && $configuration['ABE_TYPE'] !== '') { - if ($data->PREVIOUS_USR_UID !== '') { - $userDetails = $user->loadDetails($data->PREVIOUS_USR_UID); - $emailFrom = ($userDetails["USR_FULLNAME"] . ' <' . $userDetails["USR_EMAIL"] . '>'); - } else { - global $RBAC; - $currentUser = $RBAC->aUserInfo['USER_INFO']; - $emailFrom = ($currentUser["USR_FIRSTNAME"] . ' ' . $currentUser["USR_LASTNAME"] . ' <' . $currentUser["USR_EMAIL"] . '>'); - } - } else { - if (isset($emailSetup["MESS_FROM_NAME"]) && isset($emailSetup["MESS_FROM_MAIL"])) { - $emailFrom = ($emailSetup["MESS_FROM_NAME"] . ' <' . $emailSetup["MESS_FROM_MAIL"] . '>'); - } else { - $emailFrom = ((isset($emailSetup["MESS_FROM_NAME"])) ? $emailSetup["MESS_FROM_NAME"] : $emailSetup["MESS_FROM_MAIL"]); - } - } - - $wsBaseInstance = new WsBase(); - $result = $wsBaseInstance->sendMessage( - $data->APP_UID, - $emailFrom, - $email, - '', - '', - $subject, - $configuration['ABE_TEMPLATE'], + $this->defineEmailFrom($emailServerSetup); + $result = $this->abeSendMessage( + $this->getItemAbeProperties('ABE_TEMPLATE'), $caseFields['APP_DATA'], - null, - true, - $data->DEL_INDEX, - $emailSetup, - 0 + $emailServerSetup ); - $abeRequest['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR'); + $request = []; + $request['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR'); - $body = ''; - $messageSent = executeQuery('SELECT `APP_MSG_BODY` FROM `APP_MESSAGE` ORDER BY `APP_MSG_SEND_DATE` DESC LIMIT 1'); - - if (!empty($messageSent) && is_array($messageSent)) { - $body = $messageSent[1]['APP_MSG_BODY']; - } - - $abeRequest['ABE_REQ_BODY'] = $body; - - // Update - try { - $abeRequestsInstance = new AbeRequests(); - $abeRequestsInstance->createOrUpdate($abeRequest); - } catch (Exception $error) { - throw $error; - } + $request['ABE_REQ_BODY'] = empty($result->getAppMessUid()) ? '' : AppMessage::getAppMsgBodyByKey($result->getAppMessUid()); + $this->addItemAbeRequest($request); + $this->registerRequest(); } } + } else { + throw new Exception('Task does not have an action by email configuration.'); } } } catch (Exception $error) { throw $error; } } + + /** + * Get the html template for email response + * + * @return string + */ + private function getResponseTemplate() + { + $noReply = $this->getReplyTo(); + $customGrid = unserialize($this->getItemAbeProperties('ABE_CUSTOM_GRID')); + $field = new stdClass(); + $field->label = ''; + $html = '
' . $field->label . ''; + $html .= '
'; + $index = 1; + foreach ($customGrid as $key => $value) { + // Get the subject + $emailSubject = $this->getSubjectByResponse($value['abe_custom_label']); + $emailBody = $this->getBodyByResponse($value['abe_custom_value']); + // Define the html for the actions + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + $html .= '
'; + $html .= $value['abe_custom_label']; + $html .= '
'; + + return $html; + } + + /** + * Get the subject for response the action by email + * + * @param string $fieldLabel + * + * @return string + */ + private function getSubjectByResponse($fieldLabel) + { + $subject = G::LoadTranslation('ID_CASE') . ' ' . $this->getCasePropertiesKey('APP_TITLE'); + $subject .= $this->delimiter . ' ' . $fieldLabel; + + return urlencode($subject); + } + + /** + * Get the body for response the action by email + * + * @param string $fieldValue + * + * @return string + */ + private function getBodyByResponse($fieldValue) + { + $bodyToCrypt = [ + 'workspace' => $this->getWorkspace(), + 'appUid' => $this->getAppUid(), + 'delIndex' => $this->getIndex(), + 'fieldValue' => $fieldValue, + ]; + $bodyToCrypt = G::json_encode($bodyToCrypt); + + $body = str_repeat(self::BODY_REPLY_LF, 4); + $body .= '/' . str_repeat("=", 24) . self::BODY_REPLY_LF; + $body .= G::LoadTranslation('ID_ABE_EMAIL_RESPONSE_BODY_NOTE') . self::BODY_REPLY_LF; + $body .= '{' . Crypt::encryptString($bodyToCrypt) . '}' . self::BODY_REPLY_LF; + $body .= str_repeat("=", 24) . '/'; + return $body; + } + + /** + * Get the html template for custom actions + * @todo we need to revise this function + * + * @return string + */ + private function getCustomTemplate() + { + $abeRequest = $this->getAbeRequest(); + $customGrid = unserialize($this->getItemAbeProperties('ABE_CUSTOM_GRID')); + $variableService = new Variable(); + $variables = $variableService->doGetVariables($this->getCasePropertiesKey('PRO_UID')); + $field = new stdClass(); + $field->label = ''; + $actionField = str_replace( + $this->getPrefix(), + '', + $this->getItemAbeProperties('ABE_ACTION_FIELD') + ); + + $itemDynUid = $this->getItemAbeProperties('DYN_UID'); + $obj = new PmDynaform($itemDynUid); + $this->addItemAbeProperties(['CURRENT_DYNAFORM' => $itemDynUid]); + $file = $obj->printPmDynaformAbe($this->getTaskAbeProperties()); + $html = $file; + $html .= '
' . $field->label . ''; + $index = 1; + $html .= '
'; + foreach ($customGrid as $key => $value) { + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + $html .= '
getServicePath())) . '?ACTION=' . G::encrypt('processABE', + URL_KEY, true) . '&APP_UID='; + $html .= G::encrypt($this->getAppUid(), URL_KEY, + true) . '&DEL_INDEX=' . G::encrypt($this->getindex(), URL_KEY); + $html .= '&FIELD=' . G::encrypt($actionField, URL_KEY, + true) . '&VALUE=' . G::encrypt($value['abe_custom_value'], URL_KEY, + true); + $html .= '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY, + true) . '" target="_blank" >' . $value['abe_custom_label']; + $html .= '
'; + + return $html; + } + + /** + * Get the html template for link to fill a form + * @todo we need to revise this function + * + * @return string + */ + private function getServicePathTemplate() + { + $abeRequest = $this->getAbeRequest(); + $html = 'Please complete this form'; + + return $html; + } + + /** + * Get the html template for use a field to generate actions links + * @todo we need to revise this function + * + * @return string + */ + private function getFieldTemplate() + { + $abeRequest = $this->getAbeRequest(); + $variableService = new Variable(); + $variables = $variableService->doGetVariables($this->getCasePropertiesKey('PRO_UID')); + $field = new stdClass(); + $field->label = 'Test'; + $field->type = 'dropdown'; + $field->options = []; + $field->value = ''; + $actionField = str_replace( + $this->getPrefix(), + '', + $this->getItemAbeProperties('ABE_ACTION_FIELD') + ); + $dynUid = $this->getItemAbeProperties('DYN_UID'); + $variables = G::json_decode($this->getItemAbeProperties('DYN_CONTENT'), true); + if (isset($variables['items'][0]['items'])) { + $fields = $variables['items'][0]['items']; + foreach ($fields as $key => $value) { + foreach ($value as $var) { + if (isset($var['variable'])) { + if ($var['variable'] == $actionField) { + $field->label = $var['label']; + $field->type = $var['type']; + $values = $var['options']; + foreach ($values as $val) { + $field->options[$val['value']] = $val['value']; + } + } + } + } + } + } + + $obj = new PmDynaform($dynUid); + $this->addItemAbeProperties(['CURRENT_DYNAFORM' => $dynUid]); + $file = $obj->printPmDynaformAbe($this->getTaskAbeProperties()); + $html = $file; + $html .= '' . $field->label . '
'; + switch ($field->type) { + case 'dropdown': + case 'radio': + case 'radiogroup': + $index = 1; + $html .= '
'; + break; + case 'yesno': + $html .= ''; + $html .= ''; + break; + case 'checkbox': + $html .= ''; + $html .= ''; + break; + } + $html .= '
'; + foreach ($field->options as $optValue => $optName) { + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + + $html .= '
' . $optName; + $html .= '
' . G::LoadTranslation('ID_YES_VALUE') . '' . G::LoadTranslation('ID_NO_VALUE') . 'CheckUncheck
'; + + return $html; + } + + /** + * Register the request in the table ABE_REQUEST + * + * @return void + * @throws Exception + */ + private function registerRequest() + { + try { + $requestInstance = new AbeRequests(); + $abeRequest['ABE_REQ_UID'] = $requestInstance->createOrUpdate($this->getAbeRequest()); + $this->setAbeRequest($abeRequest); + } catch (Exception $error) { + throw $error; + } + } + + /** + * Send the message + * + * @param string $template + * @param array $caseData + * @param array $configEmail + * + * @return object + * @throws Exception + */ + private function abeSendMessage($template, array $caseData, array $configEmail) + { + try { + $wsBaseInstance = new WsBase(); + $result = $wsBaseInstance->sendMessage( + $this->getAppUid(), + $this->getEmailFrom(), + $this->getEmailTo(), + '', + '', + $this->getSubject(), + $template, + $caseData, + null, + true, + $this->getIndex(), + $configEmail, + 0 + ); + + return $result; + } catch (Exception $error) { + throw $error; + } + } } diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index 255aeda04..56bccc4ec 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -50,6 +50,26 @@ class SpoolRun $this->mailEreg = "/^([\w\-_\+\.']+@[\w\-_\.]+\.\w{2,5}+)$/"; } + /** + * Set the $spool_id + * + * @param string + */ + public function setSpoolId($v) + { + $this->spool_id = $v; + } + + /** + * Get the $spool_id + * + * @return string + */ + public function getSpoolId() + { + return $this->spool_id; + } + /** * get all files into spool in a list * diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index 489fdd533..67165343d 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -5,6 +5,7 @@ use ProcessMaker\BusinessModel\EmailServer; use ProcessMaker\ChangeLog\ChangeLog; /*----------------------------------********---------------------------------*/ use ProcessMaker\Core\System; +use ProcessMaker\Util\WsMessageResponse; class WsBase { @@ -947,7 +948,8 @@ class WsBase $spool->sendMail(); if ($spool->status == 'sent') { - $result = new WsResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + $result = new WsMessageResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + $result->setAppMessUid($spool->getSpoolId()); } else { $result = new WsResponse(29, $spool->status . ' ' . $spool->error . print_r($setup, 1)); } diff --git a/workflow/engine/classes/model/AbeConfiguration.php b/workflow/engine/classes/model/AbeConfiguration.php index 6b740d85a..6722958cf 100644 --- a/workflow/engine/classes/model/AbeConfiguration.php +++ b/workflow/engine/classes/model/AbeConfiguration.php @@ -26,6 +26,7 @@ class AbeConfiguration extends BaseAbeConfiguration 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', + 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', @@ -33,7 +34,8 @@ class AbeConfiguration extends BaseAbeConfiguration 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', - 'ABE_EMAIL_SERVER_UID' + 'ABE_EMAIL_SERVER_UID', + 'ABE_EMAIL_SERVER_RECEIVER_UID' ]; public function load($abeUid) @@ -136,6 +138,7 @@ class AbeConfiguration extends BaseAbeConfiguration $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_SUBJECT_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CUSTOM_GRID); diff --git a/workflow/engine/classes/model/AppMessage.php b/workflow/engine/classes/model/AppMessage.php index 90f1fc9a4..663ade86c 100644 --- a/workflow/engine/classes/model/AppMessage.php +++ b/workflow/engine/classes/model/AppMessage.php @@ -300,5 +300,24 @@ class AppMessage extends BaseAppMessage return $messages; } + + /** + * Get the APP_MSG_BODY related to the key + * + * @param string $key + * + * @return string + * @throws Exception + */ + public static function getAppMsgBodyByKey($key) + { + try { + $appMessage = AppMessagePeer::retrieveByPk($key); + + return $appMessage->getAppMsgBody(); + } catch (Exception $error) { + throw $error; + } + } } diff --git a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php index 8652ef90a..c74d98fa0 100644 --- a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php +++ b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php @@ -83,6 +83,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_ACTION_FIELD', 'AbeActionField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_ACTION_BODY_FIELD', 'AbeActionBodyField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_CASE_NOTE_IN_RESPONSE', 'AbeCaseNoteInResponse', 'int', CreoleTypes::INTEGER, false, null); $tMap->addColumn('ABE_FORCE_LOGIN', 'AbeForceLogin', 'int', CreoleTypes::INTEGER, false, null); @@ -99,6 +101,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_EMAIL_SERVER_UID', 'AbeEmailServerUid', 'string', CreoleTypes::VARCHAR, false, 32); + $tMap->addColumn('ABE_EMAIL_SERVER_RECEIVER_UID', 'AbeEmailServerReceiverUid', 'string', CreoleTypes::VARCHAR, false, 32); + } // doBuild() } // AbeConfigurationMapBuilder diff --git a/workflow/engine/classes/model/om/BaseAbeConfiguration.php b/workflow/engine/classes/model/om/BaseAbeConfiguration.php index 7de6b6b1a..a83b0448d 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfiguration.php +++ b/workflow/engine/classes/model/om/BaseAbeConfiguration.php @@ -81,6 +81,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_action_field = ''; + /** + * The value for the abe_action_body_field field. + * @var string + */ + protected $abe_action_body_field = ''; + /** * The value for the abe_case_note_in_response field. * @var int @@ -129,6 +135,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_email_server_uid = ''; + /** + * The value for the abe_email_server_receiver_uid field. + * @var string + */ + protected $abe_email_server_receiver_uid = ''; + /** * Flag to prevent endless save loop, if this object is referenced * by another object which falls in this transaction. @@ -242,6 +254,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_action_field; } + /** + * Get the [abe_action_body_field] column value. + * + * @return string + */ + public function getAbeActionBodyField() + { + + return $this->abe_action_body_field; + } + /** * Get the [abe_case_note_in_response] column value. * @@ -372,6 +395,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_email_server_uid; } + /** + * Get the [abe_email_server_receiver_uid] column value. + * + * @return string + */ + public function getAbeEmailServerReceiverUid() + { + + return $this->abe_email_server_receiver_uid; + } + /** * Set the value of [abe_uid] column. * @@ -570,6 +604,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeActionField() + /** + * Set the value of [abe_action_body_field] column. + * + * @param string $v new value + * @return void + */ + public function setAbeActionBodyField($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->abe_action_body_field !== $v || $v === '') { + $this->abe_action_body_field = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_ACTION_BODY_FIELD; + } + + } // setAbeActionBodyField() + /** * Set the value of [abe_case_note_in_response] column. * @@ -760,6 +816,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeEmailServerUid() + /** + * Set the value of [abe_email_server_receiver_uid] column. + * + * @param string $v new value + * @return void + */ + public function setAbeEmailServerReceiverUid($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->abe_email_server_receiver_uid !== $v || $v === '') { + $this->abe_email_server_receiver_uid = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID; + } + + } // setAbeEmailServerReceiverUid() + /** * Hydrates (populates) the object variables with values from the database resultset. * @@ -795,28 +873,32 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->abe_action_field = $rs->getString($startcol + 8); - $this->abe_case_note_in_response = $rs->getInt($startcol + 9); + $this->abe_action_body_field = $rs->getString($startcol + 9); - $this->abe_force_login = $rs->getInt($startcol + 10); + $this->abe_case_note_in_response = $rs->getInt($startcol + 10); - $this->abe_create_date = $rs->getTimestamp($startcol + 11, null); + $this->abe_force_login = $rs->getInt($startcol + 11); - $this->abe_update_date = $rs->getTimestamp($startcol + 12, null); + $this->abe_create_date = $rs->getTimestamp($startcol + 12, null); - $this->abe_subject_field = $rs->getString($startcol + 13); + $this->abe_update_date = $rs->getTimestamp($startcol + 13, null); - $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 14); + $this->abe_subject_field = $rs->getString($startcol + 14); - $this->abe_custom_grid = $rs->getString($startcol + 15); + $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 15); - $this->abe_email_server_uid = $rs->getString($startcol + 16); + $this->abe_custom_grid = $rs->getString($startcol + 16); + + $this->abe_email_server_uid = $rs->getString($startcol + 17); + + $this->abe_email_server_receiver_uid = $rs->getString($startcol + 18); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 17; // 17 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 19; // 19 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating AbeConfiguration object", $e); @@ -1048,29 +1130,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->getAbeActionField(); break; case 9: - return $this->getAbeCaseNoteInResponse(); + return $this->getAbeActionBodyField(); break; case 10: - return $this->getAbeForceLogin(); + return $this->getAbeCaseNoteInResponse(); break; case 11: - return $this->getAbeCreateDate(); + return $this->getAbeForceLogin(); break; case 12: - return $this->getAbeUpdateDate(); + return $this->getAbeCreateDate(); break; case 13: - return $this->getAbeSubjectField(); + return $this->getAbeUpdateDate(); break; case 14: - return $this->getAbeMailserverOrMailcurrent(); + return $this->getAbeSubjectField(); break; case 15: - return $this->getAbeCustomGrid(); + return $this->getAbeMailserverOrMailcurrent(); break; case 16: + return $this->getAbeCustomGrid(); + break; + case 17: return $this->getAbeEmailServerUid(); break; + case 18: + return $this->getAbeEmailServerReceiverUid(); + break; default: return null; break; @@ -1100,14 +1188,16 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $keys[6] => $this->getDynUid(), $keys[7] => $this->getAbeEmailField(), $keys[8] => $this->getAbeActionField(), - $keys[9] => $this->getAbeCaseNoteInResponse(), - $keys[10] => $this->getAbeForceLogin(), - $keys[11] => $this->getAbeCreateDate(), - $keys[12] => $this->getAbeUpdateDate(), - $keys[13] => $this->getAbeSubjectField(), - $keys[14] => $this->getAbeMailserverOrMailcurrent(), - $keys[15] => $this->getAbeCustomGrid(), - $keys[16] => $this->getAbeEmailServerUid(), + $keys[9] => $this->getAbeActionBodyField(), + $keys[10] => $this->getAbeCaseNoteInResponse(), + $keys[11] => $this->getAbeForceLogin(), + $keys[12] => $this->getAbeCreateDate(), + $keys[13] => $this->getAbeUpdateDate(), + $keys[14] => $this->getAbeSubjectField(), + $keys[15] => $this->getAbeMailserverOrMailcurrent(), + $keys[16] => $this->getAbeCustomGrid(), + $keys[17] => $this->getAbeEmailServerUid(), + $keys[18] => $this->getAbeEmailServerReceiverUid(), ); return $result; } @@ -1167,29 +1257,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->setAbeActionField($value); break; case 9: - $this->setAbeCaseNoteInResponse($value); + $this->setAbeActionBodyField($value); break; case 10: - $this->setAbeForceLogin($value); + $this->setAbeCaseNoteInResponse($value); break; case 11: - $this->setAbeCreateDate($value); + $this->setAbeForceLogin($value); break; case 12: - $this->setAbeUpdateDate($value); + $this->setAbeCreateDate($value); break; case 13: - $this->setAbeSubjectField($value); + $this->setAbeUpdateDate($value); break; case 14: - $this->setAbeMailserverOrMailcurrent($value); + $this->setAbeSubjectField($value); break; case 15: - $this->setAbeCustomGrid($value); + $this->setAbeMailserverOrMailcurrent($value); break; case 16: + $this->setAbeCustomGrid($value); + break; + case 17: $this->setAbeEmailServerUid($value); break; + case 18: + $this->setAbeEmailServerReceiverUid($value); + break; } // switch() } @@ -1250,35 +1346,43 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } if (array_key_exists($keys[9], $arr)) { - $this->setAbeCaseNoteInResponse($arr[$keys[9]]); + $this->setAbeActionBodyField($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setAbeForceLogin($arr[$keys[10]]); + $this->setAbeCaseNoteInResponse($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setAbeCreateDate($arr[$keys[11]]); + $this->setAbeForceLogin($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setAbeUpdateDate($arr[$keys[12]]); + $this->setAbeCreateDate($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setAbeSubjectField($arr[$keys[13]]); + $this->setAbeUpdateDate($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setAbeMailserverOrMailcurrent($arr[$keys[14]]); + $this->setAbeSubjectField($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { - $this->setAbeCustomGrid($arr[$keys[15]]); + $this->setAbeMailserverOrMailcurrent($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { - $this->setAbeEmailServerUid($arr[$keys[16]]); + $this->setAbeCustomGrid($arr[$keys[16]]); + } + + if (array_key_exists($keys[17], $arr)) { + $this->setAbeEmailServerUid($arr[$keys[17]]); + } + + if (array_key_exists($keys[18], $arr)) { + $this->setAbeEmailServerReceiverUid($arr[$keys[18]]); } } @@ -1328,6 +1432,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_ACTION_FIELD, $this->abe_action_field); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD)) { + $criteria->add(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, $this->abe_action_body_field); + } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE)) { $criteria->add(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, $this->abe_case_note_in_response); } @@ -1360,6 +1468,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, $this->abe_email_server_uid); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID)) { + $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, $this->abe_email_server_receiver_uid); + } + return $criteria; } @@ -1430,6 +1542,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeActionField($this->abe_action_field); + $copyObj->setAbeActionBodyField($this->abe_action_body_field); + $copyObj->setAbeCaseNoteInResponse($this->abe_case_note_in_response); $copyObj->setAbeForceLogin($this->abe_force_login); @@ -1446,6 +1560,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeEmailServerUid($this->abe_email_server_uid); + $copyObj->setAbeEmailServerReceiverUid($this->abe_email_server_receiver_uid); + $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php index 213759db2..07f5b2bf0 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php +++ b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php @@ -25,7 +25,7 @@ abstract class BaseAbeConfigurationPeer const CLASS_DEFAULT = 'classes.model.AbeConfiguration'; /** The total number of columns. */ - const NUM_COLUMNS = 17; + const NUM_COLUMNS = 19; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -58,6 +58,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_ACTION_FIELD field */ const ABE_ACTION_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_FIELD'; + /** the column name for the ABE_ACTION_BODY_FIELD field */ + const ABE_ACTION_BODY_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_BODY_FIELD'; + /** the column name for the ABE_CASE_NOTE_IN_RESPONSE field */ const ABE_CASE_NOTE_IN_RESPONSE = 'ABE_CONFIGURATION.ABE_CASE_NOTE_IN_RESPONSE'; @@ -82,6 +85,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_EMAIL_SERVER_UID field */ const ABE_EMAIL_SERVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_UID'; + /** the column name for the ABE_EMAIL_SERVER_RECEIVER_UID field */ + const ABE_EMAIL_SERVER_RECEIVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_RECEIVER_UID'; + /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -93,10 +99,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeActionBodyField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', 'AbeEmailServerReceiverUid', ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', 'ABE_EMAIL_SERVER_RECEIVER_UID', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -106,10 +112,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeForceLogin' => 10, 'AbeCreateDate' => 11, 'AbeUpdateDate' => 12, 'AbeSubjectField' => 13, 'AbeMailserverOrMailcurrent' => 14, 'AbeCustomGrid' => 15, 'AbeEmailServerUid' => 16, ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_FORCE_LOGIN => 10, AbeConfigurationPeer::ABE_CREATE_DATE => 11, AbeConfigurationPeer::ABE_UPDATE_DATE => 12, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 13, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 14, AbeConfigurationPeer::ABE_CUSTOM_GRID => 15, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 16, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_FORCE_LOGIN' => 10, 'ABE_CREATE_DATE' => 11, 'ABE_UPDATE_DATE' => 12, 'ABE_SUBJECT_FIELD' => 13, 'ABE_MAILSERVER_OR_MAILCURRENT' => 14, 'ABE_CUSTOM_GRID' => 15, 'ABE_EMAIL_SERVER_UID' => 16, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeActionBodyField' => 9, 'AbeCaseNoteInResponse' => 10, 'AbeForceLogin' => 11, 'AbeCreateDate' => 12, 'AbeUpdateDate' => 13, 'AbeSubjectField' => 14, 'AbeMailserverOrMailcurrent' => 15, 'AbeCustomGrid' => 16, 'AbeEmailServerUid' => 17, 'AbeEmailServerReceiverUid' => 18, ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD => 9, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 10, AbeConfigurationPeer::ABE_FORCE_LOGIN => 11, AbeConfigurationPeer::ABE_CREATE_DATE => 12, AbeConfigurationPeer::ABE_UPDATE_DATE => 13, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 14, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 15, AbeConfigurationPeer::ABE_CUSTOM_GRID => 16, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 17, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID => 18, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_ACTION_BODY_FIELD' => 9, 'ABE_CASE_NOTE_IN_RESPONSE' => 10, 'ABE_FORCE_LOGIN' => 11, 'ABE_CREATE_DATE' => 12, 'ABE_UPDATE_DATE' => 13, 'ABE_SUBJECT_FIELD' => 14, 'ABE_MAILSERVER_OR_MAILCURRENT' => 15, 'ABE_CUSTOM_GRID' => 16, 'ABE_EMAIL_SERVER_UID' => 17, 'ABE_EMAIL_SERVER_RECEIVER_UID' => 18, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -228,6 +234,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_FORCE_LOGIN); @@ -244,6 +252,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID); + } const COUNT = 'COUNT(ABE_CONFIGURATION.ABE_UID)'; diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 2419ba032..75517b680 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -5094,6 +5094,16 @@ + + + + + + + + + + @@ -5141,6 +5151,7 @@ + @@ -5769,7 +5780,7 @@
- + diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 57caa88d5..7027ef788 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -1699,6 +1699,12 @@ msgstr "3 days at least" msgid "The answer has been submitted. Thank you." msgstr "The answer has been submitted. Thank you." +# TRANSLATION +# LABEL/ID_ABE_EMAIL_RESPONSE_BODY_NOTE +#: LABEL/ID_ABE_EMAIL_RESPONSE_BODY_NOTE +msgid "Please add your comments above this section. Don't modify or delete this section." +msgstr "Please add your comments above this section. Don't modify or delete this section." + # TRANSLATION # LABEL/ID_ABE_FORM_ALREADY_FILLED #: LABEL/ID_ABE_FORM_ALREADY_FILLED @@ -4235,6 +4241,12 @@ msgstr "Close Editor" msgid "[LABEL/ID_CODE] Code" msgstr "Code" +# TRANSLATION +# LABEL/ID_CODE_CRYPT +#: LABEL/ID_CODE_CRYPT +msgid "Code:" +msgstr "Code:" + # TRANSLATION # LABEL/ID_COLLAPSE_ALL #: LABEL/ID_COLLAPSE_ALL diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index a7cd4f3e4..8277694f0 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57081,6 +57081,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','HTML_FILES','en','You can open only files with the .html extension','2014-01-15') , ( 'LABEL','ID_3DAYSMINIMUM','en','3 days at least','2014-01-15') , ( 'LABEL','ID_ABE_ANSWER_SUBMITTED','en','The answer has been submitted. Thank you.','2017-06-19') , +( 'LABEL','ID_ABE_EMAIL_RESPONSE_BODY_NOTE','en','Please add your comments above this section. Don''t modify or delete this section.','2018-11-16') , ( 'LABEL','ID_ABE_FORM_ALREADY_FILLED','en','The form has already been filled and sent.','2017-06-09') , ( 'LABEL','ID_ABE_INFORMATION_SUBMITTED','en','The information was submitted. Thank you.','2017-06-19') , ( 'LABEL','ID_ABE_RESPONSE_SENT','en','The response has already been sent.','2017-06-19') , @@ -57513,6 +57514,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_CLOSE','en','Close','2014-01-15') , ( 'LABEL','ID_CLOSE_EDITOR','en','Close Editor','2014-01-15') , ( 'LABEL','ID_CODE','en','Code','2014-01-15') , +( 'LABEL','ID_CODE_CRYPT','en','Code:','2018-11-16') , ( 'LABEL','ID_COLLAPSE_ALL','en','Collapse All','2014-01-15') , ( 'LABEL','ID_COLOSA_AND_CERTIFIED_PARTNERS','en','Supplied free of charge with no support, certification, warranty, maintenance nor indemnity by Colosa and its Certified Partners.','2014-10-21') , ( 'LABEL','ID_COLUMNS','en','columns','2014-01-15') , diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index f78a95cd0..30f4f911f 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2865,6 +2865,7 @@ CREATE TABLE `ABE_CONFIGURATION` `DYN_UID` VARCHAR(32) default '' NOT NULL, `ABE_EMAIL_FIELD` VARCHAR(255) default '' NOT NULL, `ABE_ACTION_FIELD` VARCHAR(255) default '', + `ABE_ACTION_BODY_FIELD` VARCHAR(255) default '', `ABE_CASE_NOTE_IN_RESPONSE` INTEGER default 0, `ABE_FORCE_LOGIN` INTEGER default 0, `ABE_CREATE_DATE` DATETIME NOT NULL, @@ -2873,6 +2874,7 @@ CREATE TABLE `ABE_CONFIGURATION` `ABE_MAILSERVER_OR_MAILCURRENT` INTEGER default 0, `ABE_CUSTOM_GRID` MEDIUMTEXT, `ABE_EMAIL_SERVER_UID` VARCHAR(32) default '', + `ABE_EMAIL_SERVER_RECEIVER_UID` VARCHAR(32) default '', PRIMARY KEY (`ABE_UID`), KEY `indexAbeProcess`(`PRO_UID`), KEY `indexAbeProcessTask`(`PRO_UID`, `TAS_UID`) diff --git a/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php b/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php new file mode 100644 index 000000000..ec6a1f92c --- /dev/null +++ b/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php @@ -0,0 +1,32 @@ +appMessUid; + } + + /** + * Set the appMessUid + * + * @param string $v + * @return void + */ + public function setAppMessUid($v) + { + $this->appMessUid = $v; + } +} + From 656745913d61d6fee0a782411414238a5ee4cad0 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Fri, 23 Nov 2018 14:41:04 -0400 Subject: [PATCH 03/38] PMC-57: Action BY Email: Add new option in Email Server configuration page Code Improvements Code Improvements 1 Code Improvements 2 Fixing port labels Fixing port labels 1 Code improvements 3 Code improvements 4 Code improvements 5 Code improvements 6 Code improvements 7 --- .../model/map/EmailServerMapBuilder.php | 4 + .../classes/model/om/BaseEmailServer.php | 204 +++++++++++--- .../classes/model/om/BaseEmailServerPeer.php | 28 +- workflow/engine/config/schema.xml | 2 + .../translations/english/processmaker.en.po | 24 ++ workflow/engine/data/mysql/insert.sql | 4 + workflow/engine/data/mysql/schema.sql | 2 + .../methods/emailServer/emailServerAjax.php | 28 +- .../BusinessModel/EmailServer.php | 23 +- .../templates/emailServer/emailServer.js | 263 ++++++++++-------- 10 files changed, 407 insertions(+), 175 deletions(-) diff --git a/workflow/engine/classes/model/map/EmailServerMapBuilder.php b/workflow/engine/classes/model/map/EmailServerMapBuilder.php index ab8fd959a..b9e5729a0 100644 --- a/workflow/engine/classes/model/map/EmailServerMapBuilder.php +++ b/workflow/engine/classes/model/map/EmailServerMapBuilder.php @@ -73,6 +73,10 @@ class EmailServerMapBuilder $tMap->addColumn('MESS_PORT', 'MessPort', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('MESS_INCOMING_SERVER', 'MessIncomingServer', 'string', CreoleTypes::VARCHAR, true, 256); + + $tMap->addColumn('MESS_INCOMING_PORT', 'MessIncomingPort', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('MESS_RAUTH', 'MessRauth', 'int', CreoleTypes::INTEGER, true, null); $tMap->addColumn('MESS_ACCOUNT', 'MessAccount', 'string', CreoleTypes::VARCHAR, true, 256); diff --git a/workflow/engine/classes/model/om/BaseEmailServer.php b/workflow/engine/classes/model/om/BaseEmailServer.php index 111488080..82716bab4 100644 --- a/workflow/engine/classes/model/om/BaseEmailServer.php +++ b/workflow/engine/classes/model/om/BaseEmailServer.php @@ -51,6 +51,18 @@ abstract class BaseEmailServer extends BaseObject implements Persistent */ protected $mess_port = 0; + /** + * The value for the mess_incoming_server field. + * @var string + */ + protected $mess_incoming_server = ''; + + /** + * The value for the mess_incoming_port field. + * @var int + */ + protected $mess_incoming_port = 0; + /** * The value for the mess_rauth field. * @var int @@ -163,6 +175,28 @@ abstract class BaseEmailServer extends BaseObject implements Persistent return $this->mess_port; } + /** + * Get the [mess_incoming_server] column value. + * + * @return string + */ + public function getMessIncomingServer() + { + + return $this->mess_incoming_server; + } + + /** + * Get the [mess_incoming_port] column value. + * + * @return int + */ + public function getMessIncomingPort() + { + + return $this->mess_incoming_port; + } + /** * Get the [mess_rauth] column value. * @@ -350,6 +384,50 @@ abstract class BaseEmailServer extends BaseObject implements Persistent } // setMessPort() + /** + * Set the value of [mess_incoming_server] column. + * + * @param string $v new value + * @return void + */ + public function setMessIncomingServer($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->mess_incoming_server !== $v || $v === '') { + $this->mess_incoming_server = $v; + $this->modifiedColumns[] = EmailServerPeer::MESS_INCOMING_SERVER; + } + + } // setMessIncomingServer() + + /** + * Set the value of [mess_incoming_port] column. + * + * @param int $v new value + * @return void + */ + public function setMessIncomingPort($v) + { + + // Since the native PHP type for this column is integer, + // we will cast the input value to an int (if it is not). + if ($v !== null && !is_int($v) && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->mess_incoming_port !== $v || $v === 0) { + $this->mess_incoming_port = $v; + $this->modifiedColumns[] = EmailServerPeer::MESS_INCOMING_PORT; + } + + } // setMessIncomingPort() + /** * Set the value of [mess_rauth] column. * @@ -573,30 +651,34 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $this->mess_port = $rs->getInt($startcol + 3); - $this->mess_rauth = $rs->getInt($startcol + 4); + $this->mess_incoming_server = $rs->getString($startcol + 4); - $this->mess_account = $rs->getString($startcol + 5); + $this->mess_incoming_port = $rs->getInt($startcol + 5); - $this->mess_password = $rs->getString($startcol + 6); + $this->mess_rauth = $rs->getInt($startcol + 6); - $this->mess_from_mail = $rs->getString($startcol + 7); + $this->mess_account = $rs->getString($startcol + 7); - $this->mess_from_name = $rs->getString($startcol + 8); + $this->mess_password = $rs->getString($startcol + 8); - $this->smtpsecure = $rs->getString($startcol + 9); + $this->mess_from_mail = $rs->getString($startcol + 9); - $this->mess_try_send_inmediatly = $rs->getInt($startcol + 10); + $this->mess_from_name = $rs->getString($startcol + 10); - $this->mail_to = $rs->getString($startcol + 11); + $this->smtpsecure = $rs->getString($startcol + 11); - $this->mess_default = $rs->getInt($startcol + 12); + $this->mess_try_send_inmediatly = $rs->getInt($startcol + 12); + + $this->mail_to = $rs->getString($startcol + 13); + + $this->mess_default = $rs->getInt($startcol + 14); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 13; // 13 = EmailServerPeer::NUM_COLUMNS - EmailServerPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 15; // 15 = EmailServerPeer::NUM_COLUMNS - EmailServerPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating EmailServer object", $e); @@ -813,30 +895,36 @@ abstract class BaseEmailServer extends BaseObject implements Persistent return $this->getMessPort(); break; case 4: - return $this->getMessRauth(); + return $this->getMessIncomingServer(); break; case 5: - return $this->getMessAccount(); + return $this->getMessIncomingPort(); break; case 6: - return $this->getMessPassword(); + return $this->getMessRauth(); break; case 7: - return $this->getMessFromMail(); + return $this->getMessAccount(); break; case 8: - return $this->getMessFromName(); + return $this->getMessPassword(); break; case 9: - return $this->getSmtpsecure(); + return $this->getMessFromMail(); break; case 10: - return $this->getMessTrySendInmediatly(); + return $this->getMessFromName(); break; case 11: - return $this->getMailTo(); + return $this->getSmtpsecure(); break; case 12: + return $this->getMessTrySendInmediatly(); + break; + case 13: + return $this->getMailTo(); + break; + case 14: return $this->getMessDefault(); break; default: @@ -863,15 +951,17 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $keys[1] => $this->getMessEngine(), $keys[2] => $this->getMessServer(), $keys[3] => $this->getMessPort(), - $keys[4] => $this->getMessRauth(), - $keys[5] => $this->getMessAccount(), - $keys[6] => $this->getMessPassword(), - $keys[7] => $this->getMessFromMail(), - $keys[8] => $this->getMessFromName(), - $keys[9] => $this->getSmtpsecure(), - $keys[10] => $this->getMessTrySendInmediatly(), - $keys[11] => $this->getMailTo(), - $keys[12] => $this->getMessDefault(), + $keys[4] => $this->getMessIncomingServer(), + $keys[5] => $this->getMessIncomingPort(), + $keys[6] => $this->getMessRauth(), + $keys[7] => $this->getMessAccount(), + $keys[8] => $this->getMessPassword(), + $keys[9] => $this->getMessFromMail(), + $keys[10] => $this->getMessFromName(), + $keys[11] => $this->getSmtpsecure(), + $keys[12] => $this->getMessTrySendInmediatly(), + $keys[13] => $this->getMailTo(), + $keys[14] => $this->getMessDefault(), ); return $result; } @@ -916,30 +1006,36 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $this->setMessPort($value); break; case 4: - $this->setMessRauth($value); + $this->setMessIncomingServer($value); break; case 5: - $this->setMessAccount($value); + $this->setMessIncomingPort($value); break; case 6: - $this->setMessPassword($value); + $this->setMessRauth($value); break; case 7: - $this->setMessFromMail($value); + $this->setMessAccount($value); break; case 8: - $this->setMessFromName($value); + $this->setMessPassword($value); break; case 9: - $this->setSmtpsecure($value); + $this->setMessFromMail($value); break; case 10: - $this->setMessTrySendInmediatly($value); + $this->setMessFromName($value); break; case 11: - $this->setMailTo($value); + $this->setSmtpsecure($value); break; case 12: + $this->setMessTrySendInmediatly($value); + break; + case 13: + $this->setMailTo($value); + break; + case 14: $this->setMessDefault($value); break; } // switch() @@ -982,39 +1078,47 @@ abstract class BaseEmailServer extends BaseObject implements Persistent } if (array_key_exists($keys[4], $arr)) { - $this->setMessRauth($arr[$keys[4]]); + $this->setMessIncomingServer($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { - $this->setMessAccount($arr[$keys[5]]); + $this->setMessIncomingPort($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { - $this->setMessPassword($arr[$keys[6]]); + $this->setMessRauth($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { - $this->setMessFromMail($arr[$keys[7]]); + $this->setMessAccount($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { - $this->setMessFromName($arr[$keys[8]]); + $this->setMessPassword($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { - $this->setSmtpsecure($arr[$keys[9]]); + $this->setMessFromMail($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setMessTrySendInmediatly($arr[$keys[10]]); + $this->setMessFromName($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setMailTo($arr[$keys[11]]); + $this->setSmtpsecure($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setMessDefault($arr[$keys[12]]); + $this->setMessTrySendInmediatly($arr[$keys[12]]); + } + + if (array_key_exists($keys[13], $arr)) { + $this->setMailTo($arr[$keys[13]]); + } + + if (array_key_exists($keys[14], $arr)) { + $this->setMessDefault($arr[$keys[14]]); } } @@ -1044,6 +1148,14 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $criteria->add(EmailServerPeer::MESS_PORT, $this->mess_port); } + if ($this->isColumnModified(EmailServerPeer::MESS_INCOMING_SERVER)) { + $criteria->add(EmailServerPeer::MESS_INCOMING_SERVER, $this->mess_incoming_server); + } + + if ($this->isColumnModified(EmailServerPeer::MESS_INCOMING_PORT)) { + $criteria->add(EmailServerPeer::MESS_INCOMING_PORT, $this->mess_incoming_port); + } + if ($this->isColumnModified(EmailServerPeer::MESS_RAUTH)) { $criteria->add(EmailServerPeer::MESS_RAUTH, $this->mess_rauth); } @@ -1140,6 +1252,10 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $copyObj->setMessPort($this->mess_port); + $copyObj->setMessIncomingServer($this->mess_incoming_server); + + $copyObj->setMessIncomingPort($this->mess_incoming_port); + $copyObj->setMessRauth($this->mess_rauth); $copyObj->setMessAccount($this->mess_account); diff --git a/workflow/engine/classes/model/om/BaseEmailServerPeer.php b/workflow/engine/classes/model/om/BaseEmailServerPeer.php index c78d96808..a020a0763 100644 --- a/workflow/engine/classes/model/om/BaseEmailServerPeer.php +++ b/workflow/engine/classes/model/om/BaseEmailServerPeer.php @@ -25,7 +25,7 @@ abstract class BaseEmailServerPeer const CLASS_DEFAULT = 'classes.model.EmailServer'; /** The total number of columns. */ - const NUM_COLUMNS = 13; + const NUM_COLUMNS = 15; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -43,6 +43,12 @@ abstract class BaseEmailServerPeer /** the column name for the MESS_PORT field */ const MESS_PORT = 'EMAIL_SERVER.MESS_PORT'; + /** the column name for the MESS_INCOMING_SERVER field */ + const MESS_INCOMING_SERVER = 'EMAIL_SERVER.MESS_INCOMING_SERVER'; + + /** the column name for the MESS_INCOMING_PORT field */ + const MESS_INCOMING_PORT = 'EMAIL_SERVER.MESS_INCOMING_PORT'; + /** the column name for the MESS_RAUTH field */ const MESS_RAUTH = 'EMAIL_SERVER.MESS_RAUTH'; @@ -81,10 +87,10 @@ abstract class BaseEmailServerPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('MessUid', 'MessEngine', 'MessServer', 'MessPort', 'MessRauth', 'MessAccount', 'MessPassword', 'MessFromMail', 'MessFromName', 'Smtpsecure', 'MessTrySendInmediatly', 'MailTo', 'MessDefault', ), - BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID, EmailServerPeer::MESS_ENGINE, EmailServerPeer::MESS_SERVER, EmailServerPeer::MESS_PORT, EmailServerPeer::MESS_RAUTH, EmailServerPeer::MESS_ACCOUNT, EmailServerPeer::MESS_PASSWORD, EmailServerPeer::MESS_FROM_MAIL, EmailServerPeer::MESS_FROM_NAME, EmailServerPeer::SMTPSECURE, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY, EmailServerPeer::MAIL_TO, EmailServerPeer::MESS_DEFAULT, ), - BasePeer::TYPE_FIELDNAME => array ('MESS_UID', 'MESS_ENGINE', 'MESS_SERVER', 'MESS_PORT', 'MESS_RAUTH', 'MESS_ACCOUNT', 'MESS_PASSWORD', 'MESS_FROM_MAIL', 'MESS_FROM_NAME', 'SMTPSECURE', 'MESS_TRY_SEND_INMEDIATLY', 'MAIL_TO', 'MESS_DEFAULT', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ) + BasePeer::TYPE_PHPNAME => array ('MessUid', 'MessEngine', 'MessServer', 'MessPort', 'MessIncomingServer', 'MessIncomingPort', 'MessRauth', 'MessAccount', 'MessPassword', 'MessFromMail', 'MessFromName', 'Smtpsecure', 'MessTrySendInmediatly', 'MailTo', 'MessDefault', ), + BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID, EmailServerPeer::MESS_ENGINE, EmailServerPeer::MESS_SERVER, EmailServerPeer::MESS_PORT, EmailServerPeer::MESS_INCOMING_SERVER, EmailServerPeer::MESS_INCOMING_PORT, EmailServerPeer::MESS_RAUTH, EmailServerPeer::MESS_ACCOUNT, EmailServerPeer::MESS_PASSWORD, EmailServerPeer::MESS_FROM_MAIL, EmailServerPeer::MESS_FROM_NAME, EmailServerPeer::SMTPSECURE, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY, EmailServerPeer::MAIL_TO, EmailServerPeer::MESS_DEFAULT, ), + BasePeer::TYPE_FIELDNAME => array ('MESS_UID', 'MESS_ENGINE', 'MESS_SERVER', 'MESS_PORT', 'MESS_INCOMING_SERVER', 'MESS_INCOMING_PORT', 'MESS_RAUTH', 'MESS_ACCOUNT', 'MESS_PASSWORD', 'MESS_FROM_MAIL', 'MESS_FROM_NAME', 'SMTPSECURE', 'MESS_TRY_SEND_INMEDIATLY', 'MAIL_TO', 'MESS_DEFAULT', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) ); /** @@ -94,10 +100,10 @@ abstract class BaseEmailServerPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('MessUid' => 0, 'MessEngine' => 1, 'MessServer' => 2, 'MessPort' => 3, 'MessRauth' => 4, 'MessAccount' => 5, 'MessPassword' => 6, 'MessFromMail' => 7, 'MessFromName' => 8, 'Smtpsecure' => 9, 'MessTrySendInmediatly' => 10, 'MailTo' => 11, 'MessDefault' => 12, ), - BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID => 0, EmailServerPeer::MESS_ENGINE => 1, EmailServerPeer::MESS_SERVER => 2, EmailServerPeer::MESS_PORT => 3, EmailServerPeer::MESS_RAUTH => 4, EmailServerPeer::MESS_ACCOUNT => 5, EmailServerPeer::MESS_PASSWORD => 6, EmailServerPeer::MESS_FROM_MAIL => 7, EmailServerPeer::MESS_FROM_NAME => 8, EmailServerPeer::SMTPSECURE => 9, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY => 10, EmailServerPeer::MAIL_TO => 11, EmailServerPeer::MESS_DEFAULT => 12, ), - BasePeer::TYPE_FIELDNAME => array ('MESS_UID' => 0, 'MESS_ENGINE' => 1, 'MESS_SERVER' => 2, 'MESS_PORT' => 3, 'MESS_RAUTH' => 4, 'MESS_ACCOUNT' => 5, 'MESS_PASSWORD' => 6, 'MESS_FROM_MAIL' => 7, 'MESS_FROM_NAME' => 8, 'SMTPSECURE' => 9, 'MESS_TRY_SEND_INMEDIATLY' => 10, 'MAIL_TO' => 11, 'MESS_DEFAULT' => 12, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ) + BasePeer::TYPE_PHPNAME => array ('MessUid' => 0, 'MessEngine' => 1, 'MessServer' => 2, 'MessPort' => 3, 'MessIncomingServer' => 4, 'MessIncomingPort' => 5, 'MessRauth' => 6, 'MessAccount' => 7, 'MessPassword' => 8, 'MessFromMail' => 9, 'MessFromName' => 10, 'Smtpsecure' => 11, 'MessTrySendInmediatly' => 12, 'MailTo' => 13, 'MessDefault' => 14, ), + BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID => 0, EmailServerPeer::MESS_ENGINE => 1, EmailServerPeer::MESS_SERVER => 2, EmailServerPeer::MESS_PORT => 3, EmailServerPeer::MESS_INCOMING_SERVER => 4, EmailServerPeer::MESS_INCOMING_PORT => 5, EmailServerPeer::MESS_RAUTH => 6, EmailServerPeer::MESS_ACCOUNT => 7, EmailServerPeer::MESS_PASSWORD => 8, EmailServerPeer::MESS_FROM_MAIL => 9, EmailServerPeer::MESS_FROM_NAME => 10, EmailServerPeer::SMTPSECURE => 11, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY => 12, EmailServerPeer::MAIL_TO => 13, EmailServerPeer::MESS_DEFAULT => 14, ), + BasePeer::TYPE_FIELDNAME => array ('MESS_UID' => 0, 'MESS_ENGINE' => 1, 'MESS_SERVER' => 2, 'MESS_PORT' => 3, 'MESS_INCOMING_SERVER' => 4, 'MESS_INCOMING_PORT' => 5, 'MESS_RAUTH' => 6, 'MESS_ACCOUNT' => 7, 'MESS_PASSWORD' => 8, 'MESS_FROM_MAIL' => 9, 'MESS_FROM_NAME' => 10, 'SMTPSECURE' => 11, 'MESS_TRY_SEND_INMEDIATLY' => 12, 'MAIL_TO' => 13, 'MESS_DEFAULT' => 14, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) ); /** @@ -206,6 +212,10 @@ abstract class BaseEmailServerPeer $criteria->addSelectColumn(EmailServerPeer::MESS_PORT); + $criteria->addSelectColumn(EmailServerPeer::MESS_INCOMING_SERVER); + + $criteria->addSelectColumn(EmailServerPeer::MESS_INCOMING_PORT); + $criteria->addSelectColumn(EmailServerPeer::MESS_RAUTH); $criteria->addSelectColumn(EmailServerPeer::MESS_ACCOUNT); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 75517b680..bac185c02 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -4866,6 +4866,8 @@ + + diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 7027ef788..a3009be9c 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -23477,6 +23477,18 @@ msgstr "Sent By" msgid "[LABEL/ID_SERVER] Server" msgstr "Server" +# TRANSLATION +# LABEL/ID_OUTGOING_SERVER +#: LABEL/ID_OUTGOING_SERVER +msgid "Outgoing Server" +msgstr "Outgoing Server" + +# TRANSLATION +# LABEL/ID_INCOMING_SERVER +#: LABEL/ID_INCOMING_SERVER +msgid "Incoming Server" +msgstr "Incoming Server" + # TRANSLATION # LABEL/ID_SERVER_ADDRESS #: LABEL/ID_SERVER_ADDRESS @@ -27929,6 +27941,18 @@ msgstr "Photo gallery" msgid "Port (default 25)" msgstr "Port (default 25)" +# TRANSLATION +# LABEL/INCOMING_PORT_DEFAULT +#: LABEL/INCOMING_PORT_DEFAULT +msgid "Incoming Port (default 143)" +msgstr "Incoming Port (default 143)" + +# TRANSLATION +# LABEL/OUTGOING_PORT_DEFAULT +#: LABEL/OUTGOING_PORT_DEFAULT +msgid "Outgoing Port (default 25)" +msgstr "Outgoing Port (default 25)" + # TRANSLATION # LABEL/REQUIRE_AUTHENTICATION #: LABEL/REQUIRE_AUTHENTICATION diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 8277694f0..a28d0e496 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -58425,6 +58425,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_INACTIVE','en','Inactive','2014-01-15') , ( 'LABEL','ID_INBOX','en','Inbox','2014-01-15') , ( 'LABEL','ID_INBOX_EMPTY','en','Your Inbox is empty...','2015-05-06') , +( 'LABEL','ID_INCOMING_SERVER','en','Incoming Server','2018-11-23') , ( 'LABEL','ID_INCORRECT_EMAIL','en','Your E-mail address is not valid.','2014-01-15') , ( 'LABEL','ID_INCORRECT_USERNAME_PASSWORD','en','Incorrect username or password','2014-01-15') , ( 'LABEL','ID_INCORRECT_VALUE_ACTION','en','The value for $action is incorrect.','2014-05-29') , @@ -60201,6 +60202,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_ORIGIN_TASK','en','Origin Task','2014-01-15') , ( 'LABEL','ID_OTHER','en','Other','2014-01-15') , ( 'LABEL','ID_OUTBOX','en','Outbox','2014-01-15') , +( 'LABEL','ID_OUTGOING_SERVER','en','Outgoing Server','2018-11-23') , ( 'LABEL','ID_OUTPUT_DB','en','Output','2014-10-08') , ( 'LABEL','ID_OUTPUT_DOCUMENT','en','Output Document','2014-01-15') , ( 'LABEL','ID_OUTPUT_DOCUMENTS','en','Output Documents','2014-01-15') , @@ -61462,6 +61464,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','IMPORT_PROCESS_DISABLE','en','Disable the current process and create a new version of the process','2014-01-15') , ( 'LABEL','IMPORT_PROCESS_NEW','en','Create a completely new process without changing the current process','2014-01-15') , ( 'LABEL','IMPORT_PROCESS_OVERWRITING','en','Update the current process, overwriting all tasks and steps','2014-01-15') , +( 'LABEL','INCOMING_PORT_DEFAULT','en','Incoming Port (default 143)','2018-11-23') , ( 'LABEL','INVALID_FILE','en','Invalid file!','2014-01-15') , ( 'LABEL','IS_USER_NAME_DISPLAY_FORMAT','en','User Name Display Format','2014-01-15') , ( 'LABEL','LOGIN','en','Login','2014-01-15') , @@ -61529,6 +61532,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','NEW_SITE_SUCCESS_CONFIRM','en','Do you want open the new site?','2014-01-15') , ( 'LABEL','NEW_SITE_SUCCESS_CONFIRMNOTE','en','Note.- If you open the new site your current session will be closed.','2014-01-15') , ( 'LABEL','OPEN_NEW_WS','en','Open new site','2014-01-15') , +( 'LABEL','OUTGOING_PORT_DEFAULT','en','Outgoing Port (default 25)','2018-11-26') , ( 'LABEL','OUTPUT_CREATE','en','Output document has been created successfully','2014-01-15') , ( 'LABEL','PASSWORD_HISTORY','en','Password history','2014-01-15') , ( 'LABEL','PAUSED','en','Pause','2014-01-15') , diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 30f4f911f..9bd873c33 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2744,6 +2744,8 @@ CREATE TABLE `EMAIL_SERVER` `MESS_ENGINE` VARCHAR(256) default '' NOT NULL, `MESS_SERVER` VARCHAR(256) default '' NOT NULL, `MESS_PORT` INTEGER default 0 NOT NULL, + `MESS_INCOMING_SERVER` VARCHAR(256) default '' NOT NULL, + `MESS_INCOMING_PORT` INTEGER default 0 NOT NULL, `MESS_RAUTH` INTEGER default 0 NOT NULL, `MESS_ACCOUNT` VARCHAR(256) default '' NOT NULL, `MESS_PASSWORD` VARCHAR(256) default '' NOT NULL, diff --git a/workflow/engine/methods/emailServer/emailServerAjax.php b/workflow/engine/methods/emailServer/emailServerAjax.php index 6f3c246e3..59a454f52 100644 --- a/workflow/engine/methods/emailServer/emailServerAjax.php +++ b/workflow/engine/methods/emailServer/emailServerAjax.php @@ -9,6 +9,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -27,6 +29,14 @@ switch ($option) { $reqAuthentication = (int)($_POST["reqAuthentication"]); $password = ($reqAuthentication == 1)? $_POST["password"] : ""; $smtpSecure = $_POST["smtpSecure"]; + } elseif ($cboEmailEngine == "IMAP") { + $server = $_POST["server"]; + $port = (int)($_POST["port"]); + $incomingServer = $_POST["incomingServer"]; + $incomingPort = (int)($_POST["incomingPort"]); + $reqAuthentication = (int)($_POST["reqAuthentication"]); + $password = ($reqAuthentication == 1)? $_POST["password"] : ""; + $smtpSecure = $_POST["smtpSecure"]; } try { @@ -34,6 +44,8 @@ switch ($option) { "MESS_ENGINE" => $cboEmailEngine, "MESS_SERVER" => $server, "MESS_PORT" => $port, + "MESS_INCOMING_SERVER" => $incomingServer, + "MESS_INCOMING_PORT" => $incomingPort, "MESS_RAUTH" => $reqAuthentication, "MESS_ACCOUNT" => $accountFrom, "MESS_PASSWORD" => $password, @@ -63,6 +75,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -81,6 +95,14 @@ switch ($option) { $reqAuthentication = (int)($_POST["reqAuthentication"]); $password = ($reqAuthentication == 1)? $_POST["password"] : ""; $smtpSecure = $_POST["smtpSecure"]; + } elseif ($cboEmailEngine == "IMAP") { + $server = $_POST["server"]; + $port = (int)($_POST["port"]); + $incomingServer = $_POST["incomingServer"]; + $incomingPort = (int)($_POST["incomingPort"]); + $reqAuthentication = (int)($_POST["reqAuthentication"]); + $password = ($reqAuthentication == 1)? $_POST["password"] : ""; + $smtpSecure = $_POST["smtpSecure"]; } try { @@ -88,6 +110,8 @@ switch ($option) { "MESS_ENGINE" => $cboEmailEngine, "MESS_SERVER" => $server, "MESS_PORT" => $port, + "MESS_INCOMING_SERVER" => $incomingServer, + "MESS_INCOMING_PORT" => $incomingPort, "MESS_RAUTH" => $reqAuthentication, "MESS_ACCOUNT" => $accountFrom, "MESS_PASSWORD" => $password, @@ -153,6 +177,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -165,7 +191,7 @@ switch ($option) { $mailTo = ($sendTestMail == 1)? $_POST["mailTo"] : ""; $emailServerDefault = (int)($_POST["emailServerDefault"]); - if ($cboEmailEngine == "PHPMAILER") { + if ($cboEmailEngine == "PHPMAILER" || $cboEmailEngine == "IMAP") { $server = $_POST["server"]; $port = (int)($_POST["port"]); $reqAuthentication = (int)($_POST["reqAuthentication"]); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php b/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php index 7516bccd2..56ffd0aa0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php @@ -13,9 +13,11 @@ class EmailServer { private $arrayFieldDefinition = array( "MESS_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "emailServerUid"), - "MESS_ENGINE" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PHPMAILER", "MAIL"), "fieldNameAux" => "emailServerEngine"), + "MESS_ENGINE" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PHPMAILER", "MAIL", "IMAP"), "fieldNameAux" => "emailServerEngine"), "MESS_SERVER" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerServer"), "MESS_PORT" => array("type" => "int", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerPort"), + "MESS_INCOMING_SERVER" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerIncomingServer"), + "MESS_INCOMING_PORT" => array("type" => "int", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerIncomingPort"), "MESS_RAUTH" => array("type" => "int", "required" => false, "empty" => false, "defaultValues" => array(0, 1), "fieldNameAux" => "emailServerRauth"), "MESS_ACCOUNT" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerUserName"), "MESS_PASSWORD" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerPassword"), @@ -51,10 +53,10 @@ class EmailServer throw $e; } } - + /** * Get the default information from the context. - * + * * @global type $RBAC * @return void */ @@ -525,6 +527,7 @@ class EmailServer } break; case "PHPMAILER": + case "IMAP": $numSteps = ($arrayData['MAIL_TO'] != '') ? count($arrayPhpMailerTestName) : count($arrayPhpMailerTestName) - 1; for ($step = 1; $step <= $numSteps; $step++) { @@ -829,6 +832,8 @@ class EmailServer 'engine'=> $arrayData["MESS_ENGINE"], 'server' => $arrayData["MESS_SERVER"], 'port' => $arrayData["MESS_PORT"], + 'incomingServer' => $arrayData["MESS_INCOMING_SERVER"], + 'incomingPort' => $arrayData["MESS_INCOMING_PORT"], 'requireAuthentication' => $arrayData["MESS_RAUTH"], 'account' => $arrayData["MESS_ACCOUNT"], 'senderEmail' => $arrayData["MESS_FROM_MAIL"], @@ -1000,6 +1005,8 @@ class EmailServer 'engine' => $arrayData["MESS_ENGINE"], 'server' => $arrayData["MESS_SERVER"], 'port' => $arrayData["MESS_PORT"], + 'incomingServer' => $arrayData["MESS_INCOMING_SERVER"], + 'incomingPort' => $arrayData["MESS_INCOMING_PORT"], 'requireAuthentication' => $arrayData["MESS_RAUTH"], 'account' => $arrayData["MESS_ACCOUNT"], 'senderEmail' => $arrayData["MESS_FROM_MAIL"], @@ -1086,6 +1093,8 @@ class EmailServer $criteria->addSelectColumn(\EmailServerPeer::MESS_ENGINE); $criteria->addSelectColumn(\EmailServerPeer::MESS_SERVER); $criteria->addSelectColumn(\EmailServerPeer::MESS_PORT); + $criteria->addSelectColumn(\EmailServerPeer::MESS_INCOMING_SERVER); + $criteria->addSelectColumn(\EmailServerPeer::MESS_INCOMING_PORT); $criteria->addSelectColumn(\EmailServerPeer::MESS_RAUTH); $criteria->addSelectColumn(\EmailServerPeer::MESS_ACCOUNT); $criteria->addSelectColumn(\EmailServerPeer::MESS_PASSWORD); @@ -1118,6 +1127,8 @@ class EmailServer $this->getFieldNameByFormatFieldName("MESS_ENGINE") => $record["MESS_ENGINE"], $this->getFieldNameByFormatFieldName("MESS_SERVER") => $record["MESS_SERVER"], $this->getFieldNameByFormatFieldName("MESS_PORT") => $record["MESS_PORT"], + $this->getFieldNameByFormatFieldName("MESS_INCOMING_SERVER") => $record["MESS_INCOMING_SERVER"], + $this->getFieldNameByFormatFieldName("MESS_INCOMING_PORT") => $record["MESS_INCOMING_PORT"], $this->getFieldNameByFormatFieldName("MESS_RAUTH") => $record["MESS_RAUTH"], $this->getFieldNameByFormatFieldName("MESS_ACCOUNT") => $record["MESS_ACCOUNT"], $this->getFieldNameByFormatFieldName("MESS_PASSWORD") => $record["MESS_PASSWORD"], @@ -1163,6 +1174,8 @@ class EmailServer $arrayData["MESS_ENGINE"] = $row["MESS_ENGINE"]; $arrayData["MESS_SERVER"] = $row["MESS_SERVER"]; $arrayData["MESS_PORT"] = (int)($row["MESS_PORT"]); + $arrayData["MESS_INCOMING_SERVER"] = $row["MESS_INCOMING_SERVER"]; + $arrayData["MESS_INCOMING_PORT"] = (int)($row["MESS_INCOMING_PORT"]); $arrayData["MESS_RAUTH"] = (int)($row["MESS_RAUTH"]); $arrayData["MESS_ACCOUNT"] = $row["MESS_ACCOUNT"]; $arrayData["MESS_PASSWORD"] = $row["MESS_PASSWORD"]; @@ -1219,6 +1232,7 @@ class EmailServer $criteria->add( $criteria->getNewCriterion(\EmailServerPeer::MESS_ENGINE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_SERVER, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( + $criteria->getNewCriterion(\EmailServerPeer::MESS_INCOMING_SERVER,"%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_ACCOUNT, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_FROM_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::SMTPSECURE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)) @@ -1243,7 +1257,7 @@ class EmailServer if (!is_null($sortField) && trim($sortField) != "") { $sortField = strtoupper($sortField); - if (in_array($sortField, array("MESS_ENGINE", "MESS_SERVER", "MESS_ACCOUNT", "MESS_FROM_NAME", "SMTPSECURE"))) { + if (in_array($sortField, array("MESS_ENGINE", "MESS_SERVER", "MESS_INCOMING_SERVER", "MESS_ACCOUNT", "MESS_FROM_NAME", "SMTPSECURE"))) { $sortField = \EmailServerPeer::TABLE_NAME . "." . $sortField; } else { $sortField = \EmailServerPeer::MESS_ENGINE; @@ -1316,6 +1330,7 @@ class EmailServer $row = $rsCriteria->getRow(); $row["MESS_PORT"] = (int)($row["MESS_PORT"]); + $row["MESS_INCOMING_PORT"] = (int)($row["MESS_INCOMING_PORT"]); $row["MESS_RAUTH"] = (int)($row["MESS_RAUTH"]); $row["MESS_TRY_SEND_INMEDIATLY"] = (int)($row["MESS_TRY_SEND_INMEDIATLY"]); $row["MESS_DEFAULT"] = (int)($row["MESS_DEFAULT"]); diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index 91bed9ee9..dfa9e901a 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -48,83 +48,67 @@ emailServer.application = { } /*----------------------------------********---------------------------------*/ + var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); + + if (typeEmailEngine === "PHPMAILER") { + var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); + var smtpSecure = rdoGrpOption.getGroupValue(); + + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + server: Ext.getCmp("txtServer").getValue(), + port: Ext.getCmp("txtPort").getValue(), + reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked) ? 1 : 0, + accountFrom: Ext.getCmp("txtAccountFrom").getValue(), + password: Ext.getCmp("txtPassword").getValue(), + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + smtpSecure: smtpSecure, + sendTestMail: (Ext.getCmp("chkSendTestMail").checked) ? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } else if (typeEmailEngine === "IMAP") { + var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); + var smtpSecure = rdoGrpOption.getGroupValue(); + + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + server: Ext.getCmp("txtServer").getValue(), + port: Ext.getCmp("txtPort").getValue(), + incomingServer: Ext.getCmp("txtIncomingServer").getValue(), + incomingPort: Ext.getCmp("txtIncomingPort").getValue(), + reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked) ? 1 : 0, + accountFrom: Ext.getCmp("txtAccountFrom").getValue(), + password: Ext.getCmp("txtPassword").getValue(), + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + smtpSecure: smtpSecure, + sendTestMail: (Ext.getCmp("chkSendTestMail").checked) ? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } else { + //MAIL + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } + switch (option) { - case "INS": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } - break; case "UPD": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - emailServerUid: emailServerUid, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - emailServerUid: emailServerUid, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } + p.emailServerUid = emailServerUid; break; case "DEL": p = { @@ -132,45 +116,6 @@ emailServer.application = { emailServerUid: emailServerUid }; break; - //case "LST": - // break; - case "TEST": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } - break; } Ext.Ajax.request({ @@ -240,11 +185,16 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = true; Ext.getCmp("txtPort").allowBlank = true; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = true; Ext.getCmp("txtServer").setValue(""); Ext.getCmp("txtPort").setValue(""); + Ext.getCmp("txtIncomingServer").setValue(""); + Ext.getCmp("txtIncomingPort").setValue(""); + Ext.getCmp("chkReqAuthentication").setValue(false); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -272,6 +222,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = false; + Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; break; case "UPD": @@ -286,6 +238,9 @@ emailServer.application = { Ext.getCmp("txtServer").setValue(record.get("MESS_SERVER")); Ext.getCmp("txtPort").setValue((record.get("MESS_PORT") != 0)? record.get("MESS_PORT") : ""); + Ext.getCmp("txtIncomingServer").setValue(record.get("MESS_INCOMING_SERVER")); + Ext.getCmp("txtIncomingPort").setValue((record.get("MESS_INCOMING_PORT") !== 0)? record.get("MESS_INCOMING_PORT") : ""); + Ext.getCmp("chkReqAuthentication").setValue((parseInt(record.get("MESS_RAUTH")) == 1)? true : false); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -323,10 +278,46 @@ emailServer.application = { { Ext.getCmp("frmEmailServer").getForm().clearInvalid(); - if (cboEmailEngine == "PHPMAILER") { + if (cboEmailEngine === "PHPMAILER") { Ext.getCmp("txtServer").setVisible(true); Ext.getCmp("txtPort").setVisible(true); + try { + Ext.getCmp("txtServer").label.update(_("ID_SERVER")); + Ext.getCmp("txtPort").label.update(_("PORT_DEFAULT")); + } catch (err) { + Ext.getCmp("txtServer").fieldLabel = _("ID_SERVER"); + Ext.getCmp("txtPort").fieldLabel = _("PORT_DEFAULT"); + } + + Ext.getCmp("txtIncomingServer").setVisible(false); + Ext.getCmp("txtIncomingPort").setVisible(false); + + Ext.getCmp("chkReqAuthentication").setVisible(true); + + emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); + + Ext.getCmp("txtAccountFrom").setVisible(true); + Ext.getCmp("rdoGrpSmtpSecure").setVisible(true); + + Ext.getCmp("txtServer").allowBlank = false; + Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtAccountFrom").allowBlank = false; + } else if (cboEmailEngine === "IMAP") { + Ext.getCmp("txtServer").setVisible(true); + Ext.getCmp("txtPort").setVisible(true); + + try { + Ext.getCmp("txtServer").label.update(_("ID_OUTGOING_SERVER")); + Ext.getCmp("txtPort").label.update(_("OUTGOING_PORT_DEFAULT")); + } catch (err) { + Ext.getCmp("txtServer").fieldLabel = _("ID_OUTGOING_SERVER"); + Ext.getCmp("txtPort").fieldLabel = _("OUTGOING_PORT_DEFAULT"); + } + + Ext.getCmp("txtIncomingServer").setVisible(true); + Ext.getCmp("txtIncomingPort").setVisible(true); + Ext.getCmp("chkReqAuthentication").setVisible(true); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -342,6 +333,9 @@ emailServer.application = { Ext.getCmp("txtServer").setVisible(false); Ext.getCmp("txtPort").setVisible(false); + Ext.getCmp("txtIncomingServer").setVisible(false); + Ext.getCmp("txtIncomingPort").setVisible(false); + Ext.getCmp("chkReqAuthentication").setVisible(false); emailServerSetPassword(false); @@ -384,7 +378,7 @@ emailServer.application = { FLAGTEST = 1; - if (option == "PHPMAILER") { + if (option === "PHPMAILER" || option === "IMAP") { if (typeof(testData.resolving_name) != "undefined") { if (testData.resolving_name.result) { msg = msg + "" + testData.resolving_name.title + "
"; @@ -492,6 +486,8 @@ emailServer.application = { {name: "MESS_ENGINE", type: "string"}, {name: "MESS_SERVER", type: "string"}, {name: "MESS_PORT", type: "int"}, + {name: "MESS_INCOMING_SERVER", type: "string"}, + {name: "MESS_INCOMING_PORT", type: "int"}, {name: "MESS_RAUTH", type: "int"}, {name: "MESS_ACCOUNT", type: "string"}, {name: "MESS_PASSWORD", type: "string"}, @@ -548,6 +544,7 @@ emailServer.application = { data: [ ["PHPMAILER", "SMTP (PHPMailer)"], + ["IMAP", "SMTP - IMAP (PHPMailer)"], ["MAIL", "Mail (PHP)"] ] }); @@ -597,6 +594,24 @@ emailServer.application = { emptyText: null }); + var txtIncomingServer = new Ext.form.TextField({ + id: "txtIncomingServer", + name: "txtIncomingServer", + + fieldLabel: _("ID_INCOMING_SERVER") //Server + }); + + var txtIncomingPort = new Ext.form.NumberField({ + id: "txtIncomingPort", + name: "txtIncomingPort", + + fieldLabel: _("INCOMING_PORT_DEFAULT"), //Port (default 993) + + anchor: "36%", + maxLength: 3, + emptyText: null + }); + var chkReqAuthentication = new Ext.form.Checkbox({ id: "chkReqAuthentication", name: "chkReqAuthentication", @@ -745,7 +760,7 @@ emailServer.application = { var winData = new Ext.Window({ layout: "fit", width: 550, - height: 388, + height: 450, //title: "", modal: true, resizable: false, @@ -772,6 +787,8 @@ emailServer.application = { cboEmailEngine, txtServer, txtPort, + txtIncomingServer, + txtIncomingPort, chkReqAuthentication, txtAccountFrom, txtPassword, @@ -997,6 +1014,16 @@ emailServer.application = { return (value != 0)? value : "-"; }; + var rendererMessIncomingServer = function (value) + { + return (value !== "")? value : "-"; + }; + + var rendererMessIncomingPort = function (value) + { + return (value !== 0)? value : "-"; + }; + var rendererMessSmtpSecure = function (value) { return (value != "")? value : "-"; @@ -1017,6 +1044,8 @@ emailServer.application = { {id: "MESS_ENGINE", dataIndex: "MESS_ENGINE", hidden: false, header: _("EMAIL_ENGINE"), width: 80, hideable: true, align: "left"}, {id: "MESS_SERVER", dataIndex: "MESS_SERVER", hidden: false, header: _("ID_SERVER"), width: 150, hideable: true, align: "center", renderer: rendererMessServer}, {id: "MESS_PORT", dataIndex: "MESS_PORT", hidden: false, header: _("ID_EMAIL_SERVER_PORT"), width: 50, hideable: true, align: "center", renderer: rendererMessPort}, + {id: "MESS_INCOMING_SERVER", dataIndex: "MESS_INCOMING_SERVER", hidden: true, header: _("ID_INCOMING_SERVER"), width: 150, hideable: true, align: "center", renderer: rendererMessIncomingServer}, + {id: "MESS_INCOMING_PORT", dataIndex: "MESS_INCOMING_PORT", hidden: true, header: _("ID_EMAIL_SERVER_PORT"), width: 50, hideable: true, align: "center", renderer: rendererMessIncomingPort}, {id: "MESS_RAUTH", dataIndex: "MESS_RAUTH", hidden: true, header: _("REQUIRE_AUTHENTICATION"), width: 50, hideable: false, align: "left"}, {id: "MESS_ACCOUNT", dataIndex: "MESS_ACCOUNT", hidden: false, header: _("ID_EMAIL_SERVER_ACCOUNT_FROM"), width: 130, hideable: true, align: "left"}, {id: "MESS_PASSWORD", dataIndex: "MESS_PASSWORD", hidden: true, header: _("ID_PASSWORD"), width: 130, hideable: false, align: "left"}, From ab77c1343272c060622e985134da0419d5b6813b Mon Sep 17 00:00:00 2001 From: Ronald Date: Tue, 20 Nov 2018 15:53:08 -0400 Subject: [PATCH 04/38] PMC-41 Fixing actionsByEmailErrorReply.html error file --- composer.json | 3 +- .../bin/actionsByEmailEmailResponse.php | 2 + workflow/engine/bin/cron_single.php | 7 +- .../translations/english/processmaker.en.po | 116 ++++++- workflow/engine/data/mysql/insert.sql | 11 + .../ActionsByEmail/ResponseReader.php | 308 ++++++++++++++++++ .../Services/Api/ActionsByEmail.php | 5 + .../actionsByEmailErrorReply.html | 20 ++ 8 files changed, 457 insertions(+), 15 deletions(-) create mode 100644 workflow/engine/bin/actionsByEmailEmailResponse.php create mode 100644 workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php create mode 100644 workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html diff --git a/composer.json b/composer.json index 25714d395..dc34bb592 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,8 @@ "ralouphie/getallheaders": "^2.0", "smarty/smarty": "2.6.30", "pdepend/pdepend": "@stable", - "chumper/zipper": "^1.0" + "chumper/zipper": "^1.0", + "php-imap/php-imap": "^3.0" }, "require-dev": { "fzaninotto/faker": "^1.7", diff --git a/workflow/engine/bin/actionsByEmailEmailResponse.php b/workflow/engine/bin/actionsByEmailEmailResponse.php new file mode 100644 index 000000000..e22f1ad68 --- /dev/null +++ b/workflow/engine/bin/actionsByEmailEmailResponse.php @@ -0,0 +1,2 @@ +actionsByEmailEmailResponse(); + break; } } catch (Exception $e) { $token = strtotime("now"); diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 7027ef788..a859e3847 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: ProcessMaker (Branch 3.3.1)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-10-23 16:48:05\n" +"PO-Revision-Date: 2018-11-23 20:16:26\n" "Last-Translator: \n" "Language-Team: Colosa Developers Team \n" "MIME-Version: 1.0\n" @@ -1705,6 +1705,24 @@ msgstr "The answer has been submitted. Thank you." msgid "Please add your comments above this section. Don't modify or delete this section." msgstr "Please add your comments above this section. Don't modify or delete this section." +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_ANSWER +#: LABEL/ID_ABE_CASE_NOTE_ANSWER +msgid "Answer: {optionLabel}" +msgstr "Answer: {optionLabel}" + +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_COMMENT +#: LABEL/ID_ABE_CASE_NOTE_COMMENT +msgid "Comment: {emailBody}" +msgstr "Comment: {emailBody}" + +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_HEADER +#: LABEL/ID_ABE_CASE_NOTE_HEADER +msgid "{emailAccount} has completed a task from Actions by Email." +msgstr "{emailAccount} has completed a task from Actions by Email." + # TRANSLATION # LABEL/ID_ABE_FORM_ALREADY_FILLED #: LABEL/ID_ABE_FORM_ALREADY_FILLED @@ -1717,6 +1735,54 @@ msgstr "The form has already been filled and sent." msgid "The information was submitted. Thank you." msgstr "The information was submitted. Thank you." +# TRANSLATION +# LABEL/ID_ABE_LOG_ALREADY_ROUTED +#: LABEL/ID_ABE_LOG_ALREADY_ROUTED +msgid "The case was identified correctly but it was already routed." +msgstr "The case was identified correctly but it was already routed." + +# TRANSLATION +# LABEL/ID_ABE_LOG_CANNOT_BE_IDENTIFIED +#: LABEL/ID_ABE_LOG_CANNOT_BE_IDENTIFIED +msgid "The case cannot be identified." +msgstr "The case cannot be identified." + +# TRANSLATION +# LABEL/ID_ABE_LOG_CANNOT_READ +#: LABEL/ID_ABE_LOG_CANNOT_READ +msgid "The application cannot read the email receiver account." +msgstr "The application cannot read the email receiver account." + +# TRANSLATION +# LABEL/ID_ABE_LOG_PROCESSED_OK +#: LABEL/ID_ABE_LOG_PROCESSED_OK +msgid "The answer was processed correctly." +msgstr "The answer was processed correctly." + +# TRANSLATION +# LABEL/ID_ABE_LOG_ROUTING_FAILED +#: LABEL/ID_ABE_LOG_ROUTING_FAILED +msgid "The case was identified correctly but the routing process has failed." +msgstr "The case was identified correctly but the routing process has failed." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_ALREADY_ROUTED +#: LABEL/ID_ABE_RESPONSE_ALREADY_ROUTED +msgid "Your answer cannot be processed because the case was already routed or is no longer assigned to you." +msgstr "Your answer cannot be processed because the case was already routed or is no longer assigned to you." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED +#: LABEL/ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED +msgid "Your answer cannot be processed, please try again and make sure to keep the subject code untouched." +msgstr "Your answer cannot be processed, please try again and make sure to keep the subject code untouched." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_ROUTING_FAILED +#: LABEL/ID_ABE_RESPONSE_ROUTING_FAILED +msgid "Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator." +msgstr "Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator." + # TRANSLATION # LABEL/ID_ABE_RESPONSE_SENT #: LABEL/ID_ABE_RESPONSE_SENT @@ -13625,6 +13691,12 @@ msgstr "Execute a trigger when a case is deleted" msgid "Please press the \"Generate Link\" button." msgstr "Please press the \"Generate Link\" button." +# TRANSLATION +# LABEL/ID_MAFE_660cfca112471f69246e9942f5e8afd1 +#: LABEL/ID_MAFE_660cfca112471f69246e9942f5e8afd1 +msgid "Store email body in" +msgstr "Store email body in" + # TRANSLATION # LABEL/ID_MAFE_66285b36f894a5439af5a98e3e1a36d2 #: LABEL/ID_MAFE_66285b36f894a5439af5a98e3e1a36d2 @@ -14555,6 +14627,12 @@ msgstr "January" msgid "[LABEL/ID_MAFE_86fd9a7abc9f357e7fa206b2d42ec5ba] Destination Path" msgstr "Destination Path" +# TRANSLATION +# LABEL/ID_MAFE_8738321e65db027ee6476c0ab12d8cd5 +#: LABEL/ID_MAFE_8738321e65db027ee6476c0ab12d8cd5 +msgid "Store option in" +msgstr "Store option in" + # TRANSLATION # LABEL/ID_MAFE_87557f11575c0ad78e4e28abedc13b6e #: LABEL/ID_MAFE_87557f11575c0ad78e4e28abedc13b6e @@ -15365,6 +15443,12 @@ msgstr "Properties" msgid "[LABEL/ID_MAFE_9fced129522f128b2445a41fb0b6ef9f] checkbox" msgstr "checkbox" +# TRANSLATION +# LABEL/ID_MAFE_a036226d97d1d0d725d494a1431f322c +#: LABEL/ID_MAFE_a036226d97d1d0d725d494a1431f322c +msgid "Receiver account" +msgstr "Receiver account" + # TRANSLATION # LABEL/ID_MAFE_a05ac4341235111bd2cba5c3c105ba81 #: LABEL/ID_MAFE_a05ac4341235111bd2cba5c3c105ba81 @@ -17915,6 +17999,12 @@ msgstr "Users" msgid "validate" msgstr "validate" +# TRANSLATION +# LABEL/ID_MAFE_fa2b5b7c9bccd35e42cb74042690a091 +#: LABEL/ID_MAFE_fa2b5b7c9bccd35e42cb74042690a091 +msgid "Email response" +msgstr "Email response" + # TRANSLATION # LABEL/ID_MAFE_fa3c608c8fc755543f0d37afd6a42651 #: LABEL/ID_MAFE_fa3c608c8fc755543f0d37afd6a42651 @@ -25949,18 +26039,6 @@ msgstr "The uploaded file exceeds the upload_max_filesize directive in php.ini" msgid "The file has not been attached because the extension is not allowed or because the content doesn't correspond." msgstr "The file has not been attached because the extension is not allowed or because the content doesn't correspond." -# TRANSLATION -# LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE -#: LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE -msgid "File size exceeds the allowable limit of {0}" -msgstr "File size exceeds the allowable limit of {0}" - -# TRANSLATION -# LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE -#: LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE -msgid "Invalid file format, please upload a file with one of the following formats {0}" -msgstr "Invalid file format, please upload a file with one of the following formats {0}" - # TRANSLATION # LABEL/ID_UPLOAD_ERR_NO_FILE #: LABEL/ID_UPLOAD_ERR_NO_FILE @@ -26009,6 +26087,18 @@ msgstr "Upload from file" msgid "Upload image" msgstr "Upload image" +# TRANSLATION +# LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE +#: LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE +msgid "File size exceeds the allowable limit of {0}" +msgstr "File size exceeds the allowable limit of {0}" + +# TRANSLATION +# LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE +#: LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE +msgid "Invalid file format, please upload a file with one of the following formats {0}" +msgstr "Invalid file format, please upload a file with one of the following formats {0}" + # TRANSLATION # LABEL/ID_UPLOAD_LANGUAGE #: LABEL/ID_UPLOAD_LANGUAGE diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 8277694f0..b427e25af 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57085,6 +57085,17 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_ABE_FORM_ALREADY_FILLED','en','The form has already been filled and sent.','2017-06-09') , ( 'LABEL','ID_ABE_INFORMATION_SUBMITTED','en','The information was submitted. Thank you.','2017-06-19') , ( 'LABEL','ID_ABE_RESPONSE_SENT','en','The response has already been sent.','2017-06-19') , +( 'LABEL','ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED','en','Your answer cannot be processed, please try again and make sure to keep the subject code untouched.','2018-11-20') , +( 'LABEL','ID_ABE_RESPONSE_ALREADY_ROUTED','en','Your answer cannot be processed because the case was already routed or is no longer assigned to you.','2018-11-20') , +( 'LABEL','ID_ABE_RESPONSE_ROUTING_FAILED','en','Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator.','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_ANSWER','en','Answer: {optionLabel}','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_COMMENT','en','Comment: {emailBody}','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_HEADER','en','{emailAccount} has completed a task from Actions by Email.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_CANNOT_READ','en','The application cannot read the email receiver account.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_PROCESSED_OK','en','The answer was processed correctly.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_CANNOT_BE_IDENTIFIED','en','The case cannot be identified.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_ALREADY_ROUTED','en','The case was identified correctly but it was already routed.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_ROUTING_FAILED','en','The case was identified correctly but the routing process has failed.','2018-11-20') , ( 'LABEL','ID_ACCEPT','en','Accept','2014-01-15') , ( 'LABEL','ID_ACCESS_DENIED','en','Access Denied!','2015-12-03') , ( 'LABEL','ID_ACCOUNT','en','Account','2014-01-15') , diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php new file mode 100644 index 000000000..8fdd862d1 --- /dev/null +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -0,0 +1,308 @@ +messageResponseError; + } + + /** + * @param string $messageResponseError + */ + public function setMessageResponseError($messageResponseError) + { + $this->messageResponseError = $messageResponseError; + } + + /** + * Read the Action by Email listener inbox looking for new messages + */ + public function actionsByEmailEmailResponse() + { + try { + if (PMLicensedFeatures + ::getSingleton() + ->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) { + require_once(PATH_DB . config("system.workspace") . PATH_SEP . "/db.php"); + $arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace")); + define('SYS_SKIN', $arraySystemConfiguration['default_skin']); + + $criteriaAbe = new Criteria(); + $criteriaAbe->add(AbeConfigurationPeer::ABE_TYPE, "RESPONSE"); + $resultAbe = AbeConfigurationPeer::doSelectRS($criteriaAbe); + $resultAbe->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($resultAbe->next()) { + $dataAbe = $resultAbe->getRow(); + $this->getAllEmails($dataAbe); + } + } + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + + /** + * Decrypt password of Email Server + * @param array $emailSetup + * @return mixed|string + */ + private function decryptPassword(array $emailSetup) + { + $pass = isset($emailSetup['MESS_PASSWORD']) ? $emailSetup['MESS_PASSWORD'] : ''; + $passDec = G::decrypt($pass, 'EMAILENCRYPT'); + $auxPass = explode('hash:', $passDec); + if (count($auxPass) > 1) { + if (count($auxPass) == 2) { + $pass = $auxPass[1]; + } else { + array_shift($auxPass); + $pass = implode('', $auxPass); + } + } + return $pass; + } + + /** + * Get all Email of server listener + * @param array $dataAbe + */ + public function getAllEmails(array $dataAbe) + { + try { + $emailServer = new EmailServer(); + $emailSetup = (!is_null(EmailServerPeer::retrieveByPK($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']))) ? + $emailServer->getEmailServer($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID'], true) : + $emailServer->getEmailServerDefault(); + if (empty($emailSetup)) { + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_CANNOT_READ'), 500)); + } + $mailbox = new Mailbox( + '{'. $emailSetup['MESS_INCOMING_SERVER'] . ':' . $emailSetup['MESS_INCOMING_PORT'] . '/imap/ssl/novalidate-cert}INBOX', + $emailSetup['MESS_ACCOUNT'], + $this->decryptPassword($emailSetup) + ); + + // Read all messages into an array + $mailsIds = $mailbox->searchMailbox('ALL'); + if ($mailsIds) { + $mailsInfo = $mailbox->getMailsInfo($mailsIds); + // Get the first message and save its attachment(s) to disk: + foreach ($mailsIds as $key => $mailsId) { + /** @var IncomingMail $mail */ + $mail = $mailbox->getMail($mailsId); + preg_match("/{(.*)}/", $mail->textPlain, $matches); + if ($matches && $mailsInfo[$key]->seen === 0) { + $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); + if (config("system.workspace") === $dataEmail['workspace']) { + $this->case = $dataEmail; + try { + $appDelegate = new AppDelegation(); + $alreadyRouted = $appDelegate->alreadyRouted($this->case["appUid"], $this->case["delIndex"]); + //Verify if the current case is already routed. + if ($alreadyRouted) { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ALREADY_ROUTED')); + throw (new Exception(G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'), 400)); + } + $this->processABE($this->case, $mail, $dataAbe); + Bootstrap::registerMonolog( + $this->channel, + 100, // DEBUG + G::LoadTranslation('ID_ABE_LOG_PROCESSED_OK'), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } catch (Exception $e) { + $this->sendMessageError( + $this->getMessageResponseError() ? $this->getMessageResponseError() : $e->getMessage(), + $this->case, + $mail, + $emailSetup + ); + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + } + } + } + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + + /** + * Derivation of the case with the mail information + * @param array $caseInfo + * @param IncomingMail $mail + * @param array $dataAbe + * @throws Exception + */ + public function processABE(array $caseInfo, IncomingMail $mail, array $dataAbe = []) + { + try { + $actionsByEmail = new ActionsByEmail(); + $actionsByEmail->verifyLogin($caseInfo['appUid'], $caseInfo['delIndex']); + + $case = new Cases(); + $caseFieldsABE = $case->loadCase($caseInfo['appUid'], $caseInfo['delIndex']); + + $actionsByEmailCore = new ActionsByEmailCoreClass(); + $actionField = str_replace( + $actionsByEmailCore->getPrefix(), + '', + $dataAbe['ABE_ACTION_FIELD'] + ); + $dataField = []; + $dataField[$actionField] = $caseInfo['fieldValue']; + $actionBodyField = str_replace( + $actionsByEmailCore->getPrefix(), + '', + $dataAbe['ABE_ACTION_BODY_FIELD'] + ); + $textPlain = $mail->textPlain; + $textPlain = substr($textPlain, 0, strpos($textPlain, "/=")); + $dataField[$actionBodyField] = $textPlain; + $caseFieldsABE['APP_DATA'] = array_merge($caseFieldsABE['APP_DATA'], $dataField); + + ChangeLog::getChangeLog() + ->getUsrIdByUsrUid($caseFieldsABE['CURRENT_USER_UID'], true) + ->setSourceId(ChangeLog::FromABE); + + $caseFieldsABE['CURRENT_DYNAFORM'] = ''; + $caseFieldsABE['USER_UID'] = $caseFieldsABE['CURRENT_USER_UID']; + $caseFieldsABE['OBJECT_TYPE'] = ''; + + $case->updateCase($caseInfo['appUid'], $caseFieldsABE); + + try { + $ws = new WsBase(); + $result = $ws->derivateCase( + $caseFieldsABE['CURRENT_USER_UID'], + $caseInfo['appUid'], + $caseInfo['delIndex'], + true + ); + $code = (is_array($result)) ? $result['status_code'] : $result->status_code; + if ($code != 0) { + throw new Exception( + "An error occurred while the application was being processed\n" . + "Error code: " . $result->status_code . "\nError message: " . $result->message + ); + } + } catch (Exception $e) { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ROUTING_FAILED')); + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_ROUTING_FAILED'), 400)); + } + + //Save Cases Notes + if ($dataAbe['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { + $customGrid = unserialize($dataAbe['ABE_CUSTOM_GRID']); + $fieldLabel = null; + foreach ($customGrid as $key => $value) { + if ($value['abe_custom_value'] == $caseInfo['fieldValue']) { + $fieldLabel = $value['abe_custom_label']; + break; + } + } + $appNotes = new AppNotes(); + $noteText = G::LoadTranslation('ID_ABE_CASE_NOTE_HEADER', ['emailAccount' => $mail->toString]) . "\n\n"; + $noteText .= G::LoadTranslation('ID_ABE_CASE_NOTE_ANSWER', ['optionLabel' => $fieldLabel ? $fieldLabel : $caseInfo['fieldValue']]) . "\n\n"; + $noteText .= G::LoadTranslation('ID_ABE_CASE_NOTE_COMMENT', ['emailBody' => $textPlain]); + $noteContent = addslashes($noteText); + $appNotes->postNewNote($caseInfo['appUid'], $caseFieldsABE['APP_DATA']['USER_LOGGED'], $noteContent, false); + } + } catch (Exception $e) { + if ($e->getCode() == 400) { + throw (new Exception($e->getMessage(), $e->getCode())); + } else { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED')); + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_CANNOT_BE_IDENTIFIED'), 300)); + } + } + } + + /** + * Send an error message to the sender + * @param string $msgError + * @param array $caseInf + * @param IncomingMail $mail + * @param array $emailSetup + * @return \ProcessMaker\Util\Response|string|\WsResponse + */ + public function sendMessageError($msgError, array $caseInf, IncomingMail $mail, array $emailSetup) + { + $wsBase = new WsBase(); + $result = $wsBase->sendMessage( + $caseInf['appUid'], + $mail->toString, + $mail->fromAddress, + '', + '', + $mail->subject, + 'actionsByEmailErrorReply.html', + ['ACTIONS_BY_EMAIL_ERROR_MESSAGE' => $msgError], + null, + true, + $caseInf['delIndex'], + $emailSetup, + 0 + ); + return $result; + } +} diff --git a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php index 339b5bb27..a1646e6ee 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php @@ -154,6 +154,11 @@ class ActionsByEmail extends Api $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html'); } + if (!file_exists($path . 'actionsByEmailErrorReply.html')) { + $data = array('prf_content' => '', 'prf_filename' => 'actionsByEmailErrorReply.html', 'prf_path' => 'templates'); + $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); + @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmailErrorReply.html', $path . 'actionsByEmailErrorReply.html'); + } } $directory = dir($path); diff --git a/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html b/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html new file mode 100644 index 000000000..c8584c420 --- /dev/null +++ b/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html @@ -0,0 +1,20 @@ +
+ + + + + + +
ACTIONS BY EMAIL
+
+
+ @#ACTIONS_BY_EMAIL_ERROR_MESSAGE +
+
+
+ This is an automated email, please do not replay to it. +
+ www.processmaker.com +
+
\ No newline at end of file From 6e50a75f695d5f800f127dc86bb548ce6acc0ec1 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 28 Nov 2018 15:43:46 -0400 Subject: [PATCH 05/38] PMC-79: Email Server does not works --- workflow/engine/templates/emailServer/emailServer.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index dfa9e901a..d7976acb9 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -222,8 +222,6 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; - Ext.getCmp("txtIncomingServer").allowBlank = false; - Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; break; case "UPD": @@ -302,6 +300,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = false; } else if (cboEmailEngine === "IMAP") { Ext.getCmp("txtServer").setVisible(true); @@ -327,6 +327,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = false; + Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; } else { //MAIL @@ -345,6 +347,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = true; Ext.getCmp("txtPort").allowBlank = true; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = true; Ext.getCmp("txtPassword").allowBlank = true; } From 039518481cc8b7ea0b9046dba4d5a55c5a4cc5d5 Mon Sep 17 00:00:00 2001 From: ronald Date: Thu, 29 Nov 2018 12:10:35 -0400 Subject: [PATCH 06/38] PMC-82 --- .../classes/ActionsByEmailCoreClass.php | 2 + workflow/engine/classes/SpoolRun.php | 4 +- .../ActionsByEmail/ResponseReader.php | 42 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 166485a06..f1a8ead4e 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -731,11 +731,13 @@ class ActionsByEmailCoreClass extends PMPlugin */ private function getBodyByResponse($fieldValue) { + $abeRequest = $this->getAbeRequest(); $bodyToCrypt = [ 'workspace' => $this->getWorkspace(), 'appUid' => $this->getAppUid(), 'delIndex' => $this->getIndex(), 'fieldValue' => $fieldValue, + 'ABE_REQ_UID' => $abeRequest['ABE_REQ_UID'] ]; $bodyToCrypt = G::json_encode($bodyToCrypt); diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index 56bccc4ec..c736b8b06 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -406,13 +406,14 @@ class SpoolRun switch ($this->config['MESS_ENGINE']) { case 'MAIL': case 'PHPMAILER': - + case 'IMAP': switch ($this->config['MESS_ENGINE']) { case 'MAIL': $oPHPMailer = new PHPMailer(); $oPHPMailer->Mailer = 'mail'; break; + case 'IMAP': case 'PHPMAILER': $oPHPMailer = new PHPMailer(true); $oPHPMailer->Mailer = 'smtp'; @@ -424,6 +425,7 @@ class SpoolRun switch ($this->config['MESS_ENGINE']) { case 'MAIL': break; + case 'IMAP': case 'PHPMAILER': //Posible Options for SMTPSecure are: "", "ssl" or "tls" if (isset($this->config['SMTPSecure']) && preg_match('/^(ssl|tls)$/', $this->config['SMTPSecure'])) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 8fdd862d1..447835910 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -3,6 +3,7 @@ namespace ProcessMaker\BusinessModel\ActionsByEmail; use AbeConfigurationPeer; +use AbeResponses; use ActionsByEmailCoreClass; use AppDelegation; use AppNotes; @@ -220,6 +221,27 @@ class ResponseReader $dataField[$actionBodyField] = $textPlain; $caseFieldsABE['APP_DATA'] = array_merge($caseFieldsABE['APP_DATA'], $dataField); + $dataResponses = []; + $dataResponses['ABE_REQ_UID'] = $caseInfo['ABE_REQ_UID']; + $dataResponses['ABE_RES_CLIENT_IP'] = 'localhost'; + $dataResponses['ABE_RES_DATA'] = serialize($dataField); + $dataResponses['ABE_RES_STATUS'] = 'PENDING'; + $dataResponses['ABE_RES_MESSAGE'] = ''; + + try { + $abeAbeResponsesInstance = new AbeResponses(); + $dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + 300, + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + ChangeLog::getChangeLog() ->getUsrIdByUsrUid($caseFieldsABE['CURRENT_USER_UID'], true) ->setSourceId(ChangeLog::FromABE); @@ -250,6 +272,24 @@ class ResponseReader throw (new Exception(G::LoadTranslation('ID_ABE_LOG_ROUTING_FAILED'), 400)); } + //Update AbeResponses + $dataResponses['ABE_RES_STATUS'] = ($code == 0)? 'SENT' : 'ERROR'; + $dataResponses['ABE_RES_MESSAGE'] = ($code == 0)? '-' : $result->message; + + try { + $abeAbeResponsesInstance = new AbeResponses(); + $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + 300, + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + $dataAbeRequests = loadAbeRequest($caseInfo['ABE_REQ_UID']); //Save Cases Notes if ($dataAbe['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { $customGrid = unserialize($dataAbe['ABE_CUSTOM_GRID']); @@ -267,6 +307,8 @@ class ResponseReader $noteContent = addslashes($noteText); $appNotes->postNewNote($caseInfo['appUid'], $caseFieldsABE['APP_DATA']['USER_LOGGED'], $noteContent, false); } + $dataAbeRequests['ABE_REQ_ANSWERED'] = 1; + $code == 0 ? uploadAbeRequest($dataAbeRequests) : ''; } catch (Exception $e) { if ($e->getCode() == 400) { throw (new Exception($e->getMessage(), $e->getCode())); From be5e82ef91ed5cb68fd1bf97d1dc87a18dcb1d41 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Tue, 8 Jan 2019 11:02:36 -0400 Subject: [PATCH 07/38] PMC-347 --- .../BusinessModel/ActionsByEmail/ResponseReader.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 447835910..4666e861a 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -126,15 +126,14 @@ class ResponseReader ); // Read all messages into an array - $mailsIds = $mailbox->searchMailbox('ALL'); + $mailsIds = $mailbox->searchMailbox('UNSEEN'); if ($mailsIds) { - $mailsInfo = $mailbox->getMailsInfo($mailsIds); // Get the first message and save its attachment(s) to disk: foreach ($mailsIds as $key => $mailsId) { /** @var IncomingMail $mail */ $mail = $mailbox->getMail($mailsId); preg_match("/{(.*)}/", $mail->textPlain, $matches); - if ($matches && $mailsInfo[$key]->seen === 0) { + if ($matches) { $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); if (config("system.workspace") === $dataEmail['workspace']) { $this->case = $dataEmail; From 85e3f83c612b2817c8e576ad85e26bf26dcae6c5 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Tue, 8 Jan 2019 15:34:10 -0400 Subject: [PATCH 08/38] PMC-348 Add marks and register the new classes for avoid this implementation in the community version --- workflow/engine/bin/cron_single.php | 4 ++++ .../BusinessModel/ActionsByEmail/ResponseReader.php | 2 ++ .../engine/src/ProcessMaker/Services/Api/ActionsByEmail.php | 2 ++ workflow/engine/templates/emailServer/emailServer.js | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 5098a3339..64cacd92b 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -1,7 +1,9 @@ actionsByEmailEmailResponse(); break; + /*----------------------------------********---------------------------------*/ } } catch (Exception $e) { $token = strtotime("now"); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 447835910..b7117228d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -30,6 +30,7 @@ use WsBase; */ class ResponseReader { + /*----------------------------------********---------------------------------*/ private $channel = "ActionsByEmail"; private $case = []; private $messageResponseError = null; @@ -347,4 +348,5 @@ class ResponseReader ); return $result; } + /*----------------------------------********---------------------------------*/ } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php index a1646e6ee..63045f2ec 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php @@ -154,11 +154,13 @@ class ActionsByEmail extends Api $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html'); } + /*----------------------------------********---------------------------------*/ if (!file_exists($path . 'actionsByEmailErrorReply.html')) { $data = array('prf_content' => '', 'prf_filename' => 'actionsByEmailErrorReply.html', 'prf_path' => 'templates'); $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmailErrorReply.html', $path . 'actionsByEmailErrorReply.html'); } + /*----------------------------------********---------------------------------*/ } $directory = dir($path); diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index d7976acb9..7341082b6 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -71,6 +71,7 @@ emailServer.application = { emailServerDefault: emailDefault }; } else if (typeEmailEngine === "IMAP") { + /*----------------------------------********---------------------------------*/ var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); var smtpSecure = rdoGrpOption.getGroupValue(); @@ -92,6 +93,7 @@ emailServer.application = { mailTo: Ext.getCmp("txtMailTo").getValue(), emailServerDefault: emailDefault }; + /*----------------------------------********---------------------------------*/ } else { //MAIL p = { @@ -304,6 +306,7 @@ emailServer.application = { Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = false; } else if (cboEmailEngine === "IMAP") { + /*----------------------------------********---------------------------------*/ Ext.getCmp("txtServer").setVisible(true); Ext.getCmp("txtPort").setVisible(true); @@ -330,6 +333,7 @@ emailServer.application = { Ext.getCmp("txtIncomingServer").allowBlank = false; Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; + /*----------------------------------********---------------------------------*/ } else { //MAIL Ext.getCmp("txtServer").setVisible(false); From 914aa2c56e227c5adb75fccf76ea508c240f9a9e Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Fri, 25 Jan 2019 10:59:53 -0400 Subject: [PATCH 09/38] add mark for remove options IMAP --- workflow/engine/templates/emailServer/emailServer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index 7341082b6..dc72cd436 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -552,7 +552,9 @@ emailServer.application = { data: [ ["PHPMAILER", "SMTP (PHPMailer)"], + /*----------------------------------********---------------------------------*/ ["IMAP", "SMTP - IMAP (PHPMailer)"], + /*----------------------------------********---------------------------------*/ ["MAIL", "Mail (PHP)"] ] }); From 48e870fab36c85a0bf02437bbfca332a8bf13e8a Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 14 Nov 2018 15:00:10 -0400 Subject: [PATCH 10/38] PMC-40: Action by Email: Email response configuration Adding schema.sql file --- .../engine/classes/model/AbeConfiguration.php | 5 +- .../model/map/AbeConfigurationMapBuilder.php | 4 + .../classes/model/om/BaseAbeConfiguration.php | 194 ++++++++++++++---- .../model/om/BaseAbeConfigurationPeer.php | 28 ++- workflow/engine/config/schema.xml | 13 +- workflow/engine/data/mysql/schema.sql | 2 + 6 files changed, 196 insertions(+), 50 deletions(-) diff --git a/workflow/engine/classes/model/AbeConfiguration.php b/workflow/engine/classes/model/AbeConfiguration.php index 6b740d85a..6722958cf 100644 --- a/workflow/engine/classes/model/AbeConfiguration.php +++ b/workflow/engine/classes/model/AbeConfiguration.php @@ -26,6 +26,7 @@ class AbeConfiguration extends BaseAbeConfiguration 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', + 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', @@ -33,7 +34,8 @@ class AbeConfiguration extends BaseAbeConfiguration 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', - 'ABE_EMAIL_SERVER_UID' + 'ABE_EMAIL_SERVER_UID', + 'ABE_EMAIL_SERVER_RECEIVER_UID' ]; public function load($abeUid) @@ -136,6 +138,7 @@ class AbeConfiguration extends BaseAbeConfiguration $criteria->addSelectColumn(AbeConfigurationPeer::DYN_UID); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_SUBJECT_FIELD); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CUSTOM_GRID); diff --git a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php index 8652ef90a..c74d98fa0 100644 --- a/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php +++ b/workflow/engine/classes/model/map/AbeConfigurationMapBuilder.php @@ -83,6 +83,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_ACTION_FIELD', 'AbeActionField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_ACTION_BODY_FIELD', 'AbeActionBodyField', 'string', CreoleTypes::VARCHAR, false, 255); + $tMap->addColumn('ABE_CASE_NOTE_IN_RESPONSE', 'AbeCaseNoteInResponse', 'int', CreoleTypes::INTEGER, false, null); $tMap->addColumn('ABE_FORCE_LOGIN', 'AbeForceLogin', 'int', CreoleTypes::INTEGER, false, null); @@ -99,6 +101,8 @@ class AbeConfigurationMapBuilder $tMap->addColumn('ABE_EMAIL_SERVER_UID', 'AbeEmailServerUid', 'string', CreoleTypes::VARCHAR, false, 32); + $tMap->addColumn('ABE_EMAIL_SERVER_RECEIVER_UID', 'AbeEmailServerReceiverUid', 'string', CreoleTypes::VARCHAR, false, 32); + } // doBuild() } // AbeConfigurationMapBuilder diff --git a/workflow/engine/classes/model/om/BaseAbeConfiguration.php b/workflow/engine/classes/model/om/BaseAbeConfiguration.php index 7de6b6b1a..a83b0448d 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfiguration.php +++ b/workflow/engine/classes/model/om/BaseAbeConfiguration.php @@ -81,6 +81,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_action_field = ''; + /** + * The value for the abe_action_body_field field. + * @var string + */ + protected $abe_action_body_field = ''; + /** * The value for the abe_case_note_in_response field. * @var int @@ -129,6 +135,12 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent */ protected $abe_email_server_uid = ''; + /** + * The value for the abe_email_server_receiver_uid field. + * @var string + */ + protected $abe_email_server_receiver_uid = ''; + /** * Flag to prevent endless save loop, if this object is referenced * by another object which falls in this transaction. @@ -242,6 +254,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_action_field; } + /** + * Get the [abe_action_body_field] column value. + * + * @return string + */ + public function getAbeActionBodyField() + { + + return $this->abe_action_body_field; + } + /** * Get the [abe_case_note_in_response] column value. * @@ -372,6 +395,17 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->abe_email_server_uid; } + /** + * Get the [abe_email_server_receiver_uid] column value. + * + * @return string + */ + public function getAbeEmailServerReceiverUid() + { + + return $this->abe_email_server_receiver_uid; + } + /** * Set the value of [abe_uid] column. * @@ -570,6 +604,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeActionField() + /** + * Set the value of [abe_action_body_field] column. + * + * @param string $v new value + * @return void + */ + public function setAbeActionBodyField($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->abe_action_body_field !== $v || $v === '') { + $this->abe_action_body_field = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_ACTION_BODY_FIELD; + } + + } // setAbeActionBodyField() + /** * Set the value of [abe_case_note_in_response] column. * @@ -760,6 +816,28 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } // setAbeEmailServerUid() + /** + * Set the value of [abe_email_server_receiver_uid] column. + * + * @param string $v new value + * @return void + */ + public function setAbeEmailServerReceiverUid($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->abe_email_server_receiver_uid !== $v || $v === '') { + $this->abe_email_server_receiver_uid = $v; + $this->modifiedColumns[] = AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID; + } + + } // setAbeEmailServerReceiverUid() + /** * Hydrates (populates) the object variables with values from the database resultset. * @@ -795,28 +873,32 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->abe_action_field = $rs->getString($startcol + 8); - $this->abe_case_note_in_response = $rs->getInt($startcol + 9); + $this->abe_action_body_field = $rs->getString($startcol + 9); - $this->abe_force_login = $rs->getInt($startcol + 10); + $this->abe_case_note_in_response = $rs->getInt($startcol + 10); - $this->abe_create_date = $rs->getTimestamp($startcol + 11, null); + $this->abe_force_login = $rs->getInt($startcol + 11); - $this->abe_update_date = $rs->getTimestamp($startcol + 12, null); + $this->abe_create_date = $rs->getTimestamp($startcol + 12, null); - $this->abe_subject_field = $rs->getString($startcol + 13); + $this->abe_update_date = $rs->getTimestamp($startcol + 13, null); - $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 14); + $this->abe_subject_field = $rs->getString($startcol + 14); - $this->abe_custom_grid = $rs->getString($startcol + 15); + $this->abe_mailserver_or_mailcurrent = $rs->getInt($startcol + 15); - $this->abe_email_server_uid = $rs->getString($startcol + 16); + $this->abe_custom_grid = $rs->getString($startcol + 16); + + $this->abe_email_server_uid = $rs->getString($startcol + 17); + + $this->abe_email_server_receiver_uid = $rs->getString($startcol + 18); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 17; // 17 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 19; // 19 = AbeConfigurationPeer::NUM_COLUMNS - AbeConfigurationPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating AbeConfiguration object", $e); @@ -1048,29 +1130,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent return $this->getAbeActionField(); break; case 9: - return $this->getAbeCaseNoteInResponse(); + return $this->getAbeActionBodyField(); break; case 10: - return $this->getAbeForceLogin(); + return $this->getAbeCaseNoteInResponse(); break; case 11: - return $this->getAbeCreateDate(); + return $this->getAbeForceLogin(); break; case 12: - return $this->getAbeUpdateDate(); + return $this->getAbeCreateDate(); break; case 13: - return $this->getAbeSubjectField(); + return $this->getAbeUpdateDate(); break; case 14: - return $this->getAbeMailserverOrMailcurrent(); + return $this->getAbeSubjectField(); break; case 15: - return $this->getAbeCustomGrid(); + return $this->getAbeMailserverOrMailcurrent(); break; case 16: + return $this->getAbeCustomGrid(); + break; + case 17: return $this->getAbeEmailServerUid(); break; + case 18: + return $this->getAbeEmailServerReceiverUid(); + break; default: return null; break; @@ -1100,14 +1188,16 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $keys[6] => $this->getDynUid(), $keys[7] => $this->getAbeEmailField(), $keys[8] => $this->getAbeActionField(), - $keys[9] => $this->getAbeCaseNoteInResponse(), - $keys[10] => $this->getAbeForceLogin(), - $keys[11] => $this->getAbeCreateDate(), - $keys[12] => $this->getAbeUpdateDate(), - $keys[13] => $this->getAbeSubjectField(), - $keys[14] => $this->getAbeMailserverOrMailcurrent(), - $keys[15] => $this->getAbeCustomGrid(), - $keys[16] => $this->getAbeEmailServerUid(), + $keys[9] => $this->getAbeActionBodyField(), + $keys[10] => $this->getAbeCaseNoteInResponse(), + $keys[11] => $this->getAbeForceLogin(), + $keys[12] => $this->getAbeCreateDate(), + $keys[13] => $this->getAbeUpdateDate(), + $keys[14] => $this->getAbeSubjectField(), + $keys[15] => $this->getAbeMailserverOrMailcurrent(), + $keys[16] => $this->getAbeCustomGrid(), + $keys[17] => $this->getAbeEmailServerUid(), + $keys[18] => $this->getAbeEmailServerReceiverUid(), ); return $result; } @@ -1167,29 +1257,35 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $this->setAbeActionField($value); break; case 9: - $this->setAbeCaseNoteInResponse($value); + $this->setAbeActionBodyField($value); break; case 10: - $this->setAbeForceLogin($value); + $this->setAbeCaseNoteInResponse($value); break; case 11: - $this->setAbeCreateDate($value); + $this->setAbeForceLogin($value); break; case 12: - $this->setAbeUpdateDate($value); + $this->setAbeCreateDate($value); break; case 13: - $this->setAbeSubjectField($value); + $this->setAbeUpdateDate($value); break; case 14: - $this->setAbeMailserverOrMailcurrent($value); + $this->setAbeSubjectField($value); break; case 15: - $this->setAbeCustomGrid($value); + $this->setAbeMailserverOrMailcurrent($value); break; case 16: + $this->setAbeCustomGrid($value); + break; + case 17: $this->setAbeEmailServerUid($value); break; + case 18: + $this->setAbeEmailServerReceiverUid($value); + break; } // switch() } @@ -1250,35 +1346,43 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent } if (array_key_exists($keys[9], $arr)) { - $this->setAbeCaseNoteInResponse($arr[$keys[9]]); + $this->setAbeActionBodyField($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setAbeForceLogin($arr[$keys[10]]); + $this->setAbeCaseNoteInResponse($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setAbeCreateDate($arr[$keys[11]]); + $this->setAbeForceLogin($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setAbeUpdateDate($arr[$keys[12]]); + $this->setAbeCreateDate($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setAbeSubjectField($arr[$keys[13]]); + $this->setAbeUpdateDate($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setAbeMailserverOrMailcurrent($arr[$keys[14]]); + $this->setAbeSubjectField($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { - $this->setAbeCustomGrid($arr[$keys[15]]); + $this->setAbeMailserverOrMailcurrent($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { - $this->setAbeEmailServerUid($arr[$keys[16]]); + $this->setAbeCustomGrid($arr[$keys[16]]); + } + + if (array_key_exists($keys[17], $arr)) { + $this->setAbeEmailServerUid($arr[$keys[17]]); + } + + if (array_key_exists($keys[18], $arr)) { + $this->setAbeEmailServerReceiverUid($arr[$keys[18]]); } } @@ -1328,6 +1432,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_ACTION_FIELD, $this->abe_action_field); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD)) { + $criteria->add(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, $this->abe_action_body_field); + } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE)) { $criteria->add(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, $this->abe_case_note_in_response); } @@ -1360,6 +1468,10 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, $this->abe_email_server_uid); } + if ($this->isColumnModified(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID)) { + $criteria->add(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, $this->abe_email_server_receiver_uid); + } + return $criteria; } @@ -1430,6 +1542,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeActionField($this->abe_action_field); + $copyObj->setAbeActionBodyField($this->abe_action_body_field); + $copyObj->setAbeCaseNoteInResponse($this->abe_case_note_in_response); $copyObj->setAbeForceLogin($this->abe_force_login); @@ -1446,6 +1560,8 @@ abstract class BaseAbeConfiguration extends BaseObject implements Persistent $copyObj->setAbeEmailServerUid($this->abe_email_server_uid); + $copyObj->setAbeEmailServerReceiverUid($this->abe_email_server_receiver_uid); + $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php index 213759db2..07f5b2bf0 100644 --- a/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php +++ b/workflow/engine/classes/model/om/BaseAbeConfigurationPeer.php @@ -25,7 +25,7 @@ abstract class BaseAbeConfigurationPeer const CLASS_DEFAULT = 'classes.model.AbeConfiguration'; /** The total number of columns. */ - const NUM_COLUMNS = 17; + const NUM_COLUMNS = 19; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -58,6 +58,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_ACTION_FIELD field */ const ABE_ACTION_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_FIELD'; + /** the column name for the ABE_ACTION_BODY_FIELD field */ + const ABE_ACTION_BODY_FIELD = 'ABE_CONFIGURATION.ABE_ACTION_BODY_FIELD'; + /** the column name for the ABE_CASE_NOTE_IN_RESPONSE field */ const ABE_CASE_NOTE_IN_RESPONSE = 'ABE_CONFIGURATION.ABE_CASE_NOTE_IN_RESPONSE'; @@ -82,6 +85,9 @@ abstract class BaseAbeConfigurationPeer /** the column name for the ABE_EMAIL_SERVER_UID field */ const ABE_EMAIL_SERVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_UID'; + /** the column name for the ABE_EMAIL_SERVER_RECEIVER_UID field */ + const ABE_EMAIL_SERVER_RECEIVER_UID = 'ABE_CONFIGURATION.ABE_EMAIL_SERVER_RECEIVER_UID'; + /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -93,10 +99,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid', 'ProUid', 'TasUid', 'AbeType', 'AbeTemplate', 'AbeDynType', 'DynUid', 'AbeEmailField', 'AbeActionField', 'AbeActionBodyField', 'AbeCaseNoteInResponse', 'AbeForceLogin', 'AbeCreateDate', 'AbeUpdateDate', 'AbeSubjectField', 'AbeMailserverOrMailcurrent', 'AbeCustomGrid', 'AbeEmailServerUid', 'AbeEmailServerReceiverUid', ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID, AbeConfigurationPeer::PRO_UID, AbeConfigurationPeer::TAS_UID, AbeConfigurationPeer::ABE_TYPE, AbeConfigurationPeer::ABE_TEMPLATE, AbeConfigurationPeer::ABE_DYN_TYPE, AbeConfigurationPeer::DYN_UID, AbeConfigurationPeer::ABE_EMAIL_FIELD, AbeConfigurationPeer::ABE_ACTION_FIELD, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE, AbeConfigurationPeer::ABE_FORCE_LOGIN, AbeConfigurationPeer::ABE_CREATE_DATE, AbeConfigurationPeer::ABE_UPDATE_DATE, AbeConfigurationPeer::ABE_SUBJECT_FIELD, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT, AbeConfigurationPeer::ABE_CUSTOM_GRID, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID', 'PRO_UID', 'TAS_UID', 'ABE_TYPE', 'ABE_TEMPLATE', 'ABE_DYN_TYPE', 'DYN_UID', 'ABE_EMAIL_FIELD', 'ABE_ACTION_FIELD', 'ABE_ACTION_BODY_FIELD', 'ABE_CASE_NOTE_IN_RESPONSE', 'ABE_FORCE_LOGIN', 'ABE_CREATE_DATE', 'ABE_UPDATE_DATE', 'ABE_SUBJECT_FIELD', 'ABE_MAILSERVER_OR_MAILCURRENT', 'ABE_CUSTOM_GRID', 'ABE_EMAIL_SERVER_UID', 'ABE_EMAIL_SERVER_RECEIVER_UID', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -106,10 +112,10 @@ abstract class BaseAbeConfigurationPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeCaseNoteInResponse' => 9, 'AbeForceLogin' => 10, 'AbeCreateDate' => 11, 'AbeUpdateDate' => 12, 'AbeSubjectField' => 13, 'AbeMailserverOrMailcurrent' => 14, 'AbeCustomGrid' => 15, 'AbeEmailServerUid' => 16, ), - BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 9, AbeConfigurationPeer::ABE_FORCE_LOGIN => 10, AbeConfigurationPeer::ABE_CREATE_DATE => 11, AbeConfigurationPeer::ABE_UPDATE_DATE => 12, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 13, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 14, AbeConfigurationPeer::ABE_CUSTOM_GRID => 15, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 16, ), - BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_CASE_NOTE_IN_RESPONSE' => 9, 'ABE_FORCE_LOGIN' => 10, 'ABE_CREATE_DATE' => 11, 'ABE_UPDATE_DATE' => 12, 'ABE_SUBJECT_FIELD' => 13, 'ABE_MAILSERVER_OR_MAILCURRENT' => 14, 'ABE_CUSTOM_GRID' => 15, 'ABE_EMAIL_SERVER_UID' => 16, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('AbeUid' => 0, 'ProUid' => 1, 'TasUid' => 2, 'AbeType' => 3, 'AbeTemplate' => 4, 'AbeDynType' => 5, 'DynUid' => 6, 'AbeEmailField' => 7, 'AbeActionField' => 8, 'AbeActionBodyField' => 9, 'AbeCaseNoteInResponse' => 10, 'AbeForceLogin' => 11, 'AbeCreateDate' => 12, 'AbeUpdateDate' => 13, 'AbeSubjectField' => 14, 'AbeMailserverOrMailcurrent' => 15, 'AbeCustomGrid' => 16, 'AbeEmailServerUid' => 17, 'AbeEmailServerReceiverUid' => 18, ), + BasePeer::TYPE_COLNAME => array (AbeConfigurationPeer::ABE_UID => 0, AbeConfigurationPeer::PRO_UID => 1, AbeConfigurationPeer::TAS_UID => 2, AbeConfigurationPeer::ABE_TYPE => 3, AbeConfigurationPeer::ABE_TEMPLATE => 4, AbeConfigurationPeer::ABE_DYN_TYPE => 5, AbeConfigurationPeer::DYN_UID => 6, AbeConfigurationPeer::ABE_EMAIL_FIELD => 7, AbeConfigurationPeer::ABE_ACTION_FIELD => 8, AbeConfigurationPeer::ABE_ACTION_BODY_FIELD => 9, AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE => 10, AbeConfigurationPeer::ABE_FORCE_LOGIN => 11, AbeConfigurationPeer::ABE_CREATE_DATE => 12, AbeConfigurationPeer::ABE_UPDATE_DATE => 13, AbeConfigurationPeer::ABE_SUBJECT_FIELD => 14, AbeConfigurationPeer::ABE_MAILSERVER_OR_MAILCURRENT => 15, AbeConfigurationPeer::ABE_CUSTOM_GRID => 16, AbeConfigurationPeer::ABE_EMAIL_SERVER_UID => 17, AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID => 18, ), + BasePeer::TYPE_FIELDNAME => array ('ABE_UID' => 0, 'PRO_UID' => 1, 'TAS_UID' => 2, 'ABE_TYPE' => 3, 'ABE_TEMPLATE' => 4, 'ABE_DYN_TYPE' => 5, 'DYN_UID' => 6, 'ABE_EMAIL_FIELD' => 7, 'ABE_ACTION_FIELD' => 8, 'ABE_ACTION_BODY_FIELD' => 9, 'ABE_CASE_NOTE_IN_RESPONSE' => 10, 'ABE_FORCE_LOGIN' => 11, 'ABE_CREATE_DATE' => 12, 'ABE_UPDATE_DATE' => 13, 'ABE_SUBJECT_FIELD' => 14, 'ABE_MAILSERVER_OR_MAILCURRENT' => 15, 'ABE_CUSTOM_GRID' => 16, 'ABE_EMAIL_SERVER_UID' => 17, 'ABE_EMAIL_SERVER_RECEIVER_UID' => 18, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ) ); /** @@ -228,6 +234,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_ACTION_BODY_FIELD); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_CASE_NOTE_IN_RESPONSE); $criteria->addSelectColumn(AbeConfigurationPeer::ABE_FORCE_LOGIN); @@ -244,6 +252,8 @@ abstract class BaseAbeConfigurationPeer $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_UID); + $criteria->addSelectColumn(AbeConfigurationPeer::ABE_EMAIL_SERVER_RECEIVER_UID); + } const COUNT = 'COUNT(ABE_CONFIGURATION.ABE_UID)'; diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 2419ba032..75517b680 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -5094,6 +5094,16 @@ + + + + + + + + + + @@ -5141,6 +5151,7 @@ + @@ -5769,7 +5780,7 @@
- + diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index f78a95cd0..30f4f911f 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2865,6 +2865,7 @@ CREATE TABLE `ABE_CONFIGURATION` `DYN_UID` VARCHAR(32) default '' NOT NULL, `ABE_EMAIL_FIELD` VARCHAR(255) default '' NOT NULL, `ABE_ACTION_FIELD` VARCHAR(255) default '', + `ABE_ACTION_BODY_FIELD` VARCHAR(255) default '', `ABE_CASE_NOTE_IN_RESPONSE` INTEGER default 0, `ABE_FORCE_LOGIN` INTEGER default 0, `ABE_CREATE_DATE` DATETIME NOT NULL, @@ -2873,6 +2874,7 @@ CREATE TABLE `ABE_CONFIGURATION` `ABE_MAILSERVER_OR_MAILCURRENT` INTEGER default 0, `ABE_CUSTOM_GRID` MEDIUMTEXT, `ABE_EMAIL_SERVER_UID` VARCHAR(32) default '', + `ABE_EMAIL_SERVER_RECEIVER_UID` VARCHAR(32) default '', PRIMARY KEY (`ABE_UID`), KEY `indexAbeProcess`(`PRO_UID`), KEY `indexAbeProcessTask`(`PRO_UID`, `TAS_UID`) From ab11f33747d8daab23b45ee81dec3fd7f11c0807 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 14 Nov 2018 15:00:10 -0400 Subject: [PATCH 11/38] PMC-40: Action by Email: Email response configuration --- config/app.php | 11 +- .../classes/ActionsByEmailCoreClass.php | 1201 +++++++++++++---- workflow/engine/classes/SpoolRun.php | 20 + workflow/engine/classes/WsBase.php | 4 +- workflow/engine/classes/model/AppMessage.php | 19 + .../translations/english/processmaker.en.po | 12 + workflow/engine/data/mysql/insert.sql | 2 + .../ProcessMaker/Util/WsMessageResponse.php | 32 + 8 files changed, 1033 insertions(+), 268 deletions(-) create mode 100644 workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php diff --git a/config/app.php b/config/app.php index 18c615493..548de0a20 100644 --- a/config/app.php +++ b/config/app.php @@ -12,19 +12,20 @@ return [ 'log' => env('APP_LOG', 'single'), 'log_level' => env('APP_LOG_LEVEL', 'debug'), 'cache_lifetime' => env('APP_CACHE_LIFETIME', 60), - + 'key' => env('APP_KEY', 'base64:rU28h/tElUn/eiLY0qC24jJq1rakvAFRoRl1DWxj/kM='), + 'cipher' => 'AES-256-CBC', 'providers' => [ - FilesystemServiceProvider::class, CacheServiceProvider::class, - ViewServiceProvider::class, + FilesystemServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, - + Illuminate\Encryption\EncryptionServiceProvider::class, + ViewServiceProvider::class ], - 'aliases' => [ + 'Crypt' => Illuminate\Support\Facades\Crypt::class ], ]; diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 87eac721e..166485a06 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -1,308 +1,985 @@ defineWorkspace(); + $this->defineServicePath(); } /** - * @param $data - * @param $dataAbe + * Set the action by email request + * + * @param array $v + */ + public function setAbeRequest($v) + { + $this->abeRequest = $v; + } + + /** + * Get the action by email request + * + * @return array + */ + public function getAbeRequest() + { + return $this->abeRequest; + } + + /** + * Set the specific task property + * + * @param array $item + * + * @return void + */ + public function addItemAbeRequest(array $item) + { + $this->abeRequest = array_merge($this->abeRequest, $item); + } + + /** + * Get the specific task property + * + * @param string $key + * + * @return string + */ + public function getItemAbeRequest($key) + { + if (array_key_exists($key, $this->getAbeRequest())) { + return $this->abeRequest[$key]; + } else { + return []; + } + } + + /** + * Set the application uid + * + * @param string $v + */ + public function setAppUid($v) + { + $this->appUid = $v; + } + + /** + * Get the application uid + * + * @return string + */ + public function getAppUid() + { + return $this->appUid; + } + + /** + * Set the case number + * + * @param integer $v + */ + public function setAppNumber($v) + { + $this->appNumber = $v; + } + + /** + * Get the case number + * + * @return integer + */ + public function getAppNumber() + { + return $this->appNumber; + } + + /** + * Set the case properties + * + * @param array $v + */ + public function setCaseProperties(array $v) + { + $this->caseProperties = $v; + } + + /** + * Get the case properties + * + * @return array + */ + public function getCaseProperties() + { + return $this->caseProperties; + } + + /** + * Get the specific case property + * + * @param string $key + * + * @return array + */ + public function getCasePropertiesKey($key) + { + if (array_key_exists($key, $this->getCaseProperties())) { + return $this->caseProperties[$key]; + } else { + return []; + } + } + + /** + * Set the email from + * + * @param string $v + */ + public function setEmailFrom($v) + { + $this->emailFrom = $v; + } + + /** + * Get the email from + * + * @return string + */ + public function getEmailFrom() + { + return $this->emailFrom; + } + + /** + * Set the email to + * + * @param string $v + */ + public function setEmailTo($v) + { + $this->emailTo = $v; + + } + + /** + * Get the email to + * + * @return string + */ + public function getEmailTo() + { + return $this->emailTo; + } + + /** + * Set the index + * + * @param integer $v + */ + public function setIndex($v) + { + $this->index = $v; + } + + /** + * Get the index + * + * @return integer + */ + public function getIndex() + { + return $this->index; + } + + /** + * Set prefix + * + * @param array $v + */ + public function setPrefix(array $v) + { + $this->prefix = $v; + } + + /** + * Get prefix + * + * @return array + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * Set the previous user + * + * @param string $v + */ + public function setPreviousUser($v) + { + $this->previousUser = $v; + } + + /** + * Get the previous user + * + * @return string + */ + public function getPreviousUser() + { + return $this->previousUser; + } + + /** + * Set the reply to + * + * @param string $v + */ + public function setReplyTo($v) + { + $this->replyTo = $v; + } + + /** + * Get the reply to + * + * @return string + */ + public function getReplyTo() + { + return $this->replyTo; + } + + /** + * Set the task + * + * @param string $v + */ + public function setTask($v) + { + $this->task = $v; + } + + /** + * Get the task + * + * @return string + */ + public function getTask() + { + return $this->task; + } + + /** + * Set in the task the action by email properties + * + * @param array $v + */ + public function setTaskAbeProperties(array $v) + { + $this->taskAbeProperties = $v; + } + + /** + * Get the task the action by email properties + * + * @return array + */ + public function getTaskAbeProperties() + { + return $this->taskAbeProperties; + } + + /** + * Add a item in the action by email properties + * + * @param array $item + * + * @return void + */ + public function addItemAbeProperties(array $item) + { + $this->taskAbeProperties = array_merge($this->taskAbeProperties, $item); + } + + /** + * Get the specific task property + * + * @param string $key + * + * @return array + */ + public function getItemAbeProperties($key) + { + if (array_key_exists($key, $this->getTaskAbeProperties())) { + return $this->taskAbeProperties[$key]; + } else { + return []; + } + } + + /** + * Set the link + */ + public function defineServicePath() + { + $this->servicePath = System::getServerMainPath() . '/services/ActionsByEmail'; + } + + /** + * Get the link + * + * @return string + */ + public function getServicePath() + { + return $this->servicePath; + } + + /** + * Set the user uid + * + * @param string $v + */ + public function setUser($v) + { + $this->user = $v; + } + + /** + * Get the user uid + * + * @return string + */ + public function getUser() + { + return $this->user; + } + + /** + * Set the subject + * + * @param string $v + */ + public function setSubject($v) + { + $this->subject = $v; + } + + /** + * Get the subject + * + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * Set the workspace name + */ + public function defineWorkspace() + { + $this->workspace = config("system.workspace"); + } + + /** + * Get the workspace name + * + * @return string + */ + public function getWorkspace() + { + return $this->workspace; + } + + /** + * Get the email server definition + * + * @param string $emailServerKey + * + * @return object + */ + private function getEmailServer($emailServerKey) + { + $emailServer = new EmailServer(); + $emailSetup = (!is_null(EmailServerPeer::retrieveByPK($emailServerKey))) ? + $emailServer->getEmailServer($emailServerKey, true) : + $emailServer->getEmailServerDefault(); + + return $emailSetup; + } + + /** + * Define the properties in the task related the action by email configuration + * + * @return void + */ + private function defineTaskAbeProperties() + { + $actionEmailTable = new AbeConfiguration(); + $properties = $actionEmailTable->getTaskConfiguration($this->getCasePropertiesKey('PRO_UID'), $this->getTask()); + $this->setTaskAbeProperties($properties); + } + + /** + * Define the email from + * + * @param array $emailServerSetup + * + * @return void + */ + private function defineEmailFrom(array $emailServerSetup) + { + $from = ''; + if (!$this->getItemAbeProperties('ABE_MAILSERVER_OR_MAILCURRENT') && !empty($this->getItemAbeProperties('ABE_TYPE'))) { + if (!empty($this->getPreviousUser())) { + $user = new Users(); + $userDetails = $user->loadDetails($this->getPreviousUser()); + $from = ($userDetails["USR_FULLNAME"] . ' <' . $userDetails["USR_EMAIL"] . '>'); + } else { + global $RBAC; + $currentUser = $RBAC->aUserInfo['USER_INFO']; + $from = ($currentUser["USR_FIRSTNAME"] . ' ' . $currentUser["USR_LASTNAME"] . ' <' . $currentUser["USR_EMAIL"] . '>'); + } + } + //Define the email from + $emailFrom = G::buildFrom($emailServerSetup, $from); + $this->setEmailFrom($emailFrom); + } + + /** + * Define the email to + * + * @param string $emailField + * @param array $caseData + * + * @return void + */ + private function defineEmailTo($emailField, array $caseData) + { + $emailField = str_replace($this->getPrefix(), '', $emailField); + if ($emailField != '' && isset($caseData[$emailField])) { + $emailTo = trim($caseData[$emailField]); + } else { + $userInstance = new Users(); + $emailTo = $userInstance->getAllInformation($this->getUser())['mail']; + } + + $this->setEmailTo($emailTo); + } + + /** + * Define the reply to + * + * @param string $receiverUid + * + * @return void + */ + private function defineReplyTo($receiverUid) + { + $emailServer = $this->getEmailServer($receiverUid); + $replyTo = $emailServer["MESS_ACCOUNT"]; + + $this->setReplyTo($replyTo); + } + + /** + * Define the subject + * + * @param string $subjectField + * @param array $caseData + * + * @return void + */ + private function defineSubject($subjectField, array $caseData) + { + $subject = G::replaceDataField($subjectField, $caseData); + if (empty($subject)) { + $subject = $this->getCasePropertiesKey('APP_TITLE'); + } + + $this->setSubject($subject); + } + + /** + * Validate and set the fields that we need for the action by email + * + * @param object $data + */ + private function validateAndSetValues($data) + { + try { + if (!is_object($data)) { + throw new Exception('The parameter $data is null.'); + } + // Validate the tas_uid + if (empty($data->TAS_UID)) { + throw new Exception('The parameter $data->TAS_UID is null or empty.'); + } else { + $this->setTask($data->TAS_UID); + } + // Validate the app_uid + if (empty($data->APP_UID)) { + throw new Exception('The parameter $data->APP_UID is null or empty.'); + } else { + $this->setAppUid($data->APP_UID); + } + // Validate the del_index + if (empty($data->DEL_INDEX)) { + throw new Exception('The parameter $data->DEL_INDEX is null or empty.'); + } elseif ($data->DEL_INDEX === 1) { + // Processmaker log + $context = Bootstrap::getDefaultContextLog(); + $context['delIndex'] = $data->DEL_INDEX; + Bootstrap::registerMonolog('ActionByEmail', 250, 'Actions by email does not work in the initial task', $context); + + return; + } else { + $this->setIndex($data->DEL_INDEX); + } + // Validate the usr_uid + if (empty($data->USR_UID)) { + throw new Exception('The parameter $data->USR_UID is null or empty.'); + } else { + $this->setUser($data->USR_UID); + } + // Define the previous user + if (!empty($data->PREVIOUS_USR_UID)) { + $this->setPreviousUser($data->PREVIOUS_USR_UID); + } + } catch (Exception $e) { + $token = strtotime("now"); + PMException::registerErrorLog($e, $token); + G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", [$token])); + die; + } + } + + /** + * Send the action by email + * + * @param object $data + * @param array $dataAbe + * + * @return void * @throws Exception */ - public function sendActionsByEmail($data, $dataAbe) + public function sendActionsByEmail($data, array $dataAbe) { try { // Validations - try { - if (!is_object($data)) { - throw new Exception('The parameter $data is null.'); - } - if (!isset($data->TAS_UID)) { - throw new Exception('The parameter $data->TAS_UID is null.'); - } + self::validateAndSetValues($data); - if (!isset($data->APP_UID)) { - throw new Exception('The parameter $data->APP_UID is null.'); - } - - if (!isset($data->DEL_INDEX)) { - throw new Exception('The parameter $data->DEL_INDEX is null.'); - } - - if (!isset($data->USR_UID)) { - throw new Exception('The parameter $data->USR_UID is null.'); - } - - if ($data->TAS_UID === '') { - throw new Exception('The parameter $data->TAS_UID is empty.'); - } - - if ($data->APP_UID === '') { - throw new Exception('The parameter $data->APP_UID is empty.'); - } - - if ($data->DEL_INDEX === '') { - throw new Exception('The parameter $data->DEL_INDEX is empty.'); - } - - if ($data->DEL_INDEX === 1) { - error_log('The parameter $data->DEL_INDEX is 1, you can not use ActionsByEmail in the initial task', 0); - return; - } - - if ($data->USR_UID === '') { - error_log('The parameter $data->USR_UID is empty, the routed task may be a self-service type, actions by email does not work with self-service task types.', 0); - } - } catch(Exception $e) { - $token = strtotime("now"); - PMException::registerErrorLog($e, $token); - G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) ); - die; - } - - $emailServer = new \ProcessMaker\BusinessModel\EmailServer(); - - $emailSetup = (!is_null(\EmailServerPeer::retrieveByPK($dataAbe['ABE_EMAIL_SERVER_UID']))) ? - $emailServer->getEmailServer($dataAbe['ABE_EMAIL_SERVER_UID'], true) : - $emailServer->getEmailServerDefault(); - - if (!empty($emailSetup)) { + $emailServerSetup = $this->getEmailServer($dataAbe['ABE_EMAIL_SERVER_UID']); + if (!empty($emailServerSetup)) { $cases = new Cases(); - $caseFields = $cases->loadCase($data->APP_UID, $data->DEL_INDEX); - $actionEmailTable = new AbeConfiguration(); - $configuration = $actionEmailTable->getTaskConfiguration($caseFields['PRO_UID'], $data->TAS_UID); - $caseFields['APP_DATA']['PRO_ID'] = $configuration['PRO_ID']; - $caseFields['APP_DATA']['TAS_ID'] = $configuration['TAS_ID']; + $caseFields = $cases->loadCase($this->getAppUid(), $this->getIndex()); + $this->setCaseProperties($caseFields); + $this->defineTaskAbeProperties(); + $caseFields['APP_DATA']['PRO_ID'] = $this->getItemAbeProperties('PRO_ID'); + $caseFields['APP_DATA']['TAS_ID'] = $this->getItemAbeProperties('TAS_ID'); + if (!empty($this->getTaskAbeProperties())) { + $this->defineEmailTo($this->getItemAbeProperties('ABE_EMAIL_FIELD'), $caseFields['APP_DATA']); - if (!empty($configuration)) { - $configuration['ABE_EMAIL_FIELD'] = str_replace('@@', '', $configuration['ABE_EMAIL_FIELD']); - if ($configuration['ABE_EMAIL_FIELD'] != '' && isset($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']])) { - $email = trim($caseFields['APP_DATA'][$configuration['ABE_EMAIL_FIELD']]); - } else { - $userInstance = new Users(); - $userInfo = $userInstance->getAllInformation($data->USR_UID); - $email = $userInfo['mail']; - } + if (!empty($this->getEmailTo())) { + $this->defineSubject($this->getItemAbeProperties('ABE_SUBJECT_FIELD'), $caseFields['APP_DATA']); - if ($email != '') { - $subject = G::replaceDataField( $configuration['ABE_SUBJECT_FIELD'], $caseFields['APP_DATA'] ); - if($subject == ''){ - $subject = $caseFields['APP_TITLE']; - } + $request = [ + 'ABE_REQ_UID' => '', + 'ABE_UID' => $this->getItemAbeProperties('ABE_UID'), + 'APP_UID' => $this->getAppUid(), + 'DEL_INDEX' => $this->getIndex(), + 'ABE_REQ_SENT_TO' => $this->getEmailTo(), + 'ABE_REQ_SUBJECT' => $this->getSubject(), + 'ABE_REQ_BODY' => '', + 'ABE_REQ_ANSWERED' => 0, + 'ABE_REQ_STATUS' => 'PENDING' + ]; + $this->setAbeRequest($request); + $this->registerRequest(); - $abeRequest = array(); - $abeRequest['ABE_REQ_UID'] = ''; - $abeRequest['ABE_UID'] = $configuration['ABE_UID']; - $abeRequest['APP_UID'] = $data->APP_UID; - $abeRequest['DEL_INDEX'] = $data->DEL_INDEX; - $abeRequest['ABE_REQ_SENT_TO'] = $email; - $abeRequest['ABE_REQ_SUBJECT'] = $subject; - $abeRequest['ABE_REQ_BODY'] = ''; - $abeRequest['ABE_REQ_ANSWERED'] = 0; - $abeRequest['ABE_REQ_STATUS'] = 'PENDING'; - - try { - $abeRequestsInstance = new AbeRequests(); - $abeRequest['ABE_REQ_UID'] = $abeRequestsInstance->createOrUpdate($abeRequest); - } catch (Exception $error) { - throw $error; - } - - if ($configuration['ABE_TYPE'] != '') { + if (!empty($this->getItemAbeProperties('ABE_TYPE'))) { // Email - $_SESSION['CURRENT_DYN_UID'] = $configuration['DYN_UID']; - + $_SESSION['CURRENT_DYN_UID'] = $this->getItemAbeProperties('DYN_UID'); $__ABE__ = ''; - - $link = System::getServerMainPath() . '/services/ActionsByEmail'; - switch ($configuration['ABE_TYPE']) { + switch ($this->getItemAbeProperties('ABE_TYPE')) { case 'CUSTOM': - $customGrid = unserialize($configuration['ABE_CUSTOM_GRID']); - $variableService = new \ProcessMaker\Services\Api\Project\Variable(); - $variables = $variableService->doGetVariables($caseFields['PRO_UID']); - $field = new stdClass(); - $field->label = ''; - $actionField = str_replace(array('@@', '@#', '@=', '@%', '@?', '@$'), '', $configuration['ABE_ACTION_FIELD']); - - $obj = new PmDynaform($configuration['DYN_UID']); - $configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID']; - $file = $obj->printPmDynaformAbe($configuration); - $__ABE__ .= $file; - $__ABE__ .= '
' . $field->label . '
'; - $index = 1; - $__ABE__ .= '
'; - foreach ($customGrid as $key => $value) { - $__ABE__ .= '' . (($index % 5 == 0) ? '' : ' '); - $index++; - } - $__ABE__ .= '
' . $value['abe_custom_label']; - $__ABE__ .= '
'; + $__ABE__ .= $this->getCustomTemplate(); + break; + case 'RESPONSE': + $this->defineReplyTo($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']); + $__ABE__ .= $this->getResponseTemplate(); break; case 'LINK': - $__ABE__ .= 'Please complete this form'; + $__ABE__ .= $this->getServicePathTemplate(); break; - // coment case 'FIELD': - $variableService = new \ProcessMaker\Services\Api\Project\Variable(); - $variables = $variableService->doGetVariables($caseFields['PRO_UID']); - $field = new stdClass(); - $field->label = 'Test'; - $field->type = 'dropdown'; - $field->options = array(); - $field->value = ''; - $actionField = str_replace(array('@@','@#','@=','@%','@?','@$'), '', $configuration['ABE_ACTION_FIELD']); - $dynaform = $configuration['DYN_UID']; - $variables = G::json_decode($configuration['DYN_CONTENT'], true); - if(isset($variables['items'][0]['items'])){ - $fields = $variables['items'][0]['items']; - foreach ($fields as $key => $value) { - foreach($value as $var){ - if(isset($var['variable'])){ - if ($var['variable'] == $actionField) { - $field->label = $var['label']; - $field->type = $var['type']; - $values = $var['options']; - foreach ($values as $val){ - $field->options[$val['value']] = $val['value']; - } - } - } - } - } - } - - $obj = new PmDynaform($configuration['DYN_UID']); - $configuration['CURRENT_DYNAFORM'] = $configuration['DYN_UID']; - $file = $obj->printPmDynaformAbe($configuration); - $__ABE__ .= $file; - $__ABE__ .= '' . $field->label . '
'; - switch ($field->type) { - case 'dropdown': - case 'radio': - case 'radiogroup': - $index = 1; - $__ABE__.='
'; - break; - case 'yesno': - $__ABE__ .= ''; - $__ABE__ .= ''; - break; - case 'checkbox': - $__ABE__ .= ''; - $__ABE__ .= ''; - break; - } - $__ABE__ .= '
'; - foreach ($field->options as $optValue => $optName) { - $__ABE__ .= '' . (($index % 5 == 0) ? '' : ' '); - $index++; - } - - $__ABE__.='
' . $optName; - $__ABE__ .= '
' . G::LoadTranslation('ID_YES_VALUE') . '' . G::LoadTranslation('ID_NO_VALUE') . 'CheckUncheck
'; + $__ABE__ .= $this->getFieldTemplate(); break; } - - $__ABE__ = preg_replace('/\/', '' , $__ABE__); - $__ABE__ = preg_replace('/\]*\/>/', '' , $__ABE__); + $__ABE__ = preg_replace('/\/', '', $__ABE__); + $__ABE__ = preg_replace('/\]*\/>/', '', $__ABE__); $__ABE__ = preg_replace('/]*>(.*?)<\/select>/is', "", $__ABE__); - $__ABE__ = preg_replace('/align=\"center\"/', '' , $__ABE__); - $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', $__ABE__); + $__ABE__ = preg_replace('/align=\"center\"/', '', $__ABE__); + $__ABE__ = preg_replace('/class="tableGrid_view" /', 'class="tableGrid_view" width="100%" ', + $__ABE__); $caseFields['APP_DATA']['__ABE__'] = $__ABE__; - $user = new Users(); - - if (!$configuration['ABE_MAILSERVER_OR_MAILCURRENT'] && $configuration['ABE_TYPE'] !== '') { - if ($data->PREVIOUS_USR_UID !== '') { - $userDetails = $user->loadDetails($data->PREVIOUS_USR_UID); - $emailFrom = ($userDetails["USR_FULLNAME"] . ' <' . $userDetails["USR_EMAIL"] . '>'); - } else { - global $RBAC; - $currentUser = $RBAC->aUserInfo['USER_INFO']; - $emailFrom = ($currentUser["USR_FIRSTNAME"] . ' ' . $currentUser["USR_LASTNAME"] . ' <' . $currentUser["USR_EMAIL"] . '>'); - } - } else { - if (isset($emailSetup["MESS_FROM_NAME"]) && isset($emailSetup["MESS_FROM_MAIL"])) { - $emailFrom = ($emailSetup["MESS_FROM_NAME"] . ' <' . $emailSetup["MESS_FROM_MAIL"] . '>'); - } else { - $emailFrom = ((isset($emailSetup["MESS_FROM_NAME"])) ? $emailSetup["MESS_FROM_NAME"] : $emailSetup["MESS_FROM_MAIL"]); - } - } - - $wsBaseInstance = new WsBase(); - $result = $wsBaseInstance->sendMessage( - $data->APP_UID, - $emailFrom, - $email, - '', - '', - $subject, - $configuration['ABE_TEMPLATE'], + $this->defineEmailFrom($emailServerSetup); + $result = $this->abeSendMessage( + $this->getItemAbeProperties('ABE_TEMPLATE'), $caseFields['APP_DATA'], - null, - true, - $data->DEL_INDEX, - $emailSetup, - 0 + $emailServerSetup ); - $abeRequest['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR'); + $request = []; + $request['ABE_REQ_STATUS'] = ($result->status_code == 0 ? 'SENT' : 'ERROR'); - $body = ''; - $messageSent = executeQuery('SELECT `APP_MSG_BODY` FROM `APP_MESSAGE` ORDER BY `APP_MSG_SEND_DATE` DESC LIMIT 1'); - - if (!empty($messageSent) && is_array($messageSent)) { - $body = $messageSent[1]['APP_MSG_BODY']; - } - - $abeRequest['ABE_REQ_BODY'] = $body; - - // Update - try { - $abeRequestsInstance = new AbeRequests(); - $abeRequestsInstance->createOrUpdate($abeRequest); - } catch (Exception $error) { - throw $error; - } + $request['ABE_REQ_BODY'] = empty($result->getAppMessUid()) ? '' : AppMessage::getAppMsgBodyByKey($result->getAppMessUid()); + $this->addItemAbeRequest($request); + $this->registerRequest(); } } + } else { + throw new Exception('Task does not have an action by email configuration.'); } } } catch (Exception $error) { throw $error; } } + + /** + * Get the html template for email response + * + * @return string + */ + private function getResponseTemplate() + { + $noReply = $this->getReplyTo(); + $customGrid = unserialize($this->getItemAbeProperties('ABE_CUSTOM_GRID')); + $field = new stdClass(); + $field->label = ''; + $html = '
' . $field->label . ''; + $html .= '
'; + $index = 1; + foreach ($customGrid as $key => $value) { + // Get the subject + $emailSubject = $this->getSubjectByResponse($value['abe_custom_label']); + $emailBody = $this->getBodyByResponse($value['abe_custom_value']); + // Define the html for the actions + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + $html .= '
'; + $html .= $value['abe_custom_label']; + $html .= '
'; + + return $html; + } + + /** + * Get the subject for response the action by email + * + * @param string $fieldLabel + * + * @return string + */ + private function getSubjectByResponse($fieldLabel) + { + $subject = G::LoadTranslation('ID_CASE') . ' ' . $this->getCasePropertiesKey('APP_TITLE'); + $subject .= $this->delimiter . ' ' . $fieldLabel; + + return urlencode($subject); + } + + /** + * Get the body for response the action by email + * + * @param string $fieldValue + * + * @return string + */ + private function getBodyByResponse($fieldValue) + { + $bodyToCrypt = [ + 'workspace' => $this->getWorkspace(), + 'appUid' => $this->getAppUid(), + 'delIndex' => $this->getIndex(), + 'fieldValue' => $fieldValue, + ]; + $bodyToCrypt = G::json_encode($bodyToCrypt); + + $body = str_repeat(self::BODY_REPLY_LF, 4); + $body .= '/' . str_repeat("=", 24) . self::BODY_REPLY_LF; + $body .= G::LoadTranslation('ID_ABE_EMAIL_RESPONSE_BODY_NOTE') . self::BODY_REPLY_LF; + $body .= '{' . Crypt::encryptString($bodyToCrypt) . '}' . self::BODY_REPLY_LF; + $body .= str_repeat("=", 24) . '/'; + return $body; + } + + /** + * Get the html template for custom actions + * @todo we need to revise this function + * + * @return string + */ + private function getCustomTemplate() + { + $abeRequest = $this->getAbeRequest(); + $customGrid = unserialize($this->getItemAbeProperties('ABE_CUSTOM_GRID')); + $variableService = new Variable(); + $variables = $variableService->doGetVariables($this->getCasePropertiesKey('PRO_UID')); + $field = new stdClass(); + $field->label = ''; + $actionField = str_replace( + $this->getPrefix(), + '', + $this->getItemAbeProperties('ABE_ACTION_FIELD') + ); + + $itemDynUid = $this->getItemAbeProperties('DYN_UID'); + $obj = new PmDynaform($itemDynUid); + $this->addItemAbeProperties(['CURRENT_DYNAFORM' => $itemDynUid]); + $file = $obj->printPmDynaformAbe($this->getTaskAbeProperties()); + $html = $file; + $html .= '
' . $field->label . ''; + $index = 1; + $html .= '
'; + foreach ($customGrid as $key => $value) { + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + $html .= '
getServicePath())) . '?ACTION=' . G::encrypt('processABE', + URL_KEY, true) . '&APP_UID='; + $html .= G::encrypt($this->getAppUid(), URL_KEY, + true) . '&DEL_INDEX=' . G::encrypt($this->getindex(), URL_KEY); + $html .= '&FIELD=' . G::encrypt($actionField, URL_KEY, + true) . '&VALUE=' . G::encrypt($value['abe_custom_value'], URL_KEY, + true); + $html .= '&ABER=' . G::encrypt($abeRequest['ABE_REQ_UID'], URL_KEY, + true) . '" target="_blank" >' . $value['abe_custom_label']; + $html .= '
'; + + return $html; + } + + /** + * Get the html template for link to fill a form + * @todo we need to revise this function + * + * @return string + */ + private function getServicePathTemplate() + { + $abeRequest = $this->getAbeRequest(); + $html = 'Please complete this form'; + + return $html; + } + + /** + * Get the html template for use a field to generate actions links + * @todo we need to revise this function + * + * @return string + */ + private function getFieldTemplate() + { + $abeRequest = $this->getAbeRequest(); + $variableService = new Variable(); + $variables = $variableService->doGetVariables($this->getCasePropertiesKey('PRO_UID')); + $field = new stdClass(); + $field->label = 'Test'; + $field->type = 'dropdown'; + $field->options = []; + $field->value = ''; + $actionField = str_replace( + $this->getPrefix(), + '', + $this->getItemAbeProperties('ABE_ACTION_FIELD') + ); + $dynUid = $this->getItemAbeProperties('DYN_UID'); + $variables = G::json_decode($this->getItemAbeProperties('DYN_CONTENT'), true); + if (isset($variables['items'][0]['items'])) { + $fields = $variables['items'][0]['items']; + foreach ($fields as $key => $value) { + foreach ($value as $var) { + if (isset($var['variable'])) { + if ($var['variable'] == $actionField) { + $field->label = $var['label']; + $field->type = $var['type']; + $values = $var['options']; + foreach ($values as $val) { + $field->options[$val['value']] = $val['value']; + } + } + } + } + } + } + + $obj = new PmDynaform($dynUid); + $this->addItemAbeProperties(['CURRENT_DYNAFORM' => $dynUid]); + $file = $obj->printPmDynaformAbe($this->getTaskAbeProperties()); + $html = $file; + $html .= '' . $field->label . '
'; + switch ($field->type) { + case 'dropdown': + case 'radio': + case 'radiogroup': + $index = 1; + $html .= '
'; + break; + case 'yesno': + $html .= ''; + $html .= ''; + break; + case 'checkbox': + $html .= ''; + $html .= ''; + break; + } + $html .= '
'; + foreach ($field->options as $optValue => $optName) { + $html .= '' . (($index % 5 == 0) ? '' : ' '); + $index++; + } + + $html .= '
' . $optName; + $html .= '
' . G::LoadTranslation('ID_YES_VALUE') . '' . G::LoadTranslation('ID_NO_VALUE') . 'CheckUncheck
'; + + return $html; + } + + /** + * Register the request in the table ABE_REQUEST + * + * @return void + * @throws Exception + */ + private function registerRequest() + { + try { + $requestInstance = new AbeRequests(); + $abeRequest['ABE_REQ_UID'] = $requestInstance->createOrUpdate($this->getAbeRequest()); + $this->setAbeRequest($abeRequest); + } catch (Exception $error) { + throw $error; + } + } + + /** + * Send the message + * + * @param string $template + * @param array $caseData + * @param array $configEmail + * + * @return object + * @throws Exception + */ + private function abeSendMessage($template, array $caseData, array $configEmail) + { + try { + $wsBaseInstance = new WsBase(); + $result = $wsBaseInstance->sendMessage( + $this->getAppUid(), + $this->getEmailFrom(), + $this->getEmailTo(), + '', + '', + $this->getSubject(), + $template, + $caseData, + null, + true, + $this->getIndex(), + $configEmail, + 0 + ); + + return $result; + } catch (Exception $error) { + throw $error; + } + } } diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index 255aeda04..56bccc4ec 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -50,6 +50,26 @@ class SpoolRun $this->mailEreg = "/^([\w\-_\+\.']+@[\w\-_\.]+\.\w{2,5}+)$/"; } + /** + * Set the $spool_id + * + * @param string + */ + public function setSpoolId($v) + { + $this->spool_id = $v; + } + + /** + * Get the $spool_id + * + * @return string + */ + public function getSpoolId() + { + return $this->spool_id; + } + /** * get all files into spool in a list * diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index ae157522c..f6a311c8b 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -5,6 +5,7 @@ use ProcessMaker\BusinessModel\EmailServer; use ProcessMaker\ChangeLog\ChangeLog; /*----------------------------------********---------------------------------*/ use ProcessMaker\Core\System; +use ProcessMaker\Util\WsMessageResponse; class WsBase { @@ -947,7 +948,8 @@ class WsBase $spool->sendMail(); if ($spool->status == 'sent') { - $result = new WsResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + $result = new WsMessageResponse(0, G::loadTranslation('ID_MESSAGE_SENT') . ": " . $to); + $result->setAppMessUid($spool->getSpoolId()); } else { $result = new WsResponse(29, $spool->status . ' ' . $spool->error . print_r($setup, 1)); } diff --git a/workflow/engine/classes/model/AppMessage.php b/workflow/engine/classes/model/AppMessage.php index 90f1fc9a4..663ade86c 100644 --- a/workflow/engine/classes/model/AppMessage.php +++ b/workflow/engine/classes/model/AppMessage.php @@ -300,5 +300,24 @@ class AppMessage extends BaseAppMessage return $messages; } + + /** + * Get the APP_MSG_BODY related to the key + * + * @param string $key + * + * @return string + * @throws Exception + */ + public static function getAppMsgBodyByKey($key) + { + try { + $appMessage = AppMessagePeer::retrieveByPk($key); + + return $appMessage->getAppMsgBody(); + } catch (Exception $error) { + throw $error; + } + } } diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 57caa88d5..7027ef788 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -1699,6 +1699,12 @@ msgstr "3 days at least" msgid "The answer has been submitted. Thank you." msgstr "The answer has been submitted. Thank you." +# TRANSLATION +# LABEL/ID_ABE_EMAIL_RESPONSE_BODY_NOTE +#: LABEL/ID_ABE_EMAIL_RESPONSE_BODY_NOTE +msgid "Please add your comments above this section. Don't modify or delete this section." +msgstr "Please add your comments above this section. Don't modify or delete this section." + # TRANSLATION # LABEL/ID_ABE_FORM_ALREADY_FILLED #: LABEL/ID_ABE_FORM_ALREADY_FILLED @@ -4235,6 +4241,12 @@ msgstr "Close Editor" msgid "[LABEL/ID_CODE] Code" msgstr "Code" +# TRANSLATION +# LABEL/ID_CODE_CRYPT +#: LABEL/ID_CODE_CRYPT +msgid "Code:" +msgstr "Code:" + # TRANSLATION # LABEL/ID_COLLAPSE_ALL #: LABEL/ID_COLLAPSE_ALL diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index a7cd4f3e4..8277694f0 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57081,6 +57081,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','HTML_FILES','en','You can open only files with the .html extension','2014-01-15') , ( 'LABEL','ID_3DAYSMINIMUM','en','3 days at least','2014-01-15') , ( 'LABEL','ID_ABE_ANSWER_SUBMITTED','en','The answer has been submitted. Thank you.','2017-06-19') , +( 'LABEL','ID_ABE_EMAIL_RESPONSE_BODY_NOTE','en','Please add your comments above this section. Don''t modify or delete this section.','2018-11-16') , ( 'LABEL','ID_ABE_FORM_ALREADY_FILLED','en','The form has already been filled and sent.','2017-06-09') , ( 'LABEL','ID_ABE_INFORMATION_SUBMITTED','en','The information was submitted. Thank you.','2017-06-19') , ( 'LABEL','ID_ABE_RESPONSE_SENT','en','The response has already been sent.','2017-06-19') , @@ -57513,6 +57514,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_CLOSE','en','Close','2014-01-15') , ( 'LABEL','ID_CLOSE_EDITOR','en','Close Editor','2014-01-15') , ( 'LABEL','ID_CODE','en','Code','2014-01-15') , +( 'LABEL','ID_CODE_CRYPT','en','Code:','2018-11-16') , ( 'LABEL','ID_COLLAPSE_ALL','en','Collapse All','2014-01-15') , ( 'LABEL','ID_COLOSA_AND_CERTIFIED_PARTNERS','en','Supplied free of charge with no support, certification, warranty, maintenance nor indemnity by Colosa and its Certified Partners.','2014-10-21') , ( 'LABEL','ID_COLUMNS','en','columns','2014-01-15') , diff --git a/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php b/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php new file mode 100644 index 000000000..ec6a1f92c --- /dev/null +++ b/workflow/engine/src/ProcessMaker/Util/WsMessageResponse.php @@ -0,0 +1,32 @@ +appMessUid; + } + + /** + * Set the appMessUid + * + * @param string $v + * @return void + */ + public function setAppMessUid($v) + { + $this->appMessUid = $v; + } +} + From a741071d9e098e7926bc98b1617d467717fc93e2 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Fri, 23 Nov 2018 14:41:04 -0400 Subject: [PATCH 12/38] PMC-57: Action BY Email: Add new option in Email Server configuration page Code Improvements Code Improvements 1 Code Improvements 2 Fixing port labels Fixing port labels 1 Code improvements 3 Code improvements 4 Code improvements 5 Code improvements 6 Code improvements 7 --- .../model/map/EmailServerMapBuilder.php | 4 + .../classes/model/om/BaseEmailServer.php | 204 +++++++++++--- .../classes/model/om/BaseEmailServerPeer.php | 28 +- workflow/engine/config/schema.xml | 2 + .../translations/english/processmaker.en.po | 24 ++ workflow/engine/data/mysql/insert.sql | 4 + workflow/engine/data/mysql/schema.sql | 2 + .../methods/emailServer/emailServerAjax.php | 28 +- .../BusinessModel/EmailServer.php | 23 +- .../templates/emailServer/emailServer.js | 263 ++++++++++-------- 10 files changed, 407 insertions(+), 175 deletions(-) diff --git a/workflow/engine/classes/model/map/EmailServerMapBuilder.php b/workflow/engine/classes/model/map/EmailServerMapBuilder.php index ab8fd959a..b9e5729a0 100644 --- a/workflow/engine/classes/model/map/EmailServerMapBuilder.php +++ b/workflow/engine/classes/model/map/EmailServerMapBuilder.php @@ -73,6 +73,10 @@ class EmailServerMapBuilder $tMap->addColumn('MESS_PORT', 'MessPort', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('MESS_INCOMING_SERVER', 'MessIncomingServer', 'string', CreoleTypes::VARCHAR, true, 256); + + $tMap->addColumn('MESS_INCOMING_PORT', 'MessIncomingPort', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('MESS_RAUTH', 'MessRauth', 'int', CreoleTypes::INTEGER, true, null); $tMap->addColumn('MESS_ACCOUNT', 'MessAccount', 'string', CreoleTypes::VARCHAR, true, 256); diff --git a/workflow/engine/classes/model/om/BaseEmailServer.php b/workflow/engine/classes/model/om/BaseEmailServer.php index 111488080..82716bab4 100644 --- a/workflow/engine/classes/model/om/BaseEmailServer.php +++ b/workflow/engine/classes/model/om/BaseEmailServer.php @@ -51,6 +51,18 @@ abstract class BaseEmailServer extends BaseObject implements Persistent */ protected $mess_port = 0; + /** + * The value for the mess_incoming_server field. + * @var string + */ + protected $mess_incoming_server = ''; + + /** + * The value for the mess_incoming_port field. + * @var int + */ + protected $mess_incoming_port = 0; + /** * The value for the mess_rauth field. * @var int @@ -163,6 +175,28 @@ abstract class BaseEmailServer extends BaseObject implements Persistent return $this->mess_port; } + /** + * Get the [mess_incoming_server] column value. + * + * @return string + */ + public function getMessIncomingServer() + { + + return $this->mess_incoming_server; + } + + /** + * Get the [mess_incoming_port] column value. + * + * @return int + */ + public function getMessIncomingPort() + { + + return $this->mess_incoming_port; + } + /** * Get the [mess_rauth] column value. * @@ -350,6 +384,50 @@ abstract class BaseEmailServer extends BaseObject implements Persistent } // setMessPort() + /** + * Set the value of [mess_incoming_server] column. + * + * @param string $v new value + * @return void + */ + public function setMessIncomingServer($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->mess_incoming_server !== $v || $v === '') { + $this->mess_incoming_server = $v; + $this->modifiedColumns[] = EmailServerPeer::MESS_INCOMING_SERVER; + } + + } // setMessIncomingServer() + + /** + * Set the value of [mess_incoming_port] column. + * + * @param int $v new value + * @return void + */ + public function setMessIncomingPort($v) + { + + // Since the native PHP type for this column is integer, + // we will cast the input value to an int (if it is not). + if ($v !== null && !is_int($v) && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->mess_incoming_port !== $v || $v === 0) { + $this->mess_incoming_port = $v; + $this->modifiedColumns[] = EmailServerPeer::MESS_INCOMING_PORT; + } + + } // setMessIncomingPort() + /** * Set the value of [mess_rauth] column. * @@ -573,30 +651,34 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $this->mess_port = $rs->getInt($startcol + 3); - $this->mess_rauth = $rs->getInt($startcol + 4); + $this->mess_incoming_server = $rs->getString($startcol + 4); - $this->mess_account = $rs->getString($startcol + 5); + $this->mess_incoming_port = $rs->getInt($startcol + 5); - $this->mess_password = $rs->getString($startcol + 6); + $this->mess_rauth = $rs->getInt($startcol + 6); - $this->mess_from_mail = $rs->getString($startcol + 7); + $this->mess_account = $rs->getString($startcol + 7); - $this->mess_from_name = $rs->getString($startcol + 8); + $this->mess_password = $rs->getString($startcol + 8); - $this->smtpsecure = $rs->getString($startcol + 9); + $this->mess_from_mail = $rs->getString($startcol + 9); - $this->mess_try_send_inmediatly = $rs->getInt($startcol + 10); + $this->mess_from_name = $rs->getString($startcol + 10); - $this->mail_to = $rs->getString($startcol + 11); + $this->smtpsecure = $rs->getString($startcol + 11); - $this->mess_default = $rs->getInt($startcol + 12); + $this->mess_try_send_inmediatly = $rs->getInt($startcol + 12); + + $this->mail_to = $rs->getString($startcol + 13); + + $this->mess_default = $rs->getInt($startcol + 14); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 13; // 13 = EmailServerPeer::NUM_COLUMNS - EmailServerPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 15; // 15 = EmailServerPeer::NUM_COLUMNS - EmailServerPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating EmailServer object", $e); @@ -813,30 +895,36 @@ abstract class BaseEmailServer extends BaseObject implements Persistent return $this->getMessPort(); break; case 4: - return $this->getMessRauth(); + return $this->getMessIncomingServer(); break; case 5: - return $this->getMessAccount(); + return $this->getMessIncomingPort(); break; case 6: - return $this->getMessPassword(); + return $this->getMessRauth(); break; case 7: - return $this->getMessFromMail(); + return $this->getMessAccount(); break; case 8: - return $this->getMessFromName(); + return $this->getMessPassword(); break; case 9: - return $this->getSmtpsecure(); + return $this->getMessFromMail(); break; case 10: - return $this->getMessTrySendInmediatly(); + return $this->getMessFromName(); break; case 11: - return $this->getMailTo(); + return $this->getSmtpsecure(); break; case 12: + return $this->getMessTrySendInmediatly(); + break; + case 13: + return $this->getMailTo(); + break; + case 14: return $this->getMessDefault(); break; default: @@ -863,15 +951,17 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $keys[1] => $this->getMessEngine(), $keys[2] => $this->getMessServer(), $keys[3] => $this->getMessPort(), - $keys[4] => $this->getMessRauth(), - $keys[5] => $this->getMessAccount(), - $keys[6] => $this->getMessPassword(), - $keys[7] => $this->getMessFromMail(), - $keys[8] => $this->getMessFromName(), - $keys[9] => $this->getSmtpsecure(), - $keys[10] => $this->getMessTrySendInmediatly(), - $keys[11] => $this->getMailTo(), - $keys[12] => $this->getMessDefault(), + $keys[4] => $this->getMessIncomingServer(), + $keys[5] => $this->getMessIncomingPort(), + $keys[6] => $this->getMessRauth(), + $keys[7] => $this->getMessAccount(), + $keys[8] => $this->getMessPassword(), + $keys[9] => $this->getMessFromMail(), + $keys[10] => $this->getMessFromName(), + $keys[11] => $this->getSmtpsecure(), + $keys[12] => $this->getMessTrySendInmediatly(), + $keys[13] => $this->getMailTo(), + $keys[14] => $this->getMessDefault(), ); return $result; } @@ -916,30 +1006,36 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $this->setMessPort($value); break; case 4: - $this->setMessRauth($value); + $this->setMessIncomingServer($value); break; case 5: - $this->setMessAccount($value); + $this->setMessIncomingPort($value); break; case 6: - $this->setMessPassword($value); + $this->setMessRauth($value); break; case 7: - $this->setMessFromMail($value); + $this->setMessAccount($value); break; case 8: - $this->setMessFromName($value); + $this->setMessPassword($value); break; case 9: - $this->setSmtpsecure($value); + $this->setMessFromMail($value); break; case 10: - $this->setMessTrySendInmediatly($value); + $this->setMessFromName($value); break; case 11: - $this->setMailTo($value); + $this->setSmtpsecure($value); break; case 12: + $this->setMessTrySendInmediatly($value); + break; + case 13: + $this->setMailTo($value); + break; + case 14: $this->setMessDefault($value); break; } // switch() @@ -982,39 +1078,47 @@ abstract class BaseEmailServer extends BaseObject implements Persistent } if (array_key_exists($keys[4], $arr)) { - $this->setMessRauth($arr[$keys[4]]); + $this->setMessIncomingServer($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { - $this->setMessAccount($arr[$keys[5]]); + $this->setMessIncomingPort($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { - $this->setMessPassword($arr[$keys[6]]); + $this->setMessRauth($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { - $this->setMessFromMail($arr[$keys[7]]); + $this->setMessAccount($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { - $this->setMessFromName($arr[$keys[8]]); + $this->setMessPassword($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { - $this->setSmtpsecure($arr[$keys[9]]); + $this->setMessFromMail($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setMessTrySendInmediatly($arr[$keys[10]]); + $this->setMessFromName($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setMailTo($arr[$keys[11]]); + $this->setSmtpsecure($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setMessDefault($arr[$keys[12]]); + $this->setMessTrySendInmediatly($arr[$keys[12]]); + } + + if (array_key_exists($keys[13], $arr)) { + $this->setMailTo($arr[$keys[13]]); + } + + if (array_key_exists($keys[14], $arr)) { + $this->setMessDefault($arr[$keys[14]]); } } @@ -1044,6 +1148,14 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $criteria->add(EmailServerPeer::MESS_PORT, $this->mess_port); } + if ($this->isColumnModified(EmailServerPeer::MESS_INCOMING_SERVER)) { + $criteria->add(EmailServerPeer::MESS_INCOMING_SERVER, $this->mess_incoming_server); + } + + if ($this->isColumnModified(EmailServerPeer::MESS_INCOMING_PORT)) { + $criteria->add(EmailServerPeer::MESS_INCOMING_PORT, $this->mess_incoming_port); + } + if ($this->isColumnModified(EmailServerPeer::MESS_RAUTH)) { $criteria->add(EmailServerPeer::MESS_RAUTH, $this->mess_rauth); } @@ -1140,6 +1252,10 @@ abstract class BaseEmailServer extends BaseObject implements Persistent $copyObj->setMessPort($this->mess_port); + $copyObj->setMessIncomingServer($this->mess_incoming_server); + + $copyObj->setMessIncomingPort($this->mess_incoming_port); + $copyObj->setMessRauth($this->mess_rauth); $copyObj->setMessAccount($this->mess_account); diff --git a/workflow/engine/classes/model/om/BaseEmailServerPeer.php b/workflow/engine/classes/model/om/BaseEmailServerPeer.php index c78d96808..a020a0763 100644 --- a/workflow/engine/classes/model/om/BaseEmailServerPeer.php +++ b/workflow/engine/classes/model/om/BaseEmailServerPeer.php @@ -25,7 +25,7 @@ abstract class BaseEmailServerPeer const CLASS_DEFAULT = 'classes.model.EmailServer'; /** The total number of columns. */ - const NUM_COLUMNS = 13; + const NUM_COLUMNS = 15; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -43,6 +43,12 @@ abstract class BaseEmailServerPeer /** the column name for the MESS_PORT field */ const MESS_PORT = 'EMAIL_SERVER.MESS_PORT'; + /** the column name for the MESS_INCOMING_SERVER field */ + const MESS_INCOMING_SERVER = 'EMAIL_SERVER.MESS_INCOMING_SERVER'; + + /** the column name for the MESS_INCOMING_PORT field */ + const MESS_INCOMING_PORT = 'EMAIL_SERVER.MESS_INCOMING_PORT'; + /** the column name for the MESS_RAUTH field */ const MESS_RAUTH = 'EMAIL_SERVER.MESS_RAUTH'; @@ -81,10 +87,10 @@ abstract class BaseEmailServerPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('MessUid', 'MessEngine', 'MessServer', 'MessPort', 'MessRauth', 'MessAccount', 'MessPassword', 'MessFromMail', 'MessFromName', 'Smtpsecure', 'MessTrySendInmediatly', 'MailTo', 'MessDefault', ), - BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID, EmailServerPeer::MESS_ENGINE, EmailServerPeer::MESS_SERVER, EmailServerPeer::MESS_PORT, EmailServerPeer::MESS_RAUTH, EmailServerPeer::MESS_ACCOUNT, EmailServerPeer::MESS_PASSWORD, EmailServerPeer::MESS_FROM_MAIL, EmailServerPeer::MESS_FROM_NAME, EmailServerPeer::SMTPSECURE, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY, EmailServerPeer::MAIL_TO, EmailServerPeer::MESS_DEFAULT, ), - BasePeer::TYPE_FIELDNAME => array ('MESS_UID', 'MESS_ENGINE', 'MESS_SERVER', 'MESS_PORT', 'MESS_RAUTH', 'MESS_ACCOUNT', 'MESS_PASSWORD', 'MESS_FROM_MAIL', 'MESS_FROM_NAME', 'SMTPSECURE', 'MESS_TRY_SEND_INMEDIATLY', 'MAIL_TO', 'MESS_DEFAULT', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ) + BasePeer::TYPE_PHPNAME => array ('MessUid', 'MessEngine', 'MessServer', 'MessPort', 'MessIncomingServer', 'MessIncomingPort', 'MessRauth', 'MessAccount', 'MessPassword', 'MessFromMail', 'MessFromName', 'Smtpsecure', 'MessTrySendInmediatly', 'MailTo', 'MessDefault', ), + BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID, EmailServerPeer::MESS_ENGINE, EmailServerPeer::MESS_SERVER, EmailServerPeer::MESS_PORT, EmailServerPeer::MESS_INCOMING_SERVER, EmailServerPeer::MESS_INCOMING_PORT, EmailServerPeer::MESS_RAUTH, EmailServerPeer::MESS_ACCOUNT, EmailServerPeer::MESS_PASSWORD, EmailServerPeer::MESS_FROM_MAIL, EmailServerPeer::MESS_FROM_NAME, EmailServerPeer::SMTPSECURE, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY, EmailServerPeer::MAIL_TO, EmailServerPeer::MESS_DEFAULT, ), + BasePeer::TYPE_FIELDNAME => array ('MESS_UID', 'MESS_ENGINE', 'MESS_SERVER', 'MESS_PORT', 'MESS_INCOMING_SERVER', 'MESS_INCOMING_PORT', 'MESS_RAUTH', 'MESS_ACCOUNT', 'MESS_PASSWORD', 'MESS_FROM_MAIL', 'MESS_FROM_NAME', 'SMTPSECURE', 'MESS_TRY_SEND_INMEDIATLY', 'MAIL_TO', 'MESS_DEFAULT', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) ); /** @@ -94,10 +100,10 @@ abstract class BaseEmailServerPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('MessUid' => 0, 'MessEngine' => 1, 'MessServer' => 2, 'MessPort' => 3, 'MessRauth' => 4, 'MessAccount' => 5, 'MessPassword' => 6, 'MessFromMail' => 7, 'MessFromName' => 8, 'Smtpsecure' => 9, 'MessTrySendInmediatly' => 10, 'MailTo' => 11, 'MessDefault' => 12, ), - BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID => 0, EmailServerPeer::MESS_ENGINE => 1, EmailServerPeer::MESS_SERVER => 2, EmailServerPeer::MESS_PORT => 3, EmailServerPeer::MESS_RAUTH => 4, EmailServerPeer::MESS_ACCOUNT => 5, EmailServerPeer::MESS_PASSWORD => 6, EmailServerPeer::MESS_FROM_MAIL => 7, EmailServerPeer::MESS_FROM_NAME => 8, EmailServerPeer::SMTPSECURE => 9, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY => 10, EmailServerPeer::MAIL_TO => 11, EmailServerPeer::MESS_DEFAULT => 12, ), - BasePeer::TYPE_FIELDNAME => array ('MESS_UID' => 0, 'MESS_ENGINE' => 1, 'MESS_SERVER' => 2, 'MESS_PORT' => 3, 'MESS_RAUTH' => 4, 'MESS_ACCOUNT' => 5, 'MESS_PASSWORD' => 6, 'MESS_FROM_MAIL' => 7, 'MESS_FROM_NAME' => 8, 'SMTPSECURE' => 9, 'MESS_TRY_SEND_INMEDIATLY' => 10, 'MAIL_TO' => 11, 'MESS_DEFAULT' => 12, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ) + BasePeer::TYPE_PHPNAME => array ('MessUid' => 0, 'MessEngine' => 1, 'MessServer' => 2, 'MessPort' => 3, 'MessIncomingServer' => 4, 'MessIncomingPort' => 5, 'MessRauth' => 6, 'MessAccount' => 7, 'MessPassword' => 8, 'MessFromMail' => 9, 'MessFromName' => 10, 'Smtpsecure' => 11, 'MessTrySendInmediatly' => 12, 'MailTo' => 13, 'MessDefault' => 14, ), + BasePeer::TYPE_COLNAME => array (EmailServerPeer::MESS_UID => 0, EmailServerPeer::MESS_ENGINE => 1, EmailServerPeer::MESS_SERVER => 2, EmailServerPeer::MESS_PORT => 3, EmailServerPeer::MESS_INCOMING_SERVER => 4, EmailServerPeer::MESS_INCOMING_PORT => 5, EmailServerPeer::MESS_RAUTH => 6, EmailServerPeer::MESS_ACCOUNT => 7, EmailServerPeer::MESS_PASSWORD => 8, EmailServerPeer::MESS_FROM_MAIL => 9, EmailServerPeer::MESS_FROM_NAME => 10, EmailServerPeer::SMTPSECURE => 11, EmailServerPeer::MESS_TRY_SEND_INMEDIATLY => 12, EmailServerPeer::MAIL_TO => 13, EmailServerPeer::MESS_DEFAULT => 14, ), + BasePeer::TYPE_FIELDNAME => array ('MESS_UID' => 0, 'MESS_ENGINE' => 1, 'MESS_SERVER' => 2, 'MESS_PORT' => 3, 'MESS_INCOMING_SERVER' => 4, 'MESS_INCOMING_PORT' => 5, 'MESS_RAUTH' => 6, 'MESS_ACCOUNT' => 7, 'MESS_PASSWORD' => 8, 'MESS_FROM_MAIL' => 9, 'MESS_FROM_NAME' => 10, 'SMTPSECURE' => 11, 'MESS_TRY_SEND_INMEDIATLY' => 12, 'MAIL_TO' => 13, 'MESS_DEFAULT' => 14, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ) ); /** @@ -206,6 +212,10 @@ abstract class BaseEmailServerPeer $criteria->addSelectColumn(EmailServerPeer::MESS_PORT); + $criteria->addSelectColumn(EmailServerPeer::MESS_INCOMING_SERVER); + + $criteria->addSelectColumn(EmailServerPeer::MESS_INCOMING_PORT); + $criteria->addSelectColumn(EmailServerPeer::MESS_RAUTH); $criteria->addSelectColumn(EmailServerPeer::MESS_ACCOUNT); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 75517b680..bac185c02 100644 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -4866,6 +4866,8 @@ + + diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 7027ef788..a3009be9c 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -23477,6 +23477,18 @@ msgstr "Sent By" msgid "[LABEL/ID_SERVER] Server" msgstr "Server" +# TRANSLATION +# LABEL/ID_OUTGOING_SERVER +#: LABEL/ID_OUTGOING_SERVER +msgid "Outgoing Server" +msgstr "Outgoing Server" + +# TRANSLATION +# LABEL/ID_INCOMING_SERVER +#: LABEL/ID_INCOMING_SERVER +msgid "Incoming Server" +msgstr "Incoming Server" + # TRANSLATION # LABEL/ID_SERVER_ADDRESS #: LABEL/ID_SERVER_ADDRESS @@ -27929,6 +27941,18 @@ msgstr "Photo gallery" msgid "Port (default 25)" msgstr "Port (default 25)" +# TRANSLATION +# LABEL/INCOMING_PORT_DEFAULT +#: LABEL/INCOMING_PORT_DEFAULT +msgid "Incoming Port (default 143)" +msgstr "Incoming Port (default 143)" + +# TRANSLATION +# LABEL/OUTGOING_PORT_DEFAULT +#: LABEL/OUTGOING_PORT_DEFAULT +msgid "Outgoing Port (default 25)" +msgstr "Outgoing Port (default 25)" + # TRANSLATION # LABEL/REQUIRE_AUTHENTICATION #: LABEL/REQUIRE_AUTHENTICATION diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 8277694f0..a28d0e496 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -58425,6 +58425,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_INACTIVE','en','Inactive','2014-01-15') , ( 'LABEL','ID_INBOX','en','Inbox','2014-01-15') , ( 'LABEL','ID_INBOX_EMPTY','en','Your Inbox is empty...','2015-05-06') , +( 'LABEL','ID_INCOMING_SERVER','en','Incoming Server','2018-11-23') , ( 'LABEL','ID_INCORRECT_EMAIL','en','Your E-mail address is not valid.','2014-01-15') , ( 'LABEL','ID_INCORRECT_USERNAME_PASSWORD','en','Incorrect username or password','2014-01-15') , ( 'LABEL','ID_INCORRECT_VALUE_ACTION','en','The value for $action is incorrect.','2014-05-29') , @@ -60201,6 +60202,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_ORIGIN_TASK','en','Origin Task','2014-01-15') , ( 'LABEL','ID_OTHER','en','Other','2014-01-15') , ( 'LABEL','ID_OUTBOX','en','Outbox','2014-01-15') , +( 'LABEL','ID_OUTGOING_SERVER','en','Outgoing Server','2018-11-23') , ( 'LABEL','ID_OUTPUT_DB','en','Output','2014-10-08') , ( 'LABEL','ID_OUTPUT_DOCUMENT','en','Output Document','2014-01-15') , ( 'LABEL','ID_OUTPUT_DOCUMENTS','en','Output Documents','2014-01-15') , @@ -61462,6 +61464,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','IMPORT_PROCESS_DISABLE','en','Disable the current process and create a new version of the process','2014-01-15') , ( 'LABEL','IMPORT_PROCESS_NEW','en','Create a completely new process without changing the current process','2014-01-15') , ( 'LABEL','IMPORT_PROCESS_OVERWRITING','en','Update the current process, overwriting all tasks and steps','2014-01-15') , +( 'LABEL','INCOMING_PORT_DEFAULT','en','Incoming Port (default 143)','2018-11-23') , ( 'LABEL','INVALID_FILE','en','Invalid file!','2014-01-15') , ( 'LABEL','IS_USER_NAME_DISPLAY_FORMAT','en','User Name Display Format','2014-01-15') , ( 'LABEL','LOGIN','en','Login','2014-01-15') , @@ -61529,6 +61532,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','NEW_SITE_SUCCESS_CONFIRM','en','Do you want open the new site?','2014-01-15') , ( 'LABEL','NEW_SITE_SUCCESS_CONFIRMNOTE','en','Note.- If you open the new site your current session will be closed.','2014-01-15') , ( 'LABEL','OPEN_NEW_WS','en','Open new site','2014-01-15') , +( 'LABEL','OUTGOING_PORT_DEFAULT','en','Outgoing Port (default 25)','2018-11-26') , ( 'LABEL','OUTPUT_CREATE','en','Output document has been created successfully','2014-01-15') , ( 'LABEL','PASSWORD_HISTORY','en','Password history','2014-01-15') , ( 'LABEL','PAUSED','en','Pause','2014-01-15') , diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 30f4f911f..9bd873c33 100644 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2744,6 +2744,8 @@ CREATE TABLE `EMAIL_SERVER` `MESS_ENGINE` VARCHAR(256) default '' NOT NULL, `MESS_SERVER` VARCHAR(256) default '' NOT NULL, `MESS_PORT` INTEGER default 0 NOT NULL, + `MESS_INCOMING_SERVER` VARCHAR(256) default '' NOT NULL, + `MESS_INCOMING_PORT` INTEGER default 0 NOT NULL, `MESS_RAUTH` INTEGER default 0 NOT NULL, `MESS_ACCOUNT` VARCHAR(256) default '' NOT NULL, `MESS_PASSWORD` VARCHAR(256) default '' NOT NULL, diff --git a/workflow/engine/methods/emailServer/emailServerAjax.php b/workflow/engine/methods/emailServer/emailServerAjax.php index 6f3c246e3..59a454f52 100644 --- a/workflow/engine/methods/emailServer/emailServerAjax.php +++ b/workflow/engine/methods/emailServer/emailServerAjax.php @@ -9,6 +9,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -27,6 +29,14 @@ switch ($option) { $reqAuthentication = (int)($_POST["reqAuthentication"]); $password = ($reqAuthentication == 1)? $_POST["password"] : ""; $smtpSecure = $_POST["smtpSecure"]; + } elseif ($cboEmailEngine == "IMAP") { + $server = $_POST["server"]; + $port = (int)($_POST["port"]); + $incomingServer = $_POST["incomingServer"]; + $incomingPort = (int)($_POST["incomingPort"]); + $reqAuthentication = (int)($_POST["reqAuthentication"]); + $password = ($reqAuthentication == 1)? $_POST["password"] : ""; + $smtpSecure = $_POST["smtpSecure"]; } try { @@ -34,6 +44,8 @@ switch ($option) { "MESS_ENGINE" => $cboEmailEngine, "MESS_SERVER" => $server, "MESS_PORT" => $port, + "MESS_INCOMING_SERVER" => $incomingServer, + "MESS_INCOMING_PORT" => $incomingPort, "MESS_RAUTH" => $reqAuthentication, "MESS_ACCOUNT" => $accountFrom, "MESS_PASSWORD" => $password, @@ -63,6 +75,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -81,6 +95,14 @@ switch ($option) { $reqAuthentication = (int)($_POST["reqAuthentication"]); $password = ($reqAuthentication == 1)? $_POST["password"] : ""; $smtpSecure = $_POST["smtpSecure"]; + } elseif ($cboEmailEngine == "IMAP") { + $server = $_POST["server"]; + $port = (int)($_POST["port"]); + $incomingServer = $_POST["incomingServer"]; + $incomingPort = (int)($_POST["incomingPort"]); + $reqAuthentication = (int)($_POST["reqAuthentication"]); + $password = ($reqAuthentication == 1)? $_POST["password"] : ""; + $smtpSecure = $_POST["smtpSecure"]; } try { @@ -88,6 +110,8 @@ switch ($option) { "MESS_ENGINE" => $cboEmailEngine, "MESS_SERVER" => $server, "MESS_PORT" => $port, + "MESS_INCOMING_SERVER" => $incomingServer, + "MESS_INCOMING_PORT" => $incomingPort, "MESS_RAUTH" => $reqAuthentication, "MESS_ACCOUNT" => $accountFrom, "MESS_PASSWORD" => $password, @@ -153,6 +177,8 @@ switch ($option) { $server = ""; $port = ""; + $incomingServer = ""; + $incomingPort = ""; $reqAuthentication = 0; $password = ""; $smtpSecure = ""; @@ -165,7 +191,7 @@ switch ($option) { $mailTo = ($sendTestMail == 1)? $_POST["mailTo"] : ""; $emailServerDefault = (int)($_POST["emailServerDefault"]); - if ($cboEmailEngine == "PHPMAILER") { + if ($cboEmailEngine == "PHPMAILER" || $cboEmailEngine == "IMAP") { $server = $_POST["server"]; $port = (int)($_POST["port"]); $reqAuthentication = (int)($_POST["reqAuthentication"]); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php b/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php index 7516bccd2..56ffd0aa0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/EmailServer.php @@ -13,9 +13,11 @@ class EmailServer { private $arrayFieldDefinition = array( "MESS_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "emailServerUid"), - "MESS_ENGINE" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PHPMAILER", "MAIL"), "fieldNameAux" => "emailServerEngine"), + "MESS_ENGINE" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PHPMAILER", "MAIL", "IMAP"), "fieldNameAux" => "emailServerEngine"), "MESS_SERVER" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerServer"), "MESS_PORT" => array("type" => "int", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerPort"), + "MESS_INCOMING_SERVER" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerIncomingServer"), + "MESS_INCOMING_PORT" => array("type" => "int", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerIncomingPort"), "MESS_RAUTH" => array("type" => "int", "required" => false, "empty" => false, "defaultValues" => array(0, 1), "fieldNameAux" => "emailServerRauth"), "MESS_ACCOUNT" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerUserName"), "MESS_PASSWORD" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "emailServerPassword"), @@ -51,10 +53,10 @@ class EmailServer throw $e; } } - + /** * Get the default information from the context. - * + * * @global type $RBAC * @return void */ @@ -525,6 +527,7 @@ class EmailServer } break; case "PHPMAILER": + case "IMAP": $numSteps = ($arrayData['MAIL_TO'] != '') ? count($arrayPhpMailerTestName) : count($arrayPhpMailerTestName) - 1; for ($step = 1; $step <= $numSteps; $step++) { @@ -829,6 +832,8 @@ class EmailServer 'engine'=> $arrayData["MESS_ENGINE"], 'server' => $arrayData["MESS_SERVER"], 'port' => $arrayData["MESS_PORT"], + 'incomingServer' => $arrayData["MESS_INCOMING_SERVER"], + 'incomingPort' => $arrayData["MESS_INCOMING_PORT"], 'requireAuthentication' => $arrayData["MESS_RAUTH"], 'account' => $arrayData["MESS_ACCOUNT"], 'senderEmail' => $arrayData["MESS_FROM_MAIL"], @@ -1000,6 +1005,8 @@ class EmailServer 'engine' => $arrayData["MESS_ENGINE"], 'server' => $arrayData["MESS_SERVER"], 'port' => $arrayData["MESS_PORT"], + 'incomingServer' => $arrayData["MESS_INCOMING_SERVER"], + 'incomingPort' => $arrayData["MESS_INCOMING_PORT"], 'requireAuthentication' => $arrayData["MESS_RAUTH"], 'account' => $arrayData["MESS_ACCOUNT"], 'senderEmail' => $arrayData["MESS_FROM_MAIL"], @@ -1086,6 +1093,8 @@ class EmailServer $criteria->addSelectColumn(\EmailServerPeer::MESS_ENGINE); $criteria->addSelectColumn(\EmailServerPeer::MESS_SERVER); $criteria->addSelectColumn(\EmailServerPeer::MESS_PORT); + $criteria->addSelectColumn(\EmailServerPeer::MESS_INCOMING_SERVER); + $criteria->addSelectColumn(\EmailServerPeer::MESS_INCOMING_PORT); $criteria->addSelectColumn(\EmailServerPeer::MESS_RAUTH); $criteria->addSelectColumn(\EmailServerPeer::MESS_ACCOUNT); $criteria->addSelectColumn(\EmailServerPeer::MESS_PASSWORD); @@ -1118,6 +1127,8 @@ class EmailServer $this->getFieldNameByFormatFieldName("MESS_ENGINE") => $record["MESS_ENGINE"], $this->getFieldNameByFormatFieldName("MESS_SERVER") => $record["MESS_SERVER"], $this->getFieldNameByFormatFieldName("MESS_PORT") => $record["MESS_PORT"], + $this->getFieldNameByFormatFieldName("MESS_INCOMING_SERVER") => $record["MESS_INCOMING_SERVER"], + $this->getFieldNameByFormatFieldName("MESS_INCOMING_PORT") => $record["MESS_INCOMING_PORT"], $this->getFieldNameByFormatFieldName("MESS_RAUTH") => $record["MESS_RAUTH"], $this->getFieldNameByFormatFieldName("MESS_ACCOUNT") => $record["MESS_ACCOUNT"], $this->getFieldNameByFormatFieldName("MESS_PASSWORD") => $record["MESS_PASSWORD"], @@ -1163,6 +1174,8 @@ class EmailServer $arrayData["MESS_ENGINE"] = $row["MESS_ENGINE"]; $arrayData["MESS_SERVER"] = $row["MESS_SERVER"]; $arrayData["MESS_PORT"] = (int)($row["MESS_PORT"]); + $arrayData["MESS_INCOMING_SERVER"] = $row["MESS_INCOMING_SERVER"]; + $arrayData["MESS_INCOMING_PORT"] = (int)($row["MESS_INCOMING_PORT"]); $arrayData["MESS_RAUTH"] = (int)($row["MESS_RAUTH"]); $arrayData["MESS_ACCOUNT"] = $row["MESS_ACCOUNT"]; $arrayData["MESS_PASSWORD"] = $row["MESS_PASSWORD"]; @@ -1219,6 +1232,7 @@ class EmailServer $criteria->add( $criteria->getNewCriterion(\EmailServerPeer::MESS_ENGINE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_SERVER, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( + $criteria->getNewCriterion(\EmailServerPeer::MESS_INCOMING_SERVER,"%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_ACCOUNT, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::MESS_FROM_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr( $criteria->getNewCriterion(\EmailServerPeer::SMTPSECURE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)) @@ -1243,7 +1257,7 @@ class EmailServer if (!is_null($sortField) && trim($sortField) != "") { $sortField = strtoupper($sortField); - if (in_array($sortField, array("MESS_ENGINE", "MESS_SERVER", "MESS_ACCOUNT", "MESS_FROM_NAME", "SMTPSECURE"))) { + if (in_array($sortField, array("MESS_ENGINE", "MESS_SERVER", "MESS_INCOMING_SERVER", "MESS_ACCOUNT", "MESS_FROM_NAME", "SMTPSECURE"))) { $sortField = \EmailServerPeer::TABLE_NAME . "." . $sortField; } else { $sortField = \EmailServerPeer::MESS_ENGINE; @@ -1316,6 +1330,7 @@ class EmailServer $row = $rsCriteria->getRow(); $row["MESS_PORT"] = (int)($row["MESS_PORT"]); + $row["MESS_INCOMING_PORT"] = (int)($row["MESS_INCOMING_PORT"]); $row["MESS_RAUTH"] = (int)($row["MESS_RAUTH"]); $row["MESS_TRY_SEND_INMEDIATLY"] = (int)($row["MESS_TRY_SEND_INMEDIATLY"]); $row["MESS_DEFAULT"] = (int)($row["MESS_DEFAULT"]); diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index 91bed9ee9..dfa9e901a 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -48,83 +48,67 @@ emailServer.application = { } /*----------------------------------********---------------------------------*/ + var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); + + if (typeEmailEngine === "PHPMAILER") { + var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); + var smtpSecure = rdoGrpOption.getGroupValue(); + + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + server: Ext.getCmp("txtServer").getValue(), + port: Ext.getCmp("txtPort").getValue(), + reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked) ? 1 : 0, + accountFrom: Ext.getCmp("txtAccountFrom").getValue(), + password: Ext.getCmp("txtPassword").getValue(), + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + smtpSecure: smtpSecure, + sendTestMail: (Ext.getCmp("chkSendTestMail").checked) ? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } else if (typeEmailEngine === "IMAP") { + var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); + var smtpSecure = rdoGrpOption.getGroupValue(); + + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + server: Ext.getCmp("txtServer").getValue(), + port: Ext.getCmp("txtPort").getValue(), + incomingServer: Ext.getCmp("txtIncomingServer").getValue(), + incomingPort: Ext.getCmp("txtIncomingPort").getValue(), + reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked) ? 1 : 0, + accountFrom: Ext.getCmp("txtAccountFrom").getValue(), + password: Ext.getCmp("txtPassword").getValue(), + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + smtpSecure: smtpSecure, + sendTestMail: (Ext.getCmp("chkSendTestMail").checked) ? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } else { + //MAIL + p = { + option: option, + + cboEmailEngine: typeEmailEngine, + fromMail: Ext.getCmp("txtFromMail").getValue(), + fromName: Ext.getCmp("txtFromName").getValue(), + sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, + mailTo: Ext.getCmp("txtMailTo").getValue(), + emailServerDefault: emailDefault + }; + } + switch (option) { - case "INS": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } - break; case "UPD": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - emailServerUid: emailServerUid, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - emailServerUid: emailServerUid, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } + p.emailServerUid = emailServerUid; break; case "DEL": p = { @@ -132,45 +116,6 @@ emailServer.application = { emailServerUid: emailServerUid }; break; - //case "LST": - // break; - case "TEST": - var typeEmailEngine = Ext.getCmp("cboEmailEngine").getValue(); - - if (typeEmailEngine == "PHPMAILER") { - var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); - var smtpSecure = rdoGrpOption.getGroupValue(); - - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - server: Ext.getCmp("txtServer").getValue(), - port: Ext.getCmp("txtPort").getValue(), - reqAuthentication: (Ext.getCmp("chkReqAuthentication").checked)? 1 : 0, - accountFrom: Ext.getCmp("txtAccountFrom").getValue(), - password: Ext.getCmp("txtPassword").getValue(), - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - smtpSecure: smtpSecure, - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } else { - //MAIL - p = { - option: option, - - cboEmailEngine: typeEmailEngine, - fromMail: Ext.getCmp("txtFromMail").getValue(), - fromName: Ext.getCmp("txtFromName").getValue(), - sendTestMail: (Ext.getCmp("chkSendTestMail").checked)? 1 : 0, - mailTo: Ext.getCmp("txtMailTo").getValue(), - emailServerDefault: emailDefault - }; - } - break; } Ext.Ajax.request({ @@ -240,11 +185,16 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = true; Ext.getCmp("txtPort").allowBlank = true; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = true; Ext.getCmp("txtServer").setValue(""); Ext.getCmp("txtPort").setValue(""); + Ext.getCmp("txtIncomingServer").setValue(""); + Ext.getCmp("txtIncomingPort").setValue(""); + Ext.getCmp("chkReqAuthentication").setValue(false); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -272,6 +222,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = false; + Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; break; case "UPD": @@ -286,6 +238,9 @@ emailServer.application = { Ext.getCmp("txtServer").setValue(record.get("MESS_SERVER")); Ext.getCmp("txtPort").setValue((record.get("MESS_PORT") != 0)? record.get("MESS_PORT") : ""); + Ext.getCmp("txtIncomingServer").setValue(record.get("MESS_INCOMING_SERVER")); + Ext.getCmp("txtIncomingPort").setValue((record.get("MESS_INCOMING_PORT") !== 0)? record.get("MESS_INCOMING_PORT") : ""); + Ext.getCmp("chkReqAuthentication").setValue((parseInt(record.get("MESS_RAUTH")) == 1)? true : false); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -323,10 +278,46 @@ emailServer.application = { { Ext.getCmp("frmEmailServer").getForm().clearInvalid(); - if (cboEmailEngine == "PHPMAILER") { + if (cboEmailEngine === "PHPMAILER") { Ext.getCmp("txtServer").setVisible(true); Ext.getCmp("txtPort").setVisible(true); + try { + Ext.getCmp("txtServer").label.update(_("ID_SERVER")); + Ext.getCmp("txtPort").label.update(_("PORT_DEFAULT")); + } catch (err) { + Ext.getCmp("txtServer").fieldLabel = _("ID_SERVER"); + Ext.getCmp("txtPort").fieldLabel = _("PORT_DEFAULT"); + } + + Ext.getCmp("txtIncomingServer").setVisible(false); + Ext.getCmp("txtIncomingPort").setVisible(false); + + Ext.getCmp("chkReqAuthentication").setVisible(true); + + emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); + + Ext.getCmp("txtAccountFrom").setVisible(true); + Ext.getCmp("rdoGrpSmtpSecure").setVisible(true); + + Ext.getCmp("txtServer").allowBlank = false; + Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtAccountFrom").allowBlank = false; + } else if (cboEmailEngine === "IMAP") { + Ext.getCmp("txtServer").setVisible(true); + Ext.getCmp("txtPort").setVisible(true); + + try { + Ext.getCmp("txtServer").label.update(_("ID_OUTGOING_SERVER")); + Ext.getCmp("txtPort").label.update(_("OUTGOING_PORT_DEFAULT")); + } catch (err) { + Ext.getCmp("txtServer").fieldLabel = _("ID_OUTGOING_SERVER"); + Ext.getCmp("txtPort").fieldLabel = _("OUTGOING_PORT_DEFAULT"); + } + + Ext.getCmp("txtIncomingServer").setVisible(true); + Ext.getCmp("txtIncomingPort").setVisible(true); + Ext.getCmp("chkReqAuthentication").setVisible(true); emailServerSetPassword(Ext.getCmp("chkReqAuthentication").checked); @@ -342,6 +333,9 @@ emailServer.application = { Ext.getCmp("txtServer").setVisible(false); Ext.getCmp("txtPort").setVisible(false); + Ext.getCmp("txtIncomingServer").setVisible(false); + Ext.getCmp("txtIncomingPort").setVisible(false); + Ext.getCmp("chkReqAuthentication").setVisible(false); emailServerSetPassword(false); @@ -384,7 +378,7 @@ emailServer.application = { FLAGTEST = 1; - if (option == "PHPMAILER") { + if (option === "PHPMAILER" || option === "IMAP") { if (typeof(testData.resolving_name) != "undefined") { if (testData.resolving_name.result) { msg = msg + "" + testData.resolving_name.title + "
"; @@ -492,6 +486,8 @@ emailServer.application = { {name: "MESS_ENGINE", type: "string"}, {name: "MESS_SERVER", type: "string"}, {name: "MESS_PORT", type: "int"}, + {name: "MESS_INCOMING_SERVER", type: "string"}, + {name: "MESS_INCOMING_PORT", type: "int"}, {name: "MESS_RAUTH", type: "int"}, {name: "MESS_ACCOUNT", type: "string"}, {name: "MESS_PASSWORD", type: "string"}, @@ -548,6 +544,7 @@ emailServer.application = { data: [ ["PHPMAILER", "SMTP (PHPMailer)"], + ["IMAP", "SMTP - IMAP (PHPMailer)"], ["MAIL", "Mail (PHP)"] ] }); @@ -597,6 +594,24 @@ emailServer.application = { emptyText: null }); + var txtIncomingServer = new Ext.form.TextField({ + id: "txtIncomingServer", + name: "txtIncomingServer", + + fieldLabel: _("ID_INCOMING_SERVER") //Server + }); + + var txtIncomingPort = new Ext.form.NumberField({ + id: "txtIncomingPort", + name: "txtIncomingPort", + + fieldLabel: _("INCOMING_PORT_DEFAULT"), //Port (default 993) + + anchor: "36%", + maxLength: 3, + emptyText: null + }); + var chkReqAuthentication = new Ext.form.Checkbox({ id: "chkReqAuthentication", name: "chkReqAuthentication", @@ -745,7 +760,7 @@ emailServer.application = { var winData = new Ext.Window({ layout: "fit", width: 550, - height: 388, + height: 450, //title: "", modal: true, resizable: false, @@ -772,6 +787,8 @@ emailServer.application = { cboEmailEngine, txtServer, txtPort, + txtIncomingServer, + txtIncomingPort, chkReqAuthentication, txtAccountFrom, txtPassword, @@ -997,6 +1014,16 @@ emailServer.application = { return (value != 0)? value : "-"; }; + var rendererMessIncomingServer = function (value) + { + return (value !== "")? value : "-"; + }; + + var rendererMessIncomingPort = function (value) + { + return (value !== 0)? value : "-"; + }; + var rendererMessSmtpSecure = function (value) { return (value != "")? value : "-"; @@ -1017,6 +1044,8 @@ emailServer.application = { {id: "MESS_ENGINE", dataIndex: "MESS_ENGINE", hidden: false, header: _("EMAIL_ENGINE"), width: 80, hideable: true, align: "left"}, {id: "MESS_SERVER", dataIndex: "MESS_SERVER", hidden: false, header: _("ID_SERVER"), width: 150, hideable: true, align: "center", renderer: rendererMessServer}, {id: "MESS_PORT", dataIndex: "MESS_PORT", hidden: false, header: _("ID_EMAIL_SERVER_PORT"), width: 50, hideable: true, align: "center", renderer: rendererMessPort}, + {id: "MESS_INCOMING_SERVER", dataIndex: "MESS_INCOMING_SERVER", hidden: true, header: _("ID_INCOMING_SERVER"), width: 150, hideable: true, align: "center", renderer: rendererMessIncomingServer}, + {id: "MESS_INCOMING_PORT", dataIndex: "MESS_INCOMING_PORT", hidden: true, header: _("ID_EMAIL_SERVER_PORT"), width: 50, hideable: true, align: "center", renderer: rendererMessIncomingPort}, {id: "MESS_RAUTH", dataIndex: "MESS_RAUTH", hidden: true, header: _("REQUIRE_AUTHENTICATION"), width: 50, hideable: false, align: "left"}, {id: "MESS_ACCOUNT", dataIndex: "MESS_ACCOUNT", hidden: false, header: _("ID_EMAIL_SERVER_ACCOUNT_FROM"), width: 130, hideable: true, align: "left"}, {id: "MESS_PASSWORD", dataIndex: "MESS_PASSWORD", hidden: true, header: _("ID_PASSWORD"), width: 130, hideable: false, align: "left"}, From c3977f94c0fe0200c6bbc1065ff9a55b3befd524 Mon Sep 17 00:00:00 2001 From: Ronald Date: Tue, 20 Nov 2018 15:53:08 -0400 Subject: [PATCH 13/38] PMC-41 Fixing actionsByEmailErrorReply.html error file --- composer.json | 3 +- .../bin/actionsByEmailEmailResponse.php | 2 + workflow/engine/bin/cron_single.php | 7 +- .../translations/english/processmaker.en.po | 116 ++++++- workflow/engine/data/mysql/insert.sql | 11 + .../ActionsByEmail/ResponseReader.php | 308 ++++++++++++++++++ .../Services/Api/ActionsByEmail.php | 5 + .../actionsByEmailErrorReply.html | 20 ++ 8 files changed, 457 insertions(+), 15 deletions(-) create mode 100644 workflow/engine/bin/actionsByEmailEmailResponse.php create mode 100644 workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php create mode 100644 workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html diff --git a/composer.json b/composer.json index 25714d395..dc34bb592 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,8 @@ "ralouphie/getallheaders": "^2.0", "smarty/smarty": "2.6.30", "pdepend/pdepend": "@stable", - "chumper/zipper": "^1.0" + "chumper/zipper": "^1.0", + "php-imap/php-imap": "^3.0" }, "require-dev": { "fzaninotto/faker": "^1.7", diff --git a/workflow/engine/bin/actionsByEmailEmailResponse.php b/workflow/engine/bin/actionsByEmailEmailResponse.php new file mode 100644 index 000000000..e22f1ad68 --- /dev/null +++ b/workflow/engine/bin/actionsByEmailEmailResponse.php @@ -0,0 +1,2 @@ +actionsByEmailEmailResponse(); + break; } } catch (Exception $e) { $token = strtotime("now"); diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index a3009be9c..2c748fab6 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: ProcessMaker (Branch 3.3.1)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-10-23 16:48:05\n" +"PO-Revision-Date: 2018-11-23 20:16:26\n" "Last-Translator: \n" "Language-Team: Colosa Developers Team \n" "MIME-Version: 1.0\n" @@ -1705,6 +1705,24 @@ msgstr "The answer has been submitted. Thank you." msgid "Please add your comments above this section. Don't modify or delete this section." msgstr "Please add your comments above this section. Don't modify or delete this section." +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_ANSWER +#: LABEL/ID_ABE_CASE_NOTE_ANSWER +msgid "Answer: {optionLabel}" +msgstr "Answer: {optionLabel}" + +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_COMMENT +#: LABEL/ID_ABE_CASE_NOTE_COMMENT +msgid "Comment: {emailBody}" +msgstr "Comment: {emailBody}" + +# TRANSLATION +# LABEL/ID_ABE_CASE_NOTE_HEADER +#: LABEL/ID_ABE_CASE_NOTE_HEADER +msgid "{emailAccount} has completed a task from Actions by Email." +msgstr "{emailAccount} has completed a task from Actions by Email." + # TRANSLATION # LABEL/ID_ABE_FORM_ALREADY_FILLED #: LABEL/ID_ABE_FORM_ALREADY_FILLED @@ -1717,6 +1735,54 @@ msgstr "The form has already been filled and sent." msgid "The information was submitted. Thank you." msgstr "The information was submitted. Thank you." +# TRANSLATION +# LABEL/ID_ABE_LOG_ALREADY_ROUTED +#: LABEL/ID_ABE_LOG_ALREADY_ROUTED +msgid "The case was identified correctly but it was already routed." +msgstr "The case was identified correctly but it was already routed." + +# TRANSLATION +# LABEL/ID_ABE_LOG_CANNOT_BE_IDENTIFIED +#: LABEL/ID_ABE_LOG_CANNOT_BE_IDENTIFIED +msgid "The case cannot be identified." +msgstr "The case cannot be identified." + +# TRANSLATION +# LABEL/ID_ABE_LOG_CANNOT_READ +#: LABEL/ID_ABE_LOG_CANNOT_READ +msgid "The application cannot read the email receiver account." +msgstr "The application cannot read the email receiver account." + +# TRANSLATION +# LABEL/ID_ABE_LOG_PROCESSED_OK +#: LABEL/ID_ABE_LOG_PROCESSED_OK +msgid "The answer was processed correctly." +msgstr "The answer was processed correctly." + +# TRANSLATION +# LABEL/ID_ABE_LOG_ROUTING_FAILED +#: LABEL/ID_ABE_LOG_ROUTING_FAILED +msgid "The case was identified correctly but the routing process has failed." +msgstr "The case was identified correctly but the routing process has failed." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_ALREADY_ROUTED +#: LABEL/ID_ABE_RESPONSE_ALREADY_ROUTED +msgid "Your answer cannot be processed because the case was already routed or is no longer assigned to you." +msgstr "Your answer cannot be processed because the case was already routed or is no longer assigned to you." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED +#: LABEL/ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED +msgid "Your answer cannot be processed, please try again and make sure to keep the subject code untouched." +msgstr "Your answer cannot be processed, please try again and make sure to keep the subject code untouched." + +# TRANSLATION +# LABEL/ID_ABE_RESPONSE_ROUTING_FAILED +#: LABEL/ID_ABE_RESPONSE_ROUTING_FAILED +msgid "Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator." +msgstr "Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator." + # TRANSLATION # LABEL/ID_ABE_RESPONSE_SENT #: LABEL/ID_ABE_RESPONSE_SENT @@ -13625,6 +13691,12 @@ msgstr "Execute a trigger when a case is deleted" msgid "Please press the \"Generate Link\" button." msgstr "Please press the \"Generate Link\" button." +# TRANSLATION +# LABEL/ID_MAFE_660cfca112471f69246e9942f5e8afd1 +#: LABEL/ID_MAFE_660cfca112471f69246e9942f5e8afd1 +msgid "Store email body in" +msgstr "Store email body in" + # TRANSLATION # LABEL/ID_MAFE_66285b36f894a5439af5a98e3e1a36d2 #: LABEL/ID_MAFE_66285b36f894a5439af5a98e3e1a36d2 @@ -14555,6 +14627,12 @@ msgstr "January" msgid "[LABEL/ID_MAFE_86fd9a7abc9f357e7fa206b2d42ec5ba] Destination Path" msgstr "Destination Path" +# TRANSLATION +# LABEL/ID_MAFE_8738321e65db027ee6476c0ab12d8cd5 +#: LABEL/ID_MAFE_8738321e65db027ee6476c0ab12d8cd5 +msgid "Store option in" +msgstr "Store option in" + # TRANSLATION # LABEL/ID_MAFE_87557f11575c0ad78e4e28abedc13b6e #: LABEL/ID_MAFE_87557f11575c0ad78e4e28abedc13b6e @@ -15365,6 +15443,12 @@ msgstr "Properties" msgid "[LABEL/ID_MAFE_9fced129522f128b2445a41fb0b6ef9f] checkbox" msgstr "checkbox" +# TRANSLATION +# LABEL/ID_MAFE_a036226d97d1d0d725d494a1431f322c +#: LABEL/ID_MAFE_a036226d97d1d0d725d494a1431f322c +msgid "Receiver account" +msgstr "Receiver account" + # TRANSLATION # LABEL/ID_MAFE_a05ac4341235111bd2cba5c3c105ba81 #: LABEL/ID_MAFE_a05ac4341235111bd2cba5c3c105ba81 @@ -17915,6 +17999,12 @@ msgstr "Users" msgid "validate" msgstr "validate" +# TRANSLATION +# LABEL/ID_MAFE_fa2b5b7c9bccd35e42cb74042690a091 +#: LABEL/ID_MAFE_fa2b5b7c9bccd35e42cb74042690a091 +msgid "Email response" +msgstr "Email response" + # TRANSLATION # LABEL/ID_MAFE_fa3c608c8fc755543f0d37afd6a42651 #: LABEL/ID_MAFE_fa3c608c8fc755543f0d37afd6a42651 @@ -25961,18 +26051,6 @@ msgstr "The uploaded file exceeds the upload_max_filesize directive in php.ini" msgid "The file has not been attached because the extension is not allowed or because the content doesn't correspond." msgstr "The file has not been attached because the extension is not allowed or because the content doesn't correspond." -# TRANSLATION -# LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE -#: LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE -msgid "File size exceeds the allowable limit of {0}" -msgstr "File size exceeds the allowable limit of {0}" - -# TRANSLATION -# LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE -#: LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE -msgid "Invalid file format, please upload a file with one of the following formats {0}" -msgstr "Invalid file format, please upload a file with one of the following formats {0}" - # TRANSLATION # LABEL/ID_UPLOAD_ERR_NO_FILE #: LABEL/ID_UPLOAD_ERR_NO_FILE @@ -26021,6 +26099,18 @@ msgstr "Upload from file" msgid "Upload image" msgstr "Upload image" +# TRANSLATION +# LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE +#: LABEL/ID_UPLOAD_INVALID_DOC_MAX_FILESIZE +msgid "File size exceeds the allowable limit of {0}" +msgstr "File size exceeds the allowable limit of {0}" + +# TRANSLATION +# LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE +#: LABEL/ID_UPLOAD_INVALID_DOC_TYPE_FILE +msgid "Invalid file format, please upload a file with one of the following formats {0}" +msgstr "Invalid file format, please upload a file with one of the following formats {0}" + # TRANSLATION # LABEL/ID_UPLOAD_LANGUAGE #: LABEL/ID_UPLOAD_LANGUAGE diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index a28d0e496..34caa7051 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57085,6 +57085,17 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_ABE_FORM_ALREADY_FILLED','en','The form has already been filled and sent.','2017-06-09') , ( 'LABEL','ID_ABE_INFORMATION_SUBMITTED','en','The information was submitted. Thank you.','2017-06-19') , ( 'LABEL','ID_ABE_RESPONSE_SENT','en','The response has already been sent.','2017-06-19') , +( 'LABEL','ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED','en','Your answer cannot be processed, please try again and make sure to keep the subject code untouched.','2018-11-20') , +( 'LABEL','ID_ABE_RESPONSE_ALREADY_ROUTED','en','Your answer cannot be processed because the case was already routed or is no longer assigned to you.','2018-11-20') , +( 'LABEL','ID_ABE_RESPONSE_ROUTING_FAILED','en','Your answer cannot be processed because there is an error in the flow definition, please notify to this issue to the system administrator.','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_ANSWER','en','Answer: {optionLabel}','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_COMMENT','en','Comment: {emailBody}','2018-11-20') , +( 'LABEL','ID_ABE_CASE_NOTE_HEADER','en','{emailAccount} has completed a task from Actions by Email.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_CANNOT_READ','en','The application cannot read the email receiver account.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_PROCESSED_OK','en','The answer was processed correctly.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_CANNOT_BE_IDENTIFIED','en','The case cannot be identified.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_ALREADY_ROUTED','en','The case was identified correctly but it was already routed.','2018-11-20') , +( 'LABEL','ID_ABE_LOG_ROUTING_FAILED','en','The case was identified correctly but the routing process has failed.','2018-11-20') , ( 'LABEL','ID_ACCEPT','en','Accept','2014-01-15') , ( 'LABEL','ID_ACCESS_DENIED','en','Access Denied!','2015-12-03') , ( 'LABEL','ID_ACCOUNT','en','Account','2014-01-15') , diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php new file mode 100644 index 000000000..8fdd862d1 --- /dev/null +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -0,0 +1,308 @@ +messageResponseError; + } + + /** + * @param string $messageResponseError + */ + public function setMessageResponseError($messageResponseError) + { + $this->messageResponseError = $messageResponseError; + } + + /** + * Read the Action by Email listener inbox looking for new messages + */ + public function actionsByEmailEmailResponse() + { + try { + if (PMLicensedFeatures + ::getSingleton() + ->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) { + require_once(PATH_DB . config("system.workspace") . PATH_SEP . "/db.php"); + $arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace")); + define('SYS_SKIN', $arraySystemConfiguration['default_skin']); + + $criteriaAbe = new Criteria(); + $criteriaAbe->add(AbeConfigurationPeer::ABE_TYPE, "RESPONSE"); + $resultAbe = AbeConfigurationPeer::doSelectRS($criteriaAbe); + $resultAbe->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while ($resultAbe->next()) { + $dataAbe = $resultAbe->getRow(); + $this->getAllEmails($dataAbe); + } + } + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + + /** + * Decrypt password of Email Server + * @param array $emailSetup + * @return mixed|string + */ + private function decryptPassword(array $emailSetup) + { + $pass = isset($emailSetup['MESS_PASSWORD']) ? $emailSetup['MESS_PASSWORD'] : ''; + $passDec = G::decrypt($pass, 'EMAILENCRYPT'); + $auxPass = explode('hash:', $passDec); + if (count($auxPass) > 1) { + if (count($auxPass) == 2) { + $pass = $auxPass[1]; + } else { + array_shift($auxPass); + $pass = implode('', $auxPass); + } + } + return $pass; + } + + /** + * Get all Email of server listener + * @param array $dataAbe + */ + public function getAllEmails(array $dataAbe) + { + try { + $emailServer = new EmailServer(); + $emailSetup = (!is_null(EmailServerPeer::retrieveByPK($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']))) ? + $emailServer->getEmailServer($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID'], true) : + $emailServer->getEmailServerDefault(); + if (empty($emailSetup)) { + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_CANNOT_READ'), 500)); + } + $mailbox = new Mailbox( + '{'. $emailSetup['MESS_INCOMING_SERVER'] . ':' . $emailSetup['MESS_INCOMING_PORT'] . '/imap/ssl/novalidate-cert}INBOX', + $emailSetup['MESS_ACCOUNT'], + $this->decryptPassword($emailSetup) + ); + + // Read all messages into an array + $mailsIds = $mailbox->searchMailbox('ALL'); + if ($mailsIds) { + $mailsInfo = $mailbox->getMailsInfo($mailsIds); + // Get the first message and save its attachment(s) to disk: + foreach ($mailsIds as $key => $mailsId) { + /** @var IncomingMail $mail */ + $mail = $mailbox->getMail($mailsId); + preg_match("/{(.*)}/", $mail->textPlain, $matches); + if ($matches && $mailsInfo[$key]->seen === 0) { + $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); + if (config("system.workspace") === $dataEmail['workspace']) { + $this->case = $dataEmail; + try { + $appDelegate = new AppDelegation(); + $alreadyRouted = $appDelegate->alreadyRouted($this->case["appUid"], $this->case["delIndex"]); + //Verify if the current case is already routed. + if ($alreadyRouted) { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ALREADY_ROUTED')); + throw (new Exception(G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'), 400)); + } + $this->processABE($this->case, $mail, $dataAbe); + Bootstrap::registerMonolog( + $this->channel, + 100, // DEBUG + G::LoadTranslation('ID_ABE_LOG_PROCESSED_OK'), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } catch (Exception $e) { + $this->sendMessageError( + $this->getMessageResponseError() ? $this->getMessageResponseError() : $e->getMessage(), + $this->case, + $mail, + $emailSetup + ); + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + } + } + } + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + $e->getCode(), + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + } + + /** + * Derivation of the case with the mail information + * @param array $caseInfo + * @param IncomingMail $mail + * @param array $dataAbe + * @throws Exception + */ + public function processABE(array $caseInfo, IncomingMail $mail, array $dataAbe = []) + { + try { + $actionsByEmail = new ActionsByEmail(); + $actionsByEmail->verifyLogin($caseInfo['appUid'], $caseInfo['delIndex']); + + $case = new Cases(); + $caseFieldsABE = $case->loadCase($caseInfo['appUid'], $caseInfo['delIndex']); + + $actionsByEmailCore = new ActionsByEmailCoreClass(); + $actionField = str_replace( + $actionsByEmailCore->getPrefix(), + '', + $dataAbe['ABE_ACTION_FIELD'] + ); + $dataField = []; + $dataField[$actionField] = $caseInfo['fieldValue']; + $actionBodyField = str_replace( + $actionsByEmailCore->getPrefix(), + '', + $dataAbe['ABE_ACTION_BODY_FIELD'] + ); + $textPlain = $mail->textPlain; + $textPlain = substr($textPlain, 0, strpos($textPlain, "/=")); + $dataField[$actionBodyField] = $textPlain; + $caseFieldsABE['APP_DATA'] = array_merge($caseFieldsABE['APP_DATA'], $dataField); + + ChangeLog::getChangeLog() + ->getUsrIdByUsrUid($caseFieldsABE['CURRENT_USER_UID'], true) + ->setSourceId(ChangeLog::FromABE); + + $caseFieldsABE['CURRENT_DYNAFORM'] = ''; + $caseFieldsABE['USER_UID'] = $caseFieldsABE['CURRENT_USER_UID']; + $caseFieldsABE['OBJECT_TYPE'] = ''; + + $case->updateCase($caseInfo['appUid'], $caseFieldsABE); + + try { + $ws = new WsBase(); + $result = $ws->derivateCase( + $caseFieldsABE['CURRENT_USER_UID'], + $caseInfo['appUid'], + $caseInfo['delIndex'], + true + ); + $code = (is_array($result)) ? $result['status_code'] : $result->status_code; + if ($code != 0) { + throw new Exception( + "An error occurred while the application was being processed\n" . + "Error code: " . $result->status_code . "\nError message: " . $result->message + ); + } + } catch (Exception $e) { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ROUTING_FAILED')); + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_ROUTING_FAILED'), 400)); + } + + //Save Cases Notes + if ($dataAbe['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { + $customGrid = unserialize($dataAbe['ABE_CUSTOM_GRID']); + $fieldLabel = null; + foreach ($customGrid as $key => $value) { + if ($value['abe_custom_value'] == $caseInfo['fieldValue']) { + $fieldLabel = $value['abe_custom_label']; + break; + } + } + $appNotes = new AppNotes(); + $noteText = G::LoadTranslation('ID_ABE_CASE_NOTE_HEADER', ['emailAccount' => $mail->toString]) . "\n\n"; + $noteText .= G::LoadTranslation('ID_ABE_CASE_NOTE_ANSWER', ['optionLabel' => $fieldLabel ? $fieldLabel : $caseInfo['fieldValue']]) . "\n\n"; + $noteText .= G::LoadTranslation('ID_ABE_CASE_NOTE_COMMENT', ['emailBody' => $textPlain]); + $noteContent = addslashes($noteText); + $appNotes->postNewNote($caseInfo['appUid'], $caseFieldsABE['APP_DATA']['USER_LOGGED'], $noteContent, false); + } + } catch (Exception $e) { + if ($e->getCode() == 400) { + throw (new Exception($e->getMessage(), $e->getCode())); + } else { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_CANNOT_BE_IDENTIFIED')); + throw (new Exception(G::LoadTranslation('ID_ABE_LOG_CANNOT_BE_IDENTIFIED'), 300)); + } + } + } + + /** + * Send an error message to the sender + * @param string $msgError + * @param array $caseInf + * @param IncomingMail $mail + * @param array $emailSetup + * @return \ProcessMaker\Util\Response|string|\WsResponse + */ + public function sendMessageError($msgError, array $caseInf, IncomingMail $mail, array $emailSetup) + { + $wsBase = new WsBase(); + $result = $wsBase->sendMessage( + $caseInf['appUid'], + $mail->toString, + $mail->fromAddress, + '', + '', + $mail->subject, + 'actionsByEmailErrorReply.html', + ['ACTIONS_BY_EMAIL_ERROR_MESSAGE' => $msgError], + null, + true, + $caseInf['delIndex'], + $emailSetup, + 0 + ); + return $result; + } +} diff --git a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php index 339b5bb27..a1646e6ee 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php @@ -154,6 +154,11 @@ class ActionsByEmail extends Api $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html'); } + if (!file_exists($path . 'actionsByEmailErrorReply.html')) { + $data = array('prf_content' => '', 'prf_filename' => 'actionsByEmailErrorReply.html', 'prf_path' => 'templates'); + $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); + @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmailErrorReply.html', $path . 'actionsByEmailErrorReply.html'); + } } $directory = dir($path); diff --git a/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html b/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html new file mode 100644 index 000000000..c8584c420 --- /dev/null +++ b/workflow/engine/templates/actionsByEmail/actionsByEmailErrorReply.html @@ -0,0 +1,20 @@ + + + + + + + +
ACTIONS BY EMAIL
+
+
+ @#ACTIONS_BY_EMAIL_ERROR_MESSAGE +
+
+
+ This is an automated email, please do not replay to it. +
+ www.processmaker.com +
+
\ No newline at end of file From 46844a38c1ecb21f13f41516331425d15beb1255 Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Wed, 28 Nov 2018 15:43:46 -0400 Subject: [PATCH 14/38] PMC-79: Email Server does not works --- workflow/engine/templates/emailServer/emailServer.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index dfa9e901a..d7976acb9 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -222,8 +222,6 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; - Ext.getCmp("txtIncomingServer").allowBlank = false; - Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; break; case "UPD": @@ -302,6 +300,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = false; } else if (cboEmailEngine === "IMAP") { Ext.getCmp("txtServer").setVisible(true); @@ -327,6 +327,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = false; Ext.getCmp("txtPort").allowBlank = false; + Ext.getCmp("txtIncomingServer").allowBlank = false; + Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; } else { //MAIL @@ -345,6 +347,8 @@ emailServer.application = { Ext.getCmp("txtServer").allowBlank = true; Ext.getCmp("txtPort").allowBlank = true; + Ext.getCmp("txtIncomingServer").allowBlank = true; + Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = true; Ext.getCmp("txtPassword").allowBlank = true; } From 12ad52e0a8688a063b1ee07ab94f8de0a65d8bcf Mon Sep 17 00:00:00 2001 From: ronald Date: Thu, 29 Nov 2018 12:10:35 -0400 Subject: [PATCH 15/38] PMC-82 --- .../classes/ActionsByEmailCoreClass.php | 2 + workflow/engine/classes/SpoolRun.php | 4 +- .../ActionsByEmail/ResponseReader.php | 42 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 166485a06..f1a8ead4e 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -731,11 +731,13 @@ class ActionsByEmailCoreClass extends PMPlugin */ private function getBodyByResponse($fieldValue) { + $abeRequest = $this->getAbeRequest(); $bodyToCrypt = [ 'workspace' => $this->getWorkspace(), 'appUid' => $this->getAppUid(), 'delIndex' => $this->getIndex(), 'fieldValue' => $fieldValue, + 'ABE_REQ_UID' => $abeRequest['ABE_REQ_UID'] ]; $bodyToCrypt = G::json_encode($bodyToCrypt); diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index 56bccc4ec..c736b8b06 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -406,13 +406,14 @@ class SpoolRun switch ($this->config['MESS_ENGINE']) { case 'MAIL': case 'PHPMAILER': - + case 'IMAP': switch ($this->config['MESS_ENGINE']) { case 'MAIL': $oPHPMailer = new PHPMailer(); $oPHPMailer->Mailer = 'mail'; break; + case 'IMAP': case 'PHPMAILER': $oPHPMailer = new PHPMailer(true); $oPHPMailer->Mailer = 'smtp'; @@ -424,6 +425,7 @@ class SpoolRun switch ($this->config['MESS_ENGINE']) { case 'MAIL': break; + case 'IMAP': case 'PHPMAILER': //Posible Options for SMTPSecure are: "", "ssl" or "tls" if (isset($this->config['SMTPSecure']) && preg_match('/^(ssl|tls)$/', $this->config['SMTPSecure'])) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 8fdd862d1..447835910 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -3,6 +3,7 @@ namespace ProcessMaker\BusinessModel\ActionsByEmail; use AbeConfigurationPeer; +use AbeResponses; use ActionsByEmailCoreClass; use AppDelegation; use AppNotes; @@ -220,6 +221,27 @@ class ResponseReader $dataField[$actionBodyField] = $textPlain; $caseFieldsABE['APP_DATA'] = array_merge($caseFieldsABE['APP_DATA'], $dataField); + $dataResponses = []; + $dataResponses['ABE_REQ_UID'] = $caseInfo['ABE_REQ_UID']; + $dataResponses['ABE_RES_CLIENT_IP'] = 'localhost'; + $dataResponses['ABE_RES_DATA'] = serialize($dataField); + $dataResponses['ABE_RES_STATUS'] = 'PENDING'; + $dataResponses['ABE_RES_MESSAGE'] = ''; + + try { + $abeAbeResponsesInstance = new AbeResponses(); + $dataResponses['ABE_RES_UID'] = $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + 300, + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + ChangeLog::getChangeLog() ->getUsrIdByUsrUid($caseFieldsABE['CURRENT_USER_UID'], true) ->setSourceId(ChangeLog::FromABE); @@ -250,6 +272,24 @@ class ResponseReader throw (new Exception(G::LoadTranslation('ID_ABE_LOG_ROUTING_FAILED'), 400)); } + //Update AbeResponses + $dataResponses['ABE_RES_STATUS'] = ($code == 0)? 'SENT' : 'ERROR'; + $dataResponses['ABE_RES_MESSAGE'] = ($code == 0)? '-' : $result->message; + + try { + $abeAbeResponsesInstance = new AbeResponses(); + $abeAbeResponsesInstance->createOrUpdate($dataResponses); + } catch (Exception $e) { + Bootstrap::registerMonolog( + $this->channel, + 300, + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } + $dataAbeRequests = loadAbeRequest($caseInfo['ABE_REQ_UID']); //Save Cases Notes if ($dataAbe['ABE_CASE_NOTE_IN_RESPONSE'] == 1) { $customGrid = unserialize($dataAbe['ABE_CUSTOM_GRID']); @@ -267,6 +307,8 @@ class ResponseReader $noteContent = addslashes($noteText); $appNotes->postNewNote($caseInfo['appUid'], $caseFieldsABE['APP_DATA']['USER_LOGGED'], $noteContent, false); } + $dataAbeRequests['ABE_REQ_ANSWERED'] = 1; + $code == 0 ? uploadAbeRequest($dataAbeRequests) : ''; } catch (Exception $e) { if ($e->getCode() == 400) { throw (new Exception($e->getMessage(), $e->getCode())); From 23bd3607619fcba27a5ee65a3262ac9013db4654 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Wed, 28 Nov 2018 08:41:32 -0400 Subject: [PATCH 16/38] PMC-75 --- .../translations/english/processmaker.en.po | 6 ++ workflow/engine/data/mysql/insert.sql | 1 + .../BusinessModel/ActionsByEmail.php | 70 ++++++++++--------- 3 files changed, 43 insertions(+), 34 deletions(-) diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 2c748fab6..d4cd92303 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -3935,6 +3935,12 @@ msgstr "Case Tracker Properties Saved Successfully" msgid "The case {APP_NUMBER} was reactivated successfully!" msgstr "The case {APP_NUMBER} was reactivated successfully!" +# TRANSLATION +# LABEL/ID_CASE_RESPONSE_NOT_AVAILABLE +#: LABEL/ID_CASE_RESPONSE_NOT_AVAILABLE +msgid "No response available, please review the case information" +msgstr "No response available, please review the case information" + # TRANSLATION # LABEL/ID_CASE_ROUTED_TO #: LABEL/ID_CASE_ROUTED_TO diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 34caa7051..d110898aa 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57463,6 +57463,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES ( 'LABEL','ID_CASE_REACTIVATED_SUCCESSFULLY','en','The case {APP_NUMBER} was reactivated successfully!','2014-01-15') , +( 'LABEL','ID_CASE_RESPONSE_NOT_AVAILABLE','en','No response available, please review the case information','2018-03-02') , ( 'LABEL','ID_CASE_ROUTED_TO','en','Case routed to','2017-06-02') , ( 'LABEL','ID_CASE_SCHEDULER','en','Case Scheduler','2014-01-15') , ( 'LABEL','ID_CASE_SCHEDULER_CLASSIC','en','Case Scheduler (classic processes)','2017-10-13') , diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php index 968335963..7764ad001 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php @@ -4,30 +4,26 @@ namespace ProcessMaker\BusinessModel; use AbeConfiguration; use AbeConfigurationPeer; -use AppMessage; use AbeRequests; use AbeRequestsPeer; use AbeResponsesPeer; -use ApplicationPeer; use AppDelegation; use AppDelegationPeer; +use AppMessage; use Criteria; +use DynaformPeer; use EmailServerPeer; use Exception; use G; -use Publisher; -use ProcessMaker\BusinessModel\EmailServer; -use ProcessMaker\Core\System; -use ProcessMaker\Plugins\PluginRegistry; use PmDynaform; use PMLicensedFeatures; -use ProcessPeer; +use ProcessMaker\Core\System; +use ProcessMaker\Plugins\PluginRegistry; +use Publisher; use ResultSet; use SpoolRun; -use Users as ClassUsers; use stdClass; -use UsersPeer; -use TaskPeer; +use Users as ClassUsers; /** * Description of ActionsByEmailService @@ -543,48 +539,54 @@ class ActionsByEmail /** * Get the decision from Actions By Email by BPMN dynaform - * @param array $arrayData + * + * @param array $dataRes * * @return string $message */ public function viewFormBpmn(array $dataRes) { - $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); - $configuration['DYN_UID'] = trim($dataRes['DYN_UID']); + $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); + $configuration['DYN_UID'] = trim($dataRes['DYN_UID']); $configuration['CURRENT_DYNAFORM'] = trim($dataRes['DYN_UID']); - $configuration['PRO_UID'] = trim($dataRes['PRO_UID']); + $configuration['PRO_UID'] = trim($dataRes['PRO_UID']); $criteriaD = new Criteria(); - $criteriaD->addSelectColumn(\DynaformPeer::DYN_CONTENT); - $criteriaD->addSelectColumn(\DynaformPeer::PRO_UID); - $criteriaD->add(\DynaformPeer::DYN_UID, trim($dataRes['DYN_UID'])); - $resultD = \DynaformPeer::doSelectRS($criteriaD); + $criteriaD->addSelectColumn(DynaformPeer::DYN_CONTENT); + $criteriaD->addSelectColumn(DynaformPeer::PRO_UID); + $criteriaD->add(DynaformPeer::DYN_UID, trim($dataRes['DYN_UID'])); + $resultD = DynaformPeer::doSelectRS($criteriaD); $resultD->setFetchmode(ResultSet::FETCHMODE_ASSOC); $resultD->next(); $configuration = $resultD->getRow(); - $field = new \stdClass(); + $field = new stdClass(); + $field->type = ''; + $field->label = ''; + $field->options = []; + $obj = new PmDynaform($configuration); + $message = G::LoadTranslation('ID_CASE_RESPONSE_NOT_AVAILABLE'); if ($dataRes['ABE_RES_DATA'] !== '') { - $value = unserialize($dataRes['ABE_RES_DATA']); - $actionField = str_replace(array('@@','@#','@=','@%','@?','@$'), '', $dataRes['ABE_ACTION_FIELD']); - $variables = G::json_decode($configuration['DYN_CONTENT'], true); + $value = unserialize($dataRes['ABE_RES_DATA']); + $actionField = str_replace(['@@', '@#', '@=', '@%', '@?', '@$'], '', $dataRes['ABE_ACTION_FIELD']); + $variables = G::json_decode($configuration['DYN_CONTENT'], true); if (is_array($value)) { - if(isset($variables['items'][0]['items'])) { + if (isset($variables['items'][0]['items'])) { $fields = $variables['items'][0]['items']; } } else { - if(isset($variables['items'][0]['items'])) { + if (isset($variables['items'][0]['items'])) { $fields = $variables['items'][0]['items']; foreach ($fields as $key => $row) { - foreach($row as $var) { - if(isset($var['variable'])) { + foreach ($row as $var) { + if (isset($var['variable'])) { if ($var['variable'] === $actionField) { $field->label = isset($var['label']) ? $var['label'] : ''; - $field->type = isset($var['type']) ? $var['type'] : ''; + $field->type = isset($var['type']) ? $var['type'] : ''; $values = $var['options']; - foreach ($values as $val){ + foreach ($values as $val) { $field->options[$val['value']] = $val['value']; } } @@ -592,22 +594,22 @@ class ActionsByEmail } } } - $message = ''; + switch ($field->type) { case 'dropdown': case 'radiogroup': case 'radio': - $message .= $field->label . ': '; + $message = $field->label . ': '; $message .= $field->options[$value]; break; case 'yesno': - $message .= $field->label . ': '; - $message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO'); + $message = $field->label . ': '; + $message .= $value == 1 ? G::LoadTranslation('ID_YES') : G::LoadTranslation('ID_NO'); break; case 'checkgroup': case 'checkbox': - $message .= $field->label . ': '; - $message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_UNCHECK'); + $message = $field->label . ': '; + $message .= $value == 'On' ? G::LoadTranslation('ID_CHECK') : G::LoadTranslation('ID_UNCHECK'); break; } } From a1ce5db16e28cc626f4fef0a3a57d0b78f26a9c7 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Mon, 26 Nov 2018 14:18:21 -0400 Subject: [PATCH 17/38] PMC-65 --- workflow/engine/classes/Cases.php | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/workflow/engine/classes/Cases.php b/workflow/engine/classes/Cases.php index 125df6d32..00ab4a8b8 100644 --- a/workflow/engine/classes/Cases.php +++ b/workflow/engine/classes/Cases.php @@ -3545,10 +3545,12 @@ class Cases if ($oPMScript->executedOn() === $oPMScript::AFTER_ROUTING) { $appUid = !empty($fieldsCase['APPLICATION']) ? $fieldsCase['APPLICATION'] : ''; if (!empty($appUid)) { - $lastAppFields = $this->loadCase($appUid)['APP_DATA']; - $fieldsTrigger = array_merge($lastAppFields, $fieldsTrigger); + //Update $fieldsCase with the last appData + $fieldsCase = $this->loadCase($appUid)['APP_DATA']; } } + //Merge the current appData with variables changed + $fieldsCase = array_merge($fieldsCase, $fieldsTrigger); //Register the time execution $this->arrayTriggerExecutionTime[$trigger['TRI_UID']] = $oPMScript->scriptExecutionTime; @@ -3567,16 +3569,9 @@ class Cases ); } /*----------------------------------********---------------------------------*/ - - //The Code Scanner can be interrupt the execution - if (empty($fieldsTrigger)) { - return $fieldsCase; - } - - return $fieldsTrigger; - } else { - return $fieldsCase; } + + return $fieldsCase; } /** From 3993a9c1c3514510f8759bdb6d0b20fafc03f771 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Thu, 29 Nov 2018 12:23:57 -0400 Subject: [PATCH 18/38] PMC-71 --- composer.json | 8 +- composer.lock | 852 +++++++++++++++++++++++++++++++------------------- 2 files changed, 542 insertions(+), 318 deletions(-) diff --git a/composer.json b/composer.json index dc34bb592..0d41343b2 100644 --- a/composer.json +++ b/composer.json @@ -31,9 +31,9 @@ "laravel/framework": "5.4.*", "luracast/restler": "^3.0", "bshaffer/oauth2-server-php": "v1.0", - "colosa/pmUI": "release/3.2.4-dev", - "colosa/MichelangeloFE": "release/3.2.4-dev", - "colosa/pmdynaform": "release/3.2.4-dev", + "colosa/pmUI": "release/3.3.1-dev", + "colosa/MichelangeloFE": "release/3.3.1-dev", + "colosa/pmdynaform": "release/3.3.1-dev", "google/apiclient": "1.1.6", "dapphp/securimage": "^3.6", "psr/log": "1.0.0", @@ -52,7 +52,7 @@ }, "require-dev": { "fzaninotto/faker": "^1.7", - "guzzle/guzzle": "~3.1.1", + "guzzlehttp/guzzle": "^6.3", "phpunit/phpunit": "~5.7", "lmc/steward": "^2.2", "behat/behat": "^3.3", diff --git a/composer.lock b/composer.lock index 8cf93aa42..527736ee1 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "0a979177bf17fe938d96211e6a03cc21", + "content-hash": "3242f53453d9e9a3d7fdf3a56961ae40", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -29,7 +29,7 @@ "OAuth2": "src/" } }, - "notification-url": "http://packagist.org/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -111,14 +111,14 @@ }, { "name": "colosa/MichelangeloFE", - "version": "dev-release/3.2.4", + "version": "dev-release/3.3.1", "source": { "type": "git", "url": "git@bitbucket.org:colosa/michelangelofe.git", - "reference": "1780c624132004aa13d80882937f61527adafad5" + "reference": "4ac7ac3ebd1863c258c3f0e048fd3fff668f0184" }, "require": { - "colosa/pmui": "release/3.2.4-dev" + "colosa/pmui": "release/3.3.1-dev" }, "type": "library", "description": "ProcessMaker Michelangelo Front End", @@ -126,15 +126,15 @@ "keywords": [ "js app ProcessMaker" ], - "time": "2018-05-04T18:33:23+00:00" + "time": "2018-11-29T15:23:08+00:00" }, { "name": "colosa/pmDynaform", - "version": "dev-release/3.2.4", + "version": "dev-release/3.3.1", "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmdynaform.git", - "reference": "d22d2d185cac311fb803e0b6891160804091bac1" + "reference": "e4176c9772842904552997702e549035b6ba641d" }, "type": "library", "description": "JS Library to render ProcessMaker Dynaforms", @@ -142,15 +142,15 @@ "keywords": [ "js lib ProcessMaker Dynaforms" ], - "time": "2018-04-23T18:36:59+00:00" + "time": "2018-11-28T17:54:53+00:00" }, { "name": "colosa/pmUI", - "version": "dev-release/3.2.4", + "version": "dev-release/3.3.1", "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmui.git", - "reference": "583402fdb1a5da606d02cc25f4a5573c3ff800b2" + "reference": "711b9796c7b5ad4363b9177d0969ec4abecc8d2e" }, "type": "library", "description": "JS UI Library", @@ -158,7 +158,7 @@ "keywords": [ "js lib ProcessMaker UI" ], - "time": "2018-04-19T20:17:00+00:00" + "time": "2018-11-16T14:26:15+00:00" }, { "name": "dapphp/securimage", @@ -328,12 +328,12 @@ "source": { "type": "git", "url": "https://github.com/GeSHi/geshi-1.0.git", - "reference": "ed9f49a7c7a195f6ed2bc864f5ce03b990b5867d" + "reference": "5861c58981244ab6ee0dd337f096ff14bf15b1eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GeSHi/geshi-1.0/zipball/ed9f49a7c7a195f6ed2bc864f5ce03b990b5867d", - "reference": "ed9f49a7c7a195f6ed2bc864f5ce03b990b5867d", + "url": "https://api.github.com/repos/GeSHi/geshi-1.0/zipball/5861c58981244ab6ee0dd337f096ff14bf15b1eb", + "reference": "5861c58981244ab6ee0dd337f096ff14bf15b1eb", "shasum": "" }, "require-dev": { @@ -360,19 +360,19 @@ ], "description": "Generic Syntax Highlighter", "homepage": "http://qbnz.com/highlighter/", - "time": "2018-03-09T20:04:39+00:00" + "time": "2018-10-01T23:49:06+00:00" }, { "name": "google/apiclient", "version": "1.1.6", "source": { "type": "git", - "url": "https://github.com/google/google-api-php-client.git", + "url": "https://github.com/googleapis/google-api-php-client.git", "reference": "a25dc9d5c109ebb02945ba1ff6336cc937c27628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/google-api-php-client/zipball/a25dc9d5c109ebb02945ba1ff6336cc937c27628", + "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/a25dc9d5c109ebb02945ba1ff6336cc937c27628", "reference": "a25dc9d5c109ebb02945ba1ff6336cc937c27628", "shasum": "" }, @@ -536,28 +536,28 @@ }, { "name": "league/flysystem", - "version": "1.0.45", + "version": "1.0.49", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6" + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a99f94e63b512d75f851b181afcdf0ee9ebef7e6", - "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", "shasum": "" }, "require": { + "ext-fileinfo": "*", "php": ">=5.5.9" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "ext-fileinfo": "*", "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^5.7.10" }, "suggest": { "ext-fileinfo": "Required for MimeType", @@ -616,7 +616,7 @@ "sftp", "storage" ], - "time": "2018-05-07T08:44:23+00:00" + "time": "2018-11-23T23:41:29+00:00" }, { "name": "libchart/libchart", @@ -867,16 +867,16 @@ }, { "name": "nesbot/carbon", - "version": "1.27.0", + "version": "1.36.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "ef81c39b67200dcd7401c24363dcac05ac3a4fe9" + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ef81c39b67200dcd7401c24363dcac05ac3a4fe9", - "reference": "ef81c39b67200dcd7401c24363dcac05ac3a4fe9", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", "shasum": "" }, "require": { @@ -884,10 +884,20 @@ "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2", "phpunit/phpunit": "^4.8.35 || ^5.7" }, + "suggest": { + "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", + "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { "psr-4": { "": "src/" @@ -911,20 +921,20 @@ "datetime", "time" ], - "time": "2018-04-23T09:02:57+00:00" + "time": "2018-11-22T18:23:02+00:00" }, { "name": "paragonie/random_compat", - "version": "v2.0.12", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { @@ -956,10 +966,11 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2018-04-04T21:24:14+00:00" + "time": "2018-07-04T16:31:37+00:00" }, { "name": "pdepend/pdepend", @@ -1116,20 +1127,20 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.3", + "version": "v1.10.6", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "070f0b600b2caca2501e2c9b7e553016e4b0d115" + "reference": "052868b244d31f822796e7e9981f62557eb256d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/070f0b600b2caca2501e2c9b7e553016e4b0d115", - "reference": "070f0b600b2caca2501e2c9b7e553016e4b0d115", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/052868b244d31f822796e7e9981f62557eb256d4", + "reference": "052868b244d31f822796e7e9981f62557eb256d4", "shasum": "" }, "require": { - "pear/console_getopt": "~1.4", + "pear/console_getopt": "~1.3", "pear/pear_exception": "~1.0" }, "replace": { @@ -1156,7 +1167,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2017-02-28T16:46:11+00:00" + "time": "2018-08-22T19:28:09+00:00" }, { "name": "pear/pear_exception", @@ -1395,21 +1406,22 @@ }, { "name": "ramsey/uuid", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" @@ -1417,16 +1429,17 @@ "require-dev": { "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", "mockery/mockery": "^0.9.9", "moontoast/math": "^1.1", "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0", + "phpunit/phpunit": "^4.7|^5.0|^6.5", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -1471,7 +1484,7 @@ "identifier", "uuid" ], - "time": "2018-01-20T00:28:24+00:00" + "time": "2018-07-19T23:38:55+00:00" }, { "name": "smarty/smarty", @@ -1526,16 +1539,16 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", + "version": "v5.4.12", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", "shasum": "" }, "require": { @@ -1576,25 +1589,26 @@ "mail", "mailer" ], - "time": "2018-01-23T07:37:21+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { "name": "symfony/config", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9" + "reference": "8a660daeb65dedbe0b099529f65e61866c055081" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7c2a9d44f4433863e9bca682e7f03609234657f9", - "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9", + "url": "https://api.github.com/repos/symfony/config/zipball/8a660daeb65dedbe0b099529f65e61866c055081", + "reference": "8a660daeb65dedbe0b099529f65e61866c055081", "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0" + "symfony/filesystem": "~2.8|~3.0|~4.0", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/dependency-injection": "<3.3", @@ -1639,20 +1653,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-03-19T22:32:39+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/console", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "5b1fdfa8eb93464bcc36c34da39cedffef822cdf" + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/5b1fdfa8eb93464bcc36c34da39cedffef822cdf", - "reference": "5b1fdfa8eb93464bcc36c34da39cedffef822cdf", + "url": "https://api.github.com/repos/symfony/console/zipball/8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", "shasum": "" }, "require": { @@ -1708,20 +1722,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-04-30T01:22:56+00:00" + "time": "2018-11-26T12:48:07+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "519a80d7c1d95c6cc0b67f686d15fe27c6910de0" + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/519a80d7c1d95c6cc0b67f686d15fe27c6910de0", - "reference": "519a80d7c1d95c6cc0b67f686d15fe27c6910de0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8", + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8", "shasum": "" }, "require": { @@ -1747,7 +1761,7 @@ ], "authors": [ { - "name": "Jean-Fran?ois Simon", + "name": "Jean-François Simon", "email": "jeanfrancois.simon@sensiolabs.com" }, { @@ -1761,20 +1775,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-03-19T22:32:39+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/debug", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f" + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1b95888cfd996484527cb41e8952d9a5eaf7454f", - "reference": "1b95888cfd996484527cb41e8952d9a5eaf7454f", + "url": "https://api.github.com/repos/symfony/debug/zipball/2016b3eec2e49c127dd02d0ef44a35c53181560d", + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d", "shasum": "" }, "require": { @@ -1817,20 +1831,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-04-30T16:53:52+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "54ff9d78b56429f9a1ac12e60bfb6d169c0468e3" + "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/54ff9d78b56429f9a1ac12e60bfb6d169c0468e3", - "reference": "54ff9d78b56429f9a1ac12e60bfb6d169c0468e3", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/622b330ced1bdf29d240bd1c364c038f647eb0f5", + "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5", "shasum": "" }, "require": { @@ -1888,20 +1902,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-04-29T14:04:08+00:00" + "time": "2018-11-20T16:14:23+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8" + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8", - "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d365fc4416ec4980825873962ea5d1b1bca46f1a", + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a", "shasum": "" }, "require": { @@ -1951,24 +1965,25 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-04-06T07:35:25+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541" + "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/253a4490b528597aa14d2bf5aeded6f5e5e4a541", - "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b49b1ca166bd109900e6a1683d9bb1115727ef2d", + "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -2000,20 +2015,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-02-22T10:48:49+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/finder", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433" + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433", - "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433", + "url": "https://api.github.com/repos/symfony/finder/zipball/6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", "shasum": "" }, "require": { @@ -2049,20 +2064,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-04-04T05:07:11+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "edc43b1a50402bb06b5111eb86b275c87a93e373" + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/edc43b1a50402bb06b5111eb86b275c87a93e373", - "reference": "edc43b1a50402bb06b5111eb86b275c87a93e373", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38", "shasum": "" }, "require": { @@ -2103,20 +2118,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-04-30T01:05:13+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "280fcedbcb3dabcc467a9c1734054af61928fe4f" + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/280fcedbcb3dabcc467a9c1734054af61928fe4f", - "reference": "280fcedbcb3dabcc467a9c1734054af61928fe4f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/78528325d90e5ad54a6e9eca750fe176932bc4fa", + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa", "shasum": "" }, "require": { @@ -2124,11 +2139,12 @@ "psr/log": "~1.0", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.4|^4.0.4" + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, @@ -2142,7 +2158,7 @@ "symfony/config": "~2.8|~3.0|~4.0", "symfony/console": "~2.8|~3.0|~4.0", "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.5|^4.0.5", + "symfony/dependency-injection": "^3.4.10|^4.0.10", "symfony/dom-crawler": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", @@ -2191,20 +2207,78 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-04-30T19:27:02+00:00" + "time": "2018-11-26T14:04:48+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.8.0", + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "3296adf6a6454a050679cde90f95350ad604b171" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", - "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -2216,7 +2290,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2250,30 +2324,30 @@ "portable", "shim" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.8.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2309,20 +2383,20 @@ "portable", "shim" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/process", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b" + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b7d64e852886319e93ddfdecff0d744ab87658b", - "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b", + "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", "shasum": "" }, "require": { @@ -2358,20 +2432,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:22:50+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { "name": "symfony/routing", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9deb375986f5d1f37283d8386716d26985a0f4b6" + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9deb375986f5d1f37283d8386716d26985a0f4b6", - "reference": "9deb375986f5d1f37283d8386716d26985a0f4b6", + "url": "https://api.github.com/repos/symfony/routing/zipball/86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c", "shasum": "" }, "require": { @@ -2384,7 +2458,6 @@ }, "require-dev": { "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0", "symfony/config": "^3.3.1|~4.0", "symfony/dependency-injection": "~3.3|~4.0", @@ -2436,20 +2509,20 @@ "uri", "url" ], - "time": "2018-04-12T09:01:03+00:00" + "time": "2018-11-26T08:40:22+00:00" }, { "name": "symfony/translation", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c" + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c", - "reference": "d4af50f46cd8171fd5c1cdebdb9a8bbcd8078c6c", + "url": "https://api.github.com/repos/symfony/translation/zipball/bdbe940ed3ef4179f86032086c32d3a858becc0f", + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f", "shasum": "" }, "require": { @@ -2504,20 +2577,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-04-30T01:22:56+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73" + "reference": "6867713afe6c50ade2f34ed6435563b065a52145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e6545672d8c9ce70dd472adc2f8b03155a46f73", - "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145", "shasum": "" }, "require": { @@ -2573,7 +2646,7 @@ "debug", "dump" ], - "time": "2018-04-26T12:42:15+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -2624,16 +2697,16 @@ }, { "name": "typo3/class-alias-loader", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/TYPO3/class-alias-loader.git", - "reference": "a9dd295c81ed0b51455644be420ab9210cad688f" + "reference": "4972f9f6c2bad07ab1620b5c9717fa626e9b03b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3/class-alias-loader/zipball/a9dd295c81ed0b51455644be420ab9210cad688f", - "reference": "a9dd295c81ed0b51455644be420ab9210cad688f", + "url": "https://api.github.com/repos/TYPO3/class-alias-loader/zipball/4972f9f6c2bad07ab1620b5c9717fa626e9b03b0", + "reference": "4972f9f6c2bad07ab1620b5c9717fa626e9b03b0", "shasum": "" }, "require": { @@ -2646,7 +2719,7 @@ "require-dev": { "composer/composer": "dev-master", "mikey179/vfsstream": "1.4.*@dev", - "phpunit/phpunit": "~4.7.0" + "phpunit/phpunit": "^4.8" }, "type": "composer-plugin", "extra": { @@ -2678,32 +2751,32 @@ "classloader", "composer" ], - "time": "2015-10-06T10:25:44+00:00" + "time": "2018-10-03T12:49:56+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v2.4.0", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", "shasum": "" }, "require": { "php": ">=5.3.9" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -2713,7 +2786,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause-Attribution" + "BSD-3-Clause" ], "authors": [ { @@ -2728,22 +2801,22 @@ "env", "environment" ], - "time": "2016-09-01T10:05:43+00:00" + "time": "2018-07-29T20:33:41+00:00" } ], "packages-dev": [ { "name": "beberlei/assert", - "version": "v2.9.5", + "version": "v2.9.6", "source": { "type": "git", "url": "https://github.com/beberlei/assert.git", - "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89" + "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/c07fe163d6a3b3e4b1275981ec004397954afa89", - "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89", + "url": "https://api.github.com/repos/beberlei/assert/zipball/ec9e4cf0b63890edce844ee3922e2b95a526e936", + "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936", "shasum": "" }, "require": { @@ -2785,20 +2858,20 @@ "assertion", "validation" ], - "time": "2018-04-16T11:18:27+00:00" + "time": "2018-06-11T17:15:25+00:00" }, { "name": "behat/behat", - "version": "v3.4.3", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2" + "reference": "e4bce688be0c2029dc1700e46058d86428c63cab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/d60b161bff1b95ec4bb80bb8cb210ccf890314c2", - "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2", + "url": "https://api.github.com/repos/Behat/Behat/zipball/e4bce688be0c2029dc1700e46058d86428c63cab", + "reference": "e4bce688be0c2029dc1700e46058d86428c63cab", "shasum": "" }, "require": { @@ -2808,9 +2881,9 @@ "ext-mbstring": "*", "php": ">=5.3.3", "psr/container": "^1.0", - "symfony/class-loader": "~2.1||~3.0||~4.0", + "symfony/class-loader": "~2.1||~3.0", "symfony/config": "~2.3||~3.0||~4.0", - "symfony/console": "~2.5||~3.0||~4.0", + "symfony/console": "~2.7.40||^2.8.33||~3.3.15||^3.4.3||^4.0.3", "symfony/dependency-injection": "~2.1||~3.0||~4.0", "symfony/event-dispatcher": "~2.1||~3.0||~4.0", "symfony/translation": "~2.3||~3.0||~4.0", @@ -2821,18 +2894,13 @@ "phpunit/phpunit": "^4.8.36|^6.3", "symfony/process": "~2.5|~3.0|~4.0" }, - "suggest": { - "behat/mink-extension": "for integration with Mink testing framework", - "behat/symfony2-extension": "for integration with Symfony2 web framework", - "behat/yii-extension": "for integration with Yii web framework" - }, "bin": [ "bin/behat" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "3.5.x-dev" } }, "autoload": { @@ -2868,7 +2936,7 @@ "symfony", "testing" ], - "time": "2017-11-27T10:37:56+00:00" + "time": "2018-08-10T18:56:51+00:00" }, { "name": "behat/gherkin", @@ -3224,34 +3292,39 @@ }, { "name": "facebook/webdriver", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/facebook/php-webdriver.git", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605" + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", "shasum": "" }, "require": { "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", "ext-zip": "*", "php": "^5.6 || ~7.0", "symfony/process": "^2.8 || ^3.1 || ^4.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", - "guzzle/guzzle": "^3.4.1", - "php-coveralls/php-coveralls": "^1.0.2", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", "php-mock/php-mock-phpunit": "^1.1", "phpunit/phpunit": "^5.7", "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", "squizlabs/php_codesniffer": "^2.6", "symfony/var-dumper": "^3.3 || ^4.0" }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, "type": "library", "extra": { "branch-alias": { @@ -3275,7 +3348,7 @@ "selenium", "webdriver" ], - "time": "2017-11-15T11:08:09+00:00" + "time": "2018-05-16T17:37:13+00:00" }, { "name": "florianwolters/component-core-stringutils", @@ -3419,16 +3492,16 @@ }, { "name": "fzaninotto/faker", - "version": "v1.7.1", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d" + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", - "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", "shasum": "" }, "require": { @@ -3436,7 +3509,7 @@ }, "require-dev": { "ext-intl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7", "squizlabs/php_codesniffer": "^1.5" }, "type": "library", @@ -3456,7 +3529,7 @@ ], "authors": [ { - "name": "François Zaninotto" + "name": "François Zaninotto" } ], "description": "Faker is a PHP library that generates fake data for you.", @@ -3465,7 +3538,7 @@ "faker", "fixtures" ], - "time": "2017-08-15T16:48:10+00:00" + "time": "2018-07-12T10:23:15+00:00" }, { "name": "graphp/algorithms", @@ -3518,70 +3591,47 @@ "time": "2015-03-08T10:12:01+00:00" }, { - "name": "guzzle/guzzle", - "version": "v3.1.2", + "name": "guzzlehttp/guzzle", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "7901ea7d27373d0cc85eac6f6694e4c2ced90a26" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7901ea7d27373d0cc85eac6f6694e4c2ced90a26", - "reference": "7901ea7d27373d0cc85eac6f6694e4c2ced90a26", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "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" + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" }, "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.*" + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "6.3-dev" } }, "autoload": { - "psr-0": { - "Guzzle\\Tests": "tests/", - "Guzzle": "src/" + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" } }, - "notification-url": "http://packagist.org/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3590,13 +3640,9 @@ "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", + "description": "Guzzle is a PHP HTTP client library", "homepage": "http://guzzlephp.org/", "keywords": [ "client", @@ -3607,8 +3653,123 @@ "rest", "web service" ], - "abandoned": "guzzlehttp/guzzle", - "time": "2013-01-28T00:07:40+00:00" + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" }, { "name": "instaclick/php-webdriver", @@ -3671,16 +3832,16 @@ }, { "name": "lmc/steward", - "version": "2.3.3", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/lmc-eu/steward.git", - "reference": "f40db91e7378a373ada4505932d8ba2d8a4ea04a" + "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lmc-eu/steward/zipball/f40db91e7378a373ada4505932d8ba2d8a4ea04a", - "reference": "f40db91e7378a373ada4505932d8ba2d8a4ea04a", + "url": "https://api.github.com/repos/lmc-eu/steward/zipball/a4738179a6f3ccee72fa20957c8546c4c53c9ab9", + "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9", "shasum": "" }, "require": { @@ -3748,7 +3909,7 @@ "testing", "webdriver" ], - "time": "2018-03-12T00:56:44+00:00" + "time": "2018-07-26T22:03:36+00:00" }, { "name": "myclabs/deep-copy", @@ -3866,27 +4027,27 @@ }, { "name": "nette/finder", - "version": "v2.4.1", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/nette/finder.git", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547" + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/4d43a66d072c57d585bf08a3ef68d3587f7e9547", - "reference": "4d43a66d072c57d585bf08a3ef68d3587f7e9547", + "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", "shasum": "" }, "require": { - "nette/utils": "^2.4 || ~3.0.0", + "nette/utils": "~2.4", "php": ">=5.6.0" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "^2.0", + "nette/tester": "~2.0", "tracy/tracy": "^2.3" }, "type": "library", @@ -3916,9 +4077,15 @@ "homepage": "https://nette.org/contributors" } ], - "description": "Nette Finder: Files Searching", + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", "homepage": "https://nette.org", - "time": "2017-07-10T23:47:08+00:00" + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2018-06-28T11:49:23+00:00" }, { "name": "nette/reflection", @@ -3986,16 +4153,16 @@ }, { "name": "nette/utils", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5" + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/183069866dc477fcfbac393ed486aaa6d93d19a5", - "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", "shasum": "" }, "require": { @@ -4046,7 +4213,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "? Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", "homepage": "https://nette.org", "keywords": [ "array", @@ -4064,7 +4231,7 @@ "utility", "validation" ], - "time": "2018-05-02T17:16:08+00:00" + "time": "2018-09-18T10:22:16+00:00" }, { "name": "ondram/ci-detector", @@ -4267,16 +4434,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.7.6", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { @@ -4288,12 +4455,12 @@ }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -4326,7 +4493,7 @@ "spy", "stub" ], - "time": "2018-04-18T13:57:24+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -4718,6 +4885,56 @@ ], "time": "2017-06-30T09:13:00+00:00" }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -5233,16 +5450,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.2.3", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "4842476c434e375f9d3182ff7b89059583aa8b27" + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4842476c434e375f9d3182ff7b89059583aa8b27", - "reference": "4842476c434e375f9d3182ff7b89059583aa8b27", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", "shasum": "" }, "require": { @@ -5280,20 +5497,20 @@ "phpcs", "standards" ], - "time": "2018-02-20T21:35:23+00:00" + "time": "2018-09-23T23:08:17+00:00" }, { "name": "symfony/class-loader", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e" + "reference": "420458095cf60025eb0841276717e0da7f75e50e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e", - "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/420458095cf60025eb0841276717e0da7f75e50e", + "reference": "420458095cf60025eb0841276717e0da7f75e50e", "shasum": "" }, "require": { @@ -5336,20 +5553,20 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/options-resolver", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e" + "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f3109a6aedd20e35c3a33190e932c2b063b7b50e", - "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2cf5aa084338c1f67166013aebe87e2026bbe953", + "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953", "shasum": "" }, "require": { @@ -5390,20 +5607,20 @@ "configuration", "options" ], - "time": "2018-01-11T07:56:07+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af" + "reference": "0f43969ab2718de55c1c1158dce046668079788d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/eb17cfa072cab26537ac37e9c4ece6c0361369af", - "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f43969ab2718de55c1c1158dce046668079788d", + "reference": "0f43969ab2718de55c1c1158dce046668079788d", "shasum": "" }, "require": { @@ -5439,24 +5656,25 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2018-02-17T14:55:25+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.9", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "033cfa61ef06ee0847e056e530201842b6e926c3" + "reference": "291e13d808bec481eab83f301f7bff3e699ef603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/033cfa61ef06ee0847e056e530201842b6e926c3", - "reference": "033cfa61ef06ee0847e056e530201842b6e926c3", + "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", + "reference": "291e13d808bec481eab83f301f7bff3e699ef603", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/console": "<3.4" @@ -5497,7 +5715,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-04-08T08:21:29+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "webmozart/assert", @@ -5551,55 +5769,61 @@ }, { "name": "wimg/php-compatibility", - "version": "8.1.0", + "version": "9.0.0", "source": { "type": "git", - "url": "https://github.com/wimg/PHPCompatibility.git", - "reference": "4ac01e4fe8faaa4f8d3b3cd06ea92e5418ce472e" + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wimg/PHPCompatibility/zipball/4ac01e4fe8faaa4f8d3b3cd06ea92e5418ce472e", - "reference": "4ac01e4fe8faaa4f8d3b3cd06ea92e5418ce472e", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/e9f4047e5edf53c88f36f1dafc0d49454ce13e25", + "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25", "shasum": "" }, "require": { "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.2 || ^3.0.2" + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" }, "conflict": { "squizlabs/php_codesniffer": "2.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0" + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3" + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", - "autoload": { - "psr-4": { - "PHPCompatibility\\": "PHPCompatibility/" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-3.0-or-later" ], "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + }, { "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", "role": "lead" } ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP version compatibility.", + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", "keywords": [ "compatibility", "phpcs", "standards" ], - "time": "2017-12-27T21:58:38+00:00" + "time": "2018-10-07T17:38:02+00:00" } ], "aliases": [], From cfe13968ddf45e0007e5a003149261d2f40eaf50 Mon Sep 17 00:00:00 2001 From: Fabio Guachalla Date: Thu, 6 Dec 2018 08:34:26 -0400 Subject: [PATCH 19/38] PMC-107:Unable to import processes with extension pmx2 (granular) --- config/customMimeTypes.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/config/customMimeTypes.php b/config/customMimeTypes.php index c78f3e0fa..45d063951 100644 --- a/config/customMimeTypes.php +++ b/config/customMimeTypes.php @@ -1,9 +1,9 @@ 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pm' => 'text/plain', 'pmt' => 'text/plain', - 'pmx' => 'application/xml', + 'pmx' => ['application/xml', 'text/xml', 'text/html'], + 'pmx2' => ['application/xml', 'text/xml', 'text/html'], 'po' => 'text/x-po', 'pdf' => 'application/pdf', 'png' => 'image/png', From 420e00acca3050d5fdb27a782eb10b7cd5b00909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Mon, 10 Dec 2018 13:05:28 -0400 Subject: [PATCH 20/38] PMC-191 --- workflow/engine/classes/Processes.php | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/workflow/engine/classes/Processes.php b/workflow/engine/classes/Processes.php index c81813e60..b826d445f 100644 --- a/workflow/engine/classes/Processes.php +++ b/workflow/engine/classes/Processes.php @@ -1994,6 +1994,10 @@ class Processes $criteria->add(InputDocumentPeer::INP_DOC_MAX_FILESIZE, $row['INP_DOC_MAX_FILESIZE']); $criteria->add(InputDocumentPeer::INP_DOC_MAX_FILESIZE_UNIT, $row['INP_DOC_MAX_FILESIZE_UNIT']); BasePeer::doInsert($criteria, $con); + + //Insert in CONTENT + $labels = ['INP_DOC_TITLE' => $row['INP_DOC_TITLE'], 'INP_DOC_DESCRIPTION' => $row['INP_DOC_DESCRIPTION']]; + $this->insertToContentTable($con, $labels, $row['INP_DOC_UID'], SYS_LANG); } $con->commit(); } catch (Exception $e) { @@ -2178,6 +2182,13 @@ class Processes $criteria->add(OutputDocumentPeer::OUT_DOC_PDF_SECURITY_PERMISSIONS, $row['OUT_DOC_PDF_SECURITY_PERMISSIONS']); $criteria->add(OutputDocumentPeer::OUT_DOC_OPEN_TYPE, $row['OUT_DOC_OPEN_TYPE']); BasePeer::doInsert($criteria, $con); + + //Insert in CONTENT + $labels = ['OUT_DOC_TITLE' => $row['OUT_DOC_TITLE'], + 'OUT_DOC_DESCRIPTION' => $row['OUT_DOC_DESCRIPTION'], + 'OUT_DOC_FILENAME' => $row['OUT_DOC_FILENAME'], + 'OUT_DOC_TEMPLATE' => $row['OUT_DOC_TEMPLATE']]; + $this->insertToContentTable($con, $labels, $row['OUT_DOC_UID'], SYS_LANG); } $con->commit(); } catch (Exception $e) { @@ -3104,6 +3115,10 @@ class Processes $criteria->add(DynaformPeer::DYN_VERSION, $row['DYN_VERSION']); $criteria->add(DynaformPeer::DYN_UPDATE_DATE, $row['DYN_UPDATE_DATE']); BasePeer::doInsert($criteria, $con); + + //Insert in CONTENT + $labels = ['DYN_TITLE' => $row['DYN_TITLE'], 'DYN_DESCRIPTION' => $row['DYN_DESCRIPTION']]; + $this->insertToContentTable($con, $labels, $row['DYN_UID'], SYS_LANG); } $con->commit(); } catch (Exception $e) { @@ -3249,6 +3264,10 @@ class Processes $criteria->add(TriggersPeer::TRI_WEBBOT, $row['TRI_WEBBOT']); $criteria->add(TriggersPeer::TRI_PARAM, $row['TRI_PARAM']); BasePeer::doInsert($criteria, $con); + + //Insert in CONTENT + $labels = ['TRI_TITLE' => $row['TRI_TITLE'], 'TRI_DESCRIPTION' => $row['TRI_DESCRIPTION']]; + $this->insertToContentTable($con, $labels, $row['TRI_UID'], SYS_LANG); } $con->commit(); } catch (Exception $e) { @@ -4050,6 +4069,10 @@ class Processes $criteria->add(GroupwfPeer::GRP_LDAP_DN, $row['GRP_LDAP_DN']); $criteria->add(GroupwfPeer::GRP_UX, $row['GRP_UX']); BasePeer::doInsert($criteria, $con); + + //Insert in CONTENT + $labels = ['GRP_TITLE' => $row['GRP_TITLE']]; + $this->insertToContentTable($con, $labels, $row['GRP_UID'], SYS_LANG); } $con->commit(); } catch (Exception $e) { @@ -6375,4 +6398,38 @@ class Processes $proTitle = substr($proTitle, 0, strlen($proTitle) - $excess); return $proTitle; } + + /** + * Delete, insert and update labels in CONTENT related to a process element + * + * @param object $connection + * @param array $conCategories + * @param string $conId + * @param string $conLang + * @param string $conParent + */ + private function insertToContentTable($connection, array $conCategories, $conId, $conLang, $conParent = '') { + //Prepare to delete labels related in CONTENT + $criteria = new Criteria(ContentPeer::DATABASE_NAME); + $criteria->addSelectColumn('*'); + $criteria->add(ContentPeer::CON_CATEGORY, $conCategories, Criteria::IN); + $criteria->add(ContentPeer::CON_ID, $conId); + $criteria->add(ContentPeer::CON_LANG, $conLang); + $criteria->add(ContentPeer::CON_PARENT, $conParent); + BasePeer::doDelete($criteria, $connection); + + foreach ($conCategories as $conCategory => $conValue) { + //Prepare the insert label in CONTENT + $criteria = new Criteria(ContentPeer::DATABASE_NAME); + $criteria->add(ContentPeer::CON_CATEGORY, $conCategory); + $criteria->add(ContentPeer::CON_ID, $conId); + $criteria->add(ContentPeer::CON_LANG, $conLang); + $criteria->add(ContentPeer::CON_VALUE, $conValue); + $criteria->add(ContentPeer::CON_PARENT, $conParent); + BasePeer::doInsert($criteria, $connection); + + //Updating all related labels in CONTENT + Content::updateEqualValue($conCategory, $conParent, $conId, $conValue); + } + } } From 12d8b41465028a2326e51303e5590fc6c190a398 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Tue, 11 Dec 2018 07:48:44 -0400 Subject: [PATCH 21/38] PMC-183 --- workflow/engine/methods/login/authentication.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index 7f4770c7e..5058e0950 100644 --- a/workflow/engine/methods/login/authentication.php +++ b/workflow/engine/methods/login/authentication.php @@ -317,12 +317,14 @@ try { } $userPropertyInfo = $userProperty->loadOrCreateIfNotExists($_SESSION['USER_LOGGED'], array('USR_PASSWORD_HISTORY' => serialize(array(G::encryptOld($pwd))))); + //Get the errors in the password $errorInPassword = $userProperty->validatePassword( $_POST['form']['USR_PASSWORD'], $userPropertyInfo['USR_LAST_UPDATE_DATE'], $userPropertyInfo['USR_LOGGED_NEXT_TIME'] ); - + //Get the policies enabled + $policiesInPassword = $userProperty->validatePassword('', date('Y-m-d'), $userPropertyInfo['USR_LOGGED_NEXT_TIME'], true); //Enable change password from GAP if (!isset($enableChangePasswordAfterNextLogin)) { $enableChangePasswordAfterNextLogin = true; @@ -333,14 +335,13 @@ try { define('NO_DISPLAY_USERNAME', 1); } //We will to get the message for the login - $messPassword = []; - $policySection = $userProperty->getMessageValidatePassword($errorInPassword, false); + $messPassword = $policySection = $userProperty->getMessageValidatePassword($policiesInPassword, false); $changePassword = ''; if (array_search('ID_PPP_CHANGE_PASSWORD_AFTER_NEXT_LOGIN', $errorInPassword)) { $changePassword .= G::LoadTranslation('ID_PPP_CHANGE_PASSWORD_AFTER_NEXT_LOGIN') . '

'; } - $messPassword['DESCRIPTION'] = $changePassword . $policySection['DESCRIPTION'] . '
'; + $messPassword['DESCRIPTION'] = $changePassword . $policySection['DESCRIPTION'] . ''; $G_PUBLISH = new Publisher; $version = explode('.', trim(file_get_contents(PATH_GULLIVER . 'VERSION'))); $version = isset($version[0]) ? intval($version[0]) : 0; From a8213432ae318e2ae6155d5abc872ee5de954e68 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Thu, 13 Dec 2018 14:42:05 -0400 Subject: [PATCH 22/38] PMC-235 --- gulliver/system/class.g.php | 2 +- workflow/engine/controllers/adminProxy.php | 2 +- workflow/engine/controllers/pmTablesProxy.php | 2 +- workflow/engine/methods/appFolder/appFolderAjax.php | 2 +- workflow/engine/methods/enterprise/addonsStoreAction.php | 2 +- workflow/engine/methods/enterprise/pluginsImportFile.php | 2 +- workflow/engine/methods/processes/processes_Import_Ajax.php | 2 +- workflow/engine/methods/processes/processes_doUpload.php | 2 +- workflow/engine/methods/setup/languages_Import.php | 2 +- workflow/engine/methods/setup/pluginsImportFile.php | 2 +- workflow/engine/methods/setup/skin_Ajax.php | 2 +- .../src/ProcessMaker/BusinessModel/Cases/InputDocument.php | 2 +- .../src/ProcessMaker/Validation/ValidationUploadedFiles.php | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 5b63e720e..1ed4a8568 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -5490,7 +5490,7 @@ class G public static function verifyInputDocExtension($InpDocAllowedFiles, $fileName, $filesTmpName) { $error = null; - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) use(&$error) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) use(&$error) { $error = new stdclass(); $error->status = false; $error->message = $validator->getMessage(); diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index 4809054bc..26125e591 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -1026,7 +1026,7 @@ class adminProxy extends HttpProxyController */ public function uploadImage() { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { echo G::json_encode([ 'success' => true, 'failed' => true, diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 798271ccd..4ef2703b6 100644 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -725,7 +725,7 @@ class pmTablesProxy extends HttpProxyController } try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new ExceptionRestApi($validator->getMessage()); }); $result = new stdClass(); diff --git a/workflow/engine/methods/appFolder/appFolderAjax.php b/workflow/engine/methods/appFolder/appFolderAjax.php index 33072d250..e7ef06ae5 100644 --- a/workflow/engine/methods/appFolder/appFolderAjax.php +++ b/workflow/engine/methods/appFolder/appFolderAjax.php @@ -1446,7 +1446,7 @@ function checkTree($uidOriginFolder, $uidNewFolder) */ function uploadExternalDocument() { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { $response = [ 'error' => $validator->getMessage(), 'message' => $validator->getMessage(), diff --git a/workflow/engine/methods/enterprise/addonsStoreAction.php b/workflow/engine/methods/enterprise/addonsStoreAction.php index 05ff152dd..bd66c230c 100644 --- a/workflow/engine/methods/enterprise/addonsStoreAction.php +++ b/workflow/engine/methods/enterprise/addonsStoreAction.php @@ -18,7 +18,7 @@ function runBgProcessmaker($task, $log) } try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new ExceptionRestApi($validator->getMessage()); }); if (isset($_REQUEST["action"])) { diff --git a/workflow/engine/methods/enterprise/pluginsImportFile.php b/workflow/engine/methods/enterprise/pluginsImportFile.php index 64939795f..627a66672 100644 --- a/workflow/engine/methods/enterprise/pluginsImportFile.php +++ b/workflow/engine/methods/enterprise/pluginsImportFile.php @@ -36,7 +36,7 @@ $response = array(); $status = 1; try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new Exception($validator->getMessage()); }); diff --git a/workflow/engine/methods/processes/processes_Import_Ajax.php b/workflow/engine/methods/processes/processes_Import_Ajax.php index 0f724bc58..8804289aa 100644 --- a/workflow/engine/methods/processes/processes_Import_Ajax.php +++ b/workflow/engine/methods/processes/processes_Import_Ajax.php @@ -25,7 +25,7 @@ use \ProcessMaker\Importer\XmlImporter; use ProcessMaker\Validation\ValidationUploadedFiles; -ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { +ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { echo G::json_encode([ 'status' => 'ERROR', 'success' => true, diff --git a/workflow/engine/methods/processes/processes_doUpload.php b/workflow/engine/methods/processes/processes_doUpload.php index db0077ef9..f8dc3b0d5 100644 --- a/workflow/engine/methods/processes/processes_doUpload.php +++ b/workflow/engine/methods/processes/processes_doUpload.php @@ -27,7 +27,7 @@ if ($RBAC->userCanAccess('PM_FACTORY') == 1) { } } - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { $response = [ 'result' => 0, 'msg' => $validator->getMessage() diff --git a/workflow/engine/methods/setup/languages_Import.php b/workflow/engine/methods/setup/languages_Import.php index 1a1f3fa55..757a692f3 100644 --- a/workflow/engine/methods/setup/languages_Import.php +++ b/workflow/engine/methods/setup/languages_Import.php @@ -26,7 +26,7 @@ if ($access != 1) { $result = new stdClass(); try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new Exception($validator->getMessage()); }); //if the xmlform path is writeable diff --git a/workflow/engine/methods/setup/pluginsImportFile.php b/workflow/engine/methods/setup/pluginsImportFile.php index 8ddce45fa..79a051d5f 100644 --- a/workflow/engine/methods/setup/pluginsImportFile.php +++ b/workflow/engine/methods/setup/pluginsImportFile.php @@ -32,7 +32,7 @@ global $RBAC; $RBAC->requirePermissions('PM_SETUP_ADVANCE'); try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new Exception($validator->getMessage()); }); //load the variables diff --git a/workflow/engine/methods/setup/skin_Ajax.php b/workflow/engine/methods/setup/skin_Ajax.php index ad47b31bb..36486679e 100644 --- a/workflow/engine/methods/setup/skin_Ajax.php +++ b/workflow/engine/methods/setup/skin_Ajax.php @@ -200,7 +200,7 @@ function newSkin ($baseSkin = 'classic') function importSkin () { try { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { throw new Exception($validator->getMessage()); }); if (! isset( $_FILES['uploadedFile'] )) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php index 1b73cb143..a2f76f27c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php @@ -937,7 +937,7 @@ class InputDocument */ public function uploadFileCase($files, $caseInstance, $aData, $userUid, $appUid, $delIndex) { - ValidationUploadedFiles::getValidationUploadedFiles()->dispach(function($validator) { + ValidationUploadedFiles::getValidationUploadedFiles()->dispatch(function($validator) { G::SendMessageText($validator->getMessage(), "ERROR"); $url = explode("sys" . config("system.workspace"), $_SERVER['HTTP_REFERER']); G::header("location: " . "/sys" . config("system.workspace") . $url[1]); diff --git a/workflow/engine/src/ProcessMaker/Validation/ValidationUploadedFiles.php b/workflow/engine/src/ProcessMaker/Validation/ValidationUploadedFiles.php index 42b11989b..ccd5cc6f1 100644 --- a/workflow/engine/src/ProcessMaker/Validation/ValidationUploadedFiles.php +++ b/workflow/engine/src/ProcessMaker/Validation/ValidationUploadedFiles.php @@ -216,7 +216,7 @@ class ValidationUploadedFiles * @param function $callback * @return $this */ - public function dispach($callback) + public function dispatch($callback) { if (!empty($this->fails[0])) { if (!empty($callback) && is_callable($callback)) { From 633ef25a3e68cbe8ac4a41fc3e0d6b17a23535f5 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Fri, 14 Dec 2018 08:12:34 -0400 Subject: [PATCH 23/38] PMC-314 --- workflow/engine/classes/Processes.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/Processes.php b/workflow/engine/classes/Processes.php index b826d445f..06d9d7606 100644 --- a/workflow/engine/classes/Processes.php +++ b/workflow/engine/classes/Processes.php @@ -1029,7 +1029,7 @@ class Processes $oData->process['PRO_DYNAFORMS']['PROCESS'] = ''; } - if ($oData->process['PRO_DYNAFORMS']['PROCESS'] != '') { + if (!empty($oData->process['PRO_DYNAFORMS']['PROCESS']) && !empty($map[$oData->process['PRO_DYNAFORMS']['PROCESS']])) { $oData->process['PRO_DYNAFORMS']['PROCESS'] = $map[$oData->process['PRO_DYNAFORMS']['PROCESS']]; } @@ -1996,7 +1996,10 @@ class Processes BasePeer::doInsert($criteria, $con); //Insert in CONTENT - $labels = ['INP_DOC_TITLE' => $row['INP_DOC_TITLE'], 'INP_DOC_DESCRIPTION' => $row['INP_DOC_DESCRIPTION']]; + $labels = [ + 'INP_DOC_TITLE' => $row['INP_DOC_TITLE'], + 'INP_DOC_DESCRIPTION' => !empty($row['INP_DOC_DESCRIPTION']) ? $row['INP_DOC_DESCRIPTION'] : '' + ]; $this->insertToContentTable($con, $labels, $row['INP_DOC_UID'], SYS_LANG); } $con->commit(); @@ -2185,7 +2188,7 @@ class Processes //Insert in CONTENT $labels = ['OUT_DOC_TITLE' => $row['OUT_DOC_TITLE'], - 'OUT_DOC_DESCRIPTION' => $row['OUT_DOC_DESCRIPTION'], + 'OUT_DOC_DESCRIPTION' => !empty($row['OUT_DOC_DESCRIPTION']) ? $row['OUT_DOC_DESCRIPTION'] : '', 'OUT_DOC_FILENAME' => $row['OUT_DOC_FILENAME'], 'OUT_DOC_TEMPLATE' => $row['OUT_DOC_TEMPLATE']]; $this->insertToContentTable($con, $labels, $row['OUT_DOC_UID'], SYS_LANG); @@ -3117,7 +3120,10 @@ class Processes BasePeer::doInsert($criteria, $con); //Insert in CONTENT - $labels = ['DYN_TITLE' => $row['DYN_TITLE'], 'DYN_DESCRIPTION' => $row['DYN_DESCRIPTION']]; + $labels = [ + 'DYN_TITLE' => $row['DYN_TITLE'], + 'DYN_DESCRIPTION' => !empty($row['DYN_DESCRIPTION']) ? $row['DYN_DESCRIPTION'] : '' + ]; $this->insertToContentTable($con, $labels, $row['DYN_UID'], SYS_LANG); } $con->commit(); @@ -3266,7 +3272,10 @@ class Processes BasePeer::doInsert($criteria, $con); //Insert in CONTENT - $labels = ['TRI_TITLE' => $row['TRI_TITLE'], 'TRI_DESCRIPTION' => $row['TRI_DESCRIPTION']]; + $labels = [ + 'TRI_TITLE' => $row['TRI_TITLE'], + 'TRI_DESCRIPTION' => !empty($row['TRI_DESCRIPTION']) ? $row['TRI_DESCRIPTION'] : '' + ]; $this->insertToContentTable($con, $labels, $row['TRI_UID'], SYS_LANG); } $con->commit(); From 6cefe5bdd1a9a20f33e1d250508b1b333c72920f Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Thu, 13 Dec 2018 16:38:32 -0400 Subject: [PATCH 24/38] PMC-201 --- config/customMimeTypes.php | 470 +++++++++++++++++++++++++++++++++++-- 1 file changed, 451 insertions(+), 19 deletions(-) diff --git a/config/customMimeTypes.php b/config/customMimeTypes.php index 45d063951..540d9d63a 100644 --- a/config/customMimeTypes.php +++ b/config/customMimeTypes.php @@ -5,33 +5,465 @@ * this affects the whole application globally. * * https://www.iana.org/assignments/media-types/media-types.xml + * https://www.sitepoint.com/mime-types-complete-list/ */ return [ - 'dat' => 'text/plain', + '3dm' => 'x-world/x-3dmf', + '3dmf' => 'x-world/x-3dmf', + 'a' => 'application/octet-stream', + 'aab' => 'application/x-authorware-bin', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'abc' => 'text/vnd.abc', + 'acgi' => 'text/html', + 'afl' => 'video/animaflex', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'aim' => 'application/x-aim', + 'aip' => 'text/x-audiosoft-intra', + 'ani' => 'application/x-navi-animation', + 'aos' => 'application/x-nokia-9000-communicator-add-on-software', + 'aps' => 'application/mime', + 'arc' => 'application/octet-stream', + 'arj' => 'application/octet-stream', + 'art' => 'image/x-jg', + 'asf' => 'video/x-ms-asf', + 'asm' => 'text/x-asm', + 'asp' => 'text/asp', + 'asx' => 'video/x-ms-asf-plugin', + 'au' => 'audio/x-au', + 'avi' => 'video/x-msvideo', + 'avs' => 'video/avs-video', + 'bcpio' => 'application/x-bcpio', + 'bin' => 'application/x-macbinary', + 'bm' => 'image/bmp', + 'bmp' => 'image/x-windows-bmp', + 'boo' => 'application/book', + 'book' => 'application/book', + 'boz' => 'application/x-bzip2', + 'bsh' => 'application/x-bsh', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-c', + 'c++' => 'text/plain', + 'cat' => 'application/vnd.ms-pki.seccat', + 'cc' => 'text/x-c', + 'ccad' => 'application/clariscad', + 'cco' => 'application/x-cocoa', + 'cdf' => 'application/x-netcdf', + 'cer' => 'application/x-x509-ca-cert', + 'cha' => 'application/x-chat', + 'chat' => 'application/x-chat', + 'class' => 'application/x-java-class', + 'com' => 'text/plain', + 'conf' => 'text/plain', + 'cpio' => 'application/x-cpio', + 'cpp' => 'text/x-c', + 'cpt' => 'application/x-cpt', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-user-cert', + 'csh' => 'text/x-script.csh', + 'css' => 'text/css', + 'cxx' => 'text/plain', + 'dcr' => 'application/x-director', + 'deepv' => 'application/x-deepv', + 'def' => 'text/plain', + 'der' => 'application/x-x509-ca-cert', + 'dif' => 'video/x-dv', + 'dir' => 'application/x-director', + 'dl' => 'video/x-dl', 'doc' => ['application/msword', 'text/html'], - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'exe' => ['application/x-msdownload', 'application/x-dosexec'], + 'docx' => 'application/octet-stream', + 'dot' => 'application/msword', + 'dp' => 'application/commonground', + 'drw' => 'application/drafting', + 'dump' => 'application/octet-stream', + 'dv' => 'video/x-dv', + 'dvi' => 'application/x-dvi', + 'dwf' => 'model/vnd.dwf', + 'dwg' => 'image/x-dwg', + 'dxf' => 'image/x-dwg', + 'dxr' => 'application/x-director', + 'el' => 'text/x-script.elisp', + 'elc' => 'application/x-elc', + 'env' => 'application/x-envoy', + 'eps' => 'application/postscript', + 'es' => 'application/x-esrehber', + 'etx' => 'text/x-setext', + 'evy' => 'application/x-envoy', + 'exe' => ['application/x-dosexec', 'application/octet-stream'], + 'f' => 'text/x-fortran', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'fdf' => 'application/vnd.fdf', + 'fif' => 'image/fif', + 'fli' => 'video/x-fli', + 'flo' => 'image/florian', + 'flx' => 'text/vnd.fmi.flexstor', + 'fmf' => 'video/x-atomic3d-feature', + 'for' => 'text/x-fortran', + 'fpx' => 'image/vnd.net-fpx', + 'frl' => 'application/freeloader', + 'funk' => 'audio/make', + 'g' => 'text/plain', + 'g3' => 'image/g3fax', 'gif' => 'image/gif', + 'gl' => 'video/x-gl', + 'gsd' => 'audio/x-gsm', + 'gsm' => 'audio/x-gsm', + 'gsp' => 'application/x-gsp', + 'gss' => 'application/x-gss', + 'gtar' => 'application/x-gtar', + 'gz' => 'application/x-gzip', + 'gzip' => 'multipart/x-gzip', + 'h' => 'text/x-h', + 'hdf' => 'application/x-hdf', + 'help' => 'application/x-helpfile', + 'hgl' => 'application/vnd.hp-hpgl', + 'hh' => 'text/x-h', + 'hlb' => 'text/x-script', + 'hlp' => 'application/x-winhelp', + 'hpg' => 'application/vnd.hp-hpgl', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hqx' => 'application/x-mac-binhex40', + 'hta' => 'application/hta', + 'htc' => 'text/x-component', 'htm' => 'text/html', 'html' => 'text/html', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'ppt' => 'application/vnd.ms-office', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'pm' => 'text/plain', + 'htmls' => 'text/html', + 'htt' => 'text/webviewhtml', + 'htx' => 'text/html', + 'ice' => 'x-conference/x-cooltalk', + 'ico' => 'image/x-icon', + 'idc' => 'text/plain', + 'ief' => 'image/ief', + 'iefs' => 'image/ief', + 'iges' => 'model/iges', + 'igs' => 'model/iges', + 'ima' => 'application/x-ima', + 'imap' => 'application/x-httpd-imap', + 'inf' => 'application/inf', + 'ins' => 'application/x-internett-signup', + 'ip' => 'application/x-ip2', + 'isu' => 'video/x-isvideo', + 'it' => 'audio/it', + 'iv' => 'application/x-inventor', + 'ivr' => 'i-world/i-vrml', + 'ivy' => 'application/x-livescreen', + 'jam' => 'audio/x-jam', + 'jav' => 'text/x-java-source', + 'java' => 'text/x-java-source', + 'jcm' => 'application/x-java-commerce', + 'jfif' => 'image/pjpeg', + 'jfif-tbnl' => 'image/jpeg', + 'jpe' => 'image/pjpeg', + 'jpeg' => 'image/pjpeg', + 'jpg' => ['image/pjpeg', 'image/jpeg'], + 'jps' => 'image/x-jps', + 'js' => 'text/ecmascript', + 'jut' => 'image/jutvision', + 'kar' => 'music/x-karaoke', + 'ksh' => 'text/x-script.ksh', + 'la' => 'audio/x-nspaudio', + 'lam' => 'audio/x-liveaudio', + 'latex' => 'application/x-latex', + 'lha' => 'application/x-lha', + 'lhx' => 'application/octet-stream', + 'list' => 'text/plain', + 'lma' => 'audio/x-nspaudio', + 'log' => 'text/plain', + 'lsp' => 'text/x-script.lisp', + 'lst' => 'text/plain', + 'lsx' => 'text/x-la-asf', + 'ltx' => 'application/x-latex', + 'lzh' => 'application/x-lzh', + 'lzx' => 'application/x-lzx', + 'm' => 'text/x-m', + 'm1v' => 'video/mpeg', + 'm2a' => 'audio/mpeg', + 'm2v' => 'video/mpeg', + 'm3u' => 'audio/x-mpequrl', + 'man' => 'application/x-troff-man', + 'map' => 'application/x-navimap', + 'mar' => 'text/plain', + 'mbd' => 'application/mbedlet', + 'mc$' => 'application/x-magic-cap-package-1.0', + 'mcd' => 'application/x-mathcad', + 'mcf' => 'text/mcf', + 'mcp' => 'application/netmc', + 'me' => 'application/x-troff-me', + 'mht' => 'message/rfc822', + 'mhtml' => 'message/rfc822', + 'mid' => 'x-music/x-midi', + 'midi' => 'x-music/x-midi', + 'mif' => 'application/x-mif', + 'mime' => 'www/mime', + 'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile', + 'mjpg' => 'video/x-motion-jpeg', + 'mm' => 'application/x-meme', + 'mme' => 'application/base64', + 'mod' => 'audio/x-mod', + 'moov' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'video/x-mpeq2a', + 'mp3' => ['video/x-mpeg', 'audio/mpeg'], + 'mpa' => 'video/mpeg', + 'mpc' => 'application/x-project', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpga' => 'audio/mpeg', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/x-project', + 'mpv' => 'application/x-project', + 'mpx' => 'application/x-project', + 'mrc' => 'application/marc', + 'ms' => 'application/x-troff-ms', + 'mv' => 'video/x-sgi-movie', + 'my' => 'audio/make', + 'mzz' => 'application/x-vnd.audioexplosion.mzz', + 'nap' => 'image/naplps', + 'naplps' => 'image/naplps', + 'nc' => 'application/x-netcdf', + 'ncm' => 'application/vnd.nokia.Something is wronguration-message', + 'nif' => 'image/x-niff', + 'niff' => 'image/x-niff', + 'nix' => 'application/x-mix-transfer', + 'nsc' => 'application/x-conference', + 'nvd' => 'application/x-navidoc', + 'o' => 'application/octet-stream', + 'oda' => 'application/oda', + 'omc' => 'application/x-omc', + 'omcd' => 'application/x-omcdatamaker', + 'omcr' => 'application/x-omcregerator', + 'p' => 'text/x-pascal', + 'p10' => 'application/x-pkcs10', + 'p12' => 'application/x-pkcs12', + 'p7a' => 'application/x-pkcs7-signature', + 'p7c' => 'application/x-pkcs7-mime', + 'p7m' => 'application/x-pkcs7-mime', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'part' => 'application/pro_eng', + 'pas' => 'text/pascal', + 'pbm' => 'image/x-portable-bitmap', + 'pcl' => 'application/x-pcl', + 'pct' => 'image/x-pict', + 'pcx' => 'image/x-pcx', + 'pdb' => 'chemical/x-pdb', + 'pdf' => 'application/pdf', + 'pfunk' => 'audio/make.my.funk', + 'pgm' => 'image/x-portable-greymap', + 'php' => 'text/x-php', + 'pic' => 'image/pict', + 'pict' => 'image/pict', + 'pkg' => 'application/x-newton-compatible-pkg', + 'pko' => 'application/vnd.ms-pki.pko', + 'pl' => 'text/x-script.perl', + 'plx' => 'application/x-pixclscript', + 'pm' => 'text/x-script.perl-module', + 'pm4' => 'application/x-pagemaker', + 'pm5' => 'application/x-pagemaker', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'pot' => 'application/vnd.ms-powerpoint', + 'pov' => 'model/x-pov', + 'ppa' => 'application/vnd.ms-powerpoint', + 'ppm' => 'image/x-portable-pixmap', + 'pps' => 'application/vnd.ms-powerpoint', + 'ppt' => ['application/x-mspowerpoint','application/vnd.ms-office'], + 'ppz' => 'application/mspowerpoint', + 'pre' => 'application/x-freelance', + 'prt' => 'application/pro_eng', + 'ps' => 'application/postscript', + 'psd' => 'application/octet-stream', + 'pvu' => 'paleovu/x-pv', + 'pwz' => 'application/vnd.ms-powerpoint', + 'py' => 'text/x-script.phyton', + 'pyc' => 'application/x-bytecode.python', + 'qcp' => 'audio/vnd.qcelp', + 'qd3' => 'x-world/x-3dmf', + 'qd3d' => 'x-world/x-3dmf', + 'qif' => 'image/x-quicktime', + 'qt' => 'video/quicktime', + 'qtc' => 'video/x-qtc', + 'qti' => 'image/x-quicktime', + 'qtif' => 'image/x-quicktime', + 'ra' => 'audio/x-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'ras' => 'image/x-cmu-raster', + 'rast' => 'image/cmu-raster', + 'rexx' => 'text/x-script.rexx', + 'rf' => 'image/vnd.rn-realflash', + 'rgb' => 'image/x-rgb', + 'rm' => 'audio/x-pn-realaudio', + 'rmi' => 'audio/mid', + 'rmm' => 'audio/x-pn-realaudio', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'rng' => 'application/vnd.nokia.ringing-tone', + 'rnx' => 'application/vnd.rn-realplayer', + 'roff' => 'application/x-troff', + 'rp' => 'image/vnd.rn-realpix', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'rt' => 'text/vnd.rn-realtext', + 'rtf' => 'text/richtext', + 'rtx' => 'text/richtext', + 'rv' => 'video/vnd.rn-realvideo', + 's' => 'text/x-asm', + 's3m' => 'audio/s3m', + 'saveme' => 'application/octet-stream', + 'sbk' => 'application/x-tbook', + 'scm' => 'video/x-scm', + 'sdml' => 'text/plain', + 'sdp' => 'application/x-sdp', + 'sdr' => 'application/sounder', + 'sea' => 'application/x-sea', + 'set' => 'application/set', + 'sgm' => 'text/x-sgml', + 'sgml' => 'text/x-sgml', + 'sh' => 'text/x-script.sh', + 'shar' => 'application/x-shar', + 'shtml' => 'text/x-server-parsed-html', + 'sid' => 'audio/x-psid', + 'sit' => 'application/x-stuffit', + 'skd' => 'application/x-koan', + 'skm' => 'application/x-koan', + 'skp' => 'application/x-koan', + 'skt' => 'application/x-koan', + 'sl' => 'application/x-seelogo', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'snd' => 'audio/x-adpcm', + 'sol' => 'application/solids', + 'spc' => 'text/x-speech', + 'spl' => 'application/futuresplash', + 'spr' => 'application/x-sprite', + 'sprite' => 'application/x-sprite', + 'src' => 'application/x-wais-source', + 'ssi' => 'text/x-server-parsed-html', + 'ssm' => 'application/streamingmedia', + 'sst' => 'application/vnd.ms-pki.certstore', + 'step' => 'application/step', + 'stl' => 'application/x-navistyle', + 'stp' => 'application/step', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'svf' => 'image/x-dwg', + 'svr' => 'x-world/x-svr', + 'swf' => 'application/x-shockwave-flash', + 't' => 'application/x-troff', + 'talk' => 'text/x-speech', + 'tar' => 'application/x-tar', + 'tbk' => 'application/x-tbook', + 'tcl' => 'text/x-script.tcl', + 'tcsh' => 'text/x-script.tcsh', + 'tex' => 'application/x-tex', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'text' => 'text/plain', + 'tgz' => 'application/x-compressed', + 'tif' => 'image/x-tiff', + 'tiff' => 'image/x-tiff', + 'tr' => 'application/x-troff', + 'tsi' => 'audio/tsp-audio', + 'tsp' => 'audio/tsplayer', + 'tsv' => 'text/tab-separated-values', + 'turbot' => 'image/florian', + 'txt' => 'text/plain', + 'uil' => 'text/x-uil', + 'uni' => 'text/uri-list', + 'unis' => 'text/uri-list', + 'unv' => 'application/i-deas', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'ustar' => 'multipart/x-ustar', + 'uu' => 'text/x-uuencode', + 'uue' => 'text/x-uuencode', + 'vcd' => 'application/x-cdlink', + 'vcs' => 'text/x-vcalendar', + 'vda' => 'application/vda', + 'vdo' => 'video/vdo', + 'vew' => 'application/groupwise', + 'viv' => 'video/vnd.vivo', + 'vivo' => 'video/vnd.vivo', + 'vmd' => 'application/vocaltec-media-desc', + 'vmf' => 'application/vocaltec-media-file', + 'voc' => 'audio/x-voc', + 'vos' => 'video/vosaic', + 'vox' => 'audio/voxware', + 'vqe' => 'audio/x-twinvq-plugin', + 'vqf' => 'audio/x-twinvqv', + 'vql' => 'audio/x-twinvq-plugin', + 'vrml' => 'x-world/x-vrml', + 'vrt' => 'x-world/x-vrt', + 'vsd' => 'application/x-visio', + 'vst' => 'application/x-visio', + 'vsw' => 'application/x-visio', + 'w60' => 'application/wordperfect6.0', + 'w61' => 'application/wordperfect6.1', + 'w6w' => 'application/msword', + 'wav' => 'audio/x-wav', + 'wb1' => 'application/x-qpro', + 'wbmp' => 'image/vnd.wap.wbmp', + 'web' => 'application/vnd.xara', + 'wiz' => 'application/msword', + 'wk1' => 'application/x-123', + 'wmf' => 'windows/metafile', + 'wml' => 'text/vnd.wap.wml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmls' => 'text/vnd.wap.wmlscript', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wmv' => ['video/x-ms-asf', 'video/x-ms-wmv'], + 'word' => 'application/msword', + 'wp' => 'application/wordperfect', + 'wp5' => 'application/wordperfect6.0', + 'wp6' => 'application/wordperfect', + 'wpd' => 'application/x-wpwin', + 'wq1' => 'application/x-lotus', + 'wri' => 'application/x-wri', + 'wrl' => 'x-world/x-vrml', + 'wrz' => 'x-world/x-vrml', + 'wsc' => 'text/scriplet', + 'wsrc' => 'application/x-wais-source', + 'wtk' => 'application/x-wintalk', + 'xbm' => 'image/xbm', + 'xdr' => 'video/x-amt-demorun', + 'xgz' => 'xgl/drawing', + 'xif' => 'image/vnd.xiff', + 'xl' => 'application/excel', + 'xla' => 'application/x-msexcel', + 'xlb' => 'application/x-excel', + 'xlc' => 'application/x-excel', + 'xld' => 'application/x-excel', + 'xlk' => 'application/x-excel', + 'xll' => 'application/x-excel', + 'xlm' => 'application/x-excel', + 'xls' => ['application/x-msexcel', 'text/plain'], + 'xlsx' => 'application/octet-stream', + 'xlt' => 'application/x-excel', + 'xlv' => 'application/x-excel', + 'xlw' => 'application/x-msexcel', + 'xm' => 'audio/xm', + 'xml' => 'text/xml', + 'xmz' => 'xgl/movie', + 'xpix' => 'application/x-vnd.ls-xpix', + 'xpm' => 'image/xpm', + 'x-png' => 'image/png', + 'xsr' => 'video/x-amt-showrun', + 'xwd' => 'image/x-xwindowdump', + 'xyz' => 'chemical/x-pdb', + 'z' => 'application/x-compressed', + 'zip' => 'multipart/x-zip', + 'zoo' => 'application/octet-stream', + 'zsh' => 'text/x-script.zsh', + //The following are the custom application mime type + 'dat' => 'text/plain', + 'pm' => ['text/plain', 'application/octet-stream'], 'pmt' => 'text/plain', 'pmx' => ['application/xml', 'text/xml', 'text/html'], 'pmx2' => ['application/xml', 'text/xml', 'text/html'], 'po' => 'text/x-po', - 'pdf' => 'application/pdf', - 'png' => 'image/png', - 'php' => 'text/x-php', - 'rar' => 'application/x-rar', - 'txt' => 'text/plain', - 'wmv' => ['video/x-ms-asf', 'video/x-ms-wmv'], - 'xls' => ['application/vnd.ms-excel', 'text/plain'], - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'zip' => 'application/zip', ]; From 345e703e3a90df31e43441ceec25d1453e8fc179 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Fri, 14 Dec 2018 17:21:10 -0400 Subject: [PATCH 25/38] PMC-318 --- workflow/engine/classes/Processes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/classes/Processes.php b/workflow/engine/classes/Processes.php index 06d9d7606..a5b53da32 100644 --- a/workflow/engine/classes/Processes.php +++ b/workflow/engine/classes/Processes.php @@ -6421,7 +6421,7 @@ class Processes //Prepare to delete labels related in CONTENT $criteria = new Criteria(ContentPeer::DATABASE_NAME); $criteria->addSelectColumn('*'); - $criteria->add(ContentPeer::CON_CATEGORY, $conCategories, Criteria::IN); + $criteria->add(ContentPeer::CON_CATEGORY, array_keys($conCategories), Criteria::IN); $criteria->add(ContentPeer::CON_ID, $conId); $criteria->add(ContentPeer::CON_LANG, $conLang); $criteria->add(ContentPeer::CON_PARENT, $conParent); From f358efd9c2d12f587817785fe75ac77cc7543e8e Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Mon, 17 Dec 2018 12:14:33 -0400 Subject: [PATCH 26/38] PMC-319 --- config/customMimeTypes.php | 305 ++++++++++++++++++++++++++++++------- 1 file changed, 251 insertions(+), 54 deletions(-) diff --git a/config/customMimeTypes.php b/config/customMimeTypes.php index 540d9d63a..3c6e90fe6 100644 --- a/config/customMimeTypes.php +++ b/config/customMimeTypes.php @@ -16,7 +16,10 @@ return [ 'aas' => 'application/x-authorware-seg', 'abc' => 'text/vnd.abc', 'acgi' => 'text/html', + 'acutc' => 'application/vnd.acucorp', 'afl' => 'video/animaflex', + 'afm' => 'application/x-font-type1', + 'afp' => 'application/vnd.ibm.modcap', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', @@ -33,31 +36,47 @@ return [ 'asm' => 'text/x-asm', 'asp' => 'text/asp', 'asx' => 'video/x-ms-asf-plugin', - 'au' => 'audio/x-au', + 'asx ' => 'video/x-ms-asf', + 'atc' => 'application/vnd.acucorp', + 'au' => ['audio/basic', 'audio/x-au'], 'avi' => 'video/x-msvideo', 'avs' => 'video/avs-video', + 'bat' => 'application/x-msdownload', 'bcpio' => 'application/x-bcpio', 'bin' => 'application/x-macbinary', 'bm' => 'image/bmp', 'bmp' => 'image/x-windows-bmp', 'boo' => 'application/book', - 'book' => 'application/book', + 'book' => ['application/vnd.framemaker', 'application/book'], 'boz' => 'application/x-bzip2', + 'bpk' => 'application/octet-stream', 'bsh' => 'application/x-bsh', 'bz' => 'application/x-bzip', 'bz2' => 'application/x-bzip2', 'c' => 'text/x-c', 'c++' => 'text/plain', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'cap' => 'application/vnd.tcpdump.pcap', 'cat' => 'application/vnd.ms-pki.seccat', + 'cb7' => 'application/x-cbr', + 'cba' => 'application/x-cbr', + 'cbr' => 'application/x-cbr', + 'cbt' => 'application/x-cbr', + 'cbz' => 'application/x-cbr', 'cc' => 'text/x-c', 'ccad' => 'application/clariscad', 'cco' => 'application/x-cocoa', + 'cct' => 'application/x-director', 'cdf' => 'application/x-netcdf', 'cer' => 'application/x-x509-ca-cert', 'cha' => 'application/x-chat', 'chat' => 'application/x-chat', 'class' => 'application/x-java-class', - 'com' => 'text/plain', + 'com' => ['application/x-msdownload', 'text/plain'], 'conf' => 'text/plain', 'cpio' => 'application/x-cpio', 'cpp' => 'text/x-c', @@ -66,14 +85,26 @@ return [ 'crt' => 'application/x-x509-user-cert', 'csh' => 'text/x-script.csh', 'css' => 'text/css', - 'cxx' => 'text/plain', + 'cst' => 'application/x-director', + 'cxt' => 'application/x-director', + 'cxx' => ['text/x-c', 'text/plain'], + 'dataless' => 'application/vnd.fdsn.seed', 'dcr' => 'application/x-director', 'deepv' => 'application/x-deepv', 'def' => 'text/plain', + 'deploy' => 'application/octet-stream', 'der' => 'application/x-x509-ca-cert', + 'dic' => 'text/x-c', 'dif' => 'video/x-dv', 'dir' => 'application/x-director', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', 'dl' => 'video/x-dl', + 'dll' => 'application/x-msdownload', + 'dmp' => 'application/vnd.tcpdump.pcap', + 'dms' => 'application/octet-stream', 'doc' => ['application/msword', 'text/html'], 'docx' => 'application/octet-stream', 'dot' => 'application/msword', @@ -87,10 +118,15 @@ return [ 'dxf' => 'image/x-dwg', 'dxr' => 'application/x-director', 'el' => 'text/x-script.elisp', - 'elc' => 'application/x-elc', + 'elc' => ['application/octet-stream', 'application/x-elc'], + 'emf' => 'application/x-msmetafile', + 'eml' => 'message/rfc822', + 'emz' => 'application/x-msmetafile', 'env' => 'application/x-envoy', 'eps' => 'application/postscript', 'es' => 'application/x-esrehber', + 'es3' => 'application/vnd.eszigno3+xml', + 'et3' => 'application/vnd.eszigno3+xml', 'etx' => 'text/x-setext', 'evy' => 'application/x-envoy', 'exe' => ['application/x-dosexec', 'application/octet-stream'], @@ -98,19 +134,33 @@ return [ 'f77' => 'text/x-fortran', 'f90' => 'text/x-fortran', 'fdf' => 'application/vnd.fdf', + 'fgd' => 'application/x-director', + 'fh' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', 'fif' => 'image/fif', 'fli' => 'video/x-fli', 'flo' => 'image/florian', 'flx' => 'text/vnd.fmi.flexstor', + 'fm' => 'application/vnd.framemaker', 'fmf' => 'video/x-atomic3d-feature', 'for' => 'text/x-fortran', 'fpx' => 'image/vnd.net-fpx', + 'frame' => 'application/vnd.framemaker', 'frl' => 'application/freeloader', 'funk' => 'audio/make', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', 'g' => 'text/plain', 'g3' => 'image/g3fax', + 'gex' => 'application/vnd.geometry-explorer', 'gif' => 'image/gif', 'gl' => 'video/x-gl', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gre' => 'application/vnd.geometry-explorer', 'gsd' => 'audio/x-gsm', 'gsm' => 'audio/x-gsm', 'gsp' => 'application/x-gsp', @@ -118,11 +168,11 @@ return [ 'gtar' => 'application/x-gtar', 'gz' => 'application/x-gzip', 'gzip' => 'multipart/x-gzip', - 'h' => 'text/x-h', + 'h' => ['text/x-c', 'text/x-h'], 'hdf' => 'application/x-hdf', 'help' => 'application/x-helpfile', 'hgl' => 'application/vnd.hp-hpgl', - 'hh' => 'text/x-h', + 'hh' => ['text/x-c', 'text/x-h'], 'hlb' => 'text/x-script', 'hlp' => 'application/x-winhelp', 'hpg' => 'application/vnd.hp-hpgl', @@ -135,16 +185,22 @@ return [ 'htmls' => 'text/html', 'htt' => 'text/webviewhtml', 'htx' => 'text/html', + 'icc' => 'application/vnd.iccprofile', 'ice' => 'x-conference/x-cooltalk', + 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', 'idc' => 'text/plain', 'ief' => 'image/ief', 'iefs' => 'image/ief', + 'ifb' => 'text/calendar', 'iges' => 'model/iges', 'igs' => 'model/iges', 'ima' => 'application/x-ima', 'imap' => 'application/x-httpd-imap', + 'in' => 'text/plain', 'inf' => 'application/inf', + 'inkml' => 'application/inkml+xml', 'ins' => 'application/x-internett-signup', 'ip' => 'application/x-ip2', 'isu' => 'video/x-isvideo', @@ -158,22 +214,35 @@ return [ 'jcm' => 'application/x-java-commerce', 'jfif' => 'image/pjpeg', 'jfif-tbnl' => 'image/jpeg', - 'jpe' => 'image/pjpeg', - 'jpeg' => 'image/pjpeg', + 'jpe' => ['image/jpeg', 'image/pjpeg'], + 'jpeg' => ['image/jpeg', 'image/pjpeg'], 'jpg' => ['image/pjpeg', 'image/jpeg'], + 'jpgm' => 'video/jpm', + 'jpm' => 'video/jpm', 'jps' => 'image/x-jps', 'js' => 'text/ecmascript', 'jut' => 'image/jutvision', - 'kar' => 'music/x-karaoke', + 'kar' => ['audio/midi', 'music/x-karaoke'], + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', 'ksh' => 'text/x-script.ksh', + 'ktr' => 'application/vnd.kahootz', + 'ktz' => 'application/vnd.kahootz', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', 'la' => 'audio/x-nspaudio', 'lam' => 'audio/x-liveaudio', 'latex' => 'application/x-latex', 'lha' => 'application/x-lha', 'lhx' => 'application/octet-stream', 'list' => 'text/plain', + 'list3820' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', 'lma' => 'audio/x-nspaudio', 'log' => 'text/plain', + 'lrf' => 'application/octet-stream', 'lsp' => 'text/x-script.lisp', 'lst' => 'text/plain', 'lsx' => 'text/x-la-asf', @@ -181,86 +250,124 @@ return [ 'lzh' => 'application/x-lzh', 'lzx' => 'application/x-lzx', 'm' => 'text/x-m', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', 'm1v' => 'video/mpeg', 'm2a' => 'audio/mpeg', 'm2v' => 'video/mpeg', + 'm3a' => 'audio/mpeg', 'm3u' => 'audio/x-mpequrl', - 'man' => 'application/x-troff-man', + 'm4a' => ['audio/mp4', 'audio/x-m4a'], + 'm4u' => 'video/vnd.mpegurl', + 'maker' => 'application/vnd.framemaker', + 'man' => ['text/troff', 'music/x-karaoke'], 'map' => 'application/x-navimap', - 'mar' => 'text/plain', + 'mar' => ['application/octet-stream', 'text/plain'], + 'mb' => 'application/mathematica', 'mbd' => 'application/mbedlet', 'mc$' => 'application/x-magic-cap-package-1.0', 'mcd' => 'application/x-mathcad', 'mcf' => 'text/mcf', 'mcp' => 'application/netmc', - 'me' => 'application/x-troff-me', + 'me' => ['text/troff', 'application/x-troff-me'], + 'mesh' => 'model/mesh', 'mht' => 'message/rfc822', 'mhtml' => 'message/rfc822', - 'mid' => 'x-music/x-midi', - 'midi' => 'x-music/x-midi', + 'mid' => ['audio/midi', 'application/x-troff-me'], + 'midi' => ['audio/midi', 'application/x-troff-me'], 'mif' => 'application/x-mif', - 'mime' => 'www/mime', + 'mime' => ['message/rfc822', 'www/mime'], + 'mj2' => 'video/mj2', 'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile', + 'mjp2' => 'video/mj2', 'mjpg' => 'video/x-motion-jpeg', + 'mk3d' => 'video/x-matroska', + 'mks' => 'video/x-matroska', + 'mkv' => 'video/x-matroska', 'mm' => 'application/x-meme', 'mme' => 'application/base64', 'mod' => 'audio/x-mod', 'moov' => 'video/quicktime', 'mov' => 'video/quicktime', 'movie' => 'video/x-sgi-movie', - 'mp2' => 'video/x-mpeq2a', + 'mp2' => ['audio/mpeg', 'video/x-mpeq2a'], + 'mp2a' => 'audio/mpeg', 'mp3' => ['video/x-mpeg', 'audio/mpeg'], + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4v' => 'video/mp4', 'mpa' => 'video/mpeg', 'mpc' => 'application/x-project', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', 'mpga' => 'audio/mpeg', 'mpp' => 'application/vnd.ms-project', - 'mpt' => 'application/x-project', + 'mpt' => ['application/vnd.ms-project', 'application/x-project'], 'mpv' => 'application/x-project', 'mpx' => 'application/x-project', 'mrc' => 'application/marc', - 'ms' => 'application/x-troff-ms', + 'ms' => ['text/troff', 'application/x-troff-ms'], + 'msh' => 'model/mesh', + 'msi' => 'application/x-msdownload', 'mv' => 'video/x-sgi-movie', + 'mvb' => 'application/x-msmediaview', + 'mxml' => 'application/xv+xml', + 'mxu' => 'video/vnd.mpegurl', 'my' => 'audio/make', 'mzz' => 'application/x-vnd.audioexplosion.mzz', 'nap' => 'image/naplps', 'naplps' => 'image/naplps', + 'nb' => 'application/mathematica', 'nc' => 'application/x-netcdf', 'ncm' => 'application/vnd.nokia.Something is wronguration-message', 'nif' => 'image/x-niff', 'niff' => 'image/x-niff', + 'nitf' => 'application/vnd.nitf', 'nix' => 'application/x-mix-transfer', 'nsc' => 'application/x-conference', + 'ntf' => 'application/vnd.nitf', 'nvd' => 'application/x-navidoc', 'o' => 'application/octet-stream', 'oda' => 'application/oda', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', 'omc' => 'application/x-omc', 'omcd' => 'application/x-omcdatamaker', 'omcr' => 'application/x-omcregerator', + 'onepkg' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'oprc' => 'application/vnd.palm', 'p' => 'text/x-pascal', 'p10' => 'application/x-pkcs10', 'p12' => 'application/x-pkcs12', 'p7a' => 'application/x-pkcs7-signature', - 'p7c' => 'application/x-pkcs7-mime', + 'p7b' => 'application/x-pkcs7-certificates', + 'p7c' => ['application/pkcs7-mime', 'application/x-pkcs7-mime'], 'p7m' => 'application/x-pkcs7-mime', 'p7r' => 'application/x-pkcs7-certreqresp', 'p7s' => 'application/pkcs7-signature', 'part' => 'application/pro_eng', 'pas' => 'text/pascal', 'pbm' => 'image/x-portable-bitmap', + 'pcap' => 'application/vnd.tcpdump.pcap', 'pcl' => 'application/x-pcl', 'pct' => 'image/x-pict', 'pcx' => 'image/x-pcx', - 'pdb' => 'chemical/x-pdb', + 'pdb' => ['application/vnd.palm', 'chemical/x-pdb'], 'pdf' => 'application/pdf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', 'pfunk' => 'audio/make.my.funk', + 'pfx' => 'application/x-pkcs12', 'pgm' => 'image/x-portable-greymap', 'php' => 'text/x-php', - 'pic' => 'image/pict', + 'pic' => ['image/x-pict', 'image/pict'], 'pict' => 'image/pict', - 'pkg' => 'application/x-newton-compatible-pkg', + 'pkg' => ['application/octet-stream', 'application/x-newton-compatible-pkg'], 'pko' => 'application/vnd.ms-pki.pko', 'pl' => 'text/x-script.perl', 'plx' => 'application/x-pixclscript', @@ -274,8 +381,9 @@ return [ 'ppa' => 'application/vnd.ms-powerpoint', 'ppm' => 'image/x-portable-pixmap', 'pps' => 'application/vnd.ms-powerpoint', - 'ppt' => ['application/x-mspowerpoint','application/vnd.ms-office'], + 'ppt' => ['application/x-mspowerpoint', 'application/vnd.ms-office'], 'ppz' => 'application/mspowerpoint', + 'pqa' => 'application/vnd.palm', 'pre' => 'application/x-freelance', 'prt' => 'application/pro_eng', 'ps' => 'application/postscript', @@ -292,7 +400,13 @@ return [ 'qtc' => 'video/x-qtc', 'qti' => 'image/x-quicktime', 'qtif' => 'image/x-quicktime', - 'ra' => 'audio/x-realaudio', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'ra' => ['audio/x-pn-realaudio', 'audio/x-realaudio'], 'ram' => 'audio/x-pn-realaudio', 'ras' => 'image/x-cmu-raster', 'rast' => 'image/cmu-raster', @@ -300,12 +414,12 @@ return [ 'rf' => 'image/vnd.rn-realflash', 'rgb' => 'image/x-rgb', 'rm' => 'audio/x-pn-realaudio', - 'rmi' => 'audio/mid', + 'rmi' => ['audio/midi', 'audio/mid'], 'rmm' => 'audio/x-pn-realaudio', 'rmp' => 'audio/x-pn-realaudio-plugin', 'rng' => 'application/vnd.nokia.ringing-tone', 'rnx' => 'application/vnd.rn-realplayer', - 'roff' => 'application/x-troff', + 'roff' => ['text/troff', 'application/x-troff'], 'rp' => 'image/vnd.rn-realpix', 'rpm' => 'audio/x-pn-realaudio-plugin', 'rt' => 'text/vnd.rn-realtext', @@ -317,31 +431,41 @@ return [ 'saveme' => 'application/octet-stream', 'sbk' => 'application/x-tbook', 'scm' => 'video/x-scm', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'sdkm' => 'application/vnd.solent.sdkm+xml', 'sdml' => 'text/plain', 'sdp' => 'application/x-sdp', 'sdr' => 'application/sounder', + 'sdw' => 'application/vnd.stardivision.writer', 'sea' => 'application/x-sea', + 'seed' => 'application/vnd.fdsn.seed', 'set' => 'application/set', - 'sgm' => 'text/x-sgml', - 'sgml' => 'text/x-sgml', + 'sgm' => ['text/sgml', 'text/x-sgml'], + 'sgml' => ['text/sgml', 'text/x-sgml'], 'sh' => 'text/x-script.sh', 'shar' => 'application/x-shar', 'shtml' => 'text/x-server-parsed-html', 'sid' => 'audio/x-psid', + 'sig' => 'application/pgp-signature', + 'silo' => 'model/mesh', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', 'sit' => 'application/x-stuffit', - 'skd' => 'application/x-koan', - 'skm' => 'application/x-koan', - 'skp' => 'application/x-koan', - 'skt' => 'application/x-koan', + 'skd' => ['application/vnd.koan', 'application/x-koan'], + 'skm' => ['application/vnd.koan', 'application/x-koan'], + 'skp' => ['application/vnd.koan', 'application/x-koan'], + 'skt' => ['application/vnd.koan', 'application/x-koan'], 'sl' => 'application/x-seelogo', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'snd' => 'audio/x-adpcm', + 'smi' => ['application/smil+xml', 'application/smil'], + 'smil' => ['application/smil+xml', 'application/smil'], + 'snd' => 'audio/basic', + 'so' => 'application/octet-stream', 'sol' => 'application/solids', - 'spc' => 'text/x-speech', + 'spc' => ['application/x-pkcs7-certificates', 'text/x-speech'], 'spl' => 'application/futuresplash', 'spr' => 'application/x-sprite', 'sprite' => 'application/x-sprite', + 'spx' => 'audio/ogg', 'src' => 'application/x-wais-source', 'ssi' => 'text/x-server-parsed-html', 'ssm' => 'application/streamingmedia', @@ -349,39 +473,78 @@ return [ 'step' => 'application/step', 'stl' => 'application/x-navistyle', 'stp' => 'application/step', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'svf' => 'image/x-dwg', 'svr' => 'x-world/x-svr', + 'swa' => 'application/x-director', 'swf' => 'application/x-shockwave-flash', - 't' => 'application/x-troff', + 't' => ['text/troff', 'application/x-troff'], 'talk' => 'text/x-speech', 'tar' => 'application/x-tar', 'tbk' => 'application/x-tbook', 'tcl' => 'text/x-script.tcl', 'tcsh' => 'text/x-script.tcsh', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', 'tex' => 'application/x-tex', 'texi' => 'application/x-texinfo', 'texinfo' => 'application/x-texinfo', 'text' => 'text/plain', 'tgz' => 'application/x-compressed', - 'tif' => 'image/x-tiff', - 'tiff' => 'image/x-tiff', - 'tr' => 'application/x-troff', + 'tif' => ['image/tiff', 'image/x-tiff'], + 'tiff' => ['image/tiff', 'image/x-tiff'], + 'tr' => ['text/troff', 'application/x-troff'], 'tsi' => 'audio/tsp-audio', 'tsp' => 'audio/tsplayer', 'tsv' => 'text/tab-separated-values', 'turbot' => 'image/florian', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', 'txt' => 'text/plain', + 'u32' => 'application/x-authorware-bin', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', 'uil' => 'text/x-uil', 'uni' => 'text/uri-list', 'unis' => 'text/uri-list', 'unv' => 'application/i-deas', 'uri' => 'text/uri-list', 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', 'ustar' => 'multipart/x-ustar', 'uu' => 'text/x-uuencode', 'uue' => 'text/x-uuencode', + 'uva' => 'audio/vnd.dece.audio', + 'uvd' => 'application/vnd.dece.data', + 'uvf' => 'application/vnd.dece.data', + 'uvg' => 'image/vnd.dece.graphic', + 'uvh' => 'video/vnd.dece.hd', + 'uvi' => 'image/vnd.dece.graphic', + 'uvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvv' => 'video/vnd.dece.video', + 'uvva' => 'audio/vnd.dece.audio', + 'uvvd' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvvg' => 'image/vnd.dece.graphic', + 'uvvh' => 'video/vnd.dece.hd', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvvp' => 'video/vnd.dece.pd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'uvvv' => 'video/vnd.dece.video', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvvz' => 'application/vnd.dece.zip', + 'uvx' => 'application/vnd.dece.unspecified', + 'uvz' => 'application/vnd.dece.zip', 'vcd' => 'application/x-cdlink', 'vcs' => 'text/x-vcalendar', 'vda' => 'application/vda', @@ -392,71 +555,105 @@ return [ 'vmd' => 'application/vocaltec-media-desc', 'vmf' => 'application/vocaltec-media-file', 'voc' => 'audio/x-voc', + 'vor' => 'application/vnd.stardivision.writer', 'vos' => 'video/vosaic', - 'vox' => 'audio/voxware', + 'vox' => ['application/x-authorware-bin', 'audio/voxware'], 'vqe' => 'audio/x-twinvq-plugin', 'vqf' => 'audio/x-twinvqv', 'vql' => 'audio/x-twinvq-plugin', - 'vrml' => 'x-world/x-vrml', + 'vrml' => ['model/vrml', 'x-world/x-vrml'], 'vrt' => 'x-world/x-vrt', - 'vsd' => 'application/x-visio', - 'vst' => 'application/x-visio', - 'vsw' => 'application/x-visio', + 'vsd' => ['application/vnd.visio', 'application/x-visio'], + 'vss' => ['application/vnd.visio', 'application/x-visio'], + 'vst' => ['application/vnd.visio', 'application/x-visio'], + 'vsw' => ['application/vnd.visio', 'application/x-visio'], + 'w3d' => 'application/x-director', 'w60' => 'application/wordperfect6.0', 'w61' => 'application/wordperfect6.1', 'w6w' => 'application/msword', 'wav' => 'audio/x-wav', 'wb1' => 'application/x-qpro', 'wbmp' => 'image/vnd.wap.wbmp', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', 'web' => 'application/vnd.xara', 'wiz' => 'application/msword', 'wk1' => 'application/x-123', - 'wmf' => 'windows/metafile', + 'wks' => 'application/vnd.ms-works', + 'wmf' => ['application/x-msmetafile', 'windows/metafile'], 'wml' => 'text/vnd.wap.wml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmls' => 'text/vnd.wap.wmlscript', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'wmv' => ['video/x-ms-asf', 'video/x-ms-wmv'], + 'wmz' => 'application/x-msmetafile', 'word' => 'application/msword', 'wp' => 'application/wordperfect', 'wp5' => 'application/wordperfect6.0', 'wp6' => 'application/wordperfect', 'wpd' => 'application/x-wpwin', + 'wps' => 'application/vnd.ms-works', 'wq1' => 'application/x-lotus', 'wri' => 'application/x-wri', - 'wrl' => 'x-world/x-vrml', + 'wrl' => ['model/vrml', 'x-world/x-vrml'], 'wrz' => 'x-world/x-vrml', 'wsc' => 'text/scriplet', 'wsrc' => 'application/x-wais-source', 'wtk' => 'application/x-wintalk', + 'x-png' => 'image/png', + 'x32' => 'application/x-authorware-bin', + 'x3d' => 'model/x3d+xml', + 'x3db' => 'model/x3d+binary', + 'x3dbz' => 'model/x3d+binary', + 'x3dv' => 'model/x3d+vrml', + 'x3dvz' => 'model/x3d+vrml', + 'x3dz' => 'model/x3d+xml', 'xbm' => 'image/xbm', 'xdr' => 'video/x-amt-demorun', 'xgz' => 'xgl/drawing', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xhvml' => 'application/xv+xml', 'xif' => 'image/vnd.xiff', 'xl' => 'application/excel', - 'xla' => 'application/x-msexcel', + 'xla' => ['application/vnd.ms-excel', 'application/x-msexcel'], 'xlb' => 'application/x-excel', - 'xlc' => 'application/x-excel', + 'xlc' => ['application/vnd.ms-excel', 'application/x-excel'], 'xld' => 'application/x-excel', 'xlk' => 'application/x-excel', 'xll' => 'application/x-excel', - 'xlm' => 'application/x-excel', + 'xlm' => ['application/vnd.ms-excel', 'application/x-excel'], 'xls' => ['application/x-msexcel', 'text/plain'], 'xlsx' => 'application/octet-stream', - 'xlt' => 'application/x-excel', + 'xlt' => ['application/vnd.ms-excel', 'application/x-excel'], 'xlv' => 'application/x-excel', - 'xlw' => 'application/x-msexcel', + 'xlw' => ['application/vnd.ms-excel', 'application/x-msexcel'], 'xm' => 'audio/xm', - 'xml' => 'text/xml', + 'xml' => ['application/xml', 'text/xml'], 'xmz' => 'xgl/movie', 'xpix' => 'application/x-vnd.ls-xpix', 'xpm' => 'image/xpm', 'x-png' => 'image/png', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'xsl' => 'application/xml', 'xsr' => 'video/x-amt-showrun', + 'xvm' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', 'xwd' => 'image/x-xwindowdump', 'xyz' => 'chemical/x-pdb', 'z' => 'application/x-compressed', + 'z1' => 'application/x-zmachine', + 'z2' => 'application/x-zmachine', + 'z3' => 'application/x-zmachine', + 'z4' => 'application/x-zmachine', + 'z5' => 'application/x-zmachine', + 'z6' => 'application/x-zmachine', + 'z7' => 'application/x-zmachine', + 'z8' => 'application/x-zmachine', 'zip' => 'multipart/x-zip', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', 'zoo' => 'application/octet-stream', 'zsh' => 'text/x-script.zsh', //The following are the custom application mime type From a782c8842e27fe29c97401a964f8865f435f6c9c Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Mon, 17 Dec 2018 16:03:48 -0400 Subject: [PATCH 27/38] PMC-323 --- .../engine/content/translations/english/processmaker.en.po | 4 ++-- workflow/engine/data/mysql/insert.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index d4cd92303..6ea5d71df 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -25328,8 +25328,8 @@ msgstr "Tools" # TRANSLATION # LABEL/ID_TOO_MANY_REQUESTS #: LABEL/ID_TOO_MANY_REQUESTS -msgid "Too many requests" -msgstr "Too many requests" +msgid "Upon configurations, you have reached the maximum number of files to upload." +msgstr "Upon configurations, you have reached the maximum number of files to upload." # TRANSLATION # LABEL/ID_TOP_MARGIN diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index d110898aa..9b02635e1 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -61112,7 +61112,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_TO','en','To','2014-01-15') , ( 'LABEL','ID_TODAY','en','Today','2014-01-15') , ( 'LABEL','ID_TOOLS','en','Tools','2014-01-15') , -( 'LABEL','ID_TOO_MANY_REQUESTS','en','Too many requests','2018-04-25') , +( 'LABEL','ID_TOO_MANY_REQUESTS','en','Upon configurations, you have reached the maximum number of files to upload.','2018-12-17') , ( 'LABEL','ID_TOP_MARGIN','en','Top Margin','2014-01-15') , ( 'LABEL','ID_TOTAL_CASES','en','Total Cases','2014-01-15') , ( 'LABEL','ID_TOTAL_CASES_REASSIGNED','en','Total Cases Reassigned','2014-01-15') , From fa8c3cfbb2a9ed6e6382d4b2dbcae73ab7302c13 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Tue, 18 Dec 2018 08:13:57 -0400 Subject: [PATCH 28/38] PMC-176 --- config/customMimeTypes.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/customMimeTypes.php b/config/customMimeTypes.php index 3c6e90fe6..be9e95720 100644 --- a/config/customMimeTypes.php +++ b/config/customMimeTypes.php @@ -221,6 +221,8 @@ return [ 'jpm' => 'video/jpm', 'jps' => 'image/x-jps', 'js' => 'text/ecmascript', + 'json' => ['text/plain', 'text/json', 'text/javascript'], + 'jsonp' => 'application/javascript', 'jut' => 'image/jutvision', 'kar' => ['audio/midi', 'music/x-karaoke'], 'kne' => 'application/vnd.kinar', From 51346c441c51a91aab923f04ba7f7b065c46655d Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Tue, 18 Dec 2018 14:20:31 -0400 Subject: [PATCH 29/38] PMC-200 --- workflow/engine/config/mobileios.pem | 148 ++++++++++----------------- 1 file changed, 55 insertions(+), 93 deletions(-) diff --git a/workflow/engine/config/mobileios.pem b/workflow/engine/config/mobileios.pem index bb56d7bda..6a0728eef 100644 --- a/workflow/engine/config/mobileios.pem +++ b/workflow/engine/config/mobileios.pem @@ -1,111 +1,73 @@ ------BEGIN CERTIFICATE----- -MIIGVTCCBT2gAwIBAgIIC2XzArbAqykwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV -BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js -ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3 -aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw -HhcNMTcxMDA0MTM0MzMwWhcNMTgxMTAzMTM0MzMwWjCBqTEtMCsGCgmSJomT8ixk -AQEMHWNvbS5wcm9jZXNzbWFrZXIuUHJvY2Vzc01ha2VyMTswOQYDVQQDDDJBcHBs -ZSBQdXNoIFNlcnZpY2VzOiBjb20ucHJvY2Vzc21ha2VyLlByb2Nlc3NNYWtlcjET -MBEGA1UECwwKOTQyUVA3UUpFOTEZMBcGA1UECgwQUHJvY2Vzc01ha2VyIEluYzEL -MAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDwQgZG -uKp6qEd1Uwgh0qmJLEFlMaIPjxkY+mGjbZyZys73oenLHgPwPukm+64oPdxs7UXl -ZifbWYU4rHbQDEkmOC4GyQU5n9s4zgNtgTqCpab3BuODA/1ffm2OullK1SHmS0cG -Cm8WC93SDa9nmF5xIaiUBbfOsZGcjUKM+MTn/5ETWoZEBUqlf5PKPGZ63/99Q/pj -UxNftY3LTE3o37GYATxFX/sIFtB98vB5hcTdt4zfXHzwisAtqQpkuWIGd5nULX5w -JzlAUjq4werqQhg/k/OAw7kL/JP/PDHpgrbCoO9BZTsAD8H21aZDZR1uDSFSa4H/ -2FeWj286U6Uu10XfAgMBAAGjggKQMIICjDAdBgNVHQ4EFgQUZtV15ABNLGW8Kjjp -yUaQl6f5eRowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2 -R1nFUlSjtzCCARwGA1UdIASCARMwggEPMIIBCwYJKoZIhvdjZAUBMIH9MIHDBggr -BgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55 -IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxl -IHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNh -dGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMu -MDUGCCsGAQUFBwIBFilodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1 -dGhvcml0eTAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmFwcGxlLmNvbS93 -d2RyY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAQ -BgoqhkiG92NkBgMBBAIFADAQBgoqhkiG92NkBgMCBAIFADCBoAYKKoZIhvdjZAYD -BgSBkTCBjgwdY29tLnByb2Nlc3NtYWtlci5Qcm9jZXNzTWFrZXIwBQwDYXBwDCJj -b20ucHJvY2Vzc21ha2VyLlByb2Nlc3NNYWtlci52b2lwMAYMBHZvaXAMKmNvbS5w -cm9jZXNzbWFrZXIuUHJvY2Vzc01ha2VyLmNvbXBsaWNhdGlvbjAODAxjb21wbGlj -YXRpb24wDQYJKoZIhvcNAQELBQADggEBADLO70r/cMu7M2A1xNu356IBL4vOtGK7 -nKaAxnjt7aZB+qGTz9xzjH0sHKIefAtlTTSzUzcR/9+gprKt4cdmwgV0zWBpO0UU -7Nu0WreMJKKJ1COO26d8WywvaNdWWHH7+lksZBJFiqFcYvECu3CaMoe77PUqKrWy -R/7MhsHtTsMLz/IMATgMU32NTUs3qKElXjHwTOyE2c+n5VYNoDDMUpx//mbZ5K1B -zA12bA2lg5VLXq4yA9p2Xc2JBg647CXcMQdzPphQ/NZaetcfmE0F01FAF3dfhmmX -jbNoPanngYpPEUVR6kt4MpB/3SeBXgU3HPhBIo7vtfIwI0wT+QlB5bw= ------END CERTIFICATE----- Bag Attributes friendlyName: Apple Push Services: com.processmaker.ProcessMaker - localKeyID: 66 D5 75 E4 00 4D 2C 65 BC 2A 38 E9 C9 46 90 97 A7 F9 79 1A + localKeyID: F1 9A 92 AC CD 22 C3 0B 7A 24 A2 EE 2F 93 87 DD 0E 97 F3 FA subject=/UID=com.processmaker.ProcessMaker/CN=Apple Push Services: com.processmaker.ProcessMaker/OU=942QP7QJE9/O=ProcessMaker Inc/C=US issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority -----BEGIN CERTIFICATE----- -MIIGVTCCBT2gAwIBAgIIC2XzArbAqykwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV +MIIGVTCCBT2gAwIBAgIIBHXDf7O3LYgwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3 aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw -HhcNMTcxMDA0MTM0MzMwWhcNMTgxMTAzMTM0MzMwWjCBqTEtMCsGCgmSJomT8ixk +HhcNMTgxMjE4MTcyMzUxWhcNMjAwMTE3MTcyMzUxWjCBqTEtMCsGCgmSJomT8ixk AQEMHWNvbS5wcm9jZXNzbWFrZXIuUHJvY2Vzc01ha2VyMTswOQYDVQQDDDJBcHBs ZSBQdXNoIFNlcnZpY2VzOiBjb20ucHJvY2Vzc21ha2VyLlByb2Nlc3NNYWtlcjET MBEGA1UECwwKOTQyUVA3UUpFOTEZMBcGA1UECgwQUHJvY2Vzc01ha2VyIEluYzEL -MAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDwQgZG -uKp6qEd1Uwgh0qmJLEFlMaIPjxkY+mGjbZyZys73oenLHgPwPukm+64oPdxs7UXl -ZifbWYU4rHbQDEkmOC4GyQU5n9s4zgNtgTqCpab3BuODA/1ffm2OullK1SHmS0cG -Cm8WC93SDa9nmF5xIaiUBbfOsZGcjUKM+MTn/5ETWoZEBUqlf5PKPGZ63/99Q/pj -UxNftY3LTE3o37GYATxFX/sIFtB98vB5hcTdt4zfXHzwisAtqQpkuWIGd5nULX5w -JzlAUjq4werqQhg/k/OAw7kL/JP/PDHpgrbCoO9BZTsAD8H21aZDZR1uDSFSa4H/ -2FeWj286U6Uu10XfAgMBAAGjggKQMIICjDAdBgNVHQ4EFgQUZtV15ABNLGW8Kjjp -yUaQl6f5eRowDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2 -R1nFUlSjtzCCARwGA1UdIASCARMwggEPMIIBCwYJKoZIhvdjZAUBMIH9MIHDBggr -BgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55 -IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxl -IHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNh -dGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMu -MDUGCCsGAQUFBwIBFilodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1 -dGhvcml0eTAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmFwcGxlLmNvbS93 -d2RyY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAQ +MAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTiJTM +ExiPxHCgYAD5MUlKnx0z8lQfk0///r12hi36bbXeGWceaCyGMEgWgryAmkvyCTde +gMqE8h9mlEMnq11vwPu9KRjJufnIeGZjpz5JdF5kD+XQp9S5epYgBodJyuLQsFi+ +1d9sArsgNx0xZX+B2qh+Q+GO8/r+01JxwSmecSG5SQQgZZzeCp6soGIKMtxkt4Rp +WCAkV0pROnLF18EVwlHGaFCwABoTR8q5mkixaekyWeRfyb6WoOVXAA/l9fbxTXKr +/4yRV6Gw7Jtu5vmULSqVlfXWTbhNf27hE/sYQmdW124j6uT6UvYF+DPen1PwOore +TaKxqjHbpNvPc6OJAgMBAAGjggKQMIICjDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQY +MBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBHAYDVR0gBIIBEzCCAQ8wggELBgkq +hkiG92NkBQEwgf0wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBj +ZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRo +ZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMg +b2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2Ugc3RhdGVtZW50cy4wNQYIKwYBBQUHAgEWKWh0dHA6Ly93d3cuYXBwbGUu +Y29tL2NlcnRpZmljYXRlYXV0aG9yaXR5MBMGA1UdJQQMMAoGCCsGAQUFBwMCMDAG +A1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmwuYXBwbGUuY29tL3d3ZHJjYS5jcmww +HQYDVR0OBBYEFPGakqzNIsMLeiSi7i+Th90Ol/P6MA4GA1UdDwEB/wQEAwIHgDAQ BgoqhkiG92NkBgMBBAIFADAQBgoqhkiG92NkBgMCBAIFADCBoAYKKoZIhvdjZAYD BgSBkTCBjgwdY29tLnByb2Nlc3NtYWtlci5Qcm9jZXNzTWFrZXIwBQwDYXBwDCJj b20ucHJvY2Vzc21ha2VyLlByb2Nlc3NNYWtlci52b2lwMAYMBHZvaXAMKmNvbS5w cm9jZXNzbWFrZXIuUHJvY2Vzc01ha2VyLmNvbXBsaWNhdGlvbjAODAxjb21wbGlj -YXRpb24wDQYJKoZIhvcNAQELBQADggEBADLO70r/cMu7M2A1xNu356IBL4vOtGK7 -nKaAxnjt7aZB+qGTz9xzjH0sHKIefAtlTTSzUzcR/9+gprKt4cdmwgV0zWBpO0UU -7Nu0WreMJKKJ1COO26d8WywvaNdWWHH7+lksZBJFiqFcYvECu3CaMoe77PUqKrWy -R/7MhsHtTsMLz/IMATgMU32NTUs3qKElXjHwTOyE2c+n5VYNoDDMUpx//mbZ5K1B -zA12bA2lg5VLXq4yA9p2Xc2JBg647CXcMQdzPphQ/NZaetcfmE0F01FAF3dfhmmX -jbNoPanngYpPEUVR6kt4MpB/3SeBXgU3HPhBIo7vtfIwI0wT+QlB5bw= +YXRpb24wDQYJKoZIhvcNAQELBQADggEBAHeOD1oHNW5cRUSq52dIpzBxp/9QnK4M +v9YeNempdjI9ajo3gHzA2iJHpy5+JWTkxuE7iUdTP4KfjL/vYPIJvCdESv+o7wre +SfLMlarSx5X+AmCDsQLMVyb3aoiNA4qE16OIpu+UTs7Np90xtL4bsgLLf0wwVLSF +x74NKKEQLgrhjfThnmZ8a4u7CiVhXSGPosqaXyT43WXKyWreDnCW1Pzm+sfSlD43 +yCKglvGJeDvfWb1RfEJpqNWp7duAb/HiD2oIWrdtN+6XYEucQEuRrKfj2XOHS1+r +rmsU8hWBHhGgMYectSe4nXBOCtyOzDTaYIs+TVCt+xnxCq5ItUaxSQo= -----END CERTIFICATE----- Bag Attributes - friendlyName: ProcessMaker Prod Key - localKeyID: 66 D5 75 E4 00 4D 2C 65 BC 2A 38 E9 C9 46 90 97 A7 F9 79 1A + friendlyName: Mauricio Veliz + localKeyID: F1 9A 92 AC CD 22 C3 0B 7A 24 A2 EE 2F 93 87 DD 0E 97 F3 FA Key Attributes: ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,6D70077A389A3A8C - -bziMWwK5LMeP0dIM2wHeO6juXqzmtH/U9FW5GAZuJEKt0zYAyv1DmEJFfyMMZmob -4j+LfvfdZVium6cIEkC+JMPFwW0dSRQNgA6I44E2AT73MTQr6u7pZi/QiQ09CJCQ -JjFJ2Q08ZgHQXrJMy62PeHO+uWOQW6YuI5aNC/K+AdvIwNyzlCj/HNWcf7IeSaeE -urH5/dL1cVSfpeBXMsqfYSAcfTZOXgAb8BRwngi+RSGNQ6SawEl53vm94gDSH3Mi -3tzCsDcw0Gw5Wu1d/755Zzakl48LOqxLzptbOr5QbJK5BeGhE0y3Db+rYNpG3fzw -I3YdZTMhkzaigG4xp/BLyLL2tgGzSIGg8BARMHF/GkXcdKBJyQrweXMkhhoeYxr2 -dzWurOd0Bkw3DJXONE9uPNQb/i33TYmflQMhWJFlHkKhkHlIgAu5cIzTwRNbHCF7 -aRKiHz5uL+/WufgVlw62JZp9JZ1mPsmJINba4BAT9i9zkUnPvxYN/GB5Z2Ttz1nj -ylyGiAtdAZ7l05OWd7I9gEUTce8dsojThIun3QQ1UFCRJUmg38Dp/XxMzWP5IpTb -E2McM90jyN+M8gII2KU6U5uqTXDiMMFiXFa9WlTc4xIkHNQLINDASBgUQr7pIqth -UTvU4YoST6wma9BNYAuGX9ga6uEg94kmVXrUEBZWI13T56bSpw4cyvzSJvNwcH8m -nClVXMIrysoGgQ1Gxs6G2xWTduXysK5E26bY6Gypk9VPMUyo6oVENnY3EQs3Cj/R -W2vyz1t05xPonPxmun2mFTQQvgSbbkfUbuL02tBQXxkWNoo5rCAVuRMFlVjFzIEF -qZ3uiU8ui5Nj1Tc5SAosuoTu53vLp4ynn9A5WVmLXdE1DucCXTumN8teISF69cUU -XYVy2Ch39LxUGumWTSVZNDJBJgSFtiNxCmpwS4jQsNRF9piK/T+t3INSXRcRB9mF -f3DYOrjor6TTu0hEppZosIUfoo7EDgplfMK5x9ZjL8JWSWEqA2U2JoRbe9ucMkGy -wbFTsbyg9NNSdF1jEZUEKWKr7dT3ShPHhut/F9HOi5KvbMAgUf0HnYgUsCTYhZru -UbVf8cWnfYPyVUW3Doa12/uSpqwrHzOduexb1LzO0mukdfyR7UhY/rRv5w4KkTXJ -+zlNncWiSZQiDJq053i8UYhDj0U7+YzmpxE/BUU5HwMcZ8wtl0MDac66Z1YXkqgs -bO2dK71tNQ1D5msmDDP+Cw0W4wLdRiJn8FNF5oBl2QYMyTyclduhrlCMp8VgnMmT -mDrygATrWoaToSiR+Mc6D7rOLyHt+29HMtFx1Lgs3jpgzLQ4nBWBtLN5uxkxTclH -W35sMR2eDYiM7nEO9TJSBlC8lkFiGsv4xYYK8gLEZ2h7OMPrO/9L9CmHk/v3Ts8I -wSt0FiVZNP4JEL0NZ5nSZMnDT0R47CuFkEgf271Um4lNPPRV7mPA0fWkKXt59FeK -LoBZYkGes/QliAUWdY44tVKgg6oIM6IqubsO92Hru5o36Px7ucVoqiNHnSy1lo/v -KAfvW9/40XJ+z1JUTYwreaLoO+Wlk0Irkvv4Fro0KTA8rXDNFm/JL2gkgknEae4i ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTiJTMExiPxHCg +YAD5MUlKnx0z8lQfk0///r12hi36bbXeGWceaCyGMEgWgryAmkvyCTdegMqE8h9m +lEMnq11vwPu9KRjJufnIeGZjpz5JdF5kD+XQp9S5epYgBodJyuLQsFi+1d9sArsg +Nx0xZX+B2qh+Q+GO8/r+01JxwSmecSG5SQQgZZzeCp6soGIKMtxkt4RpWCAkV0pR +OnLF18EVwlHGaFCwABoTR8q5mkixaekyWeRfyb6WoOVXAA/l9fbxTXKr/4yRV6Gw +7Jtu5vmULSqVlfXWTbhNf27hE/sYQmdW124j6uT6UvYF+DPen1PwOoreTaKxqjHb +pNvPc6OJAgMBAAECggEAfYWZjjNyqrUNhA0T5sr5S795S77rbkUy/pxB/xgGJol9 +lwqJ50A303TJAhqYEtP8ZuZTJc/U3Ojz+yHVa6/DZTIl74x4ehPShcP0NgQi8OGN +tWC9pYBBucJlXSGinAY5a06JisxMpMJGGgq6Vvp8nCiNPUe4i+R5N0dcr8XIlYxG +FU+r6rGqmcRGxPp8yQfh5fP1P+9xyjZt1WuUuvF4Y5dTeVmR0z/dZQqlrC0Q5hAD +kAfimf31ViPYaNwhxHTG53aC8GMbRJqTeM/MW3bZ+dVRcW8Yk2Ym/mbDY3cQvi0V +sGOVDHaoJNa8pfQNZ+y+tvJPRYIdbmPG2pGcJeuqAQKBgQDtQiZ8/V4DBmboZyBt +60Rnafue1bSfQssxoOuNtlRosOW28piCfNRftYhCKT3ylKbPVY02ekNisUIJYaZI +8ipCGNGdZD2oOitWVYDDq+A9O28JinsJc5i9ffQQ6dK+Krw5k7Bo4DzytwhJlwXa +8YxvntN7PlzM68wncKL+1jnwSQKBgQDkPjilC/4UiXnGmhFeu6oZ6dz0V7yjdoP0 +ApdHVsOvCyIIl34vBy4Du4iZ/xXzwd+ZwOsTHXf8iU1Ayig5WFNDsr+HRItvNRg+ +FxOSiqLnclJYsJMNtGN7SnlTKyGWGpxzCydaeOq1Yapq8VkcFL9gtZYt911prD0u +THx2vRKZQQKBgF3ZwOfIQZvouGROBuH0IobVwZa+6kflYAMtqH/SE+mlr/iCVhmn +z0pcwJ2LOtnuO13gdY+LJYSwoXKcke5g/J5QuvoLYOheui3YfKrqHjWagP3BLZI7 +i7vJSvY1yAs5VGNiLHIP4YwRItIZT1OgIPE2Xmlt7b+RtpwTTiaIDzshAoGBAMmN +TJYq9e8Ky5eem/ItBHQnuW+oPrOWx8VluFNOAjWEPkSaCtramz6+j012HduIe70Z +yDy0DC3czXSGUGj7X2Pr6Ag6dmr41vSVijog5OQ/Zwpcuy8h+at5Q5Q3BUy5KSjK +U7EoEBOmMEiJ4ifTBoEPOZRT2ZCkgc5tyodMRa1BAoGAKE39g4yX+H+/kXtXqe7d +/lCBWbPTLGxo43HROjcftXvsZi+voYDlDQVfD6d3Ew8rLMWYfZ4hVYtWR4AeE0My +7aeW6JX2hD6kANFOlOCOUApZeL2X9SiCUyXQWb5M+oSmS63IWK9eHamBNqzpY6HU +V2ajfnwBPcbydtbtUcv7D7k= +-----END PRIVATE KEY----- \ No newline at end of file From 21b91db43cd67d83c48f715d6470e26c5bd5dc7c Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Tue, 8 Jan 2019 15:34:10 -0400 Subject: [PATCH 30/38] PMC-348 Add marks and register the new classes for avoid this implementation in the community version --- workflow/engine/bin/cron_single.php | 4 ++++ .../BusinessModel/ActionsByEmail/ResponseReader.php | 2 ++ .../engine/src/ProcessMaker/Services/Api/ActionsByEmail.php | 2 ++ workflow/engine/templates/emailServer/emailServer.js | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 5098a3339..64cacd92b 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -1,7 +1,9 @@ actionsByEmailEmailResponse(); break; + /*----------------------------------********---------------------------------*/ } } catch (Exception $e) { $token = strtotime("now"); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 447835910..b7117228d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -30,6 +30,7 @@ use WsBase; */ class ResponseReader { + /*----------------------------------********---------------------------------*/ private $channel = "ActionsByEmail"; private $case = []; private $messageResponseError = null; @@ -347,4 +348,5 @@ class ResponseReader ); return $result; } + /*----------------------------------********---------------------------------*/ } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php index a1646e6ee..63045f2ec 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/ActionsByEmail.php @@ -154,11 +154,13 @@ class ActionsByEmail extends Api $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmail.html', $path . 'actionsByEmail.html'); } + /*----------------------------------********---------------------------------*/ if (!file_exists($path . 'actionsByEmailErrorReply.html')) { $data = array('prf_content' => '', 'prf_filename' => 'actionsByEmailErrorReply.html', 'prf_path' => 'templates'); $arrayData = $filesManager->addProcessFilesManager($proId, $userUid, $data); @copy(PATH_TPL . 'actionsByEmail' . PATH_SEP . 'actionsByEmailErrorReply.html', $path . 'actionsByEmailErrorReply.html'); } + /*----------------------------------********---------------------------------*/ } $directory = dir($path); diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index d7976acb9..7341082b6 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -71,6 +71,7 @@ emailServer.application = { emailServerDefault: emailDefault }; } else if (typeEmailEngine === "IMAP") { + /*----------------------------------********---------------------------------*/ var rdoGrpOption = Ext.getCmp("rdoGrpSmtpSecure").getValue(); var smtpSecure = rdoGrpOption.getGroupValue(); @@ -92,6 +93,7 @@ emailServer.application = { mailTo: Ext.getCmp("txtMailTo").getValue(), emailServerDefault: emailDefault }; + /*----------------------------------********---------------------------------*/ } else { //MAIL p = { @@ -304,6 +306,7 @@ emailServer.application = { Ext.getCmp("txtIncomingPort").allowBlank = true; Ext.getCmp("txtAccountFrom").allowBlank = false; } else if (cboEmailEngine === "IMAP") { + /*----------------------------------********---------------------------------*/ Ext.getCmp("txtServer").setVisible(true); Ext.getCmp("txtPort").setVisible(true); @@ -330,6 +333,7 @@ emailServer.application = { Ext.getCmp("txtIncomingServer").allowBlank = false; Ext.getCmp("txtIncomingPort").allowBlank = false; Ext.getCmp("txtAccountFrom").allowBlank = false; + /*----------------------------------********---------------------------------*/ } else { //MAIL Ext.getCmp("txtServer").setVisible(false); From 75a5a4a3600f2a66dfcdd28ac324c8ea68a19554 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Fri, 25 Jan 2019 10:59:53 -0400 Subject: [PATCH 31/38] add mark for remove options IMAP --- workflow/engine/templates/emailServer/emailServer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflow/engine/templates/emailServer/emailServer.js b/workflow/engine/templates/emailServer/emailServer.js index 7341082b6..dc72cd436 100644 --- a/workflow/engine/templates/emailServer/emailServer.js +++ b/workflow/engine/templates/emailServer/emailServer.js @@ -552,7 +552,9 @@ emailServer.application = { data: [ ["PHPMAILER", "SMTP (PHPMailer)"], + /*----------------------------------********---------------------------------*/ ["IMAP", "SMTP - IMAP (PHPMailer)"], + /*----------------------------------********---------------------------------*/ ["MAIL", "Mail (PHP)"] ] }); From 6fefd80c86521448c2585893b4327d2a777ff4bb Mon Sep 17 00:00:00 2001 From: Gustavo Silva Date: Thu, 31 Jan 2019 13:18:48 -0400 Subject: [PATCH 32/38] PMC-446: Action by Email: Update composer-lock file with php-imap dependency --- composer.lock | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/composer.lock b/composer.lock index 527736ee1..de7acb1d9 100644 --- a/composer.lock +++ b/composer.lock @@ -1224,6 +1224,58 @@ ], "time": "2015-02-10T20:07:52+00:00" }, + { + "name": "php-imap/php-imap", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/barbushin/php-imap.git", + "reference": "d4f8ef4504dfb555857241aa7d1e414a1c229079" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barbushin/php-imap/zipball/d4f8ef4504dfb555857241aa7d1e414a1c229079", + "reference": "d4f8ef4504dfb555857241aa7d1e414a1c229079", + "shasum": "" + }, + "require": { + "ext-imap": "*", + "php": ">=5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpImap\\": "src/PhpImap" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sergey Barbushin", + "email": "barbushin@gmail.com", + "homepage": "http://linkedin.com/in/barbushin" + } + ], + "description": "Manage mailboxes, filter/get/delete emails in PHP (supports IMAP/POP3/NNTP)", + "homepage": "https://github.com/barbushin/php-imap", + "keywords": [ + "imap", + "mail", + "mailbox", + "php", + "pop3", + "receive emails" + ], + "time": "2017-12-22T12:53:34+00:00" + }, { "name": "phpmailer/phpmailer", "version": "v5.2.4", From b56d7a48d1f53c4bcea7c880288ddb8aa20883fd Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Wed, 13 Feb 2019 14:10:51 -0400 Subject: [PATCH 33/38] PMC-450 Variables setup on 'ABE response' does not works with names different when it has two flows. --- .../ActionsByEmail/ResponseReader.php | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 50854be36..70a6fec03 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -20,7 +20,6 @@ use PMLicensedFeatures; use ProcessMaker\BusinessModel\ActionsByEmail; use ProcessMaker\BusinessModel\EmailServer; use ProcessMaker\ChangeLog\ChangeLog; -use ProcessMaker\Core\System; use ResultSet; use WsBase; @@ -57,13 +56,13 @@ class ResponseReader public function actionsByEmailEmailResponse() { try { + if (!extension_loaded('imap')) { + G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", ['php_imap']) . "\n"); + exit; + } if (PMLicensedFeatures ::getSingleton() ->verifyfeature('zLhSk5TeEQrNFI2RXFEVktyUGpnczV1WEJNWVp6cjYxbTU3R29mVXVZNWhZQT0=')) { - require_once(PATH_DB . config("system.workspace") . PATH_SEP . "/db.php"); - $arraySystemConfiguration = System::getSystemConfiguration('', '', config("system.workspace")); - define('SYS_SKIN', $arraySystemConfiguration['default_skin']); - $criteriaAbe = new Criteria(); $criteriaAbe->add(AbeConfigurationPeer::ABE_TYPE, "RESPONSE"); $resultAbe = AbeConfigurationPeer::doSelectRS($criteriaAbe); @@ -76,7 +75,7 @@ class ResponseReader } catch (Exception $e) { Bootstrap::registerMonolog( $this->channel, - $e->getCode(), + $e->getCode() != 0 ? $e->getCode() : 300, $e->getMessage(), $this->case, config("system.workspace"), @@ -117,7 +116,7 @@ class ResponseReader $emailSetup = (!is_null(EmailServerPeer::retrieveByPK($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID']))) ? $emailServer->getEmailServer($dataAbe['ABE_EMAIL_SERVER_RECEIVER_UID'], true) : $emailServer->getEmailServerDefault(); - if (empty($emailSetup)) { + if (empty($emailSetup) || (empty($emailSetup['MESS_INCOMING_SERVER']) && $emailSetup['MESS_INCOMING_PORT'] == 0)) { throw (new Exception(G::LoadTranslation('ID_ABE_LOG_CANNOT_READ'), 500)); } $mailbox = new Mailbox( @@ -130,13 +129,15 @@ class ResponseReader $mailsIds = $mailbox->searchMailbox('UNSEEN'); if ($mailsIds) { // Get the first message and save its attachment(s) to disk: - foreach ($mailsIds as $key => $mailsId) { + foreach ($mailsIds as $key => $mailId) { /** @var IncomingMail $mail */ - $mail = $mailbox->getMail($mailsId); + $mail = $mailbox->getMail($mailId, false); preg_match("/{(.*)}/", $mail->textPlain, $matches); if ($matches) { $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); - if (config("system.workspace") === $dataEmail['workspace']) { + $dataAbeReq = loadAbeRequest($dataEmail['ABE_REQ_UID']); + if (config("system.workspace") === $dataEmail['workspace'] + && (array_key_exists('ABE_UID', $dataAbeReq) && $dataAbeReq['ABE_UID'] == $dataAbe['ABE_UID'])) { $this->case = $dataEmail; try { $appDelegate = new AppDelegation(); @@ -147,6 +148,7 @@ class ResponseReader throw (new Exception(G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'), 400)); } $this->processABE($this->case, $mail, $dataAbe); + $mailbox->markMailAsRead($mailId); Bootstrap::registerMonolog( $this->channel, 100, // DEBUG @@ -164,7 +166,7 @@ class ResponseReader ); Bootstrap::registerMonolog( $this->channel, - $e->getCode(), + $e->getCode() != 0 ? $e->getCode() : 400, $e->getMessage(), $this->case, config("system.workspace"), @@ -178,7 +180,7 @@ class ResponseReader } catch (Exception $e) { Bootstrap::registerMonolog( $this->channel, - $e->getCode(), + $e->getCode() != 0 ? $e->getCode() : 500, $e->getMessage(), $this->case, config("system.workspace"), From fe1eaeaca80d48bb59e3333f361ef0e63a521b8b Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Fri, 1 Mar 2019 11:50:34 -0400 Subject: [PATCH 34/38] PMC-507 --- workflow/engine/classes/ActionsByEmailCoreClass.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 75c0be2de..c4d8e24f8 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -466,8 +466,6 @@ class ActionsByEmailCoreClass extends PMPlugin $from = ($userDetails["USR_FULLNAME"] . ' <' . $userDetails["USR_EMAIL"] . '>'); } else { global $RBAC; - $currentUser = $RBAC->aUserInfo['USER_INFO']; - $from = ($currentUser["USR_FIRSTNAME"] . ' ' . $currentUser["USR_LASTNAME"] . ' <' . $currentUser["USR_EMAIL"] . '>'); if ($RBAC != null && is_array($RBAC->aUserInfo['USER_INFO'])) { $currentUser = $RBAC->aUserInfo['USER_INFO']; From 51dfa1c565e0af44f5c0ed9aebb5a7fc7c7e3be5 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Thu, 4 Jul 2019 13:25:42 -0400 Subject: [PATCH 35/38] PMC-895 --- .../ActionsByEmail/ResponseReader.php | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 70a6fec03..c0fe78ccb 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -132,46 +132,48 @@ class ResponseReader foreach ($mailsIds as $key => $mailId) { /** @var IncomingMail $mail */ $mail = $mailbox->getMail($mailId, false); - preg_match("/{(.*)}/", $mail->textPlain, $matches); - if ($matches) { - $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); - $dataAbeReq = loadAbeRequest($dataEmail['ABE_REQ_UID']); - if (config("system.workspace") === $dataEmail['workspace'] - && (array_key_exists('ABE_UID', $dataAbeReq) && $dataAbeReq['ABE_UID'] == $dataAbe['ABE_UID'])) { - $this->case = $dataEmail; - try { - $appDelegate = new AppDelegation(); - $alreadyRouted = $appDelegate->alreadyRouted($this->case["appUid"], $this->case["delIndex"]); - //Verify if the current case is already routed. - if ($alreadyRouted) { - $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ALREADY_ROUTED')); - throw (new Exception(G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'), 400)); + if (!empty($mail->textPlain)) { + preg_match("/{(.*)}/", $mail->textPlain, $matches); + if ($matches) { + $dataEmail = G::json_decode(Crypt::decryptString($matches[1]), true); + $dataAbeReq = loadAbeRequest($dataEmail['ABE_REQ_UID']); + if (config("system.workspace") === $dataEmail['workspace'] + && (array_key_exists('ABE_UID', $dataAbeReq) && $dataAbeReq['ABE_UID'] == $dataAbe['ABE_UID'])) { + $this->case = $dataEmail; + try { + $appDelegate = new AppDelegation(); + $alreadyRouted = $appDelegate->alreadyRouted($this->case["appUid"], $this->case["delIndex"]); + //Verify if the current case is already routed. + if ($alreadyRouted) { + $this->setMessageResponseError(G::LoadTranslation('ID_ABE_RESPONSE_ALREADY_ROUTED')); + throw (new Exception(G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED'), 400)); + } + $this->processABE($this->case, $mail, $dataAbe); + $mailbox->markMailAsRead($mailId); + Bootstrap::registerMonolog( + $this->channel, + 100, // DEBUG + G::LoadTranslation('ID_ABE_LOG_PROCESSED_OK'), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); + } catch (Exception $e) { + $this->sendMessageError( + $this->getMessageResponseError() ? $this->getMessageResponseError() : $e->getMessage(), + $this->case, + $mail, + $emailSetup + ); + Bootstrap::registerMonolog( + $this->channel, + $e->getCode() != 0 ? $e->getCode() : 400, + $e->getMessage(), + $this->case, + config("system.workspace"), + 'processmaker.log' + ); } - $this->processABE($this->case, $mail, $dataAbe); - $mailbox->markMailAsRead($mailId); - Bootstrap::registerMonolog( - $this->channel, - 100, // DEBUG - G::LoadTranslation('ID_ABE_LOG_PROCESSED_OK'), - $this->case, - config("system.workspace"), - 'processmaker.log' - ); - } catch (Exception $e) { - $this->sendMessageError( - $this->getMessageResponseError() ? $this->getMessageResponseError() : $e->getMessage(), - $this->case, - $mail, - $emailSetup - ); - Bootstrap::registerMonolog( - $this->channel, - $e->getCode() != 0 ? $e->getCode() : 400, - $e->getMessage(), - $this->case, - config("system.workspace"), - 'processmaker.log' - ); } } } From 65c49226190c2a39f740fa9f893687839a059df5 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Thu, 11 Jul 2019 10:23:48 -0400 Subject: [PATCH 36/38] solved conflict composer.lock, config/app.php, workflow/engine/classes/SpoolRun.php --- composer.lock | 3511 +++++++++++++++----------- config/app.php | 9 +- workflow/engine/classes/SpoolRun.php | 80 +- 3 files changed, 2047 insertions(+), 1553 deletions(-) diff --git a/composer.lock b/composer.lock index f63ea0385..3e87b567a 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "a9ba65f7fb68be7c36dd45b62216b2c6", + "content-hash": "f548a9edab2774eff09bb261eb05c6d0", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -115,7 +115,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/michelangelofe.git", - "reference": "4ac7ac3ebd1863c258c3f0e048fd3fff668f0184" + "reference": "0b4c4cd6cea4f3eaa10452423d293ed6aac0d5ab" }, "require": { "colosa/pmui": "release/3.3.1-dev" @@ -126,7 +126,7 @@ "keywords": [ "js app ProcessMaker" ], - "time": "2018-11-29T15:23:08+00:00" + "time": "2018-12-18T17:10:59+00:00" }, { "name": "colosa/pmDynaform", @@ -134,7 +134,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmdynaform.git", - "reference": "e4176c9772842904552997702e549035b6ba641d" + "reference": "42281f63761d18a6dcaf63ff5c612eeb0c6dfa1b" }, "type": "library", "description": "JS Library to render ProcessMaker Dynaforms", @@ -142,7 +142,7 @@ "keywords": [ "js lib ProcessMaker Dynaforms" ], - "time": "2018-11-28T17:54:53+00:00" + "time": "2018-12-10T15:33:17+00:00" }, { "name": "colosa/pmUI", @@ -150,7 +150,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmui.git", - "reference": "711b9796c7b5ad4363b9177d0969ec4abecc8d2e" + "reference": "4449e02225bc1d351907ceee79b2411b428df517" }, "type": "library", "description": "JS UI Library", @@ -158,7 +158,7 @@ "keywords": [ "js lib ProcessMaker UI" ], - "time": "2018-11-16T14:26:15+00:00" + "time": "2018-12-18T17:11:02+00:00" }, { "name": "dapphp/securimage", @@ -244,33 +244,33 @@ }, { "name": "doctrine/inflector", - "version": "v1.1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -307,20 +307,191 @@ "singularize", "string" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { - "name": "erusev/parsedown", - "version": "1.7.1", + "name": "doctrine/lexer", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + "url": "https://github.com/doctrine/lexer.git", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "time": "2019-06-08T11:03:04+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.4|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2019-03-31T00:38:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.9", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25", + "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">= 5.5" + }, + "require-dev": { + "dominicsayers/isemail": "dev-master", + "phpunit/phpunit": "^4.8.35||^5.7||^6.0", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "EmailValidator" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "time": "2019-06-23T10:14:27+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", "shasum": "" }, "require": { @@ -353,7 +524,7 @@ "markdown", "parser" ], - "time": "2018-03-08T01:11:30+00:00" + "time": "2019-03-17T18:48:37+00:00" }, { "name": "geshi/geshi", @@ -427,7 +598,7 @@ "src/" ] }, - "notification-url": "http://packagist.org/downloads/", + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -438,6 +609,189 @@ ], "time": "2015-10-16T22:11:08+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "9f83dded91781a01c63574e387eaa769be769115" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2018-12-04T20:46:45+00:00" + }, { "name": "jakub-onderka/php-console-color", "version": "v0.2", @@ -527,42 +881,94 @@ "time": "2018-09-29T18:48:56+00:00" }, { - "name": "laravel/framework", - "version": "v5.4.36", + "name": "kylekatarnls/update-helper", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9" + "url": "https://github.com/kylekatarnls/update-helper.git", + "reference": "b34a46d7f5ec1795b4a15ac9d46b884377262df9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9", + "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/b34a46d7f5ec1795b4a15ac9d46b884377262df9", + "reference": "b34a46d7f5ec1795b4a15ac9d46b884377262df9", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.6", + "composer-plugin-api": "^1.1.0", + "php": ">=5.3.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "composer/composer": "^2.0.x-dev", + "phpunit/phpunit": ">=4.8.35 <6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "UpdateHelper\\ComposerPlugin" + }, + "autoload": { + "psr-0": { + "UpdateHelper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Update helper", + "time": "2019-06-05T08:34:23+00:00" + }, + { + "name": "laravel/framework", + "version": "v5.7.28", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "erusev/parsedown": "^1.7", "ext-mbstring": "*", "ext-openssl": "*", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.4|~2.0", - "php": ">=5.6.4", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~5.4", - "symfony/console": "~3.2", - "symfony/debug": "~3.2", - "symfony/finder": "~3.2", - "symfony/http-foundation": "~3.2", - "symfony/http-kernel": "~3.2", - "symfony/process": "~3.2", - "symfony/routing": "~3.2", - "symfony/var-dumper": "~3.2", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" + "laravel/nexmo-notification-channel": "^1.0", + "laravel/slack-notification-channel": "^1.0", + "league/flysystem": "^1.0.8", + "monolog/monolog": "^1.12", + "nesbot/carbon": "^1.26.3", + "opis/closure": "^3.1", + "php": "^7.1.3", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^3.7", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^4.1", + "symfony/debug": "^4.1", + "symfony/finder": "^4.1", + "symfony/http-foundation": "^4.1", + "symfony/http-kernel": "^4.1", + "symfony/process": "^4.1", + "symfony/routing": "^4.1", + "symfony/var-dumper": "^4.1", + "tijsverkoyen/css-to-inline-styles": "^2.2.1", + "vlucas/phpdotenv": "^2.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" }, "replace": { "illuminate/auth": "self.version", @@ -577,7 +983,6 @@ "illuminate/database": "self.version", "illuminate/encryption": "self.version", "illuminate/events": "self.version", - "illuminate/exception": "self.version", "illuminate/filesystem": "self.version", "illuminate/hashing": "self.version", "illuminate/http": "self.version", @@ -593,39 +998,50 @@ "illuminate/support": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "self.version" + "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", - "mockery/mockery": "~0.9.4", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~5.7", - "predis/predis": "~1.0", - "symfony/css-selector": "~3.2", - "symfony/dom-crawler": "~3.2" + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", + "filp/whoops": "^2.1.4", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.0", + "moontoast/math": "^1.1", + "orchestra/testbench-core": "3.7.*", + "pda/pheanstalk": "^3.0|^4.0", + "phpunit/phpunit": "^7.5", + "predis/predis": "^1.1.1", + "symfony/css-selector": "^4.1", + "symfony/dom-crawler": "^4.1", + "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "filp/whoops": "Required for friendly error pages in development (^2.1.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nexmo/client": "Required to use the Nexmo transport (^1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", + "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.7-dev" } }, "autoload": { @@ -653,7 +1069,121 @@ "framework", "laravel" ], - "time": "2017-08-30T09:26:16+00:00" + "time": "2019-02-26T15:41:34+00:00" + }, + { + "name": "laravel/nexmo-notification-channel", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/nexmo-notification-channel.git", + "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", + "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", + "shasum": "" + }, + "require": { + "nexmo/client": "^1.0", + "php": "^7.1.3" + }, + "require-dev": { + "illuminate/notifications": "~5.7", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Illuminate\\Notifications\\NexmoChannelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Notifications\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Nexmo Notification Channel for laravel.", + "keywords": [ + "laravel", + "nexmo", + "notifications" + ], + "time": "2018-12-04T12:57:08+00:00" + }, + { + "name": "laravel/slack-notification-channel", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/slack-notification-channel.git", + "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", + "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": "^7.1.3" + }, + "require-dev": { + "illuminate/notifications": "~5.7", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Illuminate\\Notifications\\SlackChannelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Notifications\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Slack Notification Channel for laravel.", + "keywords": [ + "laravel", + "notifications", + "slack" + ], + "time": "2018-12-12T13:12:06+00:00" }, { "name": "laravel/tinker", @@ -719,17 +1249,72 @@ "time": "2018-10-12T19:39:35+00:00" }, { - "name": "league/flysystem", - "version": "1.0.49", + "name": "lcobucci/jwt", + "version": "3.3.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" + "url": "https://github.com/lcobucci/jwt.git", + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "^5.7 || ^7.3", + "squizlabs/php_codesniffer": "~2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "time": "2019-05-24T18:30:49+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.53", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "08e12b7628f035600634a5e76d95b5eb66cea674" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/08e12b7628f035600634a5e76d95b5eb66cea674", + "reference": "08e12b7628f035600634a5e76d95b5eb66cea674", "shasum": "" }, "require": { @@ -800,7 +1385,7 @@ "sftp", "storage" ], - "time": "2018-11-23T23:41:29+00:00" + "time": "2019-06-18T20:09:29+00:00" }, { "name": "libchart/libchart", @@ -828,7 +1413,7 @@ ], "authors": [ { - "name": "Jean-Marc Trémeaux", + "name": "Jean-Marc Tr??meaux", "homepage": "http://naku.dohcrew.com/", "role": "Developer" }, @@ -854,12 +1439,12 @@ "source": { "type": "git", "url": "https://github.com/Luracast/Restler.git", - "reference": "188968f6a15796077350f1be9c461f8d02c559a8" + "reference": "87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Luracast/Restler/zipball/188968f6a15796077350f1be9c461f8d02c559a8", - "reference": "188968f6a15796077350f1be9c461f8d02c559a8", + "url": "https://api.github.com/repos/Luracast/Restler/zipball/87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c", + "reference": "87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c", "shasum": "" }, "require": { @@ -1005,77 +1590,36 @@ ], "time": "2016-04-12T18:29:35+00:00" }, - { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2017-01-23T04:29:33+00:00" - }, { "name": "nesbot/carbon", - "version": "1.36.1", + "version": "1.39.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" + "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", - "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", + "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", "shasum": "" }, "require": { + "kylekatarnls/update-helper": "^1.1", "php": ">=5.3.9", "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { + "composer/composer": "^1.2", + "friendsofphp/php-cs-fixer": "~2", "phpunit/phpunit": "^4.8.35 || ^5.7" }, - "suggest": { - "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", - "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." - }, + "bin": [ + "bin/upgrade-carbon" + ], "type": "library", "extra": { + "update-helper": "Carbon\\Upgrade", "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -1105,7 +1649,55 @@ "datetime", "time" ], - "time": "2018-11-22T18:23:02+00:00" + "time": "2019-06-11T09:07:59+00:00" + }, + { + "name": "nexmo/client", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/Nexmo/nexmo-php.git", + "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/182d41a02ebd3e4be147baea45458ccfe2f528c4", + "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4", + "shasum": "" + }, + "require": { + "lcobucci/jwt": "^3.2", + "php": ">=5.6", + "php-http/client-implementation": "^1.0", + "php-http/guzzle6-adapter": "^1.0", + "zendframework/zend-diactoros": "^1.8.4 || ^2.0" + }, + "require-dev": { + "estahn/phpunit-json-assertions": "^1.0.0", + "php-http/mock-client": "^0.3.0", + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Nexmo\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tim Lytle", + "email": "tim@nexmo.com", + "homepage": "http://twitter.com/tjlytle", + "role": "Developer" + } + ], + "description": "PHP Client for using Nexmo's API.", + "time": "2019-05-13T20:27:43+00:00" }, { "name": "nikic/php-parser", @@ -1159,34 +1751,91 @@ "time": "2018-02-28T20:30:58+00:00" }, { - "name": "paragonie/random_compat", - "version": "v2.0.17", + "name": "opis/closure", + "version": "3.3.0", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" + "url": "https://github.com/opis/closure.git", + "reference": "f846725591203098246276b2e7b9e8b7814c4965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", + "url": "https://api.github.com/repos/opis/closure/zipball/f846725591203098246276b2e7b9e8b7814c4965", + "reference": "f846725591203098246276b2e7b9e8b7814c4965", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": "^5.4 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "time": "2019-05-31T20:04:32+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.99", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -1205,7 +1854,7 @@ "pseudorandom", "random" ], - "time": "2018-07-04T16:31:37+00:00" + "time": "2018-07-02T15:55:56+00:00" }, { "name": "pdepend/pdepend", @@ -1249,16 +1898,16 @@ }, { "name": "pear/archive_tar", - "version": "1.4.3", + "version": "1.4.7", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "43455c960da70e655c6bdf8ea2bc8cc1a6034afb" + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/43455c960da70e655c6bdf8ea2bc8cc1a6034afb", - "reference": "43455c960da70e655c6bdf8ea2bc8cc1a6034afb", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845", + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845", "shasum": "" }, "require": { @@ -1269,8 +1918,8 @@ "phpunit/phpunit": "*" }, "suggest": { - "ext-bz2": "bz2 compression support.", - "ext-xz": "lzma2 compression support.", + "ext-bz2": "Bz2 compression support.", + "ext-xz": "Lzma2 compression support.", "ext-zlib": "Gzip compression support." }, "type": "library", @@ -1305,26 +1954,26 @@ "email": "mrook@php.net" } ], - "description": "Tar file management class", + "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", "homepage": "https://github.com/pear/Archive_Tar", "keywords": [ "archive", "tar" ], - "time": "2017-06-11T17:28:11+00:00" + "time": "2019-04-08T13:15:55+00:00" }, { "name": "pear/console_getopt", - "version": "v1.4.1", + "version": "v1.4.2", "source": { "type": "git", "url": "https://github.com/pear/Console_Getopt.git", - "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f" + "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f", - "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f", + "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/6c77aeb625b32bd752e89ee17972d103588b90c0", + "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0", "shasum": "" }, "type": "library", @@ -1358,24 +2007,24 @@ } ], "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "time": "2015-07-20T20:28:12+00:00" + "time": "2019-02-06T16:52:33+00:00" }, { "name": "pear/pear-core-minimal", - "version": "v1.10.6", + "version": "v1.10.9", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "052868b244d31f822796e7e9981f62557eb256d4" + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/052868b244d31f822796e7e9981f62557eb256d4", - "reference": "052868b244d31f822796e7e9981f62557eb256d4", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f", + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f", "shasum": "" }, "require": { - "pear/console_getopt": "~1.3", + "pear/console_getopt": "~1.4", "pear/pear_exception": "~1.0" }, "replace": { @@ -1402,7 +2051,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2018-08-22T19:28:09+00:00" + "time": "2019-03-13T18:15:44+00:00" }, { "name": "pear/pear_exception", @@ -1459,6 +2108,172 @@ ], "time": "2015-02-10T20:07:52+00:00" }, + { + "name": "php-http/guzzle6-adapter", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/guzzle6-adapter.git", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "php-http/httplug": "^1.0" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "php-http/adapter-integration-tests": "^0.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Adapter\\Guzzle6\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "David de Boer", + "email": "david@ddeboer.nl" + } + ], + "description": "Guzzle 6 HTTP Adapter", + "homepage": "http://httplug.io", + "keywords": [ + "Guzzle", + "http" + ], + "time": "2016-05-10T06:13:32+00:00" + }, + { + "name": "php-http/httplug", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "php-http/promise": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "time": "2016-08-31T08:30:17+00:00" + }, + { + "name": "php-http/promise", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", + "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", + "shasum": "" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "time": "2016-01-26T13:27:02+00:00" + }, { "name": "php-imap/php-imap", "version": "3.0.6", @@ -1530,27 +2345,27 @@ "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" + "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" + "league/oauth2-google": "Needed for Google XOAUTH2 authentication" }, "type": "library", "autoload": { @@ -1586,7 +2401,7 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2017-11-04T09:26:05+00:00" + "time": "2018-11-15T22:32:31+00:00" }, { "name": "psr/container", @@ -1637,6 +2452,108 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, { "name": "psr/log", "version": "1.0.0", @@ -1675,6 +2592,54 @@ ], "time": "2012-12-21T11:40:51+00:00" }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, { "name": "psy/psysh", "version": "v0.9.9", @@ -1924,29 +2889,37 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.12", + "version": "v6.2.1", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -1974,36 +2947,36 @@ "mail", "mailer" ], - "time": "2018-07-31T09:26:32+00:00" + "time": "2019-04-21T09:21:45+00:00" }, { "name": "symfony/config", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8a660daeb65dedbe0b099529f65e61866c055081" + "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8a660daeb65dedbe0b099529f65e61866c055081", - "reference": "8a660daeb65dedbe0b099529f65e61866c055081", + "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f", + "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0", + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/messenger": "~4.1", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -2011,7 +2984,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2038,41 +3011,47 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "time": "2019-06-08T06:33:08+00:00" }, { "name": "symfony/console", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb" + "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", - "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", + "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, + "provide": { + "psr/log-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", + "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { - "psr/log-implementation": "For using the console logger", + "psr/log": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -2080,7 +3059,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2107,20 +3086,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-11-26T12:48:07+00:00" + "time": "2019-06-13T11:03:18+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.19", + "version": "v3.4.29", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8" + "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8", - "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", + "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", "shasum": "" }, "require": { @@ -2160,36 +3139,36 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-01-16T09:39:14+00:00" }, { "name": "symfony/debug", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d" + "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/2016b3eec2e49c127dd02d0ef44a35c53181560d", - "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d", + "url": "https://api.github.com/repos/symfony/debug/zipball/d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", + "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2216,38 +3195,40 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-06-19T15:27:09+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5" + "reference": "b851928be349c065197fdc0832f78d85139e3903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/622b330ced1bdf29d240bd1c364c038f647eb0f5", - "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b851928be349c065197fdc0832f78d85139e3903", + "reference": "b851928be349c065197fdc0832f78d85139e3903", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" + "php": "^7.1.3", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.2" }, "conflict": { - "symfony/config": "<3.3.7", - "symfony/finder": "<3.3", + "symfony/config": "<4.3", + "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, "provide": { - "psr/container-implementation": "1.0" + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/config": "^4.3", + "symfony/expression-language": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -2260,7 +3241,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2287,34 +3268,41 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-11-20T16:14:23+00:00" + "time": "2019-06-15T04:08:07+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a" + "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d365fc4416ec4980825873962ea5d1b1bca46f1a", - "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", + "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -2323,7 +3311,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2350,30 +3338,88 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "time": "2019-06-13T11:03:18+00:00" }, { - "name": "symfony/filesystem", - "version": "v3.4.19", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b49b1ca166bd109900e6a1683d9bb1115727ef2d", - "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-20T06:46:26+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", + "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", + "shasum": "" + }, + "require": { + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2400,29 +3446,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-06-23T08:51:25+00:00" }, { "name": "symfony/finder", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442" + "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", - "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "url": "https://api.github.com/repos/symfony/finder/zipball/33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", + "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2449,34 +3495,35 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-06-13T11:03:18+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38" + "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ea61dd57c4399b0b2a4162e1820cd9d0783acd38", - "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e1b507fcfa4e87d192281774b5ecd4265370180d", + "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" + "php": "^7.1.3", + "symfony/mime": "^4.3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2503,34 +3550,37 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "time": "2019-06-26T09:25:00+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa" + "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/78528325d90e5ad54a6e9eca750fe176932bc4fa", - "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4150f71e27ed37a74700561b77e3dbd754cbb44d", + "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", + "symfony/http-foundation": "^4.1.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php73": "^1.9" }, "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", - "symfony/var-dumper": "<3.3", + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", + "symfony/var-dumper": "<4.1.1", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { @@ -2538,34 +3588,34 @@ }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.10|^4.0.10", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", + "symfony/browser-kit": "^4.3", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dependency-injection": "^4.3", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~4.2", + "symfony/translation-contracts": "^1.1", + "symfony/var-dumper": "^4.1.1", + "twig/twig": "^1.34|^2.4" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "", "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2592,20 +3642,79 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-11-26T14:04:48+00:00" + "time": "2019-06-26T14:26:16+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "name": "symfony/mime", + "version": "v4.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "url": "https://github.com/symfony/mime.git", + "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "egulias/email-validator": "^2.0", + "symfony/dependency-injection": "~3.4|^4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2019-06-04T09:22:54+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", "shasum": "" }, "require": { @@ -2617,7 +3726,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2650,20 +3759,141 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "symfony/polyfill-iconv", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", + "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", + "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2019-03-04T13:44:35+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -2675,7 +3905,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2709,35 +3939,89 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.10.0", + "name": "symfony/polyfill-php72", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" }, "files": [ "bootstrap.php" @@ -2760,7 +4044,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2768,29 +4052,29 @@ "portable", "shim" ], - "time": "2018-09-21T06:26:08+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2" + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", - "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2817,43 +4101,42 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-11-20T16:10:26+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/routing", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c" + "reference": "2ef809021d72071c611b218c47a3bf3b17b7325e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/86eb1a581279b5e40ca280a4f63a15e37d51d16c", - "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "url": "https://api.github.com/repos/symfony/routing/zipball/2ef809021d72071c611b218c47a3bf3b17b7325e", + "reference": "2ef809021d72071c611b218c47a3bf3b17b7325e", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "conflict": { - "symfony/config": "<3.3.1", - "symfony/dependency-injection": "<3.3", + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "^3.3.1|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/config": "~4.2", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" @@ -2861,7 +4144,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2894,37 +4177,103 @@ "uri", "url" ], - "time": "2018-11-26T08:40:22+00:00" + "time": "2019-06-26T13:54:39+00:00" }, { - "name": "symfony/translation", - "version": "v3.4.19", + "name": "symfony/service-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bdbe940ed3ef4179f86032086c32d3a858becc0f", - "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", + "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.2" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.4", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, + "provide": { + "symfony/translation-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -2935,7 +4284,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2962,42 +4311,106 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-11-26T10:17:44+00:00" + "time": "2019-06-13T11:03:18+00:00" }, { - "name": "symfony/var-dumper", - "version": "v3.4.19", + "name": "symfony/translation-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "6867713afe6c50ade2f34ed6435563b065a52145" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", - "reference": "6867713afe6c50ade2f34ed6435563b065a52145", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/45d6ef73671995aca565a1aa3d9a432a3ea63f91", + "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { "ext-iconv": "*", + "symfony/console": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", "twig/twig": "~1.34|~2.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3031,7 +4444,7 @@ "debug", "dump" ], - "time": "2018-11-20T16:10:26+00:00" + "time": "2019-06-17T17:37:00+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3140,20 +4553,21 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.5.1", + "version": "v2.6.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "^1.9" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.0" @@ -3161,7 +4575,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -3186,65 +4600,76 @@ "env", "environment" ], - "time": "2018-07-29T20:33:41+00:00" - } - ], - "packages-dev": [ + "time": "2019-01-29T11:11:52+00:00" + }, { - "name": "beberlei/assert", - "version": "v2.9.6", + "name": "zendframework/zend-diactoros", + "version": "2.1.2", "source": { "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936" + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/ec9e4cf0b63890edce844ee3922e2b95a526e936", - "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/37bf68b428850ee26ed7c3be6c26236dd95a95f1", + "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3" + "php": "^7.1", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1.1", - "phpunit/phpunit": "^4.8.35|^5.7" + "ext-dom": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.5.0", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^7.0.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev", + "dev-develop": "2.2.x-dev", + "dev-release-1.8": "1.8.x-dev" + } + }, "autoload": { - "psr-4": { - "Assert\\": "lib/Assert" - }, "files": [ - "lib/Assert/functions.php" - ] + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], + "psr-4": { + "Zend\\Diactoros\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", + "description": "PSR HTTP Message implementations", "keywords": [ - "assert", - "assertion", - "validation" + "http", + "psr", + "psr-7" ], - "time": "2018-06-11T17:15:25+00:00" - }, + "time": "2019-04-29T21:11:00+00:00" + } + ], + "packages-dev": [ { "name": "behat/behat", "version": "v3.5.0", @@ -3325,16 +4750,16 @@ }, { "name": "behat/gherkin", - "version": "v4.5.1", + "version": "v4.6.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a" + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", - "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", "shasum": "" }, "require": { @@ -3342,8 +4767,8 @@ }, "require-dev": { "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3", - "symfony/yaml": "~2.3|~3" + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -3380,7 +4805,7 @@ "gherkin", "parser" ], - "time": "2017-08-30T11:04:43+00:00" + "time": "2019-01-16T14:22:17+00:00" }, { "name": "behat/mink", @@ -3545,51 +4970,6 @@ ], "time": "2017-04-04T11:38:05+00:00" }, - { - "name": "clue/graph", - "version": "v0.9.0", - "source": { - "type": "git", - "url": "https://github.com/clue/graph.git", - "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/graph/zipball/0336a4d5229fa61a20ccceaeab25e52ac9542700", - "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "graphp/algorithms": "Common graph algorithms, such as Dijkstra and Moore-Bellman-Ford (shortest path), minimum spanning tree (MST), Kruskal, Prim and many more..", - "graphp/graphviz": "GraphViz graph drawing / DOT output" - }, - "type": "library", - "autoload": { - "psr-4": { - "Fhaculty\\Graph\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A mathematical graph/network library written in PHP", - "homepage": "https://github.com/clue/graph", - "keywords": [ - "edge", - "graph", - "mathematical", - "network", - "vertex" - ], - "time": "2015-03-07T18:11:31+00:00" - }, { "name": "container-interop/container-interop", "version": "1.2.0", @@ -3623,32 +5003,34 @@ }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -3668,212 +5050,72 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { - "name": "facebook/webdriver", - "version": "1.6.0", + "name": "filp/whoops", + "version": "2.1.6", "source": { "type": "git", - "url": "https://github.com/facebook/php-webdriver.git", - "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" + "url": "https://github.com/filp/whoops.git", + "reference": "92bdc6800ac6e233c9e161a1768e082389a73530" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", - "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", + "url": "https://api.github.com/repos/filp/whoops/zipball/92bdc6800ac6e233c9e161a1768e082389a73530", + "reference": "92bdc6800ac6e233c9e161a1768e082389a73530", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-zip": "*", - "php": "^5.6 || ~7.0", - "symfony/process": "^2.8 || ^3.1 || ^4.0" + "php": "^5.5.9 || ^7.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "php-coveralls/php-coveralls": "^2.0", - "php-mock/php-mock-phpunit": "^1.1", - "phpunit/phpunit": "^5.7", - "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", - "squizlabs/php_codesniffer": "^2.6", - "symfony/var-dumper": "^3.3 || ^4.0" + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "^4.8 || ^5.0", + "symfony/var-dumper": "^2.6 || ^3.0" }, "suggest": { - "ext-SimpleXML": "For Firefox profile creation" + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" }, "type": "library", "extra": { "branch-alias": { - "dev-community": "1.5-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { - "Facebook\\WebDriver\\": "lib/" + "Whoops\\": "src/Whoops/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" - ], - "description": "A PHP client for Selenium WebDriver", - "homepage": "https://github.com/facebook/php-webdriver", - "keywords": [ - "facebook", - "php", - "selenium", - "webdriver" - ], - "time": "2018-05-16T17:37:13+00:00" - }, - { - "name": "florianwolters/component-core-stringutils", - "version": "v0.3.1", - "source": { - "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Core-StringUtils.git", - "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Core-StringUtils/zipball/51978fa9a4d30104192036f0b1f11fc1c3bc4667", - "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "autoload": { - "psr-0": { - "FlorianWolters": "src/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" + "MIT" ], "authors": [ { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", "role": "Developer" } ], - "description": "Offers operations on the data type string as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Core-StringUtils", + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", "keywords": [ - "helper", - "language", - "string", - "wrapper" + "error", + "exception", + "handling", + "library", + "whoops", + "zf2" ], - "time": "2013-07-01T10:24:07+00:00" - }, - { - "name": "florianwolters/component-util-reflection", - "version": "v0.2.0", - "source": { - "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Util-Reflection.git", - "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Reflection/zipball/ffc94b62e2834d7d0306374d952eda7a5abd1844", - "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844", - "shasum": "" - }, - "require": { - "florianwolters/component-core-stringutils": ">=0.2-beta", - "php": ">=5.4" - }, - "type": "library", - "autoload": { - "psr-0": { - "FlorianWolters": "src/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", - "role": "Developer" - } - ], - "description": "Provides operations for the PHP Reflection API as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Reflection", - "keywords": [ - "reflection", - "utility" - ], - "time": "2013-03-19T16:42:41+00:00" - }, - { - "name": "florianwolters/component-util-singleton", - "version": "v0.3.2", - "source": { - "type": "git", - "url": "https://github.com/FlorianWolters/PHP-Component-Util-Singleton.git", - "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Singleton/zipball/ab39ba531a38c3b76b4babb0035ce840cde7f443", - "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443", - "shasum": "" - }, - "require": { - "florianwolters/component-core-stringutils": "0.3.*", - "florianwolters/component-util-reflection": "0.2.*", - "php": ">=5.4" - }, - "type": "library", - "autoload": { - "psr-0": { - "FlorianWolters": [ - "src/php", - "src/tests/unit-tests/php", - "src/tests/mocks/php" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Florian Wolters", - "email": "wolters.fl@gmail.com", - "homepage": "http://blog.florianwolters.de", - "role": "Developer" - } - ], - "description": "The Singleton (and Registry of Singletons a.k.a. Multiton) design pattern as a PHP component.", - "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Singleton", - "keywords": [ - "creation", - "pattern", - "singleton", - "utility" - ], - "time": "2013-06-29T12:35:22+00:00" + "time": "2017-02-18T14:22:27+00:00" }, { "name": "fzaninotto/faker", @@ -3925,237 +5167,6 @@ ], "time": "2018-07-12T10:23:15+00:00" }, - { - "name": "graphp/algorithms", - "version": "v0.8.1", - "source": { - "type": "git", - "url": "https://github.com/graphp/algorithms.git", - "reference": "81db4049c35730767ec8f97fb5c4844234b86cef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/graphp/algorithms/zipball/81db4049c35730767ec8f97fb5c4844234b86cef", - "reference": "81db4049c35730767ec8f97fb5c4844234b86cef", - "shasum": "" - }, - "require": { - "clue/graph": "~0.9.0|~0.8.0", - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Graphp\\Algorithms\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "Common mathematical graph algorithms", - "homepage": "https://github.com/graphp/algorithms", - "keywords": [ - "Graph algorithms", - "dijkstra", - "kruskal", - "minimum spanning tree", - "moore-bellman-ford", - "prim", - "shortest path" - ], - "time": "2015-03-08T10:12:01+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.3.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.3-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2018-04-22T15:46:56+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2017-03-20T17:10:46+00:00" - }, { "name": "instaclick/php-webdriver", "version": "1.4.5", @@ -4215,108 +5226,30 @@ ], "time": "2017-06-30T04:02:48+00:00" }, - { - "name": "lmc/steward", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/lmc-eu/steward.git", - "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lmc-eu/steward/zipball/a4738179a6f3ccee72fa20957c8546c4c53c9ab9", - "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9", - "shasum": "" - }, - "require": { - "beberlei/assert": "^2.7", - "clue/graph": "~0.9.0", - "doctrine/inflector": "~1.0", - "ext-curl": "*", - "ext-zip": "*", - "facebook/webdriver": "^1.4.0", - "florianwolters/component-util-singleton": "0.3.2", - "graphp/algorithms": "^0.8.1", - "nette/reflection": "^2.4.2", - "ondram/ci-detector": "^2.1", - "php": "^5.6 || ~7.0", - "phpunit/phpunit": "^5.7.11", - "symfony/console": "^3.3.0", - "symfony/event-dispatcher": "~3.0", - "symfony/filesystem": "~3.0", - "symfony/finder": "~3.0", - "symfony/options-resolver": "^3.2", - "symfony/process": "^3.2.0", - "symfony/stopwatch": "^3.0", - "symfony/yaml": "^3.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "php-coveralls/php-coveralls": "^1.0.2", - "php-mock/php-mock-phpunit": "~1.0", - "squizlabs/php_codesniffer": "^2.4.1", - "symfony/var-dumper": "^3.2" - }, - "suggest": { - "ext-posix": "For colored output", - "ext-xdebug": "For remote tests debugging" - }, - "bin": [ - "bin/steward", - "bin/steward.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "Lmc\\Steward\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "LMC s.r.o.", - "homepage": "https://github.com/lmc-eu" - } - ], - "description": "Steward - makes Selenium WebDriver + PHPUnit testing easy and robust", - "keywords": [ - "phpunit", - "selenium", - "testing", - "webdriver" - ], - "time": "2018-07-26T22:03:36+00:00" - }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -4339,337 +5272,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" - }, - { - "name": "nette/caching", - "version": "v2.5.8", - "source": { - "type": "git", - "url": "https://github.com/nette/caching.git", - "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/7fba7c7ab2585fafb7b31152f2595e1551120555", - "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555", - "shasum": "" - }, - "require": { - "nette/finder": "^2.2 || ~3.0.0", - "nette/utils": "^2.4 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "^2.4", - "nette/di": "^2.4 || ~3.0.0", - "nette/tester": "^2.0", - "tracy/tracy": "^2.4" - }, - "suggest": { - "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "? Nette Caching: library with easy-to-use API and many cache backends.", - "homepage": "https://nette.org", - "keywords": [ - "cache", - "journal", - "memcached", - "nette", - "sqlite" - ], - "time": "2018-03-21T11:04:32+00:00" - }, - { - "name": "nette/finder", - "version": "v2.4.2", - "source": { - "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", - "shasum": "" - }, - "require": { - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", - "homepage": "https://nette.org", - "keywords": [ - "filesystem", - "glob", - "iterator", - "nette" - ], - "time": "2018-06-28T11:49:23+00:00" - }, - { - "name": "nette/reflection", - "version": "v2.4.2", - "source": { - "type": "git", - "url": "https://github.com/nette/reflection.git", - "reference": "b12327e98ead74e87a1315e0d48182a702adf901" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901", - "reference": "b12327e98ead74e87a1315e0d48182a702adf901", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/caching": "^2.2 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/di": "^2.4 || ^3.0", - "nette/tester": "^2.0", - "tracy/tracy": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "Nette Reflection: docblock annotations parser and common reflection classes", - "homepage": "https://nette.org", - "keywords": [ - "annotation", - "nette", - "reflection" - ], - "time": "2017-07-11T19:28:57+00:00" - }, - { - "name": "nette/utils", - "version": "v2.5.3", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize() and toAscii()", - "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/loader.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "time": "2018-09-18T10:22:16+00:00" - }, - { - "name": "ondram/ci-detector", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/OndraM/ci-detector.git", - "reference": "be3410cb14443796122ca051f4224b5eae06aa76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/be3410cb14443796122ca051f4224b5eae06aa76", - "reference": "be3410cb14443796122ca051f4224b5eae06aa76", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^1.12", - "phpunit/phpunit": "^5.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "OndraM\\CiDetector\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "OndÅ™ej Machulda", - "email": "ondrej.machulda@gmail.com" - } - ], - "description": "Detect current continuous integration server and provide unified access to properties of current build", - "keywords": [ - "CircleCI", - "Codeship", - "adapter", - "appveyor", - "bamboo", - "continuous integration", - "gitlab", - "interface", - "jenkins", - "teamcity", - "travis" - ], - "time": "2017-05-26T16:39:57+00:00" + "time": "2019-04-07T13:18:21+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -4727,29 +5330,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", + "php": "^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -4768,7 +5377,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-11-10T14:09:06+00:00" + "time": "2019-04-30T17:48:53+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -4819,16 +5428,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -4849,8 +5458,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -4878,7 +5487,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5082,29 +5691,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.12", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5127,7 +5736,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04T08:55:13+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", @@ -5271,56 +5880,6 @@ "abandoned": true, "time": "2017-06-30T09:13:00+00:00" }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -5836,16 +6395,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.3.2", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", - "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", "shasum": "" }, "require": { @@ -5878,25 +6437,25 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], - "time": "2018-09-23T23:08:17+00:00" + "time": "2019-04-10T23:49:02+00:00" }, { "name": "symfony/class-loader", - "version": "v3.4.19", + "version": "v3.4.29", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "420458095cf60025eb0841276717e0da7f75e50e" + "reference": "4459eef5298dedfb69f771186a580062b8516497" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/420458095cf60025eb0841276717e0da7f75e50e", - "reference": "420458095cf60025eb0841276717e0da7f75e50e", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/4459eef5298dedfb69f771186a580062b8516497", + "reference": "4459eef5298dedfb69f771186a580062b8516497", "shasum": "" }, "require": { @@ -5939,127 +6498,24 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v3.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2cf5aa084338c1f67166013aebe87e2026bbe953", - "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2018-11-11T19:48:54+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v3.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "0f43969ab2718de55c1c1158dce046668079788d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f43969ab2718de55c1c1158dce046668079788d", - "reference": "0f43969ab2718de55c1c1158dce046668079788d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-01-16T09:39:14+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.19", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603" + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -6074,7 +6530,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -6101,24 +6557,25 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" + "time": "2019-04-06T14:04:46+00:00" }, { "name": "webmozart/assert", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -6151,20 +6608,20 @@ "check", "validate" ], - "time": "2018-01-29T19:49:41+00:00" + "time": "2018-12-25T11:19:39+00:00" }, { "name": "wimg/php-compatibility", - "version": "9.0.0", + "version": "9.1.1", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25" + "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/e9f4047e5edf53c88f36f1dafc0d49454ce13e25", - "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", + "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", "shasum": "" }, "require": { @@ -6210,7 +6667,7 @@ "standards" ], "abandoned": "phpcompatibility/php-compatibility", - "time": "2018-10-07T17:38:02+00:00" + "time": "2018-12-30T23:16:27+00:00" } ], "aliases": [], @@ -6225,7 +6682,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=5.6" + "php": ">=7.1" }, "platform-dev": [] } diff --git a/config/app.php b/config/app.php index bd0116a86..02c5a1b72 100644 --- a/config/app.php +++ b/config/app.php @@ -9,24 +9,23 @@ return [ 'url' => env('APP_URL', 'http://localhost'), 'env' => env('APP_ENV', 'production'), 'debug' => env('APP_DEBUG', false), - 'log' => env('APP_LOG', 'single'), - 'log_level' => env('APP_LOG_LEVEL', 'debug'), 'cache_lifetime' => env('APP_CACHE_LIFETIME', 60), 'key' => env('APP_KEY', 'base64:rU28h/tElUn/eiLY0qC24jJq1rakvAFRoRl1DWxj/kM='), 'cipher' => 'AES-256-CBC', 'timezone' => 'UTC', 'providers' => [ - CacheServiceProvider::class, FilesystemServiceProvider::class, + CacheServiceProvider::class, + ViewServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Laravel\Tinker\TinkerServiceProvider::class, - ViewServiceProvider::class, - + Illuminate\Notifications\NotificationServiceProvider::class, ], + 'aliases' => [ 'Crypt' => Illuminate\Support\Facades\Crypt::class ], diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index faecdc5d8..b3468c7c7 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -91,6 +91,16 @@ class SpoolRun $this->appMsgUid = $v; } + /** + * Get the fileData property + * + * @return array + */ + public function getFileData() + { + return $this->fileData; + } + /** * Set the $spoolId * @@ -232,32 +242,52 @@ class SpoolRun } /** - * set email parameters + * Set email parameters * - * @param string $sAppMsgUid , $sSubject, $sFrom, $sTo, $sBody, $sDate, $sCC, $sBCC, $sTemplate - * @return none + * @param string $appMsgUid + * @param string $subject + * @param string $from + * @param string $to + * @param string $body + * @param string $date + * @param string $cc + * @param string $bcc + * @param string $template + * @param array $attachments + * @param bool $contentTypeIsHtml + * @param string $error + * + * @see SpoolRun->create() + * @see SpoolRun->resendEmails() */ - public function setData($sAppMsgUid, $sSubject, $sFrom, $sTo, $sBody, $sDate = "", $sCC = "", $sBCC = "", $sTemplate = "", $aAttachment = array(), $bContentTypeIsHtml = true, $sError = "") + public function setData($appMsgUid, $subject, $from, $to, $body, $date = '', $cc = '', $bcc = '', $template = '', $attachments = [], + $contentTypeIsHtml = true, $error = '') { - $this->spoolId = $sAppMsgUid; - $this->fileData['subject'] = $sSubject; - $this->fileData['from'] = $sFrom; - $this->fileData['to'] = $sTo; - $this->fileData['body'] = $sBody; - $this->fileData['date'] = ($sDate != '' ? $sDate : date('Y-m-d H:i:s')); - $this->fileData['cc'] = $sCC; - $this->fileData['bcc'] = $sBCC; - $this->fileData['template'] = $sTemplate; - $this->fileData['attachments'] = $aAttachment; - $this->fileData['envelope_to'] = array(); - $this->fileData["contentTypeIsHtml"] = $bContentTypeIsHtml; - $this->fileData["error"] = $sError; + // Fill "fileData" property + $this->spoolId = $appMsgUid; + $this->fileData['subject'] = $subject; + $this->fileData['from'] = $from; + $this->fileData['to'] = $to; + $this->fileData['body'] = $body; + $this->fileData['date'] = (!empty($date) ? $date : date('Y-m-d H:i:s')); + $this->fileData['cc'] = $cc; + $this->fileData['bcc'] = $bcc; + $this->fileData['template'] = $template; + $this->fileData['attachments'] = $attachments; + $this->fileData["contentTypeIsHtml"] = $contentTypeIsHtml; + $this->fileData["error"] = $error; + // Initialize some values used internally + $this->fileData['envelope_to'] = []; + $this->fileData['envelope_cc'] = []; + $this->fileData['envelope_bcc'] = []; + + // Domain validation when the email engine is "OpenMail" if (array_key_exists('MESS_ENGINE', $this->config)) { - if ($this->config['MESS_ENGINE'] == 'OPENMAIL') { - if ($this->config['MESS_SERVER'] != '') { - if (($sAux = @gethostbyaddr($this->config['MESS_SERVER']))) { - $this->fileData['domain'] = $sAux; + if ($this->config['MESS_ENGINE'] === 'OPENMAIL') { + if (!empty($this->config['MESS_SERVER'])) { + if (($domain = @gethostbyaddr($this->config['MESS_SERVER']))) { + $this->fileData['domain'] = $domain; } else { $this->fileData['domain'] = $this->config['MESS_SERVER']; } @@ -841,4 +871,12 @@ class SpoolRun return $appMsgUid; } + + /** + * Run the private method "handleEnvelopeTo", this method was created in order to use in the unit tests + */ + public function runHandleEnvelopeTo() + { + $this->handleEnvelopeTo(); + } } From 1df3032abf8c10e548933278896c49cb64d1b55f Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Thu, 11 Jul 2019 10:55:30 -0400 Subject: [PATCH 37/38] Revert "solved conflict composer.lock, config/app.php, workflow/engine/classes/SpoolRun.php" This reverts commit fe9ac14379855e61eb560dabc1757eb7313210a9. --- composer.lock | 3521 +++++++++++--------------- config/app.php | 9 +- workflow/engine/classes/SpoolRun.php | 80 +- 3 files changed, 1558 insertions(+), 2052 deletions(-) diff --git a/composer.lock b/composer.lock index 3e87b567a..f63ea0385 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f548a9edab2774eff09bb261eb05c6d0", + "content-hash": "a9ba65f7fb68be7c36dd45b62216b2c6", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -115,7 +115,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/michelangelofe.git", - "reference": "0b4c4cd6cea4f3eaa10452423d293ed6aac0d5ab" + "reference": "4ac7ac3ebd1863c258c3f0e048fd3fff668f0184" }, "require": { "colosa/pmui": "release/3.3.1-dev" @@ -126,7 +126,7 @@ "keywords": [ "js app ProcessMaker" ], - "time": "2018-12-18T17:10:59+00:00" + "time": "2018-11-29T15:23:08+00:00" }, { "name": "colosa/pmDynaform", @@ -134,7 +134,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmdynaform.git", - "reference": "42281f63761d18a6dcaf63ff5c612eeb0c6dfa1b" + "reference": "e4176c9772842904552997702e549035b6ba641d" }, "type": "library", "description": "JS Library to render ProcessMaker Dynaforms", @@ -142,7 +142,7 @@ "keywords": [ "js lib ProcessMaker Dynaforms" ], - "time": "2018-12-10T15:33:17+00:00" + "time": "2018-11-28T17:54:53+00:00" }, { "name": "colosa/pmUI", @@ -150,7 +150,7 @@ "source": { "type": "git", "url": "git@bitbucket.org:colosa/pmui.git", - "reference": "4449e02225bc1d351907ceee79b2411b428df517" + "reference": "711b9796c7b5ad4363b9177d0969ec4abecc8d2e" }, "type": "library", "description": "JS UI Library", @@ -158,7 +158,7 @@ "keywords": [ "js lib ProcessMaker UI" ], - "time": "2018-12-18T17:11:02+00:00" + "time": "2018-11-16T14:26:15+00:00" }, { "name": "dapphp/securimage", @@ -244,33 +244,33 @@ }, { "name": "doctrine/inflector", - "version": "v1.3.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "4.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -307,191 +307,20 @@ "singularize", "string" ], - "time": "2018-01-09T20:05:19+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "time": "2019-06-08T11:03:04+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v2.3.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.4|^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2019-03-31T00:38:28+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.9", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">= 5.5" - }, - "require-dev": { - "dominicsayers/isemail": "dev-master", - "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "time": "2019-06-23T10:14:27+00:00" + "time": "2015-11-06T14:35:42+00:00" }, { "name": "erusev/parsedown", - "version": "1.7.3", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", - "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", "shasum": "" }, "require": { @@ -524,7 +353,7 @@ "markdown", "parser" ], - "time": "2019-03-17T18:48:37+00:00" + "time": "2018-03-08T01:11:30+00:00" }, { "name": "geshi/geshi", @@ -598,7 +427,7 @@ "src/" ] }, - "notification-url": "https://packagist.org/downloads/", + "notification-url": "http://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -609,189 +438,6 @@ ], "time": "2015-10-16T22:11:08+00:00" }, - { - "name": "guzzlehttp/guzzle", - "version": "6.3.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.3-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2018-04-22T15:46:56+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "9f83dded91781a01c63574e387eaa769be769115" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", - "reference": "9f83dded91781a01c63574e387eaa769be769115", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2018-12-04T20:46:45+00:00" - }, { "name": "jakub-onderka/php-console-color", "version": "v0.2", @@ -880,95 +526,43 @@ "description": "Highlight PHP code in terminal", "time": "2018-09-29T18:48:56+00:00" }, - { - "name": "kylekatarnls/update-helper", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "b34a46d7f5ec1795b4a15ac9d46b884377262df9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/b34a46d7f5ec1795b4a15ac9d46b884377262df9", - "reference": "b34a46d7f5ec1795b4a15ac9d46b884377262df9", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0", - "php": ">=5.3.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "^2.0.x-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "UpdateHelper\\ComposerPlugin" - }, - "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Update helper", - "time": "2019-06-05T08:34:23+00:00" - }, { "name": "laravel/framework", - "version": "v5.7.28", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192" + "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192", - "reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192", + "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9", + "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", - "dragonmantank/cron-expression": "^2.0", - "erusev/parsedown": "^1.7", + "doctrine/inflector": "~1.1", + "erusev/parsedown": "~1.6", "ext-mbstring": "*", "ext-openssl": "*", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", - "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", - "opis/closure": "^3.1", - "php": "^7.1.3", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^2.2" - }, - "conflict": { - "tightenco/collect": "<5.5.33" + "league/flysystem": "~1.0", + "monolog/monolog": "~1.11", + "mtdowling/cron-expression": "~1.0", + "nesbot/carbon": "~1.20", + "paragonie/random_compat": "~1.4|~2.0", + "php": ">=5.6.4", + "ramsey/uuid": "~3.0", + "swiftmailer/swiftmailer": "~5.4", + "symfony/console": "~3.2", + "symfony/debug": "~3.2", + "symfony/finder": "~3.2", + "symfony/http-foundation": "~3.2", + "symfony/http-kernel": "~3.2", + "symfony/process": "~3.2", + "symfony/routing": "~3.2", + "symfony/var-dumper": "~3.2", + "tijsverkoyen/css-to-inline-styles": "~2.2", + "vlucas/phpdotenv": "~2.2" }, "replace": { "illuminate/auth": "self.version", @@ -983,6 +577,7 @@ "illuminate/database": "self.version", "illuminate/encryption": "self.version", "illuminate/events": "self.version", + "illuminate/exception": "self.version", "illuminate/filesystem": "self.version", "illuminate/hashing": "self.version", "illuminate/http": "self.version", @@ -998,50 +593,39 @@ "illuminate/support": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "tightenco/collect": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/dbal": "^2.6", - "filp/whoops": "^2.1.4", - "guzzlehttp/guzzle": "^6.3", - "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.0", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", - "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", - "true/punycode": "^2.1" + "aws/aws-sdk-php": "~3.0", + "doctrine/dbal": "~2.5", + "mockery/mockery": "~0.9.4", + "pda/pheanstalk": "~3.0", + "phpunit/phpunit": "~5.7", + "predis/predis": "~1.0", + "symfony/css-selector": "~3.2", + "symfony/dom-crawler": "~3.2" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", - "ext-pcntl": "Required to use all features of the queue worker.", - "ext-posix": "Required to use all features of the queue worker.", - "filp/whoops": "Required for friendly error pages in development (^2.1.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", - "laravel/tinker": "Required to use the tinker console command (^1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "nexmo/client": "Required to use the Nexmo transport (^1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", - "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", + "laravel/tinker": "Required to use the tinker console command (~1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", + "nexmo/client": "Required to use the Nexmo transport (~1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "5.4-dev" } }, "autoload": { @@ -1069,121 +653,7 @@ "framework", "laravel" ], - "time": "2019-02-26T15:41:34+00:00" - }, - { - "name": "laravel/nexmo-notification-channel", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/nexmo-notification-channel.git", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", - "shasum": "" - }, - "require": { - "nexmo/client": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\NexmoChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Nexmo Notification Channel for laravel.", - "keywords": [ - "laravel", - "nexmo", - "notifications" - ], - "time": "2018-12-04T12:57:08+00:00" - }, - { - "name": "laravel/slack-notification-channel", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/slack-notification-channel.git", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\SlackChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Slack Notification Channel for laravel.", - "keywords": [ - "laravel", - "notifications", - "slack" - ], - "time": "2018-12-12T13:12:06+00:00" + "time": "2017-08-30T09:26:16+00:00" }, { "name": "laravel/tinker", @@ -1248,73 +718,18 @@ ], "time": "2018-10-12T19:39:35+00:00" }, - { - "name": "lcobucci/jwt", - "version": "3.3.1", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-openssl": "*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "^5.7 || ^7.3", - "squizlabs/php_codesniffer": "~2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Lcobucci\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Luís Otávio Cobucci Oblonczyk", - "email": "lcobucci@gmail.com", - "role": "Developer" - } - ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" - ], - "time": "2019-05-24T18:30:49+00:00" - }, { "name": "league/flysystem", - "version": "1.0.53", + "version": "1.0.49", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "08e12b7628f035600634a5e76d95b5eb66cea674" + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/08e12b7628f035600634a5e76d95b5eb66cea674", - "reference": "08e12b7628f035600634a5e76d95b5eb66cea674", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", "shasum": "" }, "require": { @@ -1385,7 +800,7 @@ "sftp", "storage" ], - "time": "2019-06-18T20:09:29+00:00" + "time": "2018-11-23T23:41:29+00:00" }, { "name": "libchart/libchart", @@ -1413,7 +828,7 @@ ], "authors": [ { - "name": "Jean-Marc Tr??meaux", + "name": "Jean-Marc Trémeaux", "homepage": "http://naku.dohcrew.com/", "role": "Developer" }, @@ -1439,12 +854,12 @@ "source": { "type": "git", "url": "https://github.com/Luracast/Restler.git", - "reference": "87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c" + "reference": "188968f6a15796077350f1be9c461f8d02c559a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Luracast/Restler/zipball/87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c", - "reference": "87197eb53b2e429288e9a94d1f0ca9a03d5fbd6c", + "url": "https://api.github.com/repos/Luracast/Restler/zipball/188968f6a15796077350f1be9c461f8d02c559a8", + "reference": "188968f6a15796077350f1be9c461f8d02c559a8", "shasum": "" }, "require": { @@ -1591,35 +1006,76 @@ "time": "2016-04-12T18:29:35+00:00" }, { - "name": "nesbot/carbon", - "version": "1.39.0", + "name": "mtdowling/cron-expression", + "version": "v1.2.1", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0" + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", - "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2017-01-23T04:29:33+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.36.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", "shasum": "" }, "require": { - "kylekatarnls/update-helper": "^1.1", "php": ">=5.3.9", "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", "phpunit/phpunit": "^4.8.35 || ^5.7" }, - "bin": [ - "bin/upgrade-carbon" - ], + "suggest": { + "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", + "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." + }, "type": "library", "extra": { - "update-helper": "Carbon\\Upgrade", "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -1649,55 +1105,7 @@ "datetime", "time" ], - "time": "2019-06-11T09:07:59+00:00" - }, - { - "name": "nexmo/client", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/Nexmo/nexmo-php.git", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/182d41a02ebd3e4be147baea45458ccfe2f528c4", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4", - "shasum": "" - }, - "require": { - "lcobucci/jwt": "^3.2", - "php": ">=5.6", - "php-http/client-implementation": "^1.0", - "php-http/guzzle6-adapter": "^1.0", - "zendframework/zend-diactoros": "^1.8.4 || ^2.0" - }, - "require-dev": { - "estahn/phpunit-json-assertions": "^1.0.0", - "php-http/mock-client": "^0.3.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nexmo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" - } - ], - "description": "PHP Client for using Nexmo's API.", - "time": "2019-05-13T20:27:43+00:00" + "time": "2018-11-22T18:23:02+00:00" }, { "name": "nikic/php-parser", @@ -1750,92 +1158,35 @@ ], "time": "2018-02-28T20:30:58+00:00" }, - { - "name": "opis/closure", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "f846725591203098246276b2e7b9e8b7814c4965" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/f846725591203098246276b2e7b9e8b7814c4965", - "reference": "f846725591203098246276b2e7b9e8b7814c4965", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ], - "time": "2019-05-31T20:04:32+00:00" - }, { "name": "paragonie/random_compat", - "version": "v9.99.99", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { - "php": "^7" + "php": ">=5.2.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" + "phpunit/phpunit": "4.*|5.*" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -1854,7 +1205,7 @@ "pseudorandom", "random" ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2018-07-04T16:31:37+00:00" }, { "name": "pdepend/pdepend", @@ -1898,16 +1249,16 @@ }, { "name": "pear/archive_tar", - "version": "1.4.7", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845" + "reference": "43455c960da70e655c6bdf8ea2bc8cc1a6034afb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845", - "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/43455c960da70e655c6bdf8ea2bc8cc1a6034afb", + "reference": "43455c960da70e655c6bdf8ea2bc8cc1a6034afb", "shasum": "" }, "require": { @@ -1918,8 +1269,8 @@ "phpunit/phpunit": "*" }, "suggest": { - "ext-bz2": "Bz2 compression support.", - "ext-xz": "Lzma2 compression support.", + "ext-bz2": "bz2 compression support.", + "ext-xz": "lzma2 compression support.", "ext-zlib": "Gzip compression support." }, "type": "library", @@ -1954,26 +1305,26 @@ "email": "mrook@php.net" } ], - "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", + "description": "Tar file management class", "homepage": "https://github.com/pear/Archive_Tar", "keywords": [ "archive", "tar" ], - "time": "2019-04-08T13:15:55+00:00" + "time": "2017-06-11T17:28:11+00:00" }, { "name": "pear/console_getopt", - "version": "v1.4.2", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/pear/Console_Getopt.git", - "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0" + "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/6c77aeb625b32bd752e89ee17972d103588b90c0", - "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0", + "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f", + "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f", "shasum": "" }, "type": "library", @@ -2007,24 +1358,24 @@ } ], "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "time": "2019-02-06T16:52:33+00:00" + "time": "2015-07-20T20:28:12+00:00" }, { "name": "pear/pear-core-minimal", - "version": "v1.10.9", + "version": "v1.10.6", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f" + "reference": "052868b244d31f822796e7e9981f62557eb256d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f", - "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/052868b244d31f822796e7e9981f62557eb256d4", + "reference": "052868b244d31f822796e7e9981f62557eb256d4", "shasum": "" }, "require": { - "pear/console_getopt": "~1.4", + "pear/console_getopt": "~1.3", "pear/pear_exception": "~1.0" }, "replace": { @@ -2051,7 +1402,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2019-03-13T18:15:44+00:00" + "time": "2018-08-22T19:28:09+00:00" }, { "name": "pear/pear_exception", @@ -2108,172 +1459,6 @@ ], "time": "2015-02-10T20:07:52+00:00" }, - { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" - } - ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ], - "time": "2016-05-10T06:13:32+00:00" - }, - { - "name": "php-http/httplug", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2016-08-31T08:30:17+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" - }, { "name": "php-imap/php-imap", "version": "3.0.6", @@ -2345,27 +1530,27 @@ "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" + "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" + "league/oauth2-google": "Needed for Google XOAUTH2 authentication" }, "type": "library", "autoload": { @@ -2401,7 +1586,7 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2018-11-15T22:32:31+00:00" + "time": "2017-11-04T09:26:05+00:00" }, { "name": "psr/container", @@ -2452,108 +1637,6 @@ ], "time": "2017-02-14T16:28:37+00:00" }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, { "name": "psr/log", "version": "1.0.0", @@ -2592,54 +1675,6 @@ ], "time": "2012-12-21T11:40:51+00:00" }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "time": "2017-10-23T01:57:42+00:00" - }, { "name": "psy/psysh", "version": "v0.9.9", @@ -2889,37 +1924,29 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.2.1", + "version": "v5.4.12", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", - "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", "shasum": "" }, "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "php": ">=5.3.3" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + "symfony/phpunit-bridge": "~3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "5.4-dev" } }, "autoload": { @@ -2947,36 +1974,36 @@ "mail", "mailer" ], - "time": "2019-04-21T09:21:45+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { "name": "symfony/config", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f" + "reference": "8a660daeb65dedbe0b099529f65e61866c055081" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f", + "url": "https://api.github.com/repos/symfony/config/zipball/8a660daeb65dedbe0b099529f65e61866c055081", + "reference": "8a660daeb65dedbe0b099529f65e61866c055081", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", + "php": "^5.5.9|>=7.0.8", + "symfony/filesystem": "~2.8|~3.0|~4.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<3.4" + "symfony/dependency-injection": "<3.3", + "symfony/finder": "<3.3" }, "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/messenger": "~4.1", - "symfony/yaml": "~3.4|~4.0" + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/event-dispatcher": "~3.3|~4.0", + "symfony/finder": "~3.3|~4.0", + "symfony/yaml": "~3.0|~4.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -2984,7 +2011,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3011,47 +2038,41 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-06-08T06:33:08+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/console", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", + "url": "https://api.github.com/repos/symfony/console/zipball/8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", + "reference": "8f80fc39bbc3b7c47ee54ba7aa2653521ace94bb", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, - "provide": { - "psr/log-implementation": "1.0" - }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", + "symfony/config": "~3.3|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" + "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -3059,7 +2080,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3086,20 +2107,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2018-11-26T12:48:07+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.29", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf" + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8", + "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8", "shasum": "" }, "require": { @@ -3139,36 +2160,36 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/debug", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd" + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", + "url": "https://api.github.com/repos/symfony/debug/zipball/2016b3eec2e49c127dd02d0ef44a35c53181560d", + "reference": "2016b3eec2e49c127dd02d0ef44a35c53181560d", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" + "symfony/http-kernel": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3195,40 +2216,38 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-06-19T15:27:09+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b851928be349c065197fdc0832f78d85139e3903" + "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b851928be349c065197fdc0832f78d85139e3903", - "reference": "b851928be349c065197fdc0832f78d85139e3903", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/622b330ced1bdf29d240bd1c364c038f647eb0f5", + "reference": "622b330ced1bdf29d240bd1c364c038f647eb0f5", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.2" + "php": "^5.5.9|>=7.0.8", + "psr/container": "^1.0" }, "conflict": { - "symfony/config": "<4.3", - "symfony/finder": "<3.4", + "symfony/config": "<3.3.7", + "symfony/finder": "<3.3", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" + "psr/container-implementation": "1.0" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "~3.4|~4.0", + "symfony/config": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -3241,7 +2260,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3268,41 +2287,34 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-06-15T04:08:07+00:00" + "time": "2018-11-20T16:14:23+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d365fc4416ec4980825873962ea5d1b1bca46f1a", + "reference": "d365fc4416ec4980825873962ea5d1b1bca46f1a", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": "^5.5.9|>=7.0.8" }, "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/dependency-injection": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3311,7 +2323,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3338,88 +2350,30 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-20T06:46:26+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/filesystem", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" + "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b49b1ca166bd109900e6a1683d9bb1115727ef2d", + "reference": "b49b1ca166bd109900e6a1683d9bb1115727ef2d", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3446,29 +2400,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-06-23T08:51:25+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/finder", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a" + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", - "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", + "url": "https://api.github.com/repos/symfony/finder/zipball/6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", + "reference": "6cf2be5cbd0e87aa35c01f80ae0bf40b6798e442", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3495,35 +2449,34 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d" + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e1b507fcfa4e87d192281774b5ecd4265370180d", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ea61dd57c4399b0b2a4162e1820cd9d0783acd38", + "reference": "ea61dd57c4399b0b2a4162e1820cd9d0783acd38", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/mime": "^4.3", - "symfony/polyfill-mbstring": "~1.1" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "symfony/expression-language": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3550,37 +2503,34 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-06-26T09:25:00+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d" + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4150f71e27ed37a74700561b77e3dbd754cbb44d", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/78528325d90e5ad54a6e9eca750fe176932bc4fa", + "reference": "78528325d90e5ad54a6e9eca750fe176932bc4fa", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", "psr/log": "~1.0", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php73": "^1.9" + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", + "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { @@ -3588,34 +2538,34 @@ }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.3", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.10|^4.0.10", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/translation-contracts": "^1.1", - "symfony/var-dumper": "^4.1.1", - "twig/twig": "^1.34|^2.4" + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", + "symfony/finder": "", "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3642,79 +2592,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2019-06-26T14:26:16+00:00" - }, - { - "name": "symfony/mime", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "egulias/email-validator": "^2.0", - "symfony/dependency-injection": "~3.4|^4.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A library to manipulate MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "time": "2019-06-04T09:22:54+00:00" + "time": "2018-11-26T14:04:48+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.11.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { @@ -3726,7 +2617,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -3759,141 +2650,20 @@ "polyfill", "portable" ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", - "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", - "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.9" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2019-03-04T13:44:35+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.11.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -3905,7 +2675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -3939,89 +2709,35 @@ "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.11.0", + "name": "symfony/polyfill-php70", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", - "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", "shasum": "" }, "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.9-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Polyfill\\Php70\\": "" }, "files": [ "bootstrap.php" @@ -4044,7 +2760,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4052,29 +2768,29 @@ "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/process", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", - "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", + "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", + "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -4101,42 +2817,43 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-05-30T16:10:05+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { "name": "symfony/routing", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "2ef809021d72071c611b218c47a3bf3b17b7325e" + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/2ef809021d72071c611b218c47a3bf3b17b7325e", - "reference": "2ef809021d72071c611b218c47a3bf3b17b7325e", + "url": "https://api.github.com/repos/symfony/routing/zipball/86eb1a581279b5e40ca280a4f63a15e37d51d16c", + "reference": "86eb1a581279b5e40ca280a4f63a15e37d51d16c", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.2", + "doctrine/annotations": "~1.0", "psr/log": "~1.0", - "symfony/config": "~4.2", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", "symfony/yaml": "For using the YAML loader" @@ -4144,7 +2861,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -4177,103 +2894,37 @@ "uri", "url" ], - "time": "2019-06-26T13:54:39+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-13T11:15:36+00:00" + "time": "2018-11-26T08:40:22+00:00" }, { "name": "symfony/translation", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", + "url": "https://api.github.com/repos/symfony/translation/zipball/bdbe940ed3ef4179f86032086c32d3a858becc0f", + "reference": "bdbe940ed3ef4179f86032086c32d3a858becc0f", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.2" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<3.4", + "symfony/config": "<2.8", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, - "provide": { - "symfony/translation-implementation": "1.0" - }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", + "symfony/config": "~2.8|~3.0|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/service-contracts": "^1.1.2", - "symfony/var-dumper": "~3.4|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -4284,7 +2935,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -4311,106 +2962,42 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-13T11:15:36+00:00" + "time": "2018-11-26T10:17:44+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.3.2", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91" + "reference": "6867713afe6c50ade2f34ed6435563b065a52145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/45d6ef73671995aca565a1aa3d9a432a3ea63f91", - "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", "twig/twig": "~1.34|~2.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "ext-symfony_debug": "" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -4444,7 +3031,7 @@ "debug", "dump" ], - "time": "2019-06-17T17:37:00+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -4553,21 +3140,20 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "^1.9" + "php": ">=5.3.9" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.0" @@ -4575,7 +3161,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -4600,76 +3186,65 @@ "env", "environment" ], - "time": "2019-01-29T11:11:52+00:00" - }, - { - "name": "zendframework/zend-diactoros", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/37bf68b428850ee26ed7c3be6c26236dd95a95f1", - "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], - "psr-4": { - "Zend\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "keywords": [ - "http", - "psr", - "psr-7" - ], - "time": "2019-04-29T21:11:00+00:00" + "time": "2018-07-29T20:33:41+00:00" } ], "packages-dev": [ + { + "name": "beberlei/assert", + "version": "v2.9.6", + "source": { + "type": "git", + "url": "https://github.com/beberlei/assert.git", + "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/assert/zipball/ec9e4cf0b63890edce844ee3922e2b95a526e936", + "reference": "ec9e4cf0b63890edce844ee3922e2b95a526e936", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.1.1", + "phpunit/phpunit": "^4.8.35|^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Assert\\": "lib/Assert" + }, + "files": [ + "lib/Assert/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de", + "role": "Lead Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Collaborator" + } + ], + "description": "Thin assertion library for input validation in business models.", + "keywords": [ + "assert", + "assertion", + "validation" + ], + "time": "2018-06-11T17:15:25+00:00" + }, { "name": "behat/behat", "version": "v3.5.0", @@ -4750,16 +3325,16 @@ }, { "name": "behat/gherkin", - "version": "v4.6.0", + "version": "v4.5.1", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", "shasum": "" }, "require": { @@ -4767,8 +3342,8 @@ }, "require-dev": { "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" + "symfony/phpunit-bridge": "~2.7|~3", + "symfony/yaml": "~2.3|~3" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -4805,7 +3380,7 @@ "gherkin", "parser" ], - "time": "2019-01-16T14:22:17+00:00" + "time": "2017-08-30T11:04:43+00:00" }, { "name": "behat/mink", @@ -4970,6 +3545,51 @@ ], "time": "2017-04-04T11:38:05+00:00" }, + { + "name": "clue/graph", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/clue/graph.git", + "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/graph/zipball/0336a4d5229fa61a20ccceaeab25e52ac9542700", + "reference": "0336a4d5229fa61a20ccceaeab25e52ac9542700", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "graphp/algorithms": "Common graph algorithms, such as Dijkstra and Moore-Bellman-Ford (shortest path), minimum spanning tree (MST), Kruskal, Prim and many more..", + "graphp/graphviz": "GraphViz graph drawing / DOT output" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fhaculty\\Graph\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A mathematical graph/network library written in PHP", + "homepage": "https://github.com/clue/graph", + "keywords": [ + "edge", + "graph", + "mathematical", + "network", + "vertex" + ], + "time": "2015-03-07T18:11:31+00:00" + }, { "name": "container-interop/container-interop", "version": "1.2.0", @@ -5003,34 +3623,32 @@ }, { "name": "doctrine/instantiator", - "version": "1.2.0", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -5050,72 +3668,212 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "homepage": "https://github.com/doctrine/instantiator", "keywords": [ "constructor", "instantiate" ], - "time": "2019-03-17T17:37:11+00:00" + "time": "2015-06-14T21:17:01+00:00" }, { - "name": "filp/whoops", - "version": "2.1.6", + "name": "facebook/webdriver", + "version": "1.6.0", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "92bdc6800ac6e233c9e161a1768e082389a73530" + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/92bdc6800ac6e233c9e161a1768e082389a73530", - "reference": "92bdc6800ac6e233c9e161a1768e082389a73530", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0" + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "^4.8 || ^5.0", - "symfony/var-dumper": "^2.6 || ^3.0" + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" }, "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" + "ext-SimpleXML": "For Firefox profile creation" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-community": "1.5-dev" } }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "Facebook\\WebDriver\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2018-05-16T17:37:13+00:00" + }, + { + "name": "florianwolters/component-core-stringutils", + "version": "v0.3.1", + "source": { + "type": "git", + "url": "https://github.com/FlorianWolters/PHP-Component-Core-StringUtils.git", + "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Core-StringUtils/zipball/51978fa9a4d30104192036f0b1f11fc1c3bc4667", + "reference": "51978fa9a4d30104192036f0b1f11fc1c3bc4667", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "autoload": { + "psr-0": { + "FlorianWolters": "src/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" ], "authors": [ { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", + "name": "Florian Wolters", + "email": "wolters.fl@gmail.com", + "homepage": "http://blog.florianwolters.de", "role": "Developer" } ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", + "description": "Offers operations on the data type string as a PHP component.", + "homepage": "http://github.com/FlorianWolters/PHP-Component-Core-StringUtils", "keywords": [ - "error", - "exception", - "handling", - "library", - "whoops", - "zf2" + "helper", + "language", + "string", + "wrapper" ], - "time": "2017-02-18T14:22:27+00:00" + "time": "2013-07-01T10:24:07+00:00" + }, + { + "name": "florianwolters/component-util-reflection", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/FlorianWolters/PHP-Component-Util-Reflection.git", + "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Reflection/zipball/ffc94b62e2834d7d0306374d952eda7a5abd1844", + "reference": "ffc94b62e2834d7d0306374d952eda7a5abd1844", + "shasum": "" + }, + "require": { + "florianwolters/component-core-stringutils": ">=0.2-beta", + "php": ">=5.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "FlorianWolters": "src/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" + ], + "authors": [ + { + "name": "Florian Wolters", + "email": "wolters.fl@gmail.com", + "homepage": "http://blog.florianwolters.de", + "role": "Developer" + } + ], + "description": "Provides operations for the PHP Reflection API as a PHP component.", + "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Reflection", + "keywords": [ + "reflection", + "utility" + ], + "time": "2013-03-19T16:42:41+00:00" + }, + { + "name": "florianwolters/component-util-singleton", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/FlorianWolters/PHP-Component-Util-Singleton.git", + "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FlorianWolters/PHP-Component-Util-Singleton/zipball/ab39ba531a38c3b76b4babb0035ce840cde7f443", + "reference": "ab39ba531a38c3b76b4babb0035ce840cde7f443", + "shasum": "" + }, + "require": { + "florianwolters/component-core-stringutils": "0.3.*", + "florianwolters/component-util-reflection": "0.2.*", + "php": ">=5.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "FlorianWolters": [ + "src/php", + "src/tests/unit-tests/php", + "src/tests/mocks/php" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" + ], + "authors": [ + { + "name": "Florian Wolters", + "email": "wolters.fl@gmail.com", + "homepage": "http://blog.florianwolters.de", + "role": "Developer" + } + ], + "description": "The Singleton (and Registry of Singletons a.k.a. Multiton) design pattern as a PHP component.", + "homepage": "http://github.com/FlorianWolters/PHP-Component-Util-Singleton", + "keywords": [ + "creation", + "pattern", + "singleton", + "utility" + ], + "time": "2013-06-29T12:35:22+00:00" }, { "name": "fzaninotto/faker", @@ -5167,6 +3925,237 @@ ], "time": "2018-07-12T10:23:15+00:00" }, + { + "name": "graphp/algorithms", + "version": "v0.8.1", + "source": { + "type": "git", + "url": "https://github.com/graphp/algorithms.git", + "reference": "81db4049c35730767ec8f97fb5c4844234b86cef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/graphp/algorithms/zipball/81db4049c35730767ec8f97fb5c4844234b86cef", + "reference": "81db4049c35730767ec8f97fb5c4844234b86cef", + "shasum": "" + }, + "require": { + "clue/graph": "~0.9.0|~0.8.0", + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Graphp\\Algorithms\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" + } + ], + "description": "Common mathematical graph algorithms", + "homepage": "https://github.com/graphp/algorithms", + "keywords": [ + "Graph algorithms", + "dijkstra", + "kruskal", + "minimum spanning tree", + "moore-bellman-ford", + "prim", + "shortest path" + ], + "time": "2015-03-08T10:12:01+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, { "name": "instaclick/php-webdriver", "version": "1.4.5", @@ -5227,29 +4216,107 @@ "time": "2017-06-30T04:02:48+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.9.1", + "name": "lmc/steward", + "version": "2.3.4", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" + "url": "https://github.com/lmc-eu/steward.git", + "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "url": "https://api.github.com/repos/lmc-eu/steward/zipball/a4738179a6f3ccee72fa20957c8546c4c53c9ab9", + "reference": "a4738179a6f3ccee72fa20957c8546c4c53c9ab9", "shasum": "" }, "require": { - "php": "^7.1" + "beberlei/assert": "^2.7", + "clue/graph": "~0.9.0", + "doctrine/inflector": "~1.0", + "ext-curl": "*", + "ext-zip": "*", + "facebook/webdriver": "^1.4.0", + "florianwolters/component-util-singleton": "0.3.2", + "graphp/algorithms": "^0.8.1", + "nette/reflection": "^2.4.2", + "ondram/ci-detector": "^2.1", + "php": "^5.6 || ~7.0", + "phpunit/phpunit": "^5.7.11", + "symfony/console": "^3.3.0", + "symfony/event-dispatcher": "~3.0", + "symfony/filesystem": "~3.0", + "symfony/finder": "~3.0", + "symfony/options-resolver": "^3.2", + "symfony/process": "^3.2.0", + "symfony/stopwatch": "^3.0", + "symfony/yaml": "^3.2" }, - "replace": { - "myclabs/deep-copy": "self.version" + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "php-coveralls/php-coveralls": "^1.0.2", + "php-mock/php-mock-phpunit": "~1.0", + "squizlabs/php_codesniffer": "^2.4.1", + "symfony/var-dumper": "^3.2" + }, + "suggest": { + "ext-posix": "For colored output", + "ext-xdebug": "For remote tests debugging" + }, + "bin": [ + "bin/steward", + "bin/steward.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Lmc\\Steward\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "LMC s.r.o.", + "homepage": "https://github.com/lmc-eu" + } + ], + "description": "Steward - makes Selenium WebDriver + PHPUnit testing easy and robust", + "keywords": [ + "phpunit", + "selenium", + "testing", + "webdriver" + ], + "time": "2018-07-26T22:03:36+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { @@ -5272,7 +4339,337 @@ "object", "object graph" ], - "time": "2019-04-07T13:18:21+00:00" + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "nette/caching", + "version": "v2.5.8", + "source": { + "type": "git", + "url": "https://github.com/nette/caching.git", + "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/caching/zipball/7fba7c7ab2585fafb7b31152f2595e1551120555", + "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555", + "shasum": "" + }, + "require": { + "nette/finder": "^2.2 || ~3.0.0", + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "^2.4", + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette Caching: library with easy-to-use API and many cache backends.", + "homepage": "https://nette.org", + "keywords": [ + "cache", + "journal", + "memcached", + "nette", + "sqlite" + ], + "time": "2018-03-21T11:04:32+00:00" + }, + { + "name": "nette/finder", + "version": "v2.4.2", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", + "shasum": "" + }, + "require": { + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2018-06-28T11:49:23+00:00" + }, + { + "name": "nette/reflection", + "version": "v2.4.2", + "source": { + "type": "git", + "url": "https://github.com/nette/reflection.git", + "reference": "b12327e98ead74e87a1315e0d48182a702adf901" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901", + "reference": "b12327e98ead74e87a1315e0d48182a702adf901", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/caching": "^2.2 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^2.4 || ^3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "Nette Reflection: docblock annotations parser and common reflection classes", + "homepage": "https://nette.org", + "keywords": [ + "annotation", + "nette", + "reflection" + ], + "time": "2017-07-11T19:28:57+00:00" + }, + { + "name": "nette/utils", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/loader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "time": "2018-09-18T10:22:16+00:00" + }, + { + "name": "ondram/ci-detector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/OndraM/ci-detector.git", + "reference": "be3410cb14443796122ca051f4224b5eae06aa76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/be3410cb14443796122ca051f4224b5eae06aa76", + "reference": "be3410cb14443796122ca051f4224b5eae06aa76", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.12", + "phpunit/phpunit": "^5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "OndraM\\CiDetector\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "OndÅ™ej Machulda", + "email": "ondrej.machulda@gmail.com" + } + ], + "description": "Detect current continuous integration server and provide unified access to properties of current build", + "keywords": [ + "CircleCI", + "Codeship", + "adapter", + "appveyor", + "bamboo", + "continuous integration", + "gitlab", + "interface", + "jenkins", + "teamcity", + "travis" + ], + "time": "2017-05-26T16:39:57+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -5330,35 +4727,29 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", "shasum": "" }, "require": { - "php": "^7.0", + "php": "^5.6 || ^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -5377,7 +4768,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": "2019-04-30T17:48:53+00:00" + "time": "2017-11-10T14:09:06+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -5428,16 +4819,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { @@ -5458,8 +4849,8 @@ } }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" + "psr-0": { + "Prophecy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5487,7 +4878,7 @@ "spy", "stub" ], - "time": "2019-06-13T12:50:23+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5691,29 +5082,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "1.4.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "~4.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -5736,7 +5127,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2017-12-04T08:55:13+00:00" }, { "name": "phpunit/phpunit", @@ -5880,6 +5271,56 @@ "abandoned": true, "time": "2017-06-30T09:13:00+00:00" }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -6395,16 +5836,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.2", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", - "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", "shasum": "" }, "require": { @@ -6437,25 +5878,25 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "http://www.squizlabs.com/php-codesniffer", "keywords": [ "phpcs", "standards" ], - "time": "2019-04-10T23:49:02+00:00" + "time": "2018-09-23T23:08:17+00:00" }, { "name": "symfony/class-loader", - "version": "v3.4.29", + "version": "v3.4.19", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "4459eef5298dedfb69f771186a580062b8516497" + "reference": "420458095cf60025eb0841276717e0da7f75e50e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/4459eef5298dedfb69f771186a580062b8516497", - "reference": "4459eef5298dedfb69f771186a580062b8516497", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/420458095cf60025eb0841276717e0da7f75e50e", + "reference": "420458095cf60025eb0841276717e0da7f75e50e", "shasum": "" }, "require": { @@ -6498,24 +5939,127 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { - "name": "symfony/yaml", - "version": "v4.3.2", + "name": "symfony/options-resolver", + "version": "v3.4.19", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2cf5aa084338c1f67166013aebe87e2026bbe953", + "reference": "2cf5aa084338c1f67166013aebe87e2026bbe953", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "0f43969ab2718de55c1c1158dce046668079788d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f43969ab2718de55c1c1158dce046668079788d", + "reference": "0f43969ab2718de55c1c1158dce046668079788d", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:48:54+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "291e13d808bec481eab83f301f7bff3e699ef603" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", + "reference": "291e13d808bec481eab83f301f7bff3e699ef603", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -6530,7 +6074,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -6557,25 +6101,24 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-04-06T14:04:46+00:00" + "time": "2018-11-11T19:48:54+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" + "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -6608,20 +6151,20 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2018-01-29T19:49:41+00:00" }, { "name": "wimg/php-compatibility", - "version": "9.1.1", + "version": "9.0.0", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c" + "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", - "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/e9f4047e5edf53c88f36f1dafc0d49454ce13e25", + "reference": "e9f4047e5edf53c88f36f1dafc0d49454ce13e25", "shasum": "" }, "require": { @@ -6667,7 +6210,7 @@ "standards" ], "abandoned": "phpcompatibility/php-compatibility", - "time": "2018-12-30T23:16:27+00:00" + "time": "2018-10-07T17:38:02+00:00" } ], "aliases": [], @@ -6682,7 +6225,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.1" + "php": ">=5.6" }, "platform-dev": [] } diff --git a/config/app.php b/config/app.php index 02c5a1b72..bd0116a86 100644 --- a/config/app.php +++ b/config/app.php @@ -9,23 +9,24 @@ return [ 'url' => env('APP_URL', 'http://localhost'), 'env' => env('APP_ENV', 'production'), 'debug' => env('APP_DEBUG', false), + 'log' => env('APP_LOG', 'single'), + 'log_level' => env('APP_LOG_LEVEL', 'debug'), 'cache_lifetime' => env('APP_CACHE_LIFETIME', 60), 'key' => env('APP_KEY', 'base64:rU28h/tElUn/eiLY0qC24jJq1rakvAFRoRl1DWxj/kM='), 'cipher' => 'AES-256-CBC', 'timezone' => 'UTC', 'providers' => [ - FilesystemServiceProvider::class, CacheServiceProvider::class, - ViewServiceProvider::class, + FilesystemServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Laravel\Tinker\TinkerServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - ], + ViewServiceProvider::class, + ], 'aliases' => [ 'Crypt' => Illuminate\Support\Facades\Crypt::class ], diff --git a/workflow/engine/classes/SpoolRun.php b/workflow/engine/classes/SpoolRun.php index b3468c7c7..faecdc5d8 100644 --- a/workflow/engine/classes/SpoolRun.php +++ b/workflow/engine/classes/SpoolRun.php @@ -91,16 +91,6 @@ class SpoolRun $this->appMsgUid = $v; } - /** - * Get the fileData property - * - * @return array - */ - public function getFileData() - { - return $this->fileData; - } - /** * Set the $spoolId * @@ -242,52 +232,32 @@ class SpoolRun } /** - * Set email parameters + * set email parameters * - * @param string $appMsgUid - * @param string $subject - * @param string $from - * @param string $to - * @param string $body - * @param string $date - * @param string $cc - * @param string $bcc - * @param string $template - * @param array $attachments - * @param bool $contentTypeIsHtml - * @param string $error - * - * @see SpoolRun->create() - * @see SpoolRun->resendEmails() + * @param string $sAppMsgUid , $sSubject, $sFrom, $sTo, $sBody, $sDate, $sCC, $sBCC, $sTemplate + * @return none */ - public function setData($appMsgUid, $subject, $from, $to, $body, $date = '', $cc = '', $bcc = '', $template = '', $attachments = [], - $contentTypeIsHtml = true, $error = '') + public function setData($sAppMsgUid, $sSubject, $sFrom, $sTo, $sBody, $sDate = "", $sCC = "", $sBCC = "", $sTemplate = "", $aAttachment = array(), $bContentTypeIsHtml = true, $sError = "") { - // Fill "fileData" property - $this->spoolId = $appMsgUid; - $this->fileData['subject'] = $subject; - $this->fileData['from'] = $from; - $this->fileData['to'] = $to; - $this->fileData['body'] = $body; - $this->fileData['date'] = (!empty($date) ? $date : date('Y-m-d H:i:s')); - $this->fileData['cc'] = $cc; - $this->fileData['bcc'] = $bcc; - $this->fileData['template'] = $template; - $this->fileData['attachments'] = $attachments; - $this->fileData["contentTypeIsHtml"] = $contentTypeIsHtml; - $this->fileData["error"] = $error; + $this->spoolId = $sAppMsgUid; + $this->fileData['subject'] = $sSubject; + $this->fileData['from'] = $sFrom; + $this->fileData['to'] = $sTo; + $this->fileData['body'] = $sBody; + $this->fileData['date'] = ($sDate != '' ? $sDate : date('Y-m-d H:i:s')); + $this->fileData['cc'] = $sCC; + $this->fileData['bcc'] = $sBCC; + $this->fileData['template'] = $sTemplate; + $this->fileData['attachments'] = $aAttachment; + $this->fileData['envelope_to'] = array(); + $this->fileData["contentTypeIsHtml"] = $bContentTypeIsHtml; + $this->fileData["error"] = $sError; - // Initialize some values used internally - $this->fileData['envelope_to'] = []; - $this->fileData['envelope_cc'] = []; - $this->fileData['envelope_bcc'] = []; - - // Domain validation when the email engine is "OpenMail" if (array_key_exists('MESS_ENGINE', $this->config)) { - if ($this->config['MESS_ENGINE'] === 'OPENMAIL') { - if (!empty($this->config['MESS_SERVER'])) { - if (($domain = @gethostbyaddr($this->config['MESS_SERVER']))) { - $this->fileData['domain'] = $domain; + if ($this->config['MESS_ENGINE'] == 'OPENMAIL') { + if ($this->config['MESS_SERVER'] != '') { + if (($sAux = @gethostbyaddr($this->config['MESS_SERVER']))) { + $this->fileData['domain'] = $sAux; } else { $this->fileData['domain'] = $this->config['MESS_SERVER']; } @@ -871,12 +841,4 @@ class SpoolRun return $appMsgUid; } - - /** - * Run the private method "handleEnvelopeTo", this method was created in order to use in the unit tests - */ - public function runHandleEnvelopeTo() - { - $this->handleEnvelopeTo(); - } } From 1e63a8192600f5a3a5b63ccef88adfaffe368aba Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Thu, 11 Jul 2019 11:37:48 -0400 Subject: [PATCH 38/38] change --- workflow/engine/classes/ActionsByEmailCoreClass.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/classes/ActionsByEmailCoreClass.php b/workflow/engine/classes/ActionsByEmailCoreClass.php index 21a4d33cc..e69d6cd22 100644 --- a/workflow/engine/classes/ActionsByEmailCoreClass.php +++ b/workflow/engine/classes/ActionsByEmailCoreClass.php @@ -529,7 +529,7 @@ class ActionsByEmailCoreClass extends PMPlugin */ private function defineSubject($subjectField, array $caseData) { - $subject = G::replaceDataField($subjectField, $caseData); + $subject = G::replaceDataField($subjectField, $caseData, 'mysql', false); if (empty($subject)) { $subject = $this->getCasePropertiesKey('APP_TITLE'); }