Compare commits

...

649 Commits
v1.2.1 ... 2.0

Author SHA1 Message Date
Graham Campbell
c1ab3a175c Bumped version 2015-12-18 12:51:20 +00:00
Graham Campbell
666da0125e Released 2.0.4 2015-12-18 12:50:27 +00:00
Graham Campbell
7ff5da78b9 Updated laravel 2015-12-18 12:48:05 +00:00
Graham Campbell
4886bb9815 Merge pull request #1238 from cachethq/fix-notifing-subscribers
Fixes #1237
2015-12-18 12:39:33 +00:00
James Brooks
d2beb6263e Remove indentation 2015-12-18 09:07:40 +00:00
James Brooks
dabed137ab Fixes #1237 2015-12-17 14:41:22 +00:00
James Brooks
f75c9f5500 Fixes #1218 2015-12-16 18:15:25 +00:00
James Brooks
b9b282ba7b Fixes #1234 2015-12-16 18:02:04 +00:00
James Brooks
5f2e2d5925 Merge pull request #1233 from phecho/fix-page_title
Fixed issue #1195
2015-12-16 13:49:27 +00:00
phecho
89c708de07 Fixed issue #1195 2015-12-16 21:42:02 +08:00
Graham Campbell
7f02aa2bce Updated dependencies 2015-12-15 15:38:04 +00:00
Graham Campbell
7de9440731 Bumped some minimum versions 2015-12-15 15:12:57 +00:00
Graham Campbell
409d34f251 Updated dependencies 2015-12-11 11:37:12 +00:00
Graham Campbell
68b0d35d1a Locked down some dependency versions 2015-12-11 11:34:21 +00:00
Graham Campbell
8ca809d5a0 Updated dependencies 2015-12-09 14:04:26 +00:00
Graham Campbell
9cde8277ad Bumped min exceptions version 2015-12-09 14:02:57 +00:00
Graham Campbell
c48f54ec28 Removed unused code 2015-12-07 12:05:08 +00:00
James Brooks
cf19fecdbe Fixes #1202 2015-12-07 07:18:06 +00:00
Graham Campbell
cce211159b Updated dependencies 2015-12-06 10:38:15 +00:00
Graham Campbell
cf9627ce99 Updated version 2015-12-02 22:26:21 +00:00
Graham Campbell
d559c47aa0 Released 2.0.3 2015-12-02 22:23:44 +00:00
Graham Campbell
ff91bc4de3 Updated dependencies 2015-12-02 22:21:45 +00:00
Graham Campbell
4be7dc9635 Updated laravel 2015-12-02 22:17:36 +00:00
Graham Campbell
ce279202c8 Fixed phpdoc 2015-11-30 16:03:26 +00:00
phecho
b25db21444 Fixed wrong var
Closes #1191

Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-11-30 16:03:14 +00:00
James Brooks
a35430a4fd Fixes a bug with dashboard_login_link setting. Fixes #1190 2015-11-29 15:37:24 +00:00
James Brooks
1c4d7f4be3 Updated dependencies 2015-11-28 16:32:15 +00:00
Graham Campbell
73d1a989ec Updated dependencies 2015-11-27 10:28:06 +00:00
James Brooks
413abe4446 Merge pull request #1185 from cachethq/elixir-4
Upgrade to elixir 4 and rebuild assets
2015-11-27 09:55:18 +00:00
Joseph Cohen
41238611b6 Upgrade to elixir 4 and rebuild assets 2015-11-27 03:15:44 -06:00
James Brooks
83fd397818 Back to dev version 2015-11-26 13:48:05 +00:00
James Brooks
fc015757a7 Fix version 2015-11-26 13:47:23 +00:00
James Brooks
589f1a9562 Merge pull request #1180 from cachethq/embed-mail-banner
Embed the banner on the mail layout
2015-11-24 22:43:57 +00:00
Joseph Cohen
e78c9261f6 Embed the banner on the mail layout 2015-11-24 16:27:33 -06:00
James Brooks
6bffb66ed2 Remove duplicate banner image. Closes #1179 2015-11-24 21:51:27 +00:00
James Brooks
fb4509c8b8 Update dependencies 2015-11-24 19:55:06 +00:00
James Brooks
b11831d2e0 Fix docblock 2015-11-23 15:35:31 +00:00
Graham Campbell
74ec24120e Merge pull request #1177 from cachethq/analysis-87eWbq
Applied fixes from StyleCI
2015-11-22 20:14:53 +00:00
Graham Campbell
7c5e10f367 Applied fixes from StyleCI 2015-11-22 15:14:40 -05:00
Graham Campbell
ad9c6fd39a Back to dev 2015-11-22 20:13:51 +00:00
James Brooks
1f6e6ff592 Tag version 2.0.0 2015-11-22 20:11:58 +00:00
Graham Campbell
3572451f1e Use class noation 2015-11-22 20:09:08 +00:00
Graham Campbell
6a3ea90b27 Updated exceptions package 2015-11-22 20:06:29 +00:00
Graham Campbell
7bd93e0170 Cleanup 2015-11-22 20:06:04 +00:00
Graham Campbell
4b668a83ef Use the random_int function 2015-11-22 20:05:39 +00:00
James Brooks
dab47820e0 Re-do the UserWasAddedEvent 2015-11-22 19:41:54 +00:00
James Brooks
a04d067005 We're not using Broadcasting, so null the config 2015-11-22 19:37:39 +00:00
James Brooks
81e990b460 Comment out the UserWasAddedEvent 2015-11-22 19:36:36 +00:00
James Brooks
0771273049 Order factories 2015-11-22 19:31:42 +00:00
James Brooks
963c94a3e7 Update trans 2015-11-22 19:29:12 +00:00
James Brooks
bba87f6c46 Lowercase service trans 2015-11-22 19:28:18 +00:00
James Brooks
03f6a786ee We use SCSS not LESS 2015-11-22 19:26:18 +00:00
James Brooks
18281a65ac Updated dependencies, Whoops is now 1.1.9 2015-11-22 19:24:37 +00:00
James Brooks
13695c5b1e Updated Bower dependencies 2015-11-22 19:16:35 +00:00
James Brooks
7f6f74419d Update dependencies 2015-11-22 19:03:22 +00:00
James Brooks
620378b1f2 Merge pull request #1173 from cachethq/fixes
Fix some nulls and the notifications on the handlers
2015-11-22 09:01:19 +00:00
Joseph Cohen
a593dabeb9 Fix some nulls and the notifications on the handlers 2015-11-22 00:18:09 -06:00
Graham Campbell
24d09ccefd Back to dev 2015-11-21 23:20:52 +00:00
Graham Campbell
0817704c25 Released RC5 2015-11-21 23:20:34 +00:00
James Brooks
58e00d9fe2 We need to truncate subscribers 2015-11-21 23:19:00 +00:00
James Brooks
f814d13a64 Fixed bad variable 2015-11-21 23:16:06 +00:00
James Brooks
66c410a7c4 Fix undefined variable 2015-11-21 23:16:06 +00:00
Graham Campbell
9c15134387 Back to dev 2015-11-21 23:14:36 +00:00
Graham Campbell
73735ab4b4 Bumped version to RC4 2015-11-21 23:13:05 +00:00
James Brooks
c64df7eed7 Move display_graphs into AppComposer 2015-11-21 23:09:20 +00:00
James Brooks
51a4a1789e Forgot a file 2015-11-21 23:08:37 +00:00
James Brooks
970d903b48 style_fullwidth_header setting is now in AppComposer 2015-11-21 23:07:42 +00:00
Graham Campbell
a025ffb915 Usr strict equals 2015-11-21 23:06:18 +00:00
James Brooks
b31cab0654 Move more Setting facades into AppComposer 2015-11-21 23:05:20 +00:00
James Brooks
a2d7c49c2a Move $app_locale into AppComposer 2015-11-21 22:58:37 +00:00
James Brooks
49e33d0556 Merge pull request #1172 from cachethq/analysis-XpK4Z8
Applied fixes from StyleCI
2015-11-21 22:56:32 +00:00
James Brooks
ace02a5fa9 Applied fixes from StyleCI 2015-11-21 17:56:25 -05:00
James Brooks
4c9cae3142 Never allow Setting facade to lookup env 2015-11-21 22:53:16 +00:00
James Brooks
61ada5c07d Import missing Config facade 2015-11-21 22:53:05 +00:00
Graham Campbell
f5b6aa42b6 Cleanup 2015-11-21 22:51:05 +00:00
Graham Campbell
6f1d0ceda4 Merge pull request #1171 from cachethq/stylesheet-app-composer
Use $app_stylesheet from AppComposer
2015-11-21 22:49:59 +00:00
Graham Campbell
5eb1d376cf Tweak setup controller 2015-11-21 22:49:07 +00:00
James Brooks
dff9faaa5d Use $app_stylesheet from AppComposer 2015-11-21 22:48:22 +00:00
Graham Campbell
e5a46a71e7 Don't call env from the helpers file 2015-11-21 22:47:09 +00:00
Graham Campbell
7a09667cc0 Removed code duplication 2015-11-21 22:45:04 +00:00
Graham Campbell
236d52714d Stop calling the env function in naughty places 2015-11-21 22:43:06 +00:00
James Brooks
0e6ac90f7b Move app_banner and app_banner_type into AppComposer 2015-11-21 22:41:45 +00:00
James Brooks
2e1e7a383d Better condition to check for $app_domain 2015-11-21 22:37:25 +00:00
James Brooks
44fea779df Remove $app_url in favour of AppComposer usage 2015-11-21 22:36:09 +00:00
James Brooks
d76fa9465e Remove redundant condition for page titles 2015-11-21 22:32:05 +00:00
James Brooks
4c793590b2 Use the right variable name for page titles 2015-11-21 22:30:35 +00:00
James Brooks
1a9dbe2979 Remove unused error view 2015-11-21 22:27:49 +00:00
James Brooks
e806ef0663 Move $app_name into View composer 2015-11-21 22:25:48 +00:00
James Brooks
a8dd60063e Fix up pageTitle variables 2015-11-21 22:20:15 +00:00
James Brooks
bf20a324ac Outdent setup view blade 2015-11-21 22:15:59 +00:00
James Brooks
34d2191140 Don't use is_null 2015-11-21 22:04:23 +00:00
Graham Campbell
edb0f4b5cd Merge pull request #1110 from cachethq/filter
Fixed up array_filter stuff
2015-11-21 22:03:51 +00:00
James Brooks
27f1e6b8a4 Fix issues with is_null 2015-11-21 22:01:13 +00:00
Graham Campbell
bf88dfced0 Fixed up array_filter stuff
Closes #1071
2015-11-21 21:47:00 +00:00
Graham Campbell
fb7a15aaa7 Merge pull request #1168 from cachethq/validation
Improved api validation
2015-11-21 21:46:10 +00:00
James Brooks
beca42b532 Only check $transformed exception 2015-11-21 21:45:36 +00:00
James Brooks
c266a419e0 Fix canDisplay method 2015-11-21 21:45:15 +00:00
James Brooks
75deb97059 Correct the JsonValidationDisplayer class config 2015-11-21 21:42:35 +00:00
Graham Campbell
7a322d6032 Added missing import 2015-11-21 21:37:54 +00:00
Graham Campbell
025b92c51c Force status code 400 2015-11-21 21:20:15 +00:00
Graham Campbell
60108fb7cc Improved api validation 2015-11-21 21:18:40 +00:00
James Brooks
8ecefc65fb Hide the notify checkbox if subscribers isn't enabled 2015-11-21 14:35:35 +00:00
James Brooks
1bd54696c9 Add link on components page too 2015-11-21 13:54:20 +00:00
James Brooks
13391165bc Add link to add component suggestion 2015-11-21 13:52:32 +00:00
James Brooks
cc393df964 Update the welcome modal title 2015-11-21 13:50:53 +00:00
James Brooks
857d91c9ef Removed unused welcome email view 2015-11-21 13:50:15 +00:00
James Brooks
d08283f8a5 Pre-select the users language on setup 2015-11-21 13:49:14 +00:00
James Brooks
bcd7763f84 Fix up bad Input name and condition on setup 2015-11-21 13:45:47 +00:00
James Brooks
043b02c8b2 Merge pull request #1165 from phecho/fix-incident-edit
Fixes #1164
2015-11-21 10:38:03 +00:00
phecho
4015f4f150 Fixes issue #1164 2015-11-21 10:10:52 +08:00
James Brooks
e89c75d8bc Merge pull request #1162 from cachethq/js-drop-hq
Drop the HQ on js
2015-11-20 18:25:31 +00:00
Joseph Cohen
fcc21ce337 Drop the HQ on js 2015-11-20 12:02:19 -06:00
James Brooks
5a499cdc76 Merge pull request #1160 from phecho/improve-localization-zh
Improved zh-CN language resources for issue #1158
2015-11-20 11:03:14 +00:00
phecho
499584a110 Improved zh-CN language resources for issue #1158 2015-11-20 18:54:10 +08:00
Graham Campbell
5307e1014c Updated composer.lock 2015-11-20 10:23:19 +00:00
Graham Campbell
b60c1a9b05 Fixed up composer.json 2015-11-20 10:22:12 +00:00
James Brooks
46fc1dbc63 Merge pull request #1159 from phecho/enhance-redirect
Fixes issue #1158
2015-11-20 09:32:39 +00:00
phecho
32b66df5f0 Fixes issue #1158 2015-11-20 17:02:11 +08:00
James Brooks
031d89ea4a Merge pull request #1157 from phecho/fix-schedule-delete
Give a right tip when a schedule be deleted successfully.
2015-11-20 08:21:47 +00:00
phecho
e14ebe80e9 Give a right tip when a schedule be deleted successfully. 2015-11-20 09:43:46 +08:00
James Brooks
72233ff4ac Merge pull request #1154 from phecho/improve-dashboard
Add links for both of incidents & subscribers in dashboard default page
2015-11-19 17:59:40 +00:00
James Brooks
1db5dcbfe6 Fixes #1155 2015-11-19 17:58:01 +00:00
phecho
638f5d0862 Add links for both of incidents & subscribers in dashboard default page 2015-11-19 21:59:25 +08:00
James Brooks
1bf6f8e8c9 Merge pull request #1153 from phecho/add-cancel-btn-template
Add cancel button for incident templates
2015-11-19 12:54:22 +00:00
phecho
a9d9f7ba03 Add cancel button for incident templates 2015-11-19 20:24:22 +08:00
James Brooks
ee7d6fc9eb Merge pull request #1152 from phecho/fixed-remove-banner-bug
Fixed app banner can not be removed in the theme setting page
2015-11-19 11:43:52 +00:00
James Brooks
a8d60edb6a Merge pull request #1149 from phecho/fix-profile-dropdown
Fixes #1148
2015-11-19 11:10:48 +00:00
phecho
da30282843 Fixed app banner can not be removed in the theme setting page 2015-11-19 17:35:48 +08:00
phecho
899065b8e8 Fixes #1148 2015-11-18 22:06:51 +08:00
James Brooks
03eace0b00 Merge pull request #1144 from phecho/setup-not-responding
Fixes #1143
2015-11-17 18:30:33 +00:00
phecho
c765e22164 Fixes #1143 2015-11-18 02:08:46 +08:00
James Brooks
14e1c3d11d Merge pull request #1141 from phecho/fixes-language-detection
Fixes issue #1140
2015-11-16 18:18:01 +00:00
Graham Campbell
28893f4702 Merge pull request #1139 from phecho/adjust-travis-compile-orders-of-php
Adjust the orders of php compiler for travis
2015-11-16 16:15:31 +00:00
phpGitAdmin
7ddf4277f7 Adjust the orders of php compiler for travis as desc 2015-11-17 00:07:21 +08:00
phpGitAdmin
94c46d15cf Fixes #1140 2015-11-16 23:56:07 +08:00
James Brooks
147a6add23 Merge pull request #1138 from phecho/added-tips
Add tips in the situation of no items
2015-11-16 10:11:52 +00:00
guanshiliang
2a1bd732bd Adjust the orders of php compiler for travis 2015-11-16 11:33:05 +08:00
guanshiliang
4149ee86bf Add tips in the situation of no items 2015-11-16 11:14:56 +08:00
James Brooks
9cf600f36c Fixes #1137 2015-11-15 18:05:23 +00:00
James Brooks
d4020aed29 Merge pull request #1136 from phecho/master
Improved language package of zh-CN
2015-11-15 16:13:45 +00:00
James Brooks
cc3f08260e Metrics should include the current hour. Fixes #1113 2015-11-15 16:13:20 +00:00
guanshiliang
696eb48472 Improved language package of zh-CN 2015-11-15 23:56:16 +08:00
James Brooks
73820735f5 Merge pull request #1132 from cachethq/api-template-incidents
Incident API can now use incident templates with Twig templating
2015-11-15 11:57:09 +00:00
James Brooks
2a12b0ca85 Merge pull request #1131 from cachethq/update-langs
Updated Crowdin lang strings
2015-11-15 11:56:32 +00:00
James Brooks
af176d7c7a Incident API can now use incident templates with Twig templating 2015-11-15 11:32:51 +00:00
Graham Campbell
1483863dae Updated lock file 2015-11-14 15:16:15 +00:00
Graham Campbell
3064663350 Updated dependencies 2015-11-14 15:11:02 +00:00
James Brooks
ce71d7f3ac Merge pull request #1133 from cachethq/analysis-86Yb9z
Applied fixes from StyleCI
2015-11-12 22:52:14 +00:00
Graham Campbell
54d1aca33e Updated psysh 2015-11-12 21:28:02 +00:00
James Brooks
5ef28fba01 Applied fixes from StyleCI 2015-11-12 13:21:45 -05:00
Graham Campbell
1a5ef0750a Updated dependencies 2015-11-12 15:27:50 +00:00
James Brooks
fe45d2411c Updated Crowdin lang strings 2015-11-12 10:59:28 +00:00
James Brooks
819fc9563f Merge pull request #1129 from phecho/master
Fixed dashboard icons
2015-11-11 16:42:46 +00:00
Phecho
4c10cb2df9 Merge branch 'master' into master 2015-11-12 00:27:39 +08:00
phecho
d93ecc85e3 Adjusted the subMenu order of Settings 2015-11-12 00:22:40 +08:00
phecho
cf89f5fcec Fixed dashboard icons 2015-11-12 00:10:08 +08:00
James Brooks
326183311e Merge pull request #1128 from phecho/master
Updated Chinese(zh-CN & zh-TW) forms translations
2015-11-11 16:04:56 +00:00
Phecho
30a4d6e85b Merge branch 'master' into master 2015-11-11 23:01:19 +08:00
phecho
4c67bf70ff Adjusted the order of sidebar item 2015-11-11 23:00:40 +08:00
phecho
ccbc114f62 Updated Chinese(zh-CN & zh-TW) forms translations 2015-11-11 22:38:01 +08:00
James Brooks
a35ccfdc8b Merge pull request #1127 from phecho/master
Added lang package of traditional chinese(zh-TW)
2015-11-11 13:43:34 +00:00
phecho
4a5c810341 Added lang package of traditional chinese(zh-TW) 2015-11-11 21:17:20 +08:00
James Brooks
de1be2eefe Merge pull request #1125 from phecho/master
Improved zh-CN localization
2015-11-11 09:24:59 +00:00
phecho
76a6500c26 Fixed translations of dashboard page title 2015-11-11 15:31:11 +08:00
phecho
3b2359db1d Fixed translations of dashboard page title 2015-11-11 15:10:57 +08:00
phecho
be1fccd682 Fixed translations of dashboard page title 2015-11-11 14:57:02 +08:00
phecho
37011ad1ff Improved zh-CN localization 2015-11-11 10:53:36 +08:00
phecho
62918ee526 Improved zh-CN localization 2015-11-11 10:50:26 +08:00
Phecho
3ddbc792f4 Merge pull request #1 from cachethq/master
sync
2015-11-11 09:48:10 +08:00
James Brooks
73ddafc935 Merge pull request #1123 from phecho/master
added sub_title localization for SettingController,updated translatio…
2015-11-10 15:39:25 +00:00
phecho
67304c9eb3 added sub_title localization for SettingController,updated translations of zh-CN for human friendly 2015-11-10 20:19:42 +08:00
James Brooks
1c1674d5b4 Default enabled for PUTing component. Closes #1119 2015-11-10 10:48:50 +00:00
James Brooks
110a6394d9 Merge pull request #1118 from phecho/master
translate lang/zh-CN resources completely
2015-11-10 09:56:45 +00:00
phecho
9b0901e161 translate lang/zh-CN resources completely 2015-11-10 14:24:33 +08:00
James Brooks
30194967e5 Merge pull request #1092 from cachethq/invitation-system
Invite system for users
2015-11-09 18:38:40 +00:00
James Brooks
77cec21dc5 Update invitation system language text 2015-11-09 18:38:26 +00:00
Joseph Cohen
29c3bcf183 Add email strings 2015-11-08 20:21:23 -06:00
Joseph Cohen
0b12d4e0c3 Add validation to signup and trans strings 2015-11-08 20:13:26 -06:00
Joseph Cohen
a88140ed53 Update event listeners order 2015-11-08 20:13:26 -06:00
Joe Cohen
d82bc57796 Applied fixes from StyleCI 2015-11-08 20:13:26 -06:00
Joseph Cohen
448f13e671 Handle the signup invite 2015-11-08 20:13:25 -06:00
Joseph Cohen
f6318409a7 Start working on the invite system for users 2015-11-08 20:13:25 -06:00
James Brooks
6d52f49461 Updated dependencies 2015-11-08 21:18:19 +00:00
Graham Campbell
15d00d24ea Updated dev deps 2015-11-08 20:09:37 +00:00
James Brooks
e1581d5388 Update barryvdh/laravel-cors 2015-11-08 19:25:02 +00:00
James Brooks
ce1b9e7fe9 Drop the HQ 2015-11-08 19:15:58 +00:00
James Brooks
07c37f13c5 Update Google2FA. Closes #1115 2015-11-08 19:15:54 +00:00
James Brooks
a38a29bc2d component_status is required if we send component_id. Closes #1112 2015-11-08 19:06:26 +00:00
Graham Campbell
5f1f6d3c04 Cleanup 2015-11-07 17:09:09 +00:00
Graham Campbell
66061d9a8c Fixed typo 2015-11-07 16:35:04 +00:00
Graham Campbell
434a7b7b5b Merge pull request #1108 from cachethq/timezone
Timezone Fixes
2015-11-07 16:33:19 +00:00
Graham Campbell
ba6f9fee43 Merge pull request #1107 from cachethq/handlers
Tweaked three command handlers
2015-11-07 16:31:58 +00:00
Graham Campbell
8cd8c35125 Fixes 2015-11-07 15:37:06 +00:00
Graham Campbell
dd6a1fa956 Tweaked three command handlers 2015-11-07 13:21:28 +00:00
Joseph Cohen
bb691ec427 Test setting timezone on the api for metric points
Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-11-07 13:20:06 +00:00
Graham Campbell
2d648e44ae Make sure metrics use the correct timezone
Closes #1032
2015-11-07 13:18:38 +00:00
Graham Campbell
d379e41edf Use the date factory in the schedule controller 2015-11-07 13:16:54 +00:00
Graham Campbell
6a73d6268d Use the date factory in the commands 2015-11-07 13:16:39 +00:00
Graham Campbell
592b62b399 Added date factory 2015-11-07 13:15:28 +00:00
Graham Campbell
1a23d84488 Rebuilt css 2015-11-07 11:55:16 +00:00
Graham Campbell
82e9a94ac7 Updated dependencies 2015-11-07 11:52:10 +00:00
James Brooks
c89691cb2c Fixes #1104 - Re-adds enabled field to dashboard 2015-11-07 11:29:44 +00:00
James Brooks
a70d9ce530 Added status value validation to commands 2015-11-07 11:20:45 +00:00
Graham Campbell
c75579779f Updated dependencies 2015-11-05 16:06:48 +00:00
Graham Campbell
ca2b6a7ba4 Updated markdown config and enabled safe mode 2015-11-05 16:01:21 +00:00
Graham Campbell
46845f1a8f Bumped minimum markdown vesion 2015-11-05 16:01:16 +00:00
James Brooks
addbe53e2b Fix control name. Closes #1102 2015-11-05 07:17:04 +00:00
James Brooks
b4d33f2bcb Default metric places to 2. Fixes #1090 2015-11-04 18:47:17 +00:00
Graham Campbell
210568ff1a Merge pull request #1101 from cachethq/define-version
Display the current version in the settings sidebar. Closes #1061
2015-11-04 17:41:33 +00:00
Graham Campbell
4775ef43b7 Fixed the version constant 2015-11-04 17:39:55 +00:00
Graham Campbell
b8fa1f0111 Moved the defining to the autoload.php file 2015-11-04 17:39:16 +00:00
James Brooks
3b7308dccd Display the current version in the settings sidebar. Closes #1061 2015-11-04 15:10:15 +00:00
James Brooks
f5964bef8e Removed unused import 2015-11-04 15:09:52 +00:00
James Brooks
e6c24ce9f8 Remove pointless check for logged in users 2015-11-04 15:05:38 +00:00
James Brooks
b8e3dcff55 Docblock fixes 2015-11-04 15:02:56 +00:00
James Brooks
0fed178c34 Removed old todo comment. Closes #1073 2015-11-04 15:00:28 +00:00
James Brooks
fbc4041bf7 Hide disabled components from public API. Closes #1095 2015-11-04 14:59:11 +00:00
James Brooks
32d4aae76e Removed unused Guard usage 2015-11-04 14:48:02 +00:00
James Brooks
b7eac45968 Call enabled scope on the builder, not the collection 2015-11-04 14:39:27 +00:00
Graham Campbell
39157a74a1 Merge pull request #1100 from AntoineAugusti/components-scopes
Add scopes for components
2015-11-04 13:53:03 +00:00
Antoine Augusti
b414a4e391 Add scopes for components 2015-11-04 14:54:43 +01:00
James Brooks
87bcd0c87b Remove todo 2015-11-03 23:23:14 +00:00
James Brooks
fcac32a67d Refactors out notify conditions. Closes #1083 2015-11-03 23:17:45 +00:00
James Brooks
ccc23fa70d Merge pull request #1099 from cachethq/disable-components
Enabling/Disabling of components
2015-11-03 22:52:38 +00:00
James Brooks
468f156ceb Update command tests 2015-11-03 22:37:29 +00:00
James Brooks
013f873500 Default the add component to true 2015-11-03 22:11:44 +00:00
James Brooks
edd111451e Started work on enabling/disabling components 2015-11-03 21:32:45 +00:00
James Brooks
e8a3e18d55 Updated dependencies 2015-11-03 21:08:29 +00:00
Graham Campbell
2e26f6641d Fixed redirect
Closes #1098
2015-11-01 23:36:49 +00:00
James Brooks
809c17e7e6 We don't need to eager load metric points. Closes #1089 2015-11-01 18:48:25 +00:00
James Brooks
b4977e7ada Merge pull request #1096 from phelipealves/master
Brazilian Portuguese updated
2015-11-01 14:46:50 +00:00
Phelipe Alves de Souza
7f00501d10 Brazilian Portuguese updated 2015-11-01 12:14:48 -02:00
Graham Campbell
3862a8a2f0 Updated composer.lock 2015-10-31 20:41:24 +00:00
Graham Campbell
6cfe07c4fa Merge pull request #1084 from cachethq/analysis-qyKZL8
Applied fixes from StyleCI
2015-10-30 18:25:56 +00:00
Graham Campbell
f2fb5b66c1 Applied fixes from StyleCI 2015-10-30 14:25:45 -04:00
Graham Campbell
f454172dc8 Pull in change to .htaccess made on laravel/laravel 2015-10-30 18:24:43 +00:00
Graham Campbell
4ab6cd5b1b Synced config with laravel/laravel 2015-10-30 18:24:42 +00:00
James Brooks
c354c7cc3d Merge pull request #1076 from TheoBearman/master
Some Minor Grammatical & Styling Changes
2015-10-29 21:46:50 +00:00
Theo Bearman
36c8f086e9 James' Changes 2015-10-29 12:07:37 +00:00
Theo Bearman
4c32a394fe Fix 2015-10-29 11:43:14 +00:00
Theo Bearman
4ed8d9b7d5 Some Minor Grammatical & Styling Changes 2015-10-29 11:10:45 +00:00
Theo Bearman
148268d294 Merge remote-tracking branch 'refs/remotes/cachethq/master' 2015-10-29 10:55:43 +00:00
James Brooks
7076b92003 Updated description and keywords 2015-10-29 08:25:31 +00:00
Graham Campbell
8af729e426 Updated dependencies 2015-10-28 22:35:41 +00:00
Graham Campbell
6a1048d6a5 Removed dependency accidently added 2015-10-28 22:31:59 +00:00
Graham Campbell
555dda4bac Bumped minimum laravel version 2015-10-28 22:31:48 +00:00
James Brooks
a23bdad59c Merge pull request #1074 from Forst/master
[ru] Update localization
2015-10-28 14:50:00 +00:00
Graham Campbell
b67419e073 Updated dependencies 2015-10-28 14:40:43 +00:00
Foster Forst Snowhill
8569101551 [ru] Update localization 2015-10-28 17:28:10 +03:00
Graham Campbell
a8e1713fab Merge pull request #1070 from cachethq/incidents
Improved and fixed the report incident command handler
2015-10-28 14:05:53 +00:00
Graham Campbell
bb106d35fe Improved and fixed the report incident command handler 2015-10-28 13:58:20 +00:00
James Brooks
4a07bb4a7f Merge pull request #1069 from ApfelUser/master
Enhance German translations
2015-10-28 10:39:15 +00:00
ApfelUser
d7e10f087b The file name seems to have changed in the original EN folder 2015-10-28 10:27:13 +01:00
ApfelUser
09ed3b3e7a Add correct German translation for auth.php 2015-10-28 10:17:17 +01:00
James Brooks
b1d013e997 Merge pull request #1068 from TheoBearman/master
Some Minor Grammatical Changes
2015-10-28 08:04:40 +00:00
Theo Bearman
3649b58fbe Graham's Corrections 2015-10-27 21:34:54 +00:00
Theo Bearman
6cd37a5ab6 'Powered' is now 'powered' again 2015-10-27 20:31:31 +00:00
Theo Bearman
390a2d289e Some Minor Grammatical Changes 2015-10-27 20:17:22 +00:00
James Brooks
bb77dafea9 Merge pull request #1065 from TheoBearman/master
Removed Bold Text On Footer 'Subscriber' Button #1056
2015-10-27 20:02:22 +00:00
James Brooks
854679e55e Merge pull request #1066 from cachethq/issue-1064
Closes #1064
2015-10-27 18:11:42 +00:00
Graham Campbell
d40ffed287 Closes #1064 2015-10-27 17:44:28 +00:00
Theo Bearman
ef8f90bc4d Removed Bold Text On Footer 'Subscriber' Button 2015-10-27 16:35:27 +00:00
James Brooks
8d02a5a3a2 Fix issue with components not reporting on incidents. Closes #1063 2015-10-27 12:43:01 +00:00
James Brooks
964a5fc514 Move the banner form into Theme. Closes #1051 2015-10-27 08:19:53 +00:00
James Brooks
ce633c6b29 Closes #1050, link to Gravatar.com in the profile page 2015-10-27 08:18:09 +00:00
James Brooks
8131e21a67 Merge pull request #1058 from cachethq/finish-footer
Remove footer icons, make button outline, fix responsive
2015-10-26 21:41:08 +00:00
Joseph Cohen
36f0f9f2cb Remove footer icons, make button outline, fix responsive 2015-10-26 12:09:41 -06:00
Graham Campbell
69bab99855 Rebuilt css 2015-10-25 12:06:49 +00:00
Graham Campbell
85a49e6386 Updated dependencies 2015-10-25 12:06:44 +00:00
Graham Campbell
5e9b52d534 Updated dependencies 2015-10-24 22:35:57 +01:00
Graham Campbell
edfd0156a9 Merge branch 'master' of https://github.com/cachethq/Cachet 2015-10-24 22:33:56 +01:00
Graham Campbell
6d3294415b Merge pull request #1055 from cachethq/footer
Make footer simpler
2015-10-24 22:32:48 +01:00
Graham Campbell
61d5554c7c Bumped minimum laravel version 2015-10-24 22:31:15 +01:00
Graham Campbell
cd2829ba5b Meh 2015-10-24 22:24:39 +01:00
Graham Campbell
5e97ae4398 Support php 7 2015-10-24 22:24:17 +01:00
Joseph Cohen
df8e9ea101 Make footer simpler 2015-10-24 12:48:40 -05:00
James Brooks
a8b279c2e6 Merge pull request #1053 from mmollick/subscriber_confirmations
Fixing issue #1052
2015-10-23 07:25:59 +01:00
James Brooks
3a76953ed8 Merge pull request #1054 from mmollick/typo
Fixed typo for unsubscribe
2015-10-23 07:25:26 +01:00
Michael Mollick
48e0a775e0 Fixed typo for unsubscribed language reference 2015-10-22 21:36:49 -04:00
Michael Mollick
728ad547b5 Subscribers can now confirm and unsubscribe when 'Allow people to signup...' is disabled 2015-10-22 21:24:31 -04:00
James Brooks
ffa6a8f3d6 Merge pull request #1049 from mmollick/fullwidth_header
Fullwidth header
2015-10-22 17:12:26 +01:00
Michael Mollick
1271470da3 Changed the default padding options, was '40px 0 0 0', is now '40px 0' 2015-10-22 09:14:59 -04:00
Michael Mollick
152c46e430 Reworking the header, logo is always contained in the center column per the original header 2015-10-21 22:18:34 -04:00
James Brooks
974fd5015d Merge pull request #1048 from mmollick/master
Cleaning up dashboard forms
2015-10-21 07:08:19 +01:00
Michael Mollick
bd6b9fcabf Applied StyleCI patch 2015-10-21 00:16:46 -04:00
Michael Mollick
77245c3b71 Fixing checkbox to toggle fullwidth banner 2015-10-21 00:14:18 -04:00
Michael Mollick
efee85685b Updated language files with new theme fields 2015-10-21 00:02:27 -04:00
Michael Mollick
f1c613249a Support for full width header added 2015-10-20 23:52:48 -04:00
Michael Mollick
e8a5926dfe Applied StyleCI changes 2015-10-20 22:13:52 -04:00
Michael Mollick
5860678eb5 Notify subscribers is now one line, optional indicator appears after label 2015-10-20 21:19:57 -04:00
Michael Mollick
1480385c04 Display chart on status page is now on a single line 2015-10-20 21:13:09 -04:00
Michael Mollick
4771a134c4 Notify subscribers checkbox is now a single line, removed optional indicator 2015-10-20 21:09:52 -04:00
Michael Mollick
6d231fb68a Checkbox in theme is now inline 2015-10-20 21:07:19 -04:00
Michael Mollick
be6fdf6890 Updated remaining language files 2015-10-20 20:52:38 -04:00
Michael Mollick
c832aba80a Segmented the language files 2015-10-20 20:38:33 -04:00
James Brooks
24e125857c Organise the footer buttons better. Closes #1047 2015-10-20 22:06:35 +01:00
Graham Campbell
95d9c2424d Updated lock file 2015-10-20 20:36:36 +01:00
Graham Campbell
7507a362bd Switched boolean for bool 2015-10-20 20:34:59 +01:00
Graham Campbell
d46007c536 Switched from integer to int 2015-10-20 20:33:23 +01:00
Graham Campbell
59967bca9a Bumped min versions 2015-10-20 20:32:53 +01:00
James Brooks
1c9021884a Fixes favicon.png sizing. Closes #1045 2015-10-20 19:59:29 +01:00
Michael Mollick
1ce7f3d569 Seperated application settings into three pages 2015-10-19 00:41:19 -04:00
Graham Campbell
decc16a72c Merge pull request #1043 from BenjaminPaap/patch-1
Fixed some minor typos
2015-10-18 19:57:24 +01:00
Benjamin Paap
5af115daac Fixed some minor typos
While reading the README.md I noticed some minor typos
2015-10-18 20:54:23 +02:00
James Brooks
c3646fd64a Let's not duplicate view code 2015-10-17 14:27:15 +01:00
James Brooks
4e7d4c4581 Move the subscribers button into footer, re-arrange top half page 2015-10-17 14:18:45 +01:00
James Brooks
49e4113159 Filter component elements that aren't set 2015-10-17 09:59:58 +01:00
James Brooks
654c0265aa Merge pull request #1042 from cachethq/demo-metric-point-seeder
Added DemoMetricPointSeederCommand. Closes #1041
2015-10-16 17:54:07 +01:00
James Brooks
0eda950dc7 Added DemoMetricPointSeederCommand. Closes #1041 2015-10-16 17:48:58 +01:00
James Brooks
2d55697cf4 Merge pull request #1039 from MaxGfeller/add-composer-test-script
Add `composer test` script
2015-10-15 14:34:48 +01:00
Max Gfeller
1248c4042f Add composer test script 2015-10-15 15:32:46 +02:00
James Brooks
9bf6d31131 Merge pull request #1037 from cachethq/fix-date-trans
Set date lang on the localized middleware
2015-10-15 00:05:43 +01:00
Joseph Cohen
134dfa0b0e Set date lang on the localized middleware 2015-10-14 16:03:58 -05:00
James Brooks
02d59e3424 Finish the PgSqlRepository for metrics. Closes #1035 2015-10-14 20:59:11 +01:00
James Brooks
4897453f5f Editing a component should call UpdateComponentCommand. Closes #1036 2015-10-14 17:19:24 +01:00
James Brooks
ee1c23b2c9 Update dependencies 2015-10-13 22:33:23 +01:00
Graham Campbell
e1ae1a1316 Rebuilt css 2015-10-11 16:04:15 +01:00
Graham Campbell
66779c3f0b Updated npm deps 2015-10-11 16:04:09 +01:00
Graham Campbell
7a998f2b69 Updated dependencies 2015-10-11 15:17:56 +01:00
James Brooks
6ba1b1188a Merge pull request #1029 from cachethq/use-warning-status
Use warning rather than error
2015-10-11 12:10:36 +01:00
James Brooks
39b6bfc6d0 Use info instead of warning 2015-10-11 12:10:19 +01:00
James Brooks
9ad3b7e606 Merge pull request #997 from mrbase/dk-lang
added danish translation
2015-10-11 12:03:15 +01:00
James Brooks
3988cfb6c0 Use warning rather than error 2015-10-11 11:35:00 +01:00
Graham Campbell
9d20e7b3a4 Merge pull request #1028 from cachethq/analysis-Xk6bP8
Applied fixes from StyleCI
2015-10-09 14:42:16 +01:00
Graham Campbell
d62598dd45 Applied fixes from StyleCI 2015-10-09 09:42:10 -04:00
Graham Campbell
746b7aeb2a Merge pull request #1025 from cachethq/cachet-timezone
[WIP] Cachet timezone
2015-10-09 14:41:30 +01:00
Joseph Cohen
41b8b9660b Fix missing default 2015-10-08 16:17:35 -05:00
Graham Campbell
019bb6b7ea Merge pull request #1027 from cachethq/analysis-qB05O8
Applied fixes from StyleCI
2015-10-08 22:16:43 +01:00
Graham Campbell
bda07ea0dd Applied fixes from StyleCI 2015-10-08 17:16:37 -04:00
Joseph Cohen
9d91e19863 CS Fix 2015-10-08 16:15:44 -05:00
Joseph Cohen
9887df6987 Revert change on statuspage 2015-10-08 16:15:04 -05:00
Graham Campbell
63d5161010 Merge pull request #1026 from cachethq/analysis-qyLK5X
Applied fixes from StyleCI
2015-10-08 22:13:11 +01:00
Graham Campbell
1a783d71f8 Applied fixes from StyleCI 2015-10-08 17:13:03 -04:00
Joseph Cohen
a288f84fc5 Settable timezones with cachet config 2015-10-08 16:11:30 -05:00
James Brooks
1e2b80d8d3 Standalone text classes should be importnat 2015-10-08 21:43:23 +01:00
James Brooks
d3fcffce72 Text color for buttons and alerts is now dynamic. Closes #1020, #1021 2015-10-08 17:02:27 +01:00
James Brooks
22c39df73f Merge pull request #1024 from billmn/status-page-localization
Restored Status Page localization
2015-10-08 10:34:05 +01:00
Davide Bellini
8bd46105e6 Restored Status Page localization 2015-10-08 11:30:33 +02:00
Graham Campbell
35679a23d0 Merge pull request #1015 from cachethq/autopresenter
Autopresenter Updates
2015-10-07 22:55:53 +01:00
Graham Campbell
6c048d45d6 Updated lock file 2015-10-07 22:55:26 +01:00
Graham Campbell
995fdd4049 Updated autopresenter 2015-10-07 22:55:25 +01:00
Davide Bellini
b6fbe53b28 Use Collection on API Paginator presenter
This allows to decorate all model's attributes inside the Collection
2015-10-07 22:55:24 +01:00
Graham Campbell
22204811c2 Merge pull request #1019 from mrbase/form-and-js-fix
Fix problems with the incident add/edit form
2015-10-07 22:52:58 +01:00
ulrik nielsen
a374ae9abd removed the incident array 2015-10-07 21:48:23 +02:00
ulrik nielsen
b68efe0631 new asset build 2015-10-07 21:47:42 +02:00
James Brooks
ce8e710173 Set the app_timezone setting 2015-10-07 17:49:22 +01:00
Graham Campbell
8bd510a653 Merge pull request #1010 from cachethq/new
Updated dependencies
2015-10-07 14:37:55 +01:00
Graham Campbell
efdddfb847 Rebuilt css 2015-10-07 14:30:17 +01:00
Graham Campbell
22b6af8f0f Updated lock file 2015-10-07 14:30:16 +01:00
Graham Campbell
04321db166 Updated throttle package 2015-10-07 14:30:14 +01:00
Graham Campbell
9bef541057 Updated exceptions package 2015-10-07 14:30:13 +01:00
Graham Campbell
af62c5683f Updated markdown packages 2015-10-07 14:30:13 +01:00
Graham Campbell
238dcbcaeb Bumped min guzzle version 2015-10-07 14:30:12 +01:00
Graham Campbell
4e9f8772e8 Bumped min phpunit version 2015-10-07 14:30:11 +01:00
Graham Campbell
710348c0b6 Merge pull request #1013 from cachethq/travis
Synced travis file with alt three packages
2015-10-07 14:05:11 +01:00
Graham Campbell
7909465e98 Added back no scripts 2015-10-07 14:03:16 +01:00
Graham Campbell
9fac22b863 Synced travis file with alt three packages 2015-10-07 14:01:54 +01:00
James Brooks
55429283c0 Started working on API timezone support 2015-10-07 13:48:14 +01:00
James Brooks
32063510fb Update dependencies 2015-10-07 13:37:42 +01:00
Graham Campbell
814fcd844c Tweaked command kernel 2015-10-06 16:24:51 +01:00
James Brooks
715adda424 Merge pull request #1007 from janyksteenbeek/patch-1
Fixed Grammar + added translation for metrics
2015-10-06 11:23:16 +01:00
Janyk Steenbeek
9ea4698f21 Fixed Grammar + added translation for metrics
Fixed grammar in Dutch translation file, things like capital letters and double words. Also added translation for metrict
2015-10-06 12:04:52 +02:00
James Brooks
a91d0be1a8 Fix CS 2015-10-05 20:18:44 +01:00
James Brooks
2091f0ddf0 Merge pull request #1003 from billmn/login-autofocus
Autofocus on login email field
2015-10-05 20:18:14 +01:00
Davide Bellini
674be657c7 Autofocus on login email field 2015-10-05 21:10:24 +02:00
ulrik nielsen
2dd393a569 Merge branch 'dk-lang' of github.com:mrbase/Cachet into dk-lang 2015-10-05 20:54:42 +02:00
ulrik nielsen
9d4ec9c711 added danish translation 2015-10-05 20:53:48 +02:00
James Brooks
bc16eda3ec Closes #1002 2015-10-05 19:04:04 +01:00
Graham Campbell
1cf63e025b Merge pull request #1001 from cachethq/php7
Test on php 7
2015-10-05 18:13:10 +01:00
Graham Campbell
92c08b63d7 Only run coverage on 5.6 2015-10-05 18:12:32 +01:00
Davide Bellini
4793617f9b Some improvements on settings controller
Closes 989

Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-10-05 18:10:04 +01:00
Graham Campbell
d4745ebb7b Test on php 7 2015-10-05 18:07:03 +01:00
James Brooks
1ba807c724 Merge pull request #1000 from revi/typofix
Fix typo in CONTRIBUTING.md
2015-10-05 17:52:49 +01:00
Yongmin Hong
5bbbb4ec58 Fix typo
Into to doesn't seem natural, is it?
2015-10-06 01:47:43 +09:00
ulrik nielsen
5c3e935b13 StyleCI fix 2015-10-05 18:11:10 +02:00
ulrik nielsen
6afea3674c added danish translation 2015-10-05 17:57:17 +02:00
James Brooks
ef159b38e7 Merge pull request #996 from cachethq/analysis-8bo3lX
Applied fixes from StyleCI
2015-10-05 14:18:46 +01:00
James Brooks
752d353900 Applied fixes from StyleCI 2015-10-05 09:18:41 -04:00
James Brooks
5b897f18b9 Added tests for Service Providers 2015-10-05 14:07:06 +01:00
James Brooks
532a7139a3 Merge pull request #995 from billmn/sortable-background
Added background color to sortable list
2015-10-05 13:55:52 +01:00
Davide Bellini
54d3419d5e Add border to the dragged item 2015-10-05 14:52:50 +02:00
Davide Bellini
021a842520 Added background to sortable list 2015-10-05 12:36:47 +02:00
James Brooks
a08f39f351 Merge pull request #994 from billmn/patch-1
Updated Italian metrics translations
2015-10-05 08:56:50 +01:00
Davide Bellini
753fa00d92 Updated Italian metrics translations 2015-10-05 09:51:23 +02:00
James Brooks
677caf86c5 Merge pull request #993 from cachethq/update-elixir
Update to elixir 3.3.1, removed unused elixir.json format bower.json
2015-10-05 08:24:49 +01:00
Joseph Cohen
01ed08dcb1 Update to elixir 3.3.1, removed unused elixir.json format bower.json 2015-10-04 21:23:12 -05:00
James Brooks
af7258d54f Merge pull request #990 from cachethq/command-tests
Command Tests
2015-10-03 20:53:49 +01:00
James Brooks
127d0d0d55 Added command tests 2015-10-03 16:58:34 +01:00
James Brooks
939bdf0c4e Merge pull request #973 from billmn/alert-improvements
Alert improvements
2015-10-03 16:02:45 +01:00
Davide Bellini
e9702e4292 Merged branch master and fixed conflict
After Password Strength merge this branch have 2 conflict:
- gulpfile.js
- public/build/rev-manifest.json

