/**
  * Declares the validation rules.
  */
 public function rules()
 {
     $themes = [];
     foreach (\humhub\components\Theme::getThemes() as $theme) {
         $themes[] = $theme->name;
     }
     return array(array('paginationSize', 'integer', 'max' => 200, 'min' => 1), array('theme', 'in', 'range' => $themes), array(['displayName', 'spaceOrder'], 'safe'), array('logo', 'file', 'extensions' => ['jpg', 'png', 'jpeg'], 'maxSize' => 3 * 1024 * 1024), array('logo', 'dimensionValidation', 'skipOnError' => true), array('dateInputDisplayFormat', 'in', 'range' => ['', 'php:d/m/Y']));
 }
Example #2
0
 /**
  * Rewrites DynamicConfiguration based on Database Stored Settings
  */
 public static function rewrite()
 {
     // Get Current Configuration
     $config = self::load();
     // Add Application Name to Configuration
     $config['name'] = Setting::Get('name');
     // Add Default language
     $defaultLanguage = Setting::Get('defaultLanguage');
     if ($defaultLanguage !== null && $defaultLanguage != "") {
         $config['language'] = Setting::Get('defaultLanguage');
     } else {
         $config['language'] = Yii::$app->language;
     }
     $timeZone = Setting::Get('timeZone');
     if ($timeZone != "") {
         $config['timeZone'] = $timeZone;
         $config['components']['formatter']['defaultTimeZone'] = $timeZone;
         $config['components']['formatterApp']['defaultTimeZone'] = $timeZone;
         $config['components']['formatterApp']['timeZone'] = $timeZone;
     }
     // Add Caching
     $cacheClass = Setting::Get('type', 'cache');
     if (in_array($cacheClass, ['yii\\caching\\DummyCache', 'yii\\caching\\ApcCache', 'yii\\caching\\FileCache'])) {
         $config['components']['cache'] = ['class' => $cacheClass, 'keyPrefix' => Yii::$app->id];
         // Prefix APC Cache Keys
         //if ($cacheClass == 'yii\caching\ApcCache') {
         //    $config['components']['cache'] = [
         //        'keyPrefix' => Yii::$app->id
         //    ];
         //}
     }
     // Add User settings
     $config['components']['user'] = array();
     if (Setting::Get('defaultUserIdleTimeoutSec', 'authentication_internal')) {
         $config['components']['user']['authTimeout'] = Setting::Get('defaultUserIdleTimeoutSec', 'authentication_internal');
     }
     // Install Mail Component
     $mail = [];
     $mail['transport'] = array();
     if (Setting::Get('transportType', 'mailing') == 'smtp') {
         $mail['transport']['class'] = 'Swift_SmtpTransport';
         if (Setting::Get('hostname', 'mailing')) {
             $mail['transport']['host'] = Setting::Get('hostname', 'mailing');
         }
         if (Setting::Get('username', 'mailing')) {
             $mail['transport']['username'] = Setting::Get('username', 'mailing');
         }
         if (Setting::Get('password', 'mailing')) {
             $mail['transport']['password'] = Setting::Get('password', 'mailing');
         }
         if (Setting::Get('encryption', 'mailing')) {
             $mail['transport']['encryption'] = Setting::Get('encryption', 'mailing');
         }
         if (Setting::Get('port', 'mailing')) {
             $mail['transport']['port'] = Setting::Get('port', 'mailing');
         }
         /*
          if (Setting::Get('allowSelfSignedCerts', 'mailing')) {
          $mail['transport']['ssl']['allow_self_signed'] = true;
          $mail['transport']['ssl']['verify_peer'] = false;
          }
         */
     } elseif (Setting::Get('transportType', 'mailing') == 'php') {
         $mail['transport']['class'] = 'Swift_MailTransport';
     } else {
         $mail['useFileTransport'] = true;
     }
     $config['components']['mailer'] = $mail;
     $config = ArrayHelper::merge($config, Theme::getThemeConfig(Setting::Get('theme')));
     $config['params']['config_created_at'] = time();
     foreach (Setting::find()->all() as $setting) {
         self::setSettingValue($config['params'], $setting);
     }
     self::save($config);
 }
