PageRenderTime 40ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/concrete/controllers/single_page/dashboard/system/conversations/settings.php

https://gitlab.com/koodersmiikka/operaatio-terveys
PHP | 109 lines | 99 code | 9 blank | 1 comment | 12 complexity | 8209ba6ce77b238a6d3eba25b90d75ef MD5 | raw file
  1. <?php
  2. namespace Concrete\Controller\SinglePage\Dashboard\System\Conversations;
  3. use Concrete\Core\Conversation\Conversation;
  4. use Concrete\Core\Page\Controller\DashboardPageController;
  5. use Core;
  6. class Settings extends DashboardPageController
  7. {
  8. public function view()
  9. {
  10. $config = Core::make('config');
  11. $helperFile = Core::make('helper/concrete/file');
  12. $fileAccessFileTypes = $config->get('conversations.files.allowed_types');
  13. //is nothing's been defined, display the constant value
  14. if (!$fileAccessFileTypes) {
  15. $fileAccessFileTypes = $helperFile->unserializeUploadFileExtensions($config->get('concrete.upload.extensions'));
  16. } else {
  17. $fileAccessFileTypes = $helperFile->unserializeUploadFileExtensions($fileAccessFileTypes);
  18. }
  19. $this->set('file_access_file_types', $fileAccessFileTypes);
  20. $this->set('maxFileSizeGuest', $config->get('conversations.files.guest.max_size'));
  21. $this->set('maxFileSizeRegistered', $config->get('conversations.files.registered.max_size'));
  22. $this->set('maxFilesGuest', $config->get('conversations.files.guest.max'));
  23. $this->set('maxFilesRegistered', $config->get('conversations.files.registered.max'));
  24. $this->set('fileExtensions', implode(',', $fileAccessFileTypes));
  25. $this->set('attachmentsEnabled', intval($config->get('conversations.attachments_enabled')));
  26. $this->loadEditors();
  27. $this->set('notificationUsers', Conversation::getDefaultSubscribedUsers());
  28. $this->set('subscriptionEnabled', intval($config->get('conversations.subscription_enabled')));
  29. }
  30. protected function loadEditors()
  31. {
  32. $db = Core::make('Concrete\Core\Database\Connection\Connection');
  33. $q = $db->executeQuery('SELECT * FROM ConversationEditors');
  34. $editors = array();
  35. $active = false;
  36. while ($row = $q->fetch()) {
  37. if ($row['cnvEditorIsActive'] == 1) {
  38. $active = $row['cnvEditorHandle'];
  39. }
  40. $editors[$row['cnvEditorHandle']] = tc('ConversationEditorName', $row['cnvEditorName']);
  41. }
  42. $q->closeCursor();
  43. if (!$active) {
  44. $active = array_pop(array_reverse($editors));
  45. }
  46. $this->set('active', $active);
  47. $this->set('editors', $editors);
  48. $this->editors = $editors;
  49. }
  50. protected function saveEditors()
  51. {
  52. $this->loadEditors();
  53. $active = $this->post('activeEditor');
  54. $db = Core::make('Concrete\Core\Database\Connection\Connection');
  55. if (!isset($this->editors[$active])) {
  56. $this->redirect('/dashboard/system/conversations/editor/error');
  57. return;
  58. }
  59. $db->executeQuery('UPDATE ConversationEditors SET cnvEditorIsActive=0');
  60. $db->executeQuery('UPDATE ConversationEditors SET cnvEditorIsActive=1 WHERE cnvEditorHandle=?', array($active));
  61. }
  62. public function success()
  63. {
  64. $this->view();
  65. $this->set('message', t('Updated conversations settings.'));
  66. }
  67. public function save()
  68. {
  69. $config = Core::make('config');
  70. if (Core::make('token')->validate('conversations.settings.save')) {
  71. $helper_file = Core::make('helper/concrete/file');
  72. $config->save('conversations.files.guest.max_size', intval($this->post('maxFileSizeGuest')));
  73. $config->save('conversations.files.registered.max_size', intval($this->post('maxFileSizeRegistered')));
  74. $config->save('conversations.files.guest.max', intval($this->post('maxFilesGuest')));
  75. $config->save('conversations.files.registered.max', intval($this->post('maxFilesRegistered')));
  76. $config->save('conversations.attachments_enabled', !!$this->post('attachmentsEnabled'));
  77. $config->save('conversations.subscription_enabled', !!$this->post('subscriptionEnabled'));
  78. $users = array();
  79. if (is_array($this->post('defaultUsers'))) {
  80. foreach ($this->post('defaultUsers') as $uID) {
  81. $ui = \UserInfo::getByID($uID);
  82. if (is_object($ui)) {
  83. $users[] = $ui;
  84. }
  85. }
  86. }
  87. Conversation::setDefaultSubscribedUsers($users);
  88. if ($this->post('fileExtensions')) {
  89. $types = preg_split('{,}', $this->post('fileExtensions'), null, PREG_SPLIT_NO_EMPTY);
  90. $types = $helper_file->serializeUploadFileExtensions($types);
  91. $config->save('conversations.files.allowed_types', $types);
  92. }
  93. $this->saveEditors();
  94. $this->success();
  95. } else {
  96. $this->error->add('Invalid Token.');
  97. $this->view();
  98. }
  99. }
  100. }