All conflicts solved now
2015-10-03 12:53:43 +02:00
James Brooks
b4f7adfdfd Updated dependencies 2015-10-03 11:34:52 +01:00
James Brooks
4d7d5b5734 Merge pull request #983 from AntoineAugusti/guard-demo-seeder-command
Ask for confirmation when trying to run the DemoSeederCommand in prod
2015-10-03 10:02:54 +01:00
James Brooks
43fa49bdd8 Merge pull request #988 from ApfelUser/master
e-Mail -> E-Mail
2015-10-03 10:00:16 +01:00
ApfelUser
f16c17c824 Fix E-Mail in forms.php 2015-10-03 10:58:02 +02:00
ApfelUser
0f353a3db3 Fix E-Mail in cachet.php 2015-10-03 10:57:08 +02:00
Joseph Cohen
4baaf69907 Small update to the password strength indicator 2015-10-03 03:19:47 -05:00
Joe Cohen
1914e54def Merge pull request #980 from AntoineAugusti/password-strength-indicator
Add a password strength indicator on relevant forms
2015-10-03 03:01:10 -05:00
Antoine Augusti
130dc11740 Add a password strength indicator on relevant forms 2015-10-03 09:50:18 +02:00
Graham Campbell
ac429b1e2a Merge pull request #986 from manuelgu/patch-2
changed german translation to a more sensible one
2015-10-02 22:08:18 +01:00
manuelgu
9426c7a9de changed german translation to a more sensible one 2015-10-02 23:05:24 +02:00
James Brooks
be3a8c4c85 Merge pull request #985 from manuelgu/patch-1
tweaked the german language file
2015-10-02 21:49:52 +01:00
manuelgu
bc730a5d95 tweaked the german language file 2015-10-02 22:47:18 +02:00
James Brooks
26c0ff9af7 Merge pull request #984 from AntoineAugusti/api-per-page-type
per_page attribute in API responses should be an integer
2015-10-02 20:13:45 +01:00
James Brooks
dedfda2dc2 Merge pull request #982 from AntoineAugusti/translation-fix
Fix translation logged_in_only
2015-10-02 20:01:13 +01:00
James Brooks
dbcf567505 Merge pull request #981 from billmn/settings-locale-fix
Fixed wrong Locale on Settings form submit
2015-10-02 20:00:54 +01:00
James Brooks
52119f97cf Merge pull request #979 from billmn/updated-italian-lang
Updated Italian translations
2015-10-02 19:59:45 +01:00
Antoine Augusti
e9e5768406 per_page attribute in API responses should be an integer 2015-10-02 20:10:09 +02:00
Antoine Augusti
14aea5a1f0 Ask for confirmation when trying to run the DemoSeederCommand in production 2015-10-02 19:11:27 +02:00
Antoine Augusti
ea8531ddc1 Fix translation logged_in_only 2015-10-02 18:58:44 +02:00
Davide Bellini
254c81af1b Fixed wrong Locale on Settings form submit
Except Setup section, when you submit a form, the Success message doesn't use your current locale but always English (that is the default language).
2015-10-02 18:50:10 +02:00
Davide Bellini
1fc1cd7cba Reduced indentation 2015-10-02 17:35:02 +02:00
Davide Bellini
b6056faa72 Removed space before the question mark 2015-10-02 16:31:08 +02:00
Davide Bellini
4c0fb53ba7 Fixed style, again ;) 2015-10-02 15:48:13 +02:00
Davide Bellini
bd6b3f09d0 Updated Italian translations
Aligned to the latest version of Laravel
2015-10-02 15:43:38 +02:00
Graham Campbell
b511a91a7f Merge pull request #978 from cachethq/composer
Force lock file to work on php 5.5.9
2015-10-02 11:49:49 +01:00
Graham Campbell
093bd8c55c Force lock file to work on php 5.5.9 2015-10-02 11:45:39 +01:00
David Fernández
a21fae88d4 Updated Spanish translations
Closes #975

Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-10-02 10:29:46 +01:00
James Brooks
e6a8e25eed Merge pull request #976 from billmn/patch1
Used lang files of latest version of Laravel
2015-10-02 07:09:36 +01:00
Davide Bellini
3c2388e83b Fix Style 2015-10-02 01:04:02 +02:00
Davide Bellini
4fc31445ff Merge branch 'master' of https://github.com/cachethq/Cachet into patch1 2015-10-02 00:55:17 +02:00
Davide Bellini
97cbbc2830 Used lang files of latest version of Laravel 2015-10-02 00:47:29 +02:00
Graham Campbell
2f332a193e Merge pull request #972 from floler/master
tweaked the german language translations
2015-10-01 23:21:27 +01:00
Davide Bellini
3fca767624 Use SweetAlert for confirmation dialog 2015-10-01 23:28:01 +02:00
Davide Bellini
e59a490878 Added SweetAlert to Bower components 2015-10-01 23:25:08 +02:00
Florian Chrometz
c2ad8e14f3 tweaked the german language translations 2015-10-01 22:18:23 +02:00
Graham Campbell
1ceaed3911 Merge pull request #971 from cachethq/analysis-z906mq
Applied fixes from StyleCI
2015-10-01 21:16:55 +01:00
Graham Campbell
a688b495d7 Applied fixes from StyleCI 2015-10-01 16:16:50 -04:00
JLamim Projetos Web & Mobile
59937229b2 Translation to Brazillian Portuguese completed
Closes #970

Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-10-01 21:15:57 +01:00
Graham Campbell
1c892f64f0 Fixed typo 2015-10-01 21:15:07 +01:00
James Brooks
66bd80d080 Merge pull request #969 from cachethq/dates
Moved dates to casts
2015-10-01 21:07:58 +01:00
Graham Campbell
db6faa70d3 Moved dates to casts 2015-10-01 21:05:14 +01:00
Graham Campbell
65023ec7da Merge branch 'master' of https://github.com/cachethq/Cachet 2015-10-01 21:04:45 +01:00
Graham Campbell
6b4b71552d Updated dependencies 2015-10-01 21:04:40 +01:00
Graham Campbell
7bd158bb6c Bumped min laravel vesion 2015-10-01 21:04:30 +01:00
James Brooks
b408036c76 Merge pull request #968 from cachethq/security-notice
Security notice
2015-10-01 20:55:45 +01:00
James Brooks
75020a6576 Security notice 2015-10-01 20:55:24 +01:00
James Brooks
c75bdad4fa Merge pull request #967 from cachethq/branch-notice
Added branch notice
2015-10-01 20:47:15 +01:00
James Brooks
2a15991e16 Addedbranch notice 2015-10-01 20:46:48 +01:00
James Brooks
6aedf27300 Merge pull request #966 from cachethq/update-deps
Update dependencies
2015-10-01 20:39:48 +01:00
James Brooks
102457b491 Update dependencies 2015-10-01 20:38:42 +01:00
Graham Campbell
afa2b3ca7e Merge pull request #965 from cachethq/emoji
Add way to disable emoji support
2015-10-01 20:32:08 +01:00
Graham Campbell
282e61d202 Move 2015-10-01 20:31:19 +01:00
Graham Campbell
e8427cb06b Add way to disable emoji support 2015-10-01 20:29:47 +01:00
Davide Bellini
3e0d38aa4c Italian translation
Closes #964