Example #3
0
 /**
  * E-Mail Mailing Settings
  */
 public function actionDesign()
 {
     $form = new \humhub\modules\admin\models\forms\DesignSettingsForm();
     #$assetPrefix = Yii::$app->assetManager->publish(dirname(__FILE__) . '/../resources', true, 0, defined('YII_DEBUG'));
     #Yii::$app->clientScript->registerScriptFile($assetPrefix . '/uploadLogo.js');
     if ($form->load(Yii::$app->request->post())) {
         $files = \yii\web\UploadedFile::getInstancesByName('logo');
         if (count($files) != 0) {
             $file = $files[0];
             $form->logo = $file;
         }
         if ($form->validate()) {
             Setting::Set('theme', $form->theme);
             Setting::Set('paginationSize', $form->paginationSize);
             Setting::Set('displayNameFormat', $form->displayName);
             Setting::Set('spaceOrder', $form->spaceOrder, 'space');
             if ($form->logo) {
                 $logoImage = new \humhub\libs\LogoImage();
                 $logoImage->setNew($form->logo);
             }
             // read and save colors from current theme
             \humhub\components\Theme::setColorVariables($form->theme);
             Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved'));
             Yii::$app->response->redirect(Url::toRoute('/admin/setting/design'));
         }
     } else {
         $form->theme = Setting::Get('theme');
         $form->paginationSize = Setting::Get('paginationSize');
         $form->displayName = Setting::Get('displayNameFormat');
         $form->spaceOrder = Setting::Get('spaceOrder', 'space');
     }
     $themes = \humhub\components\Theme::getThemes();
     return $this->render('design', array('model' => $form, 'themes' => $themes, 'logo' => new \humhub\libs\LogoImage()));
 }
 public function up()
 {
     \humhub\components\Theme::setColorVariables(Yii::$app->view->theme->name);
 }
 /**
  * Declares the validation rules.
  */
 public function rules()
 {
     $themes = \humhub\components\Theme::getThemes();
     return array(array('paginationSize', 'integer', 'max' => 200, 'min' => 1), array('theme', 'in', 'range' => $themes), array(['displayName', 'spaceOrder'], 'safe'), array('logo', 'file', 'extensions' => ['jpg', 'png', 'jpeg'], 'maxSize' => 3 * 1024 * 1024), array('logo', 'dimensionValidation', 'skipOnError' => true));
 }
Example #6
0
 public static function bootstrap()
 {
     // Seems database is already initialized
     if (Setting::Get('paginationSize') == 10) {
         return;
     }
     //Yii::$app->search->rebuild();
     Setting::Set('baseUrl', \yii\helpers\BaseUrl::base(true));
     Setting::Set('paginationSize', 10);
     Setting::Set('displayNameFormat', '{profile.firstname} {profile.lastname}');
     // Authentication
     Setting::Set('authInternal', '1', 'authentication');
     Setting::Set('authLdap', '0', 'authentication');
     Setting::Set('refreshUsers', '1', 'authentication_ldap');
     Setting::Set('needApproval', '0', 'authentication_internal');
     Setting::Set('anonymousRegistration', '1', 'authentication_internal');
     Setting::Set('internalUsersCanInvite', '1', 'authentication_internal');
     // Mailing
     Setting::Set('transportType', 'php', 'mailing');
     Setting::Set('systemEmailAddress', '*****@*****.**', 'mailing');
     Setting::Set('systemEmailName', 'My Social Network', 'mailing');
     Setting::Set('receive_email_activities', User::RECEIVE_EMAIL_DAILY_SUMMARY, 'mailing');
     Setting::Set('receive_email_notifications', User::RECEIVE_EMAIL_WHEN_OFFLINE, 'mailing');
     // File
     Setting::Set('maxFileSize', '1048576', 'file');
     Setting::Set('maxPreviewImageWidth', '200', 'file');
     Setting::Set('maxPreviewImageHeight', '200', 'file');
     Setting::Set('hideImageFileInfo', '0', 'file');
     // Caching
     Setting::Set('type', 'CFileCache', 'cache');
     Setting::Set('expireTime', '3600', 'cache');
     Setting::Set('installationId', md5(uniqid("", true)), 'admin');
     // Design
     Setting::Set('theme', "HumHub");
     Setting::Set('spaceOrder', 0, 'space');
     // read and save colors from current theme
     \humhub\components\Theme::setColorVariables('HumHub');
     // Basic
     Setting::Set('enable', 1, 'tour');
     Setting::Set('defaultLanguage', Yii::$app->language);
     // Notification
     Setting::Set('enable_html5_desktop_notifications', 0, 'notification');
     // Add Categories
     $cGeneral = new ProfileFieldCategory();
     $cGeneral->title = "General";
     $cGeneral->sort_order = 100;
     $cGeneral->visibility = 1;
     $cGeneral->is_system = 1;
     $cGeneral->description = '';
     if (!$cGeneral->save()) {
         throw new Exception(print_r($cGeneral->getErrors(), true));
     }
     $cCommunication = new ProfileFieldCategory();
     $cCommunication->title = "Communication";
     $cCommunication->sort_order = 200;
     $cCommunication->visibility = 1;
     $cCommunication->is_system = 1;
     $cCommunication->description = '';
     $cCommunication->save();
     $cSocial = new ProfileFieldCategory();
     $cSocial->title = "Social bookmarks";
     $cSocial->sort_order = 300;
     $cSocial->visibility = 1;
     $cSocial->is_system = 1;
     $cSocial->description = '';
     $cSocial->save();
     // Add Fields
     $field = new ProfileField();
     $field->internal_name = "firstname";
     $field->title = 'Firstname';
     $field->sort_order = 100;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->ldap_attribute = 'givenName';
     $field->is_system = 1;
     $field->required = 1;
     $field->show_at_registration = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 20;
         $field->fieldType->save();
     } else {
         throw new Exception(print_r($field->getErrors(), true));
     }
     $field = new ProfileField();
     $field->internal_name = "lastname";
     $field->title = 'Lastname';
     $field->sort_order = 200;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->ldap_attribute = 'sn';
     $field->show_at_registration = 1;
     $field->required = 1;
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 30;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "title";
     $field->title = 'Title';
     $field->sort_order = 300;
     $field->ldap_attribute = 'title';
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 50;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "gender";
     $field->title = 'Gender';
     $field->sort_order = 300;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = 'ProfileFieldTypeSelect';
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->options = "male=>Male\nfemale=>Female\ncustom=>Custom";
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "street";
     $field->title = 'Street';
     $field->sort_order = 400;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 150;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "zip";
     $field->title = 'Zip';
     $field->sort_order = 500;
     $field->profile_field_category_id = $cGeneral->id;
     $field->is_system = 1;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     if ($field->save()) {
         $field->fieldType->maxLength = 10;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "city";
     $field->title = 'City';
     $field->sort_order = 600;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "country";
     $field->title = 'Country';
     $field->sort_order = 700;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "state";
     $field->title = 'State';
     $field->sort_order = 800;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "birthday";
     $field->title = 'Birthday';
     $field->sort_order = 900;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Birthday::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "about";
     $field->title = 'About';
     $field->sort_order = 900;
     $field->profile_field_category_id = $cGeneral->id;
     $field->field_type_class = 'ProfileFieldTypeTextArea';
     $field->is_system = 1;
     if ($field->save()) {
         #$field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "phone_private";
     $field->title = 'Phone Private';
     $field->sort_order = 100;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "phone_work";
     $field->title = 'Phone Work';
     $field->sort_order = 200;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "mobile";
     $field->title = 'Mobile';
     $field->sort_order = 300;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "fax";
     $field->title = 'Fax';
     $field->sort_order = 400;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "im_skype";
     $field->title = 'Skype Nickname';
     $field->sort_order = 500;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "im_msn";
     $field->title = 'MSN';
     $field->sort_order = 600;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->maxLength = 100;
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "im_icq";
     $field->title = 'ICQ Number';
     $field->sort_order = 700;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = 'ProfileFieldTypeNumber';
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "im_xmpp";
     $field->title = 'XMPP Jabber Address';
     $field->sort_order = 800;
     $field->profile_field_category_id = $cCommunication->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'email';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url";
     $field->title = 'Url';
     $field->sort_order = 100;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_facebook";
     $field->title = 'Facebook URL';
     $field->sort_order = 200;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_linkedin";
     $field->title = 'LinkedIn URL';
     $field->sort_order = 300;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_xing";
     $field->title = 'Xing URL';
     $field->sort_order = 400;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_youtube";
     $field->title = 'Youtube URL';
     $field->sort_order = 500;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_vimeo";
     $field->title = 'Vimeo URL';
     $field->sort_order = 600;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_flickr";
     $field->title = 'Flickr URL';
     $field->sort_order = 700;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_myspace";
     $field->title = 'MySpace URL';
     $field->sort_order = 800;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_googleplus";
     $field->title = 'Google+ URL';
     $field->sort_order = 900;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $field = new ProfileField();
     $field->internal_name = "url_twitter";
     $field->title = 'Twitter URL';
     $field->sort_order = 1000;
     $field->profile_field_category_id = $cSocial->id;
     $field->field_type_class = \humhub\modules\user\models\fieldtype\Text::className();
     $field->is_system = 1;
     if ($field->save()) {
         $field->fieldType->validator = 'url';
         $field->fieldType->save();
     }
     $group = new Group();
     $group->name = "Users";
     $group->description = "Example Group by Installer";
     $group->save();
 }
 /**
  * E-Mail Mailing Settings
  */
 public function actionDesign()
 {
     $form = new \humhub\modules\admin\models\forms\DesignSettingsForm();
     $form->theme = Setting::Get('theme');
     $form->paginationSize = Setting::Get('paginationSize');
     $form->displayName = Setting::Get('displayNameFormat');
     $form->spaceOrder = Setting::Get('spaceOrder', 'space');
     if ($form->load(Yii::$app->request->post())) {
         $files = \yii\web\UploadedFile::getInstancesByName('logo');
         if (count($files) != 0) {
             $file = $files[0];
             $form->logo = $file;
         }
         if ($form->validate()) {
             Setting::Set('theme', $form->theme);
             Setting::Set('paginationSize', $form->paginationSize);
             Setting::Set('displayNameFormat', $form->displayName);
             Setting::Set('spaceOrder', $form->spaceOrder, 'space');
             if ($form->logo) {
                 $logoImage = new \humhub\libs\LogoImage();
                 $logoImage->setNew($form->logo);
             }
             // read and save colors from current theme
             \humhub\components\Theme::setColorVariables($form->theme);
             DynamicConfig::rewrite();
             Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved'));
             Yii::$app->response->redirect(Url::toRoute('/admin/setting/design'));
         }
     }
     $themes = [];
     foreach (\humhub\components\Theme::getThemes() as $theme) {
         $themes[$theme->name] = $theme->name;
     }
     return $this->render('design', array('model' => $form, 'themes' => $themes, 'logo' => new \humhub\libs\LogoImage()));
 }
 /**
  * Saves the form
  * 
  * @return boolean
  */
 public function save()
 {
     $settingsManager = Yii::$app->settings;
     $settingsManager->set('theme', $this->theme);
     \humhub\components\Theme::setColorVariables($this->theme);
     $settingsManager->set('paginationSize', $this->paginationSize);
     $settingsManager->set('displayNameFormat', $this->displayName);
     Yii::$app->getModule('space')->settings->set('spaceOrder', $this->spaceOrder);
     Yii::$app->getModule('admin')->settings->set('defaultDateInputFormat', $this->dateInputDisplayFormat);
     $settingsManager->set('horImageScrollOnMobile', $this->horImageScrollOnMobile);
     if ($this->logo) {
         $logoImage = new \humhub\libs\LogoImage();
         $logoImage->setNew($this->logo);
     }
     \humhub\libs\DynamicConfig::rewrite();
     return true;
 }