Signed-off-by: Graham Campbell <graham@alt-three.com>
2015-10-01 20:23:19 +01:00
James Brooks
df0acb40de Merge pull request #950 from cachethq/update-commands
Update commands
2015-10-01 20:14:02 +01:00
James Brooks
3e9336c598 Use the array of login data that we already have 2015-09-29 19:36:56 +01:00
James Brooks
e8bc3fb818 Use integer and between for metric rules 2015-09-26 14:46:25 +01:00
James Brooks
08e9705088 $incident_date is now handled by the command handler 2015-09-26 14:42:42 +01:00
James Brooks
3ca1ae5d70 calc_type can only be 0 or 1 2015-09-26 14:22:02 +01:00
Joseph Cohen
f7f01c5059 Typo 2015-09-24 23:12:35 -05:00
Joe Cohen
c13aece3a4 Merge pull request #958 from cachethq/analysis-qJxWb8
Applied fixes from StyleCI
2015-09-24 23:10:14 -05:00
Joe Cohen
051e26e653 Applied fixes from StyleCI 2015-09-25 00:08:16 -04:00
Joseph Cohen
3f8471d8da Fixes and validation rules 2015-09-24 23:07:39 -05:00
James Brooks
eadedeecbf Autosize now works again 2015-09-23 21:25:10 +01:00
James Brooks
8c03c80582 Update bower components. Fix autosize not working 2015-09-23 21:25:06 +01:00
James Brooks
4ae9d96f25 Updated dependencies 2015-09-23 20:21:50 +01:00
James Brooks
354bfffc97 Merge pull request #955 from cachethq/analysis-qryRxX
Applied fixes from StyleCI
2015-09-23 18:39:17 +01:00
James Brooks
4384438d46 Applied fixes from StyleCI 2015-09-23 13:39:04 -04:00
James Brooks
18f98d19f0 Added UpdateMetric and UpdateMetricPoint commands 2015-09-23 18:38:42 +01:00
James Brooks
b8b81f7e1c Added UpdateIncidentCommand 2015-09-23 18:19:01 +01:00
James Brooks
30b05f360d Applied fixes from StyleCI 2015-09-23 18:19:01 +01:00
James Brooks
d4c1b23b3f Added UpdateComponentGroupCommand 2015-09-23 18:19:01 +01:00
James Brooks
d3cd8201a6 UpdateComponentCommand is now done 2015-09-23 18:19:01 +01:00
James Brooks
80caeea86a Check that $incidentDate is set before using it 2015-09-21 11:21:03 +01:00
James Brooks
a9a5eef275 Actually, we need to use hasSetting 2015-09-21 11:11:02 +01:00
James Brooks
92ab7c8451 Don't mind the Registrar contract as it no longer exists 2015-09-21 11:02:45 +01:00
James Brooks
935fb9c7c1 Updated composer 2015-09-20 19:00:02 +01:00
James Brooks
ba57d51142 Updated dependencies 2015-09-20 18:51:14 +01:00
James Brooks
e735dd5dc4 Removed unused Exception import 2015-09-19 14:30:08 +01:00
James Brooks
49a7b55a12 Remove unused variable within component presenter 2015-09-19 14:28:31 +01:00
James Brooks
a6d3b69f75 Remove unused import 2015-09-19 14:28:31 +01:00
James Brooks
91fe0ed72f Clean up the HasSetting middleware 2015-09-19 14:28:31 +01:00
James Brooks
45784c3720 Use the app.isSetup middleware 2015-09-19 14:28:31 +01:00
James Brooks
c2f8f23159 Added missing return void docs 2015-09-19 14:28:31 +01:00
James Brooks
3af02f725b Fixed docblock comments 2015-09-19 14:28:31 +01:00
James Brooks
d2d605e884 Improved the AppIsSetup middleware 2015-09-19 14:28:30 +01:00
James Brooks
7e5ec12c05 Merge pull request #952 from cachethq/code-tidy
Removed ConsoleServiceProvider and Registrar services
2015-09-19 08:33:21 +01:00
James Brooks
0973930710 Completely remove ConsoleServiceProvider 2015-09-19 08:32:40 +01:00
James Brooks
a02afa2d28 Update dependencies 2015-09-18 15:56:28 +01:00
James Brooks
6a18554768 Remove unused import 2015-09-18 15:51:43 +01:00
James Brooks
00d7c715ff Remove service binding console service provider 2015-09-18 15:49:59 +01:00
James Brooks
8fad9f567b Removed unused Registrar service 2015-09-18 15:47:37 +01:00
Graham Campbell
6d983a1b21 Merge pull request #945 from cachethq/analysis-q5b3yz
Applied fixes from StyleCI
2015-09-14 09:15:47 +01:00
Graham Campbell
9a964a9aee Applied fixes from StyleCI 2015-09-14 04:15:41 -04:00
Graham Campbell
f4b569f2fd Updated tests 2015-09-14 09:13:42 +01:00
Graham Campbell
d40b6cef57 Updated events 2015-09-14 09:13:14 +01:00
Graham Campbell
cf14483577 Updated dependencies 2015-09-14 09:07:58 +01:00
James Brooks
687b46389d Started work on Events tests 2015-09-14 08:47:51 +01:00
James Brooks
b0ec13fa13 Fixes adding of subscribers. Closes #944 2015-09-14 08:37:24 +01:00
James Brooks
536ae3502d Fixes an issue with parsing JSON on Firefox. Closes #941 2015-09-10 21:25:10 +01:00
James Brooks
2fbc044057 Merge pull request #938 from tobru/feature_mailencryption
new MAIL_ENCRYPTION parameter
2015-09-10 08:31:59 +01:00
James Brooks
45181bfe5c Merge pull request #939 from andrewgoktepe/utc-timezone
add UTC time zone as an option on Application Setup page
2015-09-10 08:31:19 +01:00
Andrew Goktepe
68a0839e13 add UTC time zone to list of options 2015-09-09 16:58:49 -07:00
Tobias Brunner
4dd839719f add example for MAIL_ENCRYPTION to example env file 2015-09-09 22:30:53 +02:00
Tobias Brunner
600493f1cb new MAIL_ENCRYPTION parameter
Make the encryption parameter of the mail transport configuration
configurable with an environment variable. Default is still the
same: tls
2015-09-09 16:59:07 +02:00
Joe Cohen
c4e4035fea Merge pull request #929 from cachethq/improved-theming
Theming of Cachet is much simpler with more color settings
2015-09-04 17:49:31 -05:00
Joseph Cohen
7ab139f82e Add backgroud fills 2015-09-04 17:39:27 -05:00
James Brooks
6b362fd88d Theming of Cachet is much simpler with more color settings 2015-09-04 22:39:52 +01:00
Graham Campbell
4f05f910e9 Merge branch '1.2'
Conflicts:
	composer.lock
2015-09-04 15:09:01 +01:00
Graham Campbell
fa1a5fff0e Merge pull request #866 from cachethq/commands
[WIP] First steps to Commands
2015-09-04 12:17:57 +01:00
Graham Campbell
d20ee2987b Merge branch '1.2'
Conflicts:
	composer.lock
	resources/views/partials/incidents.blade.php
2015-09-04 11:53:25 +01:00
James Brooks
99cd275a9d Updated dependencies 2015-09-02 07:58:12 +01:00
James Brooks
1478a25008 ReportMaintenanceCommand is added 2015-08-31 20:16:39 +01:00
James Brooks
60e9a64a3e Less use of Binput::all() 2015-08-31 20:16:39 +01:00
James Brooks
75588db98e Fix imports 2015-08-31 20:16:39 +01:00
James Brooks
082062fa1b Added ReportIncidentCommand 2015-08-31 20:16:38 +01:00
James Brooks
37d7908606 Added AddTeamMemberCommand 2015-08-31 20:16:38 +01:00
James Brooks
25a3626de5 Fix rebase issue 2015-08-31 20:16:38 +01:00
James Brooks
6ee697cf7f Added AddComponentGroupCommand 2015-08-31 20:16:38 +01:00
James Brooks
698b05980d Fix description 2015-08-31 20:16:38 +01:00
James Brooks
32b2a56573 Remove unused imports 2015-08-31 20:16:38 +01:00
James Brooks
be080a10ef Added commands to delete component group (also fixes bug in API) 2015-08-31 20:16:38 +01:00
James Brooks
c466620435 Added RemoveUserCommand 2015-08-31 20:16:37 +01:00
James Brooks
7be3aa2552 Incidents will now be removed via the command 2015-08-31 20:16:37 +01:00
James Brooks
b80b53191b Commands and events for removing incidents 2015-08-31 20:16:37 +01:00
Joseph Cohen
a239c34892 CS Fixes 2015-08-31 20:16:37 +01:00
Joseph Cohen
4a5110ae53 Finish add and remove components via commands 2015-08-31 20:16:37 +01:00
James Brooks
30eec9da24 Added Component events and handlers 2015-08-31 20:16:36 +01:00
James Brooks
5bc7a3e6f7 Fix CS 2015-08-31 20:16:36 +01:00
Joseph Cohen
7c1f27c4a1 CS Fixes 2015-08-31 20:16:36 +01:00
Joseph Cohen
9581c5a394 Add and remove metrics and metric points commands 2015-08-31 20:16:36 +01:00
Joseph Cohen
64ff4d73c2 Rename incident events and fixes 2015-08-31 20:16:36 +01:00
Joseph Cohen
a93472f544 Namespace events 2015-08-31 20:16:35 +01:00
Joseph Cohen
924eee9752 Fix tests 2015-08-31 20:16:35 +01:00
Joseph Cohen
8250e4ebca Subscribe and unsubscribe subscribers via commands 2015-08-31 20:16:35 +01:00
Joseph Cohen
11b4ab5c6c Start working on the commands 2015-08-31 20:16:35 +01:00
James Brooks
77ce0e21f4 Rename Admin directory to Dashboard within routes. Closes #933 2015-08-31 18:59:17 +01:00
James Brooks
cd9828275d Merge pull request #926 from cachethq/incident-widgets
Incident widgets
2015-08-31 18:17:21 +01:00
James Brooks
ae7ab7ddc0 Applied fixes from StyleCI 2015-08-31 18:17:01 +01:00
James Brooks
69e9d75037 Show subscribers and incidents over last 30 days 2015-08-31 18:17:01 +01:00
James Brooks
70a5022740 Working on a widget design for the dashboard index 2015-08-31 18:17:00 +01:00
James Brooks
f13b8debe4 Merge pull request #932 from cachethq/metric-repository
Improved metric repository for per-db methods. Closes #921
2015-08-31 18:14:48 +01:00
James Brooks
57f0bebbc5 Fixed docblock 2015-08-31 08:45:13 +01:00
James Brooks
9414456fd1 More docblocks that should return void 2015-08-30 22:45:27 +01:00
James Brooks
77f19da9b0 Fix docblocks 2015-08-30 22:42:38 +01:00
James Brooks
7136457b49 Improved metric repository for per-db methods. Closes #921 2015-08-30 22:36:19 +01:00
James Brooks
062a16ca5b Merge pull request #930 from mbabker/route-not-found
Route 'dashboard.components' not found
2015-08-28 08:01:03 +01:00
Michael Babker
3de15fc5e8 Route 'dashboard.components' not found
Updated to reference `dashboard.components.index` route instead.
2015-08-27 21:21:56 -04:00
James Brooks
f1b54bfe57 Re-compiled assets 2015-08-25 21:26:26 +01:00
James Brooks
ba558e69a3 Removed erroneous :after pseudo-element 2015-08-25 21:26:22 +01:00
James Brooks
bf4ebcde45 Merge pull request #924 from cachethq/model-casts
Added casts properties to all models, re-ordered model properties
2015-08-24 21:22:04 +01:00
James Brooks
a77efc12e0 Added casts properties to all models, re-ordered model properties. Fixes #916 2015-08-24 21:08:59 +01:00
James Brooks
92192232ed Merge pull request #925 from cachethq/fix-required-incident-fields
Fixes #913
2015-08-23 20:32:59 +01:00
James Brooks
da3e561217 Fixes #913 2015-08-23 09:08:51 +01:00
James Brooks
885c17054f Allow setting of 0 incident days. Closes #920 2015-08-18 21:27:09 +01:00
Graham Campbell
d47121b93d Merge branch '1.2'
Conflicts:
	public/build/rev-manifest.json
2015-08-18 16:40:06 +01:00
Graham Campbell
a72033ffa2 Merge pull request #918 from cachethq/fix-email-snakecase
Fix email templates snakecase
2015-08-17 22:06:40 +01:00
Joseph Cohen
1a7cec53ac Make email templates snake case 2015-08-17 15:50:34 -05:00
James Brooks
bab843b4b1 Move incident templates directory up on 2015-08-16 15:15:54 +01:00
Joseph Cohen
889dd47a14 Fix dashboard route not found on setup 2015-08-15 22:18:09 -05:00
James Brooks
9a0d823c9a Link directly to incidents. Closes #547 2015-08-15 20:54:43 +01:00
James Brooks
b037965c35 Merge pull request #910 from cachethq/incident-view
Incident view
2015-08-15 20:51:16 +01:00
James Brooks
b4f1a8af61 Re-use the timeline view 2015-08-15 20:51:04 +01:00
James Brooks
5e69f23783 Fixes metrics displaying incorrect name and suffix 2015-08-15 20:18:02 +01:00
James Brooks
46cd61e3fe Merge pull request #909 from cachethq/metric-views
Fix some bad design choices in metric views
2015-08-15 19:39:16 +01:00
James Brooks
63ccab3eff Fix some bad design choices in metric views 2015-08-15 17:31:34 +01:00
James Brooks
82d0e88f68 Re-compile assets 2015-08-15 15:10:24 +01:00
James Brooks
8a3f9196d3 Linking directly to an individual incident 2015-08-15 15:10:20 +01:00
James Brooks
c2c815ab14 Started working on ability to view an incident directly 2015-08-15 13:10:08 +01:00
James Brooks
c928c99c8f Merge pull request #908 from cachethq/update-seeder
Updated seeder command to include groups and new incident content
2015-08-15 13:09:06 +01:00
James Brooks
9515d874bf Merge pull request #907 from cachethq/show-affected-component
Show label with component name next to incident. Closes #671
2015-08-15 13:08:08 +01:00
James Brooks
532852f943 Merge pull request #906 from cachethq/code-cleanup
Code cleanup
2015-08-15 13:07:16 +01:00
James Brooks
8fb5a3f992 Rename HomeController, use composers and redo subscribe page 2015-08-15 13:06:24 +01:00
James Brooks
59e1b22e18 Merge pull request #905 from cachethq/client-localize
Localize the status page to the visitors lang. Closes #835
2015-08-15 13:04:39 +01:00
James Brooks
a294b34d64 Updated seeder command to include groups and new incident content. 2015-08-15 11:56:19 +01:00
James Brooks
3d0aec3899 Show label with component name next to incident. Closes #671 2015-08-15 11:26:15 +01:00
James Brooks
ed09ca46b8 Localize the status page to the visitors lang. Closes #835 2015-08-15 10:00:50 +01:00
James Brooks
905445d0ca Merge pull request #902 from cachethq/incident-email-component
Add the component name to incident emails, if applicable. Closes #794
2015-08-15 09:03:49 +01:00
Joseph Cohen
1b953038be Decorate component 2015-08-14 21:32:19 -05:00
Graham Campbell
87563640ff Merge branch '1.2'
Conflicts:
	composer.json
	composer.lock
2015-08-14 23:37:25 +01:00
James Brooks
61d8fb8759 Merge pull request #895 from cachethq/metric-select-ajax
Metrics Filter Dropdown
2015-08-14 22:42:38 +01:00
James Brooks
d99f95b2d6 Added metrics filter dropdown. Closes #518 2015-08-14 22:41:37 +01:00
Graham Campbell
4a22b1b053 Merge branch '1.2' 2015-08-14 22:38:38 +01:00
James Brooks
912c9e7c04 Fix the subscribe.subscribe route 2015-08-14 08:53:04 +01:00
James Brooks
0bff2f9215 Don't pass through the whole incident name, just the components 2015-08-14 08:47:28 +01:00
James Brooks
808bc5201d Add the component name to incident emails, if applicable. Closes #794 2015-08-14 08:46:05 +01:00
James Brooks
0194dbb634 Show the timezone of the status page in the footer. Closes #763 2015-08-14 08:45:03 +01:00
James Brooks
ee0899f5c3 Merge pull request #903 from cachethq/schedule-incident-times
Show the scheduled time if applicable. Closes #799
2015-08-14 08:29:50 +01:00
Joseph Cohen
8b0f1033e5 Fix typo assign 2015-08-13 23:38:54 -05:00
James Brooks
b68647df8e Show the scheduled time if applicable. Closes #799 2015-08-13 23:23:18 +01:00
James Brooks
1965dbb3e7 Merge pull request #889 from cachethq/update-langs
Updated some language files
2015-08-13 23:19:05 +01:00
James Brooks
8c69123ce2 Updated translations, removed zh-TW and minor tweaks 2015-08-13 23:16:24 +01:00
James Brooks
565e686f8c Merge pull request #900 from cachethq/metric-places
Allow setting of decimal places for metric points. Closes #823
2015-08-13 22:58:46 +01:00
James Brooks
68a41ae49f Allow setting of decimal places for metric points. Closes #823 2015-08-13 22:58:15 +01:00
James Brooks
bef736e865 Merge pull request #898 from cachethq/avoid-redirect-back
Completely remove the use of Redirect::back - closes #867
2015-08-13 22:38:30 +01:00
James Brooks
308ee1bd81 Merge pull request #899 from cachethq/organize-views
Move dashboard partials into the dashboard directory
2015-08-13 22:37:57 +01:00
James Brooks
3b487ea2ec Move dashboard partials into the dashboard directory 2015-08-13 22:34:26 +01:00
James Brooks
b393557c8a Completely remove the use of Redirect::back - closes #867 2015-08-13 22:28:30 +01:00
Graham Campbell
bee4055228 Merge pull request #888 from cachethq/route-cleanup
Cleaned up routes
2015-08-11 11:29:13 +01:00
Graham Campbell
7cd513a6bd Merge branch '1.2' 2015-08-09 19:20:39 +01:00
James Brooks
cefabcef2d Clean up all route files, alias routes etc. 2015-08-08 18:23:20 +01:00
Graham Campbell
5858d8063b Merge pull request #891 from cachethq/remove-permissions-command
Removed the FixPermissionsCommand
2015-08-08 17:44:57 +01:00
Graham Campbell
ade85e24bd Merge branch '1.2' 2015-08-08 17:38:28 +01:00
James Brooks
88efff58cc Remove unused assignment 2015-08-08 17:17:05 +01:00
James Brooks
82a9dc9a4e Fix typo 2015-08-08 17:16:31 +01:00
James Brooks
4f0383b62b Condensed the readme further 2015-08-08 17:12:31 +01:00
James Brooks
73c80992ae Merge pull request #892 from cachethq/component-group-api
Component Group API
2015-08-08 15:37:49 +01:00
James Brooks
4b3ec45b03 Added component groups API. Closes #801 2015-08-08 15:36:48 +01:00
James Brooks
065b1fd168 Removed the FixPermissionsCommand 2015-08-08 15:10:28 +01:00
James Brooks
0a682a00f7 Show y axis labels in metrics. Closes #824 2015-08-08 14:56:05 +01:00
Graham Campbell
fcf0cd675a Merge branch '1.2' 2015-08-07 12:15:31 +01:00
Graham Campbell
32de1d512b Merge branch '1.2'
Conflicts:
	Dockerfile
	composer.lock
2015-08-07 12:07:46 +01:00
Graham Campbell
b1eb57e573 Merge pull request #877 from cachethq/core-package
Added GrahamCampbell/Core for easier installs
2015-08-07 11:48:41 +01:00
Graham Campbell
3c4ccf00f1 Merge pull request #885 from cachethq/seeder-command
Created DemoSeederCommand to replace seeders
2015-08-07 11:48:23 +01:00
James Brooks
79f66fc090 Fix up the seeder command 2015-08-07 11:44:51 +01:00
James Brooks
a05496f7d0 Created DemoSeederCommand to replace seeders. Closes #884 2015-08-07 08:31:22 +01:00
Graham Campbell
55ffbd74d4 Merge branch '1.2'
Conflicts:
	composer.json
	composer.lock
2015-08-06 22:02:23 +01:00
Graham Campbell
91ba722405 Merge branch '1.1'
Conflicts:
	composer.json
	composer.lock
	config/emoji.php
2015-08-06 20:11:20 +01:00
James Brooks
c5a0ded808 Added GrahamCampbell/Core for easier installs 2015-08-06 19:12:13 +01:00
James Brooks
3f2f5cd25b Dockerfile maintainer details. Closes #872 2015-08-06 19:09:35 +01:00
James Brooks
bbaa1fbfa6 Updated AltThree/Emoji for GITHUB_TOKEN usage 2015-08-06 18:56:00 +01:00
James Brooks
0e83999f7d Order the $routeMiddleware values 2015-08-06 14:29:13 +01:00
James Brooks
3c07529693 Pulled out the routes for RSS and Atom feeds into their own file 2015-08-06 14:27:44 +01:00
James Brooks
669fb4857a Addons are now listed in the documentation 2015-08-06 14:23:58 +01:00
James Brooks
4693faa64f Removed installation docs to links to docs.cachethq.io 2015-08-06 14:19:12 +01:00
James Brooks
0802da8e01 Update comment so it makes more sense 2015-08-06 14:06:27 +01:00
James Brooks
f839bc06f5 Renamed AdminRoutes to DashboardRoutes 2015-08-06 14:05:40 +01:00
James Brooks
bba4cf8cce Put a space after the suffix 2015-08-06 13:59:15 +01:00
James Brooks
701f947c33 Better example of metrics. 2015-08-06 13:57:07 +01:00
James Brooks
36b36925c9 Merge pull request #875 from cachethq/admin-delete-users
Added the ability for admins to delete users. Closes #791
2015-08-06 13:48:43 +01:00
James Brooks
76d3692d9e Added the ability for admins to delete users. Closes #791 2015-08-06 13:48:23 +01:00
James Brooks
3f7f4e7624 Fix docblocks 2015-08-06 11:44:01 +01:00
James Brooks
e76ecd493e Merge pull request #873 from cachethq/controllers
Remove AbstractController from remaining and rename BaseController to Controller
2015-08-06 07:07:16 +01:00
Joseph Cohen
d68b248fd7 Remove AbstractController from remaining and rename BaseController to Controller 2015-08-05 17:21:03 -05:00
James Brooks
5813364ccb Update dependencies 2015-08-05 15:18:26 +01:00
James Brooks
8d0a716c2d Remove AbstractController as it does nothing 2015-08-05 15:18:20 +01:00
James Brooks
e471796742 Update CONTRIBUTING.md 2015-08-05 08:47:32 +01:00
Graham Campbell
593dd04a4f Merge pull request #850 from cachethq/validator
Refactor validator stuff and fix variable names in views
2015-08-03 22:36:34 +01:00
Graham Campbell
fcbbfdd84e Refactor validator stuff and fix variable names in views 2015-08-03 22:32:51 +01:00
Graham Campbell
5d958bac81 Merge branch '1.1' 2015-08-03 22:26:02 +01:00
Graham Campbell
5ce767dccc Merge branch '1.1' 2015-08-03 21:07:31 +01:00
Graham Campbell
e5ddb65298 Merge branch '1.1' 2015-08-03 18:44:14 +01:00
Graham Campbell
0c99204016 Merge branch '1.1' 2015-08-03 18:41:26 +01:00
Graham Campbell
11d68ee3e5 Merge branch '1.1'
Conflicts:
	composer.lock
2015-08-03 14:53:08 +01:00
Graham Campbell
2284bc5d3b Merge branch '1.1' 2015-08-03 14:21:08 +01:00
Graham Campbell
a847cdc97e Merge branch '1.1' 2015-08-03 12:38:14 +01:00
James Brooks
01c690608f Fix showing of verified subscribers when they're not. Fixes #855 2015-08-03 08:58:07 +01:00
James Brooks
5aee46d6b7 Casts the subscriber 2015-08-03 08:54:40 +01:00
James Brooks
2615efc052 Remove deleted_at as a date field 2015-08-03 08:53:50 +01:00
Graham Campbell
e5c6d6af70 Merge branch '1.1' 2015-08-02 22:25:08 +01:00
James Brooks
29e045c458 Updated docs 2015-08-02 15:09:49 +01:00
James Brooks
d2c8f414f6 Admin users may make more admin users. Closes #795 2015-08-02 14:16:00 +01:00
James Brooks
fb55beb47b Remove duplicate readable name 2015-08-02 13:54:50 +01:00
James Brooks
84e1770e51 Added status_name to incident and components. Closes #834 2015-08-02 13:46:28 +01:00
James Brooks
7f222677cc Merge pull request #856 from cachethq/analysis-8n2gg8
Applied fixes from StyleCI
2015-08-02 13:07:54 +01:00
James Brooks
ec12ab07af Applied fixes from StyleCI 2015-08-02 08:07:34 -04:00
James Brooks
0094246ee8 Subscribers no longer soft delete. Closes #810 2015-08-02 13:05:52 +01:00
James Brooks
58a371b10b Move subscribe routes to their own routes file 2015-08-02 13:01:14 +01:00
Graham Campbell
b626b5ee27 Updated branch alias 2015-08-01 21:06:31 +01:00
428 changed files with 16649 additions and 5814 deletions

View File

@@ -12,6 +12,7 @@ DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database
CACHET_EMOJI=false
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
@@ -20,7 +21,10 @@ MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ADDRESS=null
MAIL_NAME=null
MAIL_ENCRYPTION=tls
REDIS_HOST=null
REDIS_DATABASE=null
REDIS_PORT=null
GITHUB_TOKEN=null

2
.gitattributes vendored
View File

@@ -1,3 +1,3 @@
* text=auto
*.css linguist-vendored
*.less linguist-vendored
*.scss linguist-vendored

View File

@@ -1,19 +1,21 @@
language: php
php:
- 5.5.9
- 5.5
- 7.0
- 5.6
- 5.5
- 5.5.9
- hhvm
sudo: false
install: travis_retry composer install --no-interaction --ignore-platform-reqs --no-scripts --prefer-source
install:
- travis_retry composer install --no-interaction --no-scripts --prefer-source
script:
- bash -c 'if [ "$TRAVIS_PHP_VERSION" == "hhvm" ]; then vendor/bin/phpunit; fi;'
- bash -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then vendor/bin/phpunit --coverage-clover build/logs/clover.xml; fi;'
- if [ "$TRAVIS_PHP_VERSION" != "5.5.9" ] && [ "$TRAVIS_PHP_VERSION" != "5.5" ] && [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then vendor/bin/phpunit; fi
- if [ "$TRAVIS_PHP_VERSION" == "5.5.9" ] || [ "$TRAVIS_PHP_VERSION" == "5.5" ] || [ "$TRAVIS_PHP_VERSION" == "5.6" ]; then vendor/bin/phpunit --coverage-clover build/logs/clover.xml; fi
after_script:
- bash -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then wget https://scrutinizer-ci.com/ocular.phar; fi;'
- bash -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml; fi;'
- if [ "$TRAVIS_PHP_VERSION" == "5.5.9" ] || [ "$TRAVIS_PHP_VERSION" == "5.5" ] || [ "$TRAVIS_PHP_VERSION" == "5.6" ]; then wget https://scrutinizer-ci.com/ocular.phar; fi
- if [ "$TRAVIS_PHP_VERSION" == "5.5.9" ] || [ "$TRAVIS_PHP_VERSION" == "5.5" ] || [ "$TRAVIS_PHP_VERSION" == "5.6" ]; then php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml; fi

View File

@@ -59,7 +59,7 @@ class Foo extends Bar
If you're still unsure, then take a look at existing code.
## Introduction into to Git and GitHub
## Introduction into Git and GitHub
If you are new to Git, GitHub and the whole open source software community, welcome! Here are some resources for getting started and understanding what it's all about.

View File

@@ -21,6 +21,10 @@
- Subscriber notifications via Email
- Two factor authentication, with Google Authenticator
## Usage in production
The `master` branch of this repository is a development branch and **should not** be used in production. Instead, please check out the latest tag release.
## Requirements
- PHP 5.5.9+ or newer
@@ -28,7 +32,7 @@
### Development Requirements
Theses extra dependencies are required to develop Cachet:
These extra dependencies are required to develop Cachet:
- Node.js
- Bower
@@ -54,3 +58,7 @@ The demo is reset every half hour.
## Translations
A special thank you to our [translators](https://crowdin.com/project/cachet/activity_stream), who have allowed us to share Cachet with the world. If you'd like to contribute translations, please check out our [CrowdIn project](https://crowdin.com/project/cachet).
## Security Vulnerabilities
If you discover a security vulnerability within Cachet, please send an e-mail to us at support@alt-three.com. All security vulnerabilities will be promptly addressed.

1
VERSION Normal file
View File

@@ -0,0 +1 @@
2.0.5-dev

View File

@@ -0,0 +1,103 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Component;
final class AddComponentCommand
{
/**
* The component name.
*
* @var string
*/
public $name;
/**
* The component description.
*
* @var string
*/
public $description;
/**
* The component status.
*
* @var int
*/
public $status;
/**
* The component link.
*
* @var string
*/
public $link;
/**
* The component order.
*
* @var int
*/
public $order;
/**
* The component group.
*
* @var int
*/
public $group_id;
/**
* Is the component enabled?
*
* @var bool
*/
public $enabled;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'description' => 'string',
'status' => 'int|min:1|max:4',
'link' => 'url',
'order' => 'int',
'group_id' => 'int',
'enabled' => 'bool',
];
/**
* Create a new add component command instance.
*
* @param string $name
* @param string $description
* @param int $status
* @param string $link
* @param int $order
* @param int $group_id
* @param bool $enabled
*
* @return void
*/
public function __construct($name, $description, $status, $link, $order, $group_id, $enabled)
{
$this->name = $name;
$this->description = $description;
$this->status = (int) $status;
$this->link = $link;
$this->order = $order;
$this->group_id = $group_id;
$this->enabled = $enabled;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Component;
use CachetHQ\Cachet\Models\Component;
final class RemoveComponentCommand
{
/**
* The component to remove.
*
* @var \CachetHQ\Cachet\Models\Component
*/
public $component;
/**
* Create a new remove component command instance.
*
* @param \CachetHQ\Cachet\Models\Component $component
*
* @return void
*/
public function __construct(Component $component)
{
$this->component = $component;
}
}

View File

@@ -0,0 +1,114 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Component;
use CachetHQ\Cachet\Models\Component;
final class UpdateComponentCommand
{
/**
* The component to update.
*
* @var \CachetHQ\Cachet\Models\Component
*/
public $component;
/**
* The component name.
*
* @var string
*/
public $name;
/**
* The component description.
*
* @var string
*/
public $description;
/**
* The component status.
*
* @var int
*/
public $status;
/**
* The component link.
*
* @var string
*/
public $link;
/**
* The component order.
*
* @var int
*/
public $order;
/**
* The component group.
*
* @var int
*/
public $group_id;
/**
* Is the component enabled?
*
* @var bool
*/
public $enabled;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'string',
'description' => 'string',
'status' => 'int|min:1|max:4',
'link' => 'url',
'order' => 'int',
'group_id' => 'int',
'enabled' => 'bool',
];
/**
* Create a new update component command instance.
*
* @param \CachetHQ\Cachet\Models\Component $component
* @param string $name
* @param string $description
* @param int $status
* @param string $link
* @param int $order
* @param int $group_id
* @param bool $enabled
*
* @return void
*/
public function __construct(Component $component, $name, $description, $status, $link, $order, $group_id, $enabled)
{
$this->component = $component;
$this->name = $name;
$this->description = $description;
$this->status = (int) $status;
$this->link = $link;
$this->order = $order;
$this->group_id = $group_id;
$this->enabled = $enabled;
}
}

View File

@@ -0,0 +1,53 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\ComponentGroup;
final class AddComponentGroupCommand
{
/**
* The component group name.
*
* @var string
*/
public $name;
/**
* The component group description.
*
* @var int
*/
public $order;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'order' => 'int',
];
/**
* Create a add component group command instance.
*
* @param string $name
* @param int $order
*
* @return void
*/
public function __construct($name, $order)
{
$this->name = $name;
$this->order = (int) $order;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\ComponentGroup;
use CachetHQ\Cachet\Models\ComponentGroup;
final class RemoveComponentGroupCommand
{
/**
* The component group to remove.
*
* @var \CachetHQ\Cachet\Models\ComponentGroup
*/
public $group;
/**
* Create a new remove component group command instance.
*
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
*
* @return void
*/
public function __construct(ComponentGroup $group)
{
$this->group = $group;
}
}

View File

@@ -0,0 +1,64 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\ComponentGroup;
use CachetHQ\Cachet\Models\ComponentGroup;
final class UpdateComponentGroupCommand
{
/**
* The component group.
*
* @var \CachetHQ\Cachet\Models\ComponentGroup
*/
public $group;
/**
* The component group name.
*
* @var string
*/
public $name;
/**
* The component group description.
*
* @var int
*/
public $order;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'string',
'order' => 'int',
];
/**
* Create a add component group command instance.
*
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
* @param string $name
* @param int $order
*
* @return void
*/
public function __construct(ComponentGroup $group, $name, $order)
{
$this->group = $group;
$this->name = $name;
$this->order = (int) $order;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Incident;
use CachetHQ\Cachet\Models\Incident;
final class RemoveIncidentCommand
{
/**
* The incident to remove.
*
* @var \CachetHQ\Cachet\Models\Incident
*/
public $incident;
/**
* Create a new remove incident command instance.
*
* @param \CachetHQ\Cachet\Models\Incident $incident
*
* @return void
*/
public function __construct(Incident $incident)
{
$this->incident = $incident;
}
}

View File

@@ -0,0 +1,132 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Incident;
final class ReportIncidentCommand
{
/**
* The incident name.
*
* @var string
*/
public $name;
/**
* The incident status.
*
* @var int
*/
public $status;
/**
* The incident message.
*
* @var string
*/
public $message;
/**
* The incident visibility.
*
* @var int
*/
public $visible;
/**
* The incident component.
*
* @var int
*/
public $component_id;
/**
* The component status.
*
* @var int
*/
public $component_status;
/**
* Whether to notify about the incident or not.
*
* @var bool
*/
public $notify;
/**
* The date at which the incident occurred.
*
* @var string|null
*/
public $incident_date;
/**
* A given incident template.
*
* @var string|null
*/
public $template;
/**
* Variables for the incident template.
*
* @var string[]|null
*/
public $template_vars;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'status' => 'required|int|min:0|max:4',
'message' => 'string',
'visible' => 'bool',
'component_id' => 'int',
'component_status' => 'int|min:1|max:4|required_with:component_id',
'notify' => 'bool',
'incident_date' => 'string',
'template' => 'string',
];
/**
* Create a new report incident command instance.
*
* @param string $name
* @param int $status
* @param string $message
* @param int $visible
* @param int $component_id
* @param int $component_status
* @param bool $notify
* @param string|null $incident_date
* @param string|null $template
* @param array|null $template_vars
*
* @return void
*/
public function __construct($name, $status, $message, $visible, $component_id, $component_status, $notify, $incident_date, $template, $template_vars)
{
$this->name = $name;
$this->status = $status;
$this->message = $message;
$this->visible = $visible;
$this->component_id = $component_id;
$this->component_status = $component_status;
$this->notify = $notify;
$this->incident_date = $incident_date;
$this->template = $template;
$this->template_vars = $template_vars;
}
}

View File

@@ -0,0 +1,73 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Incident;
final class ReportMaintenanceCommand
{
/**
* The maintenance name.
*
* @var string
*/
public $name;
/**
* The maintenance message.
*
* @var string
*/
public $message;
/**
* Whether to notify about the maintenance or not.
*
* @var bool
*/
public $notify;
/**
* Timestamp of when the maintenance is due to start.
*
* @var string
*/
public $timestamp;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'message' => 'string',
'notify' => 'bool',
'timestamp' => 'string',
];
/**
* Create a new report maintenance command instance.
*
* @param string $name
* @param string $message
* @param bool $notify
* @param string $timestamp
*
* @return void
*/
public function __construct($name, $message, $notify, $timestamp)
{
$this->name = $name;
$this->message = $message;
$this->notify = $notify;
$this->timestamp = $timestamp;
}
}

View File

@@ -0,0 +1,142 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Incident;
use CachetHQ\Cachet\Models\Incident;
final class UpdateIncidentCommand
{
/**
* The incident to update.
*
* @var \CachetHQ\Cachet\Models\Incident
*/
public $incident;
/**
* The incident name.
*
* @var string
*/
public $name;
/**
* The incident status.
*
* @var int
*/
public $status;
/**
* The incident message.
*
* @var string
*/
public $message;
/**
* The incident visibility.
*
* @var int
*/
public $visible;
/**
* The incident component.
*
* @var int
*/
public $component_id;
/**
* The component status.
*
* @var int
*/
public $component_status;
/**
* Whether to notify about the incident or not.
*
* @var bool
*/
public $notify;
/**
* The date that the incident occurred on.
*
* @var string
*/
public $incident_date;
/**
* A given incident template.
*
* @var string|null
*/
public $template;
/**
* Variables for the incident template.
*
* @var string[]|null
*/
public $template_vars;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'string',
'status' => 'int|min:0|max:4',
'message' => 'string',
'visible' => 'bool',
'component_id' => 'int',
'component_status' => 'int|min:1|max:4|required_with:component_id',
'notify' => 'bool',
'template' => 'string',
];
/**
* Create a new update incident command instance.
*
* @param \CachetHQ\Cachet\Models\Incident $name
* @param string $name
* @param int $status
* @param string $message
* @param int $visible
* @param int $component_id
* @param int $component_status
* @param bool $notify
* @param string|null $incident_date
* @param string|null $template
* @param array|null $template_vars
*
* @return void
*/
public function __construct(Incident $incident, $name, $status, $message, $visible, $component_id, $component_status, $notify, $incident_date, $template, $template_vars)
{
$this->incident = $incident;
$this->name = $name;
$this->status = $status;
$this->message = $message;
$this->visible = $visible;
$this->component_id = $component_id;
$this->component_status = $component_status;
$this->notify = $notify;
$this->incident_date = $incident_date;
$this->template = $template;
$this->template_vars = $template_vars;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Invite;
final class ClaimInviteCommand
{
/**
* The invte to mark as claimed.
*
* @var \CachetHQ\Cachet\Model\Invite
*/
public $invite;
/**
* Create a new claim invite command instance.
*
* @param \CachetHQ\Cachet\Model\Invite $invite
*
* @return void
*/
public function __construct($invite)
{
$this->invite = $invite;
}
}

View File

@@ -0,0 +1,104 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
final class AddMetricCommand
{
/**
* The metric name.
*
* @var string
*/
public $name;
/**
* The metric suffix.
*
* @var string
*/
public $suffix;
/**
* The metric description.
*
* @var string
*/
public $description;
/**
* The metric default value.
*
* @var float
*/
public $default_value;
/**
* The metric calculation type.
*
* @var int
*/
public $calc_type;
/**
* The metric display chart.
*
* @var int
*/
public $display_chart;
/**
* The metric decimal places.
*
* @var int
*/
public $places;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'suffix' => 'required|string',
'description' => 'string',
'display_chart' => 'bool',
'default_value' => 'int',
'calc_type' => 'int',
'display_chart' => 'int',
'places' => 'int|between:0,4',
];
/**
* Create a new add metric command instance.
*
* @param string $name
* @param string $suffix
* @param string $description
* @param float $default_value
* @param int $calc_type
* @param int $display_chart
* @param int $places
*
* @return void
*/
public function __construct($name, $suffix, $description, $default_value, $calc_type, $display_chart, $places)
{
$this->name = $name;
$this->suffix = $suffix;
$this->description = $description;
$this->default_value = $default_value;
$this->calc_type = $calc_type;
$this->display_chart = $display_chart;
$this->places = $places;
}
}

View File

@@ -0,0 +1,64 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
use CachetHQ\Cachet\Models\Metric;
final class AddMetricPointCommand
{
/**
* The metric to add.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* The metric point value.
*
* @var int
*/
public $value;
/**
* The metric point created at.
*
* @var string
*/
public $created_at;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'value' => 'int',
'created_at' => 'string',
];
/**
* Create a new add metric point command instance.
*
* @param \CachetHQ\Cachet\Models\Metric $metric
* @param int $value
* @param string $created_at
*
* @return void
*/
public function __construct(Metric $metric, $value, $created_at)
{
$this->metric = $metric;
$this->value = $value;
$this->created_at = $created_at;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
use CachetHQ\Cachet\Models\Metric;
final class RemoveMetricCommand
{
/**
* The metric to remove.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* Create a new remove metric command instance.
*
* @param \CachetHQ\Cachet\Models\Metric $metric
*
* @return void
*/
public function __construct(Metric $metric)
{
$this->metric = $metric;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
final class RemoveMetricPointCommand
{
/**
* The metric point to remove.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $metricPoint;
/**
* Create a new remove metric point command instance.
*
* @param \CachetHQ\Cachet\Models\MetricPoint $metricPoint
*
* @return void
*/
public function __construct(MetricPoint $metricPoint)
{
$this->metricPoint = $metricPoint;
}
}

View File

@@ -0,0 +1,115 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
use CachetHQ\Cachet\Models\Metric;
final class UpdateMetricCommand
{
/**
* The metric.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* The metric name.
*
* @var string
*/
public $name;
/**
* The metric suffix.
*
* @var string
*/
public $suffix;
/**
* The metric description.
*
* @var string
*/
public $description;
/**
* The metric default value.
*
* @var float
*/
public $default_value;
/**
* The metric calculation type.
*
* @var int
*/
public $calc_type;
/**
* The metric display chart.
*
* @var int
*/
public $display_chart;
/**
* The metric decimal places.
*
* @var int
*/
public $places;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'string',
'suffix' => 'string',
'description' => 'string',
'display_chart' => 'bool',
'default_value' => 'numeric',
'calc_type' => 'int|in:0,1',
'display_chart' => 'int',
'places' => 'numeric|min:0|max:4',
];
/**
* Create a new update metric command instance.
*
* @param \CachetHQ\Cachet\Models\Metric $metric
* @param string $name
* @param string $suffix
* @param string $description
* @param float $default_value
* @param int $calc_type
* @param int $display_chart
* @param int $places
*
* @return void
*/
public function __construct(Metric $metric, $name, $suffix, $description, $default_value, $calc_type, $display_chart, $places)
{
$this->metric = $metric;
$this->name = $name;
$this->suffix = $suffix;
$this->description = $description;
$this->default_value = $default_value;
$this->calc_type = $calc_type;
$this->display_chart = $display_chart;
$this->places = $places;
}
}

View File

@@ -0,0 +1,74 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Metric;
use CachetHQ\Cachet\Models\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
final class UpdateMetricPointCommand
{
/**
* The metric point.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $point;
/**
* The metric.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* The metric point value.
*
* @var int
*/
public $value;
/**
* The metric point created at.
*
* @var string
*/
public $created_at;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'value' => 'int',
'created_at' => 'string',
];
/**
* Create a new update metric point command instance.
*
* @param \CachetHQ\Cachet\Models\MetricPoint $point
* @param \CachetHQ\Cachet\Models\Metric $metric
* @param int $value
* @param string $created_at
*
* @return void
*/
public function __construct(MetricPoint $point, Metric $metric, $value, $created_at)
{
$this->point = $point;
$this->metric = $metric;
$this->value = $value;
$this->created_at = $created_at;
}
}

View File

@@ -0,0 +1,52 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Subscriber;
final class SubscribeSubscriberCommand
{
/**
* The subscriber email.
*
* @var string
*/
public $email;
/**
* The subscriber auto verification.
*
* @var bool
*/
public $verified;
/**
* The validation rules.
*
* @var array
*/
public $rules = [
'email' => 'required|email',
];
/**
* Create a new subscribe subscriber command instance.
*
* @param string $email
* @param bool $verified
*
* @return void
*/
public function __construct($email, $verified = false)
{
$this->email = $email;
$this->verified = $verified;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Subscriber;
use CachetHQ\Cachet\Models\Subscriber;
final class UnsubscribeSubscriberCommand
{
/**
* The subscriber to unsubscribe.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
public $subscriber;
/**
* Create a unsubscribe subscriber command instance.
*
* @param string $subscriber
*
* @return void
*/
public function __construct(Subscriber $subscriber)
{
$this->subscriber = $subscriber;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\Subscriber;
use CachetHQ\Cachet\Models\Subscriber;
final class VerifySubscriberCommand
{
/**
* The subscriber to verify.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
public $subscriber;
/**
* Create a verify subscriber command instance.
*
* @param string $subscriber
*
* @return void
*/
public function __construct(Subscriber $subscriber)
{
$this->subscriber = $subscriber;
}
}

View File

@@ -0,0 +1,72 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\User;
final class AddTeamMemberCommand
{
/**
* The user username.
*
* @var string
*/
public $username;
/**
* The user password.
*
* @var string
*/
public $password;
/**
* The user email.
*
* @var string
*/
public $email;
/**
* The user level.
*
* @var int
*/
public $level;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'password' => 'string',
'level' => 'int',
];
/**
* Create a new add team member command instance.
*
* @param string $username
* @param string $password
* @param string $email
* @param int $level
*
* @return void
*/
public function __construct($username, $password, $email, $level)
{
$this->username = $username;
$this->password = $password;
$this->email = $email;
$this->level = $level;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\User;
final class GenerateApiTokenCommand
{
/**
* The user to generate the token.
*
* @var \CachetHQ\Cachet\Models\User
*/
public $user;
/**
* Create a new generate api token command instance.
*
* @param \CachetHQ\Cachet\Models\User $user
*
* @return void
*/
public function __construct($user)
{
$this->user = $user;
}
}

View File

@@ -0,0 +1,43 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\User;
final class InviteTeamMemberCommand
{
/**
* The invte emails.
*
* @var string[]
*/
public $emails;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'emails' => 'required|array|email',
];
/**
* Create a new invite team member command instance.
*
* @param array $email
*
* @return void
*/
public function __construct($emails)
{
$this->emails = $emails;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\User;
use CachetHQ\Cachet\Models\User;
final class RemoveUserCommand
{
/**
* The user to remove.
*
* @var \CachetHQ\Cachet\Models\User
*/
public $user;
/**
* Create a new remove user command instance.
*
* @param \CachetHQ\Cachet\Models\User $user
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}

View File

@@ -0,0 +1,73 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Commands\User;
final class SignupUserCommand
{
/**
* The user username.
*
* @var string
*/
public $username;
/**
* The user password.
*
* @var string
*/
public $password;
/**
* The user email.
*
* @var string
*/
public $email;
/**
* The user level.
*
* @var int
*/
public $level;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'username' => 'required|string',
'password' => 'string',
'email' => 'required|string|email',
'level' => 'int',
];
/**
* Create a new signup user command instance.
*
* @param string $username
* @param string $password
* @param string $email
* @param int $level
*
* @return void
*/
public function __construct($username, $password, $email, $level)
{
$this->username = $username;
$this->password = $password;
$this->email = $email;
$this->level = $level;
}
}

View File

@@ -12,7 +12,9 @@
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Facades\Setting;
use GrahamCampbell\Markdown\Facades\Markdown;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Config;
class AppComposer
{
@@ -20,17 +22,25 @@ class AppComposer
* Index page view composer.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
$isEnabled = (bool) Setting::get('enable_subscribers', false);
$mailAddress = env('MAIL_ADDRESS', false);
$mailFrom = env('MAIL_NAME', false);
$withData = [
'subscribersEnabled' => $isEnabled && $mailAddress && $mailFrom,
];
$view->with($withData);
$view->withAboutApp(Markdown::convertToHtml(Setting::get('app_about')));
$view->withAppAnalytics(Setting::get('app_analytics'));
$view->withAppAnalyticsGoSquared(Setting::get('app_analytics_gs'));
$view->withAppAnalyticsPiwikUrl(Setting::get('app_analytics_piwik_url'));
$view->withAppAnalyticsPiwikSiteId(Setting::get('app_analytics_piwik_siteid'));
$view->withAppBanner(Setting::get('app_banner'));
$view->withAppBannerStyleFullWidth(Setting::get('style_fullwidth_header'));
$view->withAppBannerType(Setting::get('app_banner_type'));
$view->withAppDomain(Setting::get('app_domain'));
$view->withAppGraphs(Setting::get('display_graphs'));
$view->withAppLocale(Setting::get('app_locale'));
$view->withAppName(Setting::get('app_name'));
$view->withAppStylesheet(Setting::get('stylesheet'));
$view->withAppUrl(Config::get('app.url'));
$view->withShowSupport(Setting::get('show_support'));
}
}

View File

@@ -14,15 +14,17 @@ namespace CachetHQ\Cachet\Composers;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Auth;
class LoggedUserComposer
class CurrentUserComposer
{
/**
* Bind data to the view.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
$view->with('loggedUser', Auth::user());
$view->withCurrentUser(Auth::user());
}
}

View File

@@ -21,10 +21,12 @@ class DashboardComposer
* Bind data to the view.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
$view->with('incidentCount', Incident::notScheduled()->count());
$view->with('componentCount', Component::all()->count());
$view->withIncidentCount(Incident::notScheduled()->count());
$view->withComponentCount(Component::all()->count());
}
}

View File

@@ -0,0 +1,65 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Facades\Setting;
use CachetHQ\Cachet\Models\Metric;
use CachetHQ\Cachet\Repositories\Metric\MetricRepository;
use Illuminate\Contracts\View\View;
class MetricsComposer
{
/**
* @var \CachetHQ\Cachet\Repositories\Metric\MetricRepository
*/
protected $metricRepository;
/**
* Construct a new home controller instance.
*
* @param \CachetHQ\Cachet\Repositories\Metric\MetricRepository $metricRepository
*
* @return void
*/
public function __construct(MetricRepository $metricRepository)
{
$this->metricRepository = $metricRepository;
}
/**
* Metrics view composer.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
$metrics = null;
$metricData = [];
if ($displayMetrics = Setting::get('display_graphs')) {
$metrics = Metric::where('display_chart', 1)->get();
$metrics->map(function ($metric) use (&$metricData) {
$metricData[$metric->id] = [
'today' => $this->metricRepository->listPointsToday($metric),
'week' => $this->metricRepository->listPointsForWeek($metric),
'month' => $this->metricRepository->listPointsForMonth($metric),
];
});
}
$view->withDisplayMetrics($displayMetrics)
->withMetrics($metrics)
->withMetricData($metricData);
}
}

View File

@@ -12,26 +12,29 @@
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use CachetHQ\Cachet\Models\Incident;
use Illuminate\Contracts\View\View;
class IndexComposer
class StatusPageComposer
{
/**
* Index page view composer.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
// Default data
$withData = [
'systemStatus' => 'danger',
'systemStatus' => 'info',
'systemMessage' => trans('cachet.service.bad'),
'favicon' => 'favicon-high-alert',
];
if (Component::notStatus(1)->count() === 0) {
if (Component::enabled()->notStatus(1)->count() === 0) {
// If all our components are ok, do we have any non-fixed incidents?
$incidents = Incident::notScheduled()->orderBy('created_at', 'desc')->get();
$incidentCount = $incidents->count();
@@ -44,11 +47,22 @@ class IndexComposer
];
}
} else {
if (Component::whereIn('status', [2, 3])->count() > 0) {
if (Component::enabled()->whereIn('status', [2, 3])->count() > 0) {
$withData['favicon'] = 'favicon-medium-alert';
}
}
$view->with($withData);
// Scheduled maintenance code.
$scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();
// Component & Component Group lists.
$usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->lists('group_id');
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
$ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
$view->with($withData)
->withComponentGroups($componentGroups)
->withUngroupedComponents($ungroupedComponents)
->withScheduledMaintenance($scheduledMaintenance);
}
}

View File

@@ -20,18 +20,23 @@ class ThemeComposer
* Bind data to the view.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
$view->with('themeBackgroundColor', Setting::get('style_background_color'));
$view->with('themeTextColor', Setting::get('style_text_color'));
$viewData = $view->getData();
$themeView = array_only($viewData, preg_grep('/^theme/', array_keys($viewData)));
$hasThemeSettings = array_filter($themeView, function ($data) {
return $data != null;
});
$view->with('themeSetup', !empty($hasThemeSettings));
// Theme colors.
$view->withThemeBackgroundColor(Setting::get('style_background_color', '#F0F3F4'));
$view->withThemeBackgroundFills(Setting::get('style_background_fills', '#FFFFFF'));
$view->withThemeBannerBackgroundColor(Setting::get('style_banner_background_color', ''));
$view->withThemeBannerPadding(Setting::get('style_banner_padding', '40px 0'));
$view->withThemeTextColor(Setting::get('style_text_color', '#333333'));
$view->withThemeReds(Setting::get('style_reds', '#ff6f6f'));
$view->withThemeBlues(Setting::get('style_blues', '#3498db'));
$view->withThemeGreens(Setting::get('style_greens', '#7ED321'));
$view->withThemeYellows(Setting::get('style_yellows', '#F7CA18'));
$view->withThemeOranges(Setting::get('style_oranges', '#FF8800'));
$view->withThemeMetrics(Setting::get('style_metrics', '#0dccc0'));
$view->withThemeLinks(Setting::get('style_links', '#7ED321'));
}
}

View File

@@ -22,6 +22,8 @@ class TimezoneLocaleComposer
* Timezones and Locales composer.
*
* @param \Illuminate\Contracts\View\View $view
*
* @return void
*/
public function compose(View $view)
{
@@ -45,6 +47,7 @@ class TimezoneLocaleComposer
'Europe' => DateTimeZone::EUROPE,
'Indian' => DateTimeZone::INDIAN,
'Pacific' => DateTimeZone::PACIFIC,
'UTC' => DateTimeZone::UTC,
];
$timezones = [];
@@ -65,9 +68,7 @@ class TimezoneLocaleComposer
}
}
$view->with([
'timezones' => $timezones,
'langs' => $langs,
]);
$view->withTimezones($timezones);
$view->withLangs($langs);
}
}

View File

@@ -33,6 +33,8 @@ class Repository
* Create a new settings service instance.
*
* @param \CachetHQ\Cachet\Models\Setting $model
*
* @return void
*/
public function __construct(Setting $model)
{
@@ -44,11 +46,10 @@ class Repository
*
* @param string $name
* @param string|null $default
* @param bool $checkEnv
*
* @return string|null
*/
public function get($name, $default = null, $checkEnv = true)
public function get($name, $default = null)
{
// if we've not loaded the settings, load them now
if (!$this->settings) {
@@ -60,13 +61,6 @@ class Repository
return $this->settings[$name];
}
// fallback to getenv if allowed to
if ($checkEnv) {
if ($this->settings[$name] = env(strtoupper($name))) {
return $this->settings[$name];
}
}
return $default;
}
@@ -75,6 +69,8 @@ class Repository
*
* @param string $name
* @param string $value
*
* @return void
*/
public function set($name, $value)
{

View File

@@ -0,0 +1,93 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Console\Commands;
use CachetHQ\Cachet\Models\MetricPoint;
use DateInterval;
use DateTime;
use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
use Symfony\Component\Console\Input\InputOption;
/**
* This is the demo seeder of metric points command.
*
* @author James Brooks <james@alt-three.com>
*/
class DemoMetricPointSeederCommand extends Command
{
use ConfirmableTrait;
/**
* The console command name.
*
* @var string
*/
protected $name = 'cachet:metrics';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Seeds the demo Cachet metric with points.';
/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
if (!$this->confirmToProceed()) {
return;
}
$this->seedMetricPoints();
$this->info('Demo metric seeded with demo data successfully!');
}
/**
* Seed the metric points table.
*
* @return void
*/
protected function seedMetricPoints()
{
MetricPoint::truncate();
// Generate 11 hours of metric points
for ($i = 0; $i < 11; $i++) {
$metricTime = (new DateTime())->sub(new DateInterval('PT'.$i.'H'));
MetricPoint::create([
'metric_id' => 1,
'value' => random_int(1, 10),
'created_at' => $metricTime,
'updated_at' => $metricTime,
]);
}
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return [
['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'],
];
}
}

View File

@@ -0,0 +1,343 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Console\Commands;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use CachetHQ\Cachet\Models\Incident;
use CachetHQ\Cachet\Models\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
use CachetHQ\Cachet\Models\Setting;
use CachetHQ\Cachet\Models\Subscriber;
use CachetHQ\Cachet\Models\User;
use DateInterval;
use DateTime;
use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
use Symfony\Component\Console\Input\InputOption;
/**
* This is the demo seeder command.
*
* @author James Brooks <james@alt-three.com>
*/
class DemoSeederCommand extends Command
{
use ConfirmableTrait;
/**
* The console command name.
*
* @var string
*/
protected $name = 'cachet:seed';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Seeds Cachet with demo data.';
/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
if (!$this->confirmToProceed()) {
return;
}
$this->seedComponentGroups();
$this->seedComponents();
$this->seedIncidents();
$this->seedMetricPoints();
$this->seedMetrics();
$this->seedSettings();
$this->seedSubscribers();
$this->seedUsers();
$this->info('Database seeded with demo data successfully!');
}
/**
* Seed the component groups table.
*
* @return void
*/
protected function seedComponentGroups()
{
$defaultGroups = [
[
'name' => 'Websites',
'order' => 1,
],
];
ComponentGroup::truncate();
foreach ($defaultGroups as $group) {
ComponentGroup::create($group);
}
}
/**
* Seed the components table.
*
* @return void
*/
protected function seedComponents()
{
$defaultComponents = [
[
'name' => 'API',
'description' => 'Used by third-parties to connect to us',
'status' => 1,
'order' => 0,
'group_id' => 0,
'link' => '',
], [
'name' => 'Documentation',
'description' => 'Kindly powered by Readme.io',
'status' => 1,
'order' => 0,
'group_id' => 1,
'link' => 'https://docs.cachethq.io',
], [
'name' => 'Website',
'description' => '',
'status' => 1,
'order' => 0,
'group_id' => 1,
'link' => 'https://cachethq.io',
], [
'name' => 'Blog',
'description' => 'The Cachet Blog.',
'status' => 1,
'order' => 0,
'group_id' => 1,
'link' => 'https://blog.cachethq.io',
],
];
Component::truncate();
foreach ($defaultComponents as $component) {
Component::create($component);
}
}
/**
* Seed the incidents table.
*
* @return void
*/
protected function seedIncidents()
{
$defaultIncidents = [
[
'name' => 'Awesome',
'message' => ':+1: We totally nailed the fix.',
'status' => 4,
'component_id' => 0,
'scheduled_at' => null,
'visible' => 1,
],
[
'name' => 'Monitoring the fix',
'message' => ":ship: We've deployed a fix.",
'status' => 3,
'component_id' => 0,
'scheduled_at' => null,
'visible' => 1,
],
[
'name' => 'Update',
'message' => "We've identified the problem. Our engineers are currently looking at it.",
'status' => 2,
'component_id' => 0,
'scheduled_at' => null,
'visible' => 1,
],
[
'name' => 'Test Incident',
'message' => 'Something went wrong, with something or another.',
'status' => 1,
'component_id' => 0,
'scheduled_at' => null,
'visible' => 1,
],
[
'name' => 'Investigating the API',
'message' => ':zap: We\'ve seen high response times from our API. It looks to be fixing itself as time goes on.',
'status' => 1,
'component_id' => 1,
'scheduled_at' => null,
'visible' => 1,
],
];
Incident::truncate();
foreach ($defaultIncidents as $incident) {
Incident::create($incident);
}
}
/**
* Seed the metric points table.
*
* @return void
*/
protected function seedMetricPoints()
{
MetricPoint::truncate();
// Generate 11 hours of metric points
for ($i = 0; $i < 11; $i++) {
$metricTime = (new DateTime())->sub(new DateInterval('PT'.$i.'H'));
MetricPoint::create([
'metric_id' => 1,
'value' => random_int(1, 10),
'created_at' => $metricTime,
'updated_at' => $metricTime,
]);
}
}
/**
* Seed the metrics table.
*
* @return void
*/
protected function seedMetrics()
{
$defaultMetrics = [
[
'name' => 'Cups of coffee',
'suffix' => 'Cups',
'description' => 'How many cups of coffee we\'ve drank.',
'default_value' => 0,
'calc_type' => 1,
'display_chart' => 1,
],
];
Metric::truncate();
foreach ($defaultMetrics as $metric) {
Metric::create($metric);
}
}
/**
* Seed the settings table.
*
* @return void
*/
protected function seedSettings()
{
$defaultSettings = [
[
'name' => 'app_name',
'value' => 'Cachet Demo',
],
[
'name' => 'app_domain',
'value' => 'https://demo.cachethq.io',
],
[
'name' => 'show_support',
'value' => '1',
],
[
'name' => 'app_locale',
'value' => 'en',
],
[
'name' => 'app_timezone',
'value' => 'Europe/London',
],
[
'name' => 'app_incident_days',
'value' => '7',
],
[
'name' => 'app_analytics',
'value' => 'UA-58442674-3',
],
[
'name' => 'app_analytics_gs',
'value' => 'GSN-712462-P',
],
[
'name' => 'display_graphs',
'value' => '1',
],
];
Setting::truncate();
foreach ($defaultSettings as $setting) {
Setting::create($setting);
}
}
/**
* Seed the subscribers.
*
* @return void
*/
protected function seedSubscribers()
{
Subscriber::truncate();
}
/**
* Seed the users table.
*
* @return void
*/
protected function seedUsers()
{
$users = [
[
'username' => 'test',
'password' => 'test123',
'email' => 'test@test.com',
'level' => 1,
'api_key' => '9yMHsdioQosnyVK4iCVR',
],
];
User::truncate();
foreach ($users as $user) {
User::create($user);
}
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return [
['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'],
];
}
}

View File

@@ -1,111 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Console\Commands;
use DirectoryIterator;
use Illuminate\Console\Command;
class FixPermissionsCommand extends Command
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'cachet:chmod';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Fixes file and directory permissions. Ensures SQLite database is writable.';
/**
* Path to the storage directory.
*
* @var string
*/
protected $storageDirectory;
/**
* Path of the database directory.
*
* @var string
*/
protected $databaseDirectory;
/**
* Path of the SQLite database file.
*
* @var string
*/
protected $databasePath;
/**
* Which database connection are we using?
*
* @var string
*/
protected $databaseDefault;
/**
* Create a new fix permissions command instance.
*
* @param string $storageDirectory
* @param string $databaseDirectory
* @param string $databasePath
* @param string $databaseDefault
*/
public function __construct($storageDirectory, $databaseDirectory, $databasePath, $databaseDefault)
{
$this->storageDirectory = $storageDirectory;
$this->databaseDirectory = $databaseDirectory;
$this->databasePath = $databasePath;
$this->databaseDefault = $databaseDefault;
parent::__construct();
}
/**
* Execute the console command.
*/
public function fire()
{
$this->recursiveChmod($this->storageDirectory);
if ($this->databaseDefault === 'sqlite') {
chmod($this->databaseDirectory, 755);
chmod($this->databasePath, 755);
}
}
/**
* Recursively sets a paths file permissions.
*
* @param string $path
* @param string $mode
*/
protected function recursiveChmod($path, $mode = '0755')
{
$dir = new DirectoryIterator($path);
foreach ($dir as $item) {
if (!$item->isDot()) {
chmod($item->getPathname(), $mode);
}
if ($item->isDir() && !$item->isDot()) {
$this->recursiveChmod($item->getPathname());
}
}
}
}

View File

@@ -11,6 +11,8 @@
namespace CachetHQ\Cachet\Console;
use CachetHQ\Cachet\Console\Commands\DemoMetricPointSeederCommand;
use CachetHQ\Cachet\Console\Commands\DemoSeederCommand;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@@ -22,13 +24,16 @@ class Kernel extends ConsoleKernel
* @var array
*/
protected $commands = [
'CachetHQ\Cachet\Console\Commands\FixPermissionsCommand',
DemoMetricPointSeederCommand::class,
DemoSeederCommand::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
*
* @return void
*/
protected function schedule(Schedule $schedule)
{

77
app/Dates/DateFactory.php Normal file
View File

@@ -0,0 +1,77 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Dates;
use Jenssegers\Date\Date;
class DateFactory
{
/**
* The application timezone.
*
* @var string
*/
protected $appTimezone;
/**
* The cachet timezone.
*
* @var string
*/
protected $cachetTimezone;
/**
* Create a new date factory instance.
*
* @param string $appTimezone
* @param string $cachetTimezone
*
* @return void
*/
public function __construct($appTimezone, $cachetTimezone)
{
$this->appTimezone = $appTimezone;
$this->cachetTimezone = $cachetTimezone;
}
/**
* Create a Carbon instance from a specific format.
*
* @param string $format
* @param string $time
*
* @throws \InvalidArgumentException
*
* @return \Carbon\Carbon
*/
public function create($format, $time)
{
return Date::createFromFormat($format, $time, $this->cachetTimezone)->setTimezone($this->appTimezone);
}
/**
* Create a Carbon instance from a specific format.
*
* We're also going to make sure the timezone information is correct.
*
* @param string $format
* @param string $time
*
* @throws \InvalidArgumentException
*
* @return \Carbon\Carbon
*/
public function createNormalized($format, $time)
{
return $this->create($format, $time)->setTimezone($this->appTimezone);
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Component;
use CachetHQ\Cachet\Models\Component;
class ComponentWasAddedEvent
{
/**
* The component that was added.
*
* @var \CachetHQ\Cachet\Models\Component
*/
public $component;
/**
* Create a new component was added event instance.
*
* @return void
*/
public function __construct(Component $component)
{
$this->component = $component;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Component;
use CachetHQ\Cachet\Models\Component;
class ComponentWasRemovedEvent
{
/**
* The component that was removed.
*
* @var \CachetHQ\Cachet\Models\Component
*/
public $component;
/**
* Create a new component was removed event instance.
*
* @return void
*/
public function __construct(Component $component)
{
$this->component = $component;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Component;
use CachetHQ\Cachet\Models\Component;
class ComponentWasUpdatedEvent
{
/**
* The component that was updated.
*
* @var \CachetHQ\Cachet\Models\Component
*/
public $component;
/**
* Create a new component was updated event instance.
*
* @return void
*/
public function __construct(Component $component)
{
$this->component = $component;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\ComponentGroup;
use CachetHQ\Cachet\Models\ComponentGroup;
class ComponentGroupWasAddedEvent
{
/**
* The component group that was added.
*
* @var \CachetHQ\Cachet\Models\ComponentGroup
*/
public $group;
/**
* Create a new component group was added event instance.
*
* @return void
*/
public function __construct(ComponentGroup $group)
{
$this->group = $group;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\ComponentGroup;
use CachetHQ\Cachet\Models\ComponentGroup;
class ComponentGroupWasRemovedEvent
{
/**
* The component group that was removed.
*
* @var \CachetHQ\Cachet\Models\ComponentGroup
*/
public $group;
/**
* Create a new component group was removed event instance.
*
* @return void
*/
public function __construct(ComponentGroup $group)
{
$this->group = $group;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\ComponentGroup;
use CachetHQ\Cachet\Models\ComponentGroup;
class ComponentGroupWasUpdatedEvent
{
/**
* The component group that was updated.
*
* @var \CachetHQ\Cachet\Models\ComponentGroup
*/
public $group;
/**
* Create a new component group was updated event instance.
*
* @return void
*/
public function __construct(ComponentGroup $group)
{
$this->group = $group;
}
}

View File

@@ -0,0 +1,32 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Incident;
use CachetHQ\Cachet\Models\Incident;
class IncidentWasRemovedEvent
{
/**
* The incident that has been removed.
*
* @var \CachetHQ\Cachet\Models\Incident
*/
public $incident;
/**
* Create a new incident was removed event instance.
*/
public function __construct(Incident $incident)
{
$this->incident = $incident;
}
}

View File

@@ -9,11 +9,11 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events;
namespace CachetHQ\Cachet\Events\Incident;
use CachetHQ\Cachet\Models\Incident;
class IncidentHasReportedEvent
class IncidentWasReportedEvent
{
/**
* The incident that has been reported.
@@ -24,6 +24,8 @@ class IncidentHasReportedEvent
/**
* Create a new incident has reported event instance.
*
* @return void
*/
public function __construct(Incident $incident)
{

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Incident;
use CachetHQ\Cachet\Models\Incident;
class IncidentWasUpdatedEvent
{
/**
* The incident that has been updated.
*
* @var \CachetHQ\Cachet\Models\Incident
*/
public $incident;
/**
* Create a new incident has updated event instance.
*
* @return void
*/
public function __construct(Incident $incident)
{
$this->incident = $incident;
}
}

View File

@@ -9,11 +9,11 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events;
namespace CachetHQ\Cachet\Events\Incident;
use CachetHQ\Cachet\Models\Incident;
class MaintenanceHasScheduledEvent
class MaintenanceWasScheduledEvent
{
/**
* The incident that has been reported.
@@ -24,6 +24,8 @@ class MaintenanceHasScheduledEvent
/**
* Create a new maintenance has scheduled event instance.
*
* @return void
*/
public function __construct(Incident $incident)
{

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Invite;
use CachetHQ\Cachet\Models\Invite;
final class InviteWasClaimed
{
/**
* The invite that has been claimed.
*
* @var \CachetHQ\Cachet\Models\Invite
*/
public $invite;
/**
* Create a new invite was claimed event instance.
*
* @return void
*/
public function __construct(Invite $invite)
{
$this->invite = $invite;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
class MetricPointWasAddedEvent
{
/**
* The metric point that was added.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $metric;
/**
* Create a new metric point was added event instance.
*
* @return void
*/
public function __construct(MetricPoint $metric)
{
$this->metric = $metric;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
class MetricPointWasRemovedEvent
{
/**
* The metric point that was removed.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $metricPoint;
/**
* Create a new metric point was removed event instance.
*
* @return void
*/
public function __construct(MetricPoint $metricPoint)
{
$this->metricPoint = $metricPoint;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\MetricPoint;
class MetricPointWasUpdatedEvent
{
/**
* The metric point that was updated.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $point;
/**
* Create a new metric point was updated event instance.
*
* @return void
*/
public function __construct(MetricPoint $point)
{
$this->point = $point;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\Metric;
class MetricWasAddedEvent
{
/**
* The metric that was added.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* Create a new metric was added event instance.
*
* @return void
*/
public function __construct(Metric $metric)
{
$this->metric = $metric;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\Metric;
class MetricWasRemovedEvent
{
/**
* The metric that was removed.
*
* @var \CachetHQ\Cachet\Models\Metric
*/
public $metric;
/**
* Create a new metric was removed event instance.
*
* @return void
*/
public function __construct(Metric $metric)
{
$this->metric = $metric;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Metric;
use CachetHQ\Cachet\Models\Metric;
class MetricWasUpdatedEvent
{
/**
* The metric that was updated.
*
* @var \CachetHQ\Cachet\Models\MetricPoint
*/
public $metric;
/**
* Create a new metric was updated event instance.
*
* @return void
*/
public function __construct(Metric $metric)
{
$this->metric = $metric;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Subscriber;
use CachetHQ\Cachet\Models\Subscriber;
class SubscriberHasSubscribedEvent
{
/**
* The subscriber who has subscribed.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
public $subscriber;
/**
* Create a new subscriber has subscribed event instance.
*
* @return void
*/
public function __construct(Subscriber $subscriber)
{
$this->subscriber = $subscriber;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\Subscriber;
use CachetHQ\Cachet\Models\Subscriber;
class SubscriberHasUnsubscribedEvent
{
/**
* The subscriber who has unsubscribed.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
public $subscriber;
/**
* Create a new subscriber has unsubscribed event instance.
*
* @return void
*/
public function __construct(Subscriber $subscriber)
{
$this->subscriber = $subscriber;
}
}

View File

@@ -9,21 +9,23 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events;
namespace CachetHQ\Cachet\Events\Subscriber;
use CachetHQ\Cachet\Models\Subscriber;
class CustomerHasSubscribedEvent
class SubscriberHasVerifiedEvent
{
/**
* The customer who has subscribed.
* The subscriber who has verified.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
public $subscriber;
/**
* Create a new customer has subscribed event instance.
* Create a new subscriber has subscribed event instance.
*
* @return void
*/
public function __construct(Subscriber $subscriber)
{

View File

@@ -0,0 +1,17 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\User;
interface UserEventInterface
{
//
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\User;
use CachetHQ\Cachet\Models\User;
final class UserWasAddedEvent implements UserEventInterface
{
/**
* The user that has been added.
*
* @var \CachetHQ\Cachet\Models\User
*/
public $user;
/**
* Create a new user was added event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\User;
use CachetHQ\Cachet\Models\Invite;
final class UserWasInvitedEvent
{
/**
* The invite that has been added.
*
* @var \CachetHQ\Cachet\Models\Invite
*/
public $invite;
/**
* Create a new user was invite event instance.
*
* @return void
*/
public function __construct(Invite $invite)
{
$this->invite = $invite;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Events\User;
use CachetHQ\Cachet\Models\User;
final class UserWasRemovedEvent implements UserEventInterface
{
/**
* The user that has been removed.
*
* @var \CachetHQ\Cachet\Models\User
*/
public $user;
/**
* Create a new user was removed event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}

View File

@@ -0,0 +1,54 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Exceptions\Displayers;
use AltThree\Validator\ValidationException;
use Exception;
use GrahamCampbell\Exceptions\Displayers\DisplayerInterface;
use GrahamCampbell\Exceptions\Displayers\JsonDisplayer;
use Symfony\Component\HttpFoundation\JsonResponse;
class JsonValidationDisplayer extends JsonDisplayer implements DisplayerInterface
{
/**
* Get the error response associated with the given exception.
*
* @param \Exception $exception
* @param string $id
* @param int $code
* @param string[] $headers
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function display(Exception $exception, $id, $code, array $headers)
{
$info = $this->info->generate($exception, $id, 400);
$error = ['id' => $id, 'status' => $info['code'], 'title' => $info['name'], 'detail' => $info['detail'], 'meta' => ['details' => $exception->getMessageBag()->all()]];
return new JsonResponse(['errors' => [$error]], 400, array_merge($headers, ['Content-Type' => $this->contentType()]));
}
/**
* Can we display the exception?
*
* @param \Exception $original
* @param \Exception $transformed
* @param int $code
*
* @return bool
*/
public function canDisplay(Exception $original, Exception $transformed, $code)
{
return $transformed instanceof ValidationException;
}
}

View File

@@ -29,6 +29,8 @@ class RedirectDisplayer implements DisplayerInterface
* Create a new redirect displayer instance.
*
* @param \Illuminate\Http\Request $request
*
* @return void
*/
public function __construct(Request $request)
{
@@ -65,10 +67,11 @@ class RedirectDisplayer implements DisplayerInterface
*
* @param \Exception $original
* @param \Exception $transformed
* @param int $code
*
* @return bool
*/
public function canDisplay(Exception $original, Exception $transformed)
public function canDisplay(Exception $original, Exception $transformed, $code)
{
$redirect = $transformed instanceof HttpExceptionInterface && $transformed->getStatusCode() === 401;

View File

@@ -27,6 +27,8 @@ class ApiFilter
* Create a new api filter instance.
*
* @param \Illuminate\Http\Request $request
*
* @return void
*/
public function __construct(Request $request)
{
@@ -39,10 +41,11 @@ class ApiFilter
* @param \GrahamCampbell\Exceptions\Displayers\DisplayerInterface[] $displayers
* @param \Exception $original
* @param \Exception $transformed
* @param int $code
*
* @return \GrahamCampbell\Exceptions\Displayers\DisplayerInterface[]
*/
public function filter(array $displayers, Exception $original, Exception $transformed)
public function filter(array $displayers, Exception $original, Exception $transformed, $code)
{
if ($this->request->is('api*')) {
foreach ($displayers as $index => $displayer) {

View File

@@ -1,27 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Exceptions;
use GrahamCampbell\Exceptions\ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that should not be reported.
*
* @var string[]
*/
protected $dontReport = [
NotFoundHttpException::class,
];
}

View File

@@ -0,0 +1,59 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Component;
use CachetHQ\Cachet\Commands\Component\AddComponentCommand;
use CachetHQ\Cachet\Events\Component\ComponentWasAddedEvent;
use CachetHQ\Cachet\Models\Component;
class AddComponentCommandHandler
{
/**
* Handle the add component command.
*
* @param \CachetHQ\Cachet\Commands\Component\AddComponentCommand $command
*
* @return \CachetHQ\Cachet\Models\Component
*/
public function handle(AddComponentCommand $command)
{
$component = Component::create($this->filter($command));
event(new ComponentWasAddedEvent($component));
return $component;
}
/**
* Filter the command data.
*
* @param \CachetHQ\Cachet\Commands\Incident\AddComponentCommand $command
*
* @return array
*/
protected function filter(AddComponentCommand $command)
{
$params = [
'name' => $command->name,
'description' => $command->description,
'link' => $command->link,
'status' => $command->status,
'enabled' => $command->enabled,
'order' => $command->order,
'group_id' => $command->group_id,
];
return array_filter($params, function ($val) {
return $val !== null;
});
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Component;
use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand;
use CachetHQ\Cachet\Events\Component\ComponentWasRemovedEvent;
class RemoveComponentCommandHandler
{
/**
* Handle the remove component command.
*
* @param \CachetHQ\Cachet\Commands\Component\RemoveComponentCommand $command
*
* @return void
*/
public function handle(RemoveComponentCommand $command)
{
$component = $command->component;
event(new ComponentWasRemovedEvent($component));
$component->delete();
}
}

View File

@@ -0,0 +1,61 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Component;
use CachetHQ\Cachet\Commands\Component\UpdateComponentCommand;
use CachetHQ\Cachet\Events\Component\ComponentWasUpdatedEvent;
use CachetHQ\Cachet\Models\Component;
class UpdateComponentCommandHandler
{
/**
* Handle the update component command.
*
* @param \CachetHQ\Cachet\Commands\Component\UpdateComponentCommand $command
*
* @return \CachetHQ\Cachet\Models\Component
*/
public function handle(UpdateComponentCommand $command)
{
$component = $command->component;
$component->update($this->filter($command));
event(new ComponentWasUpdatedEvent($component));
return $component;
}
/**
* Filter the command data.
*
* @param \CachetHQ\Cachet\Commands\Incident\UpdateComponentCommand $command
*
* @return array
*/
protected function filter(UpdateComponentCommand $command)
{
$params = [
'name' => $command->name,
'description' => $command->description,
'link' => $command->link,
'status' => $command->status,
'enabled' => $command->enabled,
'order' => $command->order,
'group_id' => $command->group_id,
];
return array_filter($params, function ($val) {
return $val !== null;
});
}
}

View File

@@ -0,0 +1,38 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\ComponentGroup;
use CachetHQ\Cachet\Commands\ComponentGroup\AddComponentGroupCommand;
use CachetHQ\Cachet\Events\ComponentGroup\ComponentGroupWasAddedEvent;
use CachetHQ\Cachet\Models\ComponentGroup;
class AddComponentGroupCommandHandler
{
/**
* Handle the add component group command.
*
* @param \CachetHQ\Cachet\Commands\ComponentGroup\AddComponentGroupCommand $command
*
* @return \CachetHQ\Cachet\Models\ComponentGroup
*/
public function handle(AddComponentGroupCommand $command)
{
$group = ComponentGroup::create([
'name' => $command->name,
'order' => $command->order,
]);
event(new ComponentGroupWasAddedEvent($group));
return $group;
}
}

View File

@@ -0,0 +1,39 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\ComponentGroup;
use CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand;
use CachetHQ\Cachet\Events\ComponentGroup\ComponentGroupWasRemovedEvent;
class RemoveComponentGroupCommandHandler
{
/**
* Handle the remove component group command.
*
* @param \CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand $command
*
* @return void
*/
public function handle(RemoveComponentGroupCommand $command)
{
$group = $command->group;
event(new ComponentGroupWasRemovedEvent($group));
// Remove the group id from all component.
$group->components->map(function ($component) {
$component->update(['group_id' => 0]);
});
$group->delete();
}
}

View File

@@ -0,0 +1,38 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\ComponentGroup;
use CachetHQ\Cachet\Commands\ComponentGroup\UpdateComponentGroupCommand;
use CachetHQ\Cachet\Events\ComponentGroup\ComponentGroupWasUpdatedEvent;
class UpdateComponentGroupCommandHandler
{
/**
* Handle the update component group command.
*
* @param \CachetHQ\Cachet\Commands\ComponentGroup\UpdateComponentGroupCommand $command
*
* @return \CachetHQ\Cachet\Models\ComponentGroup
*/
public function handle(UpdateComponentGroupCommand $command)
{
$group = $command->group;
$group->update([
'name' => $command->name,
'order' => $command->order,
]);
event(new ComponentGroupWasUpdatedEvent($group));
return $group;
}
}

View File

@@ -0,0 +1,34 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Incident;
use CachetHQ\Cachet\Commands\Incident\RemoveIncidentCommand;
use CachetHQ\Cachet\Events\Incident\IncidentWasRemovedEvent;
class RemoveIncidentCommandHandler
{
/**
* Handle the remove incident command.
*
* @param \CachetHQ\Cachet\Commands\Incident\RemoveIncidentCommand $command
*
* @return void
*/
public function handle(RemoveIncidentCommand $command)
{
$incident = $command->incident;
event(new IncidentWasRemovedEvent($incident));
$incident->delete();
}
}

View File

@@ -0,0 +1,109 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Incident;
use CachetHQ\Cachet\Commands\Incident\ReportIncidentCommand;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Events\Incident\IncidentWasReportedEvent;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\Incident;
use CachetHQ\Cachet\Models\IncidentTemplate;
use Twig_Loader_String;
use TwigBridge\Facade\Twig;
class ReportIncidentCommandHandler
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* Create a new report incident command handler instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
*
* @return void
*/
public function __construct(DateFactory $dates)
{
$this->dates = $dates;
}
/**
* Handle the report incident command.
*
* @param \CachetHQ\Cachet\Commands\Incident\ReportIncidentCommand $command
*
* @return \CachetHQ\Cachet\Models\Incident
*/
public function handle(ReportIncidentCommand $command)
{
if ($command->template) {
$command->message = $this->parseIncidentTemplate($command->template, $command->template_vars);
}
$data = [
'name' => $command->name,
'status' => $command->status,
'message' => $command->message,
'visible' => $command->visible,
];
// Link with the component.
if ($command->component_id) {
$data['component_id'] = $command->component_id;
}
// The incident occurred at a different time.
if ($command->incident_date) {
$incidentDate = $this->dates->createNormalized('d/m/Y H:i', $command->incident_date);
$data['created_at'] = $incidentDate;
$data['updated_at'] = $incidentDate;
}
// Create the incident
$incident = Incident::create($data);
// Update the component.
if ($command->component_id) {
Component::find($command->component_id)->update([
'status' => $command->component_status,
]);
}
$incident->notify = (bool) $command->notify;
event(new IncidentWasReportedEvent($incident));
return $incident;
}
/**
* Compiles an incident template into an incident message.
*
* @param string $templateSlug
* @param array $vars
*
* @return string
*/
protected function parseIncidentTemplate($templateSlug, $vars)
{
Twig::setLoader(new Twig_Loader_String());
$template = IncidentTemplate::forSlug($templateSlug)->first();
return Twig::render($template->template, $vars);
}
}

View File

@@ -0,0 +1,65 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Incident;
use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Events\Incident\MaintenanceWasScheduledEvent;
use CachetHQ\Cachet\Models\Incident;
class ReportMaintenanceCommandHandler
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* Create a new report maintanance command handler instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
*
* @return void
*/
public function __construct(DateFactory $dates)
{
$this->dates = $dates;
}
/**
* Handle the report maintenance command.
*
* @param \CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand $command
*
* @return \CachetHQ\Cachet\Models\Incident
*/
public function handle(ReportMaintenanceCommand $command)
{
$scheduledAt = $this->dates->createNormalized('d/m/Y H:i', $command->timestamp);
$maintenanceEvent = Incident::create([
'name' => $command->name,
'message' => $command->message,
'scheduled_at' => $scheduledAt,
'status' => 0,
'visible' => 1,
]);
$maintenanceEvent->notify = (bool) $command->notify;
event(new MaintenanceWasScheduledEvent($maintenanceEvent));
return $maintenanceEvent;
}
}

View File

@@ -0,0 +1,121 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Incident;
use CachetHQ\Cachet\Commands\Incident\UpdateIncidentCommand;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Events\Incident\IncidentWasUpdatedEvent;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\Incident;
use CachetHQ\Cachet\Models\IncidentTemplate;
use Twig_Loader_String;
use TwigBridge\Facade\Twig;
class UpdateIncidentCommandHandler
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* Create a new update incident command handler instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
*
* @return void
*/
public function __construct(DateFactory $dates)
{
$this->dates = $dates;
}
/**
* Handle the update incident command.
*
* @param \CachetHQ\Cachet\Commands\Incident\UpdateIncidentCommand $command
*
* @return \CachetHQ\Cachet\Models\Incident
*/
public function handle(UpdateIncidentCommand $command)
{
if ($command->template) {
$command->message = $this->parseIncidentTemplate($command->template, $command->template_vars);
}
$incident = $command->incident;
$incident->update($this->filter($command));
// The incident occurred at a different time.
if ($command->incident_date) {
$incidentDate = $this->dates->createNormalized('d/m/Y H:i', $command->incident_date);
$incident->update([
'created_at' => $incidentDate,
'updated_at' => $incidentDate,
]);
}
// Update the component.
if ($command->component_id) {
Component::find($command->component_id)->update([
'status' => $command->component_status,
]);
}
event(new IncidentWasUpdatedEvent($incident));
return $incident;
}
/**
* Filter the command data.
*
* @param \CachetHQ\Cachet\Commands\Incident\UpdateIncidentCommand $command
*
* @return array
*/
protected function filter(UpdateIncidentCommand $command)
{
$params = [
'name' => $command->name,
'status' => $command->status,
'message' => $command->message,
'visible' => $command->visible,
'component_id' => $command->component_id,
'component_status' => $command->component_status,
'notify' => $command->notify,
];
return array_filter($params, function ($val) {
return $val !== null;
});
}
/**
* Compiles an incident template into an incident message.
*
* @param string $templateSlug
* @param array $vars
*
* @return string
*/
protected function parseIncidentTemplate($templateSlug, $vars)
{
Twig::setLoader(new Twig_Loader_String());
$template = IncidentTemplate::forSlug($templateSlug)->first();
return Twig::render($template->template, $vars);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Invite;
use CachetHQ\Cachet\Commands\Invite\ClaimInviteCommand;
use CachetHQ\Cachet\Events\Invite\InviteWasClaimed;
use Carbon\Carbon;
class ClaimInviteCommandHandler
{
/**
* Handle the claim invite command.
*
* @param \CachetHQ\Cachet\Commands\User\ClaimInviteCommand $command
*
* @return void
*/
public function handle(ClaimInviteCommand $command)
{
$invite = $command->invite;
$invite->claimed_at = Carbon::now();
$invite->save();
event(new InviteWasClaimed($invite));
}
}

View File

@@ -0,0 +1,43 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\AddMetricCommand;
use CachetHQ\Cachet\Events\Metric\MetricWasAddedEvent;
use CachetHQ\Cachet\Models\Metric;
class AddMetricCommandHandler
{
/**
* Handle the add metric command.
*
* @param \CachetHQ\Cachet\Commands\Metric\AddMetricCommand $command
*
* @return \CachetHQ\Cachet\Models\Metric
*/
public function handle(AddMetricCommand $command)
{
$metric = Metric::create([
'name' => $command->name,
'suffix' => $command->suffix,
'description' => $command->description,
'default_value' => $command->default_value,
'calc_type' => $command->calc_type,
'display_chart' => $command->display_chart,
'places' => $command->places,
]);
event(new MetricWasAddedEvent($metric));
return $metric;
}
}

View File

@@ -0,0 +1,67 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\AddMetricPointCommand;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Events\Metric\MetricPointWasAddedEvent;
use CachetHQ\Cachet\Models\MetricPoint;
class AddMetricPointCommandHandler
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* Create a new add metric point command handler instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
*
* @return void
*/
public function __construct(DateFactory $dates)
{
$this->dates = $dates;
}
/**
* Handle the add metric point command.
*
* @param \CachetHQ\Cachet\Commands\Metric\AddMetricPointCommand $command
*
* @return \CachetHQ\Cachet\Models\MetricPoint
*/
public function handle(AddMetricPointCommand $command)
{
$metric = $command->metric;
$createdAt = $command->created_at;
$data = [
'metric_id' => $metric->id,
'value' => $command->value,
];
if ($createdAt) {
$data['created_at'] = $this->dates->create('U', $createdAt)->format('Y-m-d H:i:s');
}
$metricPoint = MetricPoint::create($data);
event(new MetricPointWasAddedEvent($metricPoint));
return $metricPoint;
}
}

View File

@@ -0,0 +1,35 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\RemoveMetricCommand;
use CachetHQ\Cachet\Events\Metric\MetricWasRemovedEvent;
use CachetHQ\Cachet\Models\Metric;
class RemoveMetricCommandHandler
{
/**
* Handle the remove metric command.
*
* @param \CachetHQ\Cachet\Commands\Metric\RemoveMetricCommand $command
*
* @return void
*/
public function handle(RemoveMetricCommand $command)
{
$metric = $command->metric;
event(new MetricWasRemovedEvent($metric));
$metric->delete();
}
}

View File

@@ -0,0 +1,35 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\RemoveMetricPointCommand;
use CachetHQ\Cachet\Events\Metric\MetricPointWasRemovedEvent;
use CachetHQ\Cachet\Models\Metric;
class RemoveMetricPointCommandHandler
{
/**
* Handle the remove metric point command.
*
* @param \CachetHQ\Cachet\Commands\Metric\RemoveMetricPointCommand $command
*
* @return void
*/
public function handle(RemoveMetricPointCommand $command)
{
$metricPoint = $command->metricPoint;
event(new MetricPointWasRemovedEvent($metricPoint));
$metricPoint->delete();
}
}

View File

@@ -0,0 +1,61 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\UpdateMetricCommand;
use CachetHQ\Cachet\Events\Metric\MetricWasUpdatedEvent;
use CachetHQ\Cachet\Models\Metric;
class UpdateMetricCommandHandler
{
/**
* Handle the update metric command.
*
* @param \CachetHQ\Cachet\Commands\Metric\UpdateMetricCommand $command
*
* @return \CachetHQ\Cachet\Models\Metric
*/
public function handle(UpdateMetricCommand $command)
{
$metric = $command->metric;
$metric->update($this->filter($command));
event(new MetricWasUpdatedEvent($metric));
return $metric;
}
/**
* Filter the command data.
*
* @param \CachetHQ\Cachet\Commands\Metric\UpdateMetricCommand $command
*
* @return array
*/
protected function filter(UpdateMetricCommand $command)
{
$params = [
'name' => $command->name,
'suffix' => $command->suffix,
'description' => $command->description,
'default_value' => $command->default_value,
'calc_type' => $command->calc_type,
'display_chart' => $command->display_chart,
'places' => $command->places,
];
return array_filter($params, function ($val) {
return $val !== null;
});
}
}

View File

@@ -0,0 +1,67 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Metric;
use CachetHQ\Cachet\Commands\Metric\UpdateMetricPointCommand;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Events\Metric\MetricPointWasUpdatedEvent;
class UpdateMetricPointCommandHandler
{
/**
* The date factory instance.
*
* @var \CachetHQ\Cachet\Dates\DateFactory
*/
protected $dates;
/**
* Create a new update metric point command handler instance.
*
* @param \CachetHQ\Cachet\Dates\DateFactory $dates
*
* @return void
*/
public function __construct(DateFactory $dates)
{
$this->dates = $dates;
}
/**
* Handle the update metric point command.
*
* @param \CachetHQ\Cachet\Commands\Metric\UpdateMetricPointCommand $command
*
* @return \CachetHQ\Cachet\Models\MetricPoint
*/
public function handle(UpdateMetricPointCommand $command)
{
$point = $command->point;
$metric = $command->metric;
$createdAt = $command->created_at;
$data = [
'metric_id' => $metric->id,
'value' => $command->value,
];
if ($createdAt) {
$data['created_at'] = $this->dates->create('U', $createdAt)->format('Y-m-d H:i:s');
}
$point->update($data);
event(new MetricPointWasUpdatedEvent($point));
return $point;
}
}

View File

@@ -0,0 +1,43 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Subscriber;
use CachetHQ\Cachet\Commands\Subscriber\SubscribeSubscriberCommand;
use CachetHQ\Cachet\Commands\Subscriber\VerifySubscriberCommand;
use CachetHQ\Cachet\Events\Subscriber\SubscriberHasSubscribedEvent;
use CachetHQ\Cachet\Models\Subscriber;
use Illuminate\Foundation\Bus\DispatchesJobs;
class SubscribeSubscriberCommandHandler
{
use DispatchesJobs;
/**
* Handle the subscribe subscriber command.
*
* @param \CachetHQ\Cachet\Commands\Subscriber\SubscribeSubscriberCommand $command
*
* @return \CachetHQ\Cachet\Models\Subscriber
*/
public function handle(SubscribeSubscriberCommand $command)
{
$subscriber = Subscriber::create(['email' => $command->email]);
if ($command->verified) {
$this->dispatch(new VerifySubscriberCommand($subscriber));
} else {
event(new SubscriberHasSubscribedEvent($subscriber));
}
return $subscriber;
}
}

View File

@@ -0,0 +1,35 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Subscriber;
use CachetHQ\Cachet\Commands\Subscriber\UnsubscribeSubscriberCommand;
use CachetHQ\Cachet\Events\Subscriber\SubscriberHasUnsubscribedEvent;
use CachetHQ\Cachet\Models\Subscriber;
class UnsubscribeSubscriberCommandHandler
{
/**
* Handle the subscribe customer command.
*
* @param \CachetHQ\Cachet\Commands\Subscriber\UnsubscribeSubscriberCommand $command
*
* @return void
*/
public function handle(UnsubscribeSubscriberCommand $command)
{
$subscriber = $command->subscriber;
event(new SubscriberHasUnsubscribedEvent($subscriber));
$subscriber->delete();
}
}

View File

@@ -0,0 +1,37 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\Subscriber;
use CachetHQ\Cachet\Commands\Subscriber\VerifySubscriberCommand;
use CachetHQ\Cachet\Events\Subscriber\SubscriberHasVerifiedEvent;
use CachetHQ\Cachet\Models\Subscriber;
use Carbon\Carbon;
class VerifySubscriberCommandHandler
{
/**
* Handle the subscribe customer command.
*
* @param \CachetHQ\Cachet\Commands\Subscriber\VerifySubscriberCommand $command
*
* @return void
*/
public function handle(VerifySubscriberCommand $command)
{
$subscriber = $command->subscriber;
$subscriber->verified_at = Carbon::now();
$subscriber->save();
event(new SubscriberHasVerifiedEvent($subscriber));
}
}

View File

@@ -0,0 +1,40 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\User;
use CachetHQ\Cachet\Commands\User\AddTeamMemberCommand;
use CachetHQ\Cachet\Events\User\UserWasAddedEvent;
use CachetHQ\Cachet\Models\User;
class AddTeamMemberCommandHandler
{
/**
* Handle the add team member command.
*
* @param \CachetHQ\Cachet\Commands\User\AddTeamMemberCommand $command
*
* @return \CachetHQ\Cachet\Models\User
*/
public function handle(AddTeamMemberCommand $command)
{
$user = User::create([
'username' => $command->username,
'password' => $command->password,
'email' => $command->email,
'level' => $command->level,
]);
event(new UserWasAddedEvent($user));
return $user;
}
}

View File

@@ -0,0 +1,35 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\User;
use CachetHQ\Cachet\Commands\User\GenerateApiTokenCommand;
use CachetHQ\Cachet\Models\User;
class GenerateApiTokenCommandHandler
{
/**
* Handle the generate api key command.
*
* @param \CachetHQ\Cachet\Commands\User\GenerateApiTokenCommand $command
*
* @return void
*/
public function handle(GenerateApiTokenCommand $command)
{
$user = $command->user;
$user->api_key = User::generateApiKey();
$user->save();
//event(new GeneratedApiTokenEvent($user));
}
}

View File

@@ -0,0 +1,37 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\User;
use CachetHQ\Cachet\Commands\User\InviteTeamMemberCommand;
use CachetHQ\Cachet\Events\User\UserWasInvitedEvent;
use CachetHQ\Cachet\Models\Invite;
class InviteTeamMemberCommandHandler
{
/**
* Handle the invite team member command.
*
* @param \CachetHQ\Cachet\Commands\User\InviteTeamMemberCommand $command
*
* @return void
*/
public function handle(InviteTeamMemberCommand $command)
{
foreach ($command->emails as $email) {
$invite = Invite::create([
'email' => $email,
]);
event(new UserWasInvitedEvent($invite));
}
}
}

View File

@@ -0,0 +1,35 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\User;
use CachetHQ\Cachet\Commands\User\RemoveUserCommand;
use CachetHQ\Cachet\Events\User\UserWasRemovedEvent;
use CachetHQ\Cachet\Models\User;
class RemoveUserCommandHandler
{
/**
* Handle the remove user command.
*
* @param \CachetHQ\Cachet\Commands\User\RemoveUserCommand $command
*
* @return void
*/
public function handle(RemoveUserCommand $command)
{
$user = $command->user;
event(new UserWasRemovedEvent($user));
$user->delete();
}
}

View File

@@ -0,0 +1,40 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Commands\User;
use CachetHQ\Cachet\Commands\User\SignupUserCommand;
use CachetHQ\Cachet\Events\User\UserWasAddedEvent;
use CachetHQ\Cachet\Models\User;
class SignupUserCommandHandler
{
/**
* Handle the signup user command.
*
* @param \CachetHQ\Cachet\Commands\User\SignupUserCommand $command
*
* @return \CachetHQ\Cachet\Models\User
*/
public function handle(SignupUserCommand $command)
{
$user = User::create([
'username' => $command->username,
'password' => $command->password,
'email' => $command->email,
'level' => 2,
]);
event(new UserWasAddedEvent($user));
return $user;
}
}

View File

@@ -0,0 +1,90 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Events\Incident;
use CachetHQ\Cachet\Events\Incident\IncidentWasReportedEvent;
use CachetHQ\Cachet\Models\Subscriber;
use Illuminate\Contracts\Mail\MailQueue;
use Illuminate\Mail\Message;
use McCool\LaravelAutoPresenter\Facades\AutoPresenter;
class SendIncidentEmailNotificationHandler
{
/**
* The mailer instance.
*
* @var \Illuminate\Contracts\Mail\Mailer
*/
protected $mailer;
/**
* The subscriber instance.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
protected $subscriber;
/**
* Create a new send incident email notification handler.
*
* @param \Illuminate\Contracts\Mail\Mailer $mailer
* @param \CachetHQ\Cachet\Models\Subscriber $subscriber
*
* @return void
*/
public function __construct(MailQueue $mailer, Subscriber $subscriber)
{
$this->mailer = $mailer;
$this->subscriber = $subscriber;
}
/**
* Handle the event.
*
* @param \CachetHQ\Cachet\Events\Incident\IncidentHasReportedEvent $event
*
* @return void
*/
public function handle(IncidentWasReportedEvent $event)
{
if (!$event->incident->notify) {
return false;
}
$incident = AutoPresenter::decorate($event->incident);
$component = AutoPresenter::decorate($event->incident->component);
// Only send emails for public incidents.
if ($event->incident->visible === 1) {
foreach ($this->subscriber->isVerified()->get() as $subscriber) {
$mail = [
'email' => $subscriber->email,
'subject' => 'New incident reported.',
'has_component' => ($event->incident->component) ? true : false,
'component_name' => $component ? $component->name : null,
'status' => $incident->humanStatus,
'html_content' => $incident->formattedMessage,
'text_content' => $incident->message,
'token' => $subscriber->token,
'unsubscribe_link' => route('subscribe.unsubscribe', ['code' => $subscriber->verify_code]),
];
$this->mailer->queue([
'html' => 'emails.incidents.new-html',
'text' => 'emails.incidents.new-text',
], $mail, function (Message $message) use ($mail) {
$message->to($mail['email'])->subject($mail['subject']);
});
}
}
}
}

View File

@@ -9,13 +9,13 @@
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Events;
namespace CachetHQ\Cachet\Handlers\Events\Incident;
use CachetHQ\Cachet\Events\MaintenanceHasScheduledEvent;
use CachetHQ\Cachet\Events\Incident\MaintenanceWasScheduledEvent;
use CachetHQ\Cachet\Models\Subscriber;
use Illuminate\Contracts\Mail\MailQueue;
use Illuminate\Mail\Message;
use McCool\LaravelAutoPresenter\PresenterDecorator;
use McCool\LaravelAutoPresenter\Facades\AutoPresenter;
class SendMaintenanceEmailNotificationHandler
{
@@ -33,46 +33,45 @@ class SendMaintenanceEmailNotificationHandler
*/
protected $subscriber;
/**
* The presenter instance.
*
* @var \McCool\LaravelAutoPresenter\PresenterDecorator
*/
protected $presenter;
/**
* Create a new send maintenance email notification handler.
*
* @param \Illuminate\Contracts\Mail\Mailer $mailer
* @param \CachetHQ\Cachet\Models\Subscriber $subscriber
* @param \McCool\LaravelAutoPresenter\PresenterDecorator $presenter
* @param \Illuminate\Contracts\Mail\Mailer $mailer
* @param \CachetHQ\Cachet\Models\Subscriber $subscriber
*
* @return void
*/
public function __construct(MailQueue $mailer, Subscriber $subscriber, PresenterDecorator $presenter)
public function __construct(MailQueue $mailer, Subscriber $subscriber)
{
$this->mailer = $mailer;
$this->subscriber = $subscriber;
$this->presenter = $presenter;
}
/**
* Handle the event.
*
* @param \CachetHQ\Cachet\Events\MaintenanceHasScheduledEvent $event
*
* @return void
*/
public function handle(MaintenanceHasScheduledEvent $event)
public function handle(MaintenanceWasScheduledEvent $event)
{
$data = $this->presenter->decorate($event->incident);
if (!$event->incident->notify) {
return false;
}
foreach ($this->subscriber->all() as $subscriber) {
$data = AutoPresenter::decorate($event->incident);
foreach ($this->subscriber->isVerified()->get() as $subscriber) {
$mail = [
'email' => $subscriber->email,
'subject' => 'Scheduled maintenance.',
'status' => $data->humanStatus,
'htmlContent' => $data->formattedMessage,
'textContent' => $data->message,
'token' => $subscriber->token,
'unsubscribeLink' => route('unsubscribe', ['code' => $subscriber->verify_code]),
'appUrl' => env('APP_URL'),
'email' => $subscriber->email,
'subject' => 'Scheduled maintenance.',
'status' => $data->humanStatus,
'html_content' => $data->formattedMessage,
'text_content' => $data->message,
'scheduled_at' => $data->scheduled_at_formatted,
'token' => $subscriber->token,
'unsubscribe_link' => route('subscribe.unsubscribe', ['code' => $subscriber->verify_code]),
];
$this->mailer->queue([

View File

@@ -1,89 +0,0 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Handlers\Events;
use CachetHQ\Cachet\Events\IncidentHasReportedEvent;
use CachetHQ\Cachet\Models\Subscriber;
use Illuminate\Contracts\Mail\MailQueue;
use Illuminate\Mail\Message;
use McCool\LaravelAutoPresenter\PresenterDecorator;
class SendIncidentEmailNotificationHandler
{
/**
* The mailer instance.
*
* @var \Illuminate\Contracts\Mail\Mailer
*/
protected $mailer;
/**
* The subscriber instance.
*
* @var \CachetHQ\Cachet\Models\Subscriber
*/
protected $subscriber;
/**
* The presenter instance.
*
* @var \McCool\LaravelAutoPresenter\PresenterDecorator
*/
protected $presenter;
/**
* Create a new send incident email notification handler.
*
* @param \Illuminate\Contracts\Mail\Mailer $mailer
* @param \CachetHQ\Cachet\Models\Subscriber $subscriber
* @param \McCool\LaravelAutoPresenter\PresenterDecorator $presenter
*/
public function __construct(MailQueue $mailer, Subscriber $subscriber, PresenterDecorator $presenter)
{
$this->mailer = $mailer;
$this->subscriber = $subscriber;
$this->presenter = $presenter;
}
/**
* Handle the event.
*
* @param \CachetHQ\Cachet\Events\IncidentHasReportedEvent $event
*/
public function handle(IncidentHasReportedEvent $event)
{
$data = $this->presenter->decorate($event->incident);
// Only send emails for public incidents.
if ($event->incident->visible === 1) {
foreach ($this->subscriber->all() as $subscriber) {
$mail = [
'email' => $subscriber->email,
'subject' => 'New incident reported.',
'status' => $data->humanStatus,
'htmlContent' => $data->formattedMessage,
'textContent' => $data->message,
'token' => $subscriber->token,
'unsubscribeLink' => route('unsubscribe', ['code' => $subscriber->verify_code]),
'appUrl' => env('APP_URL'),
];
$this->mailer->queue([
'html' => 'emails.incidents.new-html',
'text' => 'emails.incidents.new-text',
], $mail, function (Message $message) use ($mail) {
$message->to($mail['email'])->subject($mail['subject']);
});
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More