Merge branch 'main' into joeykimsey-com

This commit is contained in:
Joey Kimsey
2025-01-26 15:15:06 -05:00
7 changed files with 51 additions and 14 deletions

View File

@ -35,7 +35,7 @@ class Config extends BedrockConfig {
case 'radio': case 'radio':
case 'bool': case 'bool':
case 'boolean': case 'boolean':
$fieldHtml = Forms::getSwitchHtml( $fieldname, [ 'true', 'false' ], $node['value'] ); $fieldHtml = Forms::getSwitchHtml( $fieldname, $node['value'] );
break; break;
case 'select': case 'select':
$fieldHtml = Forms::getSelectHtml( $fieldname, $options, $node['value'] ); $fieldHtml = Forms::getSelectHtml( $fieldname, $options, $node['value'] );

View File

@ -19,6 +19,7 @@ use TheTempusProject\Bedrock\Functions\Check;
use TheTempusProject\Bedrock\Functions\Upload; use TheTempusProject\Bedrock\Functions\Upload;
use TheTempusProject\Bedrock\Functions\Input; use TheTempusProject\Bedrock\Functions\Input;
use TheTempusProject\TheTempusProject as App; use TheTempusProject\TheTempusProject as App;
use TheTempusProject\Bedrock\Classes\Config;
class Preferences { class Preferences {
public static $preferences = false; public static $preferences = false;
@ -208,6 +209,15 @@ class Preferences {
if ( $tempPrefsArray['type'] == 'checkbox' ) { if ( $tempPrefsArray['type'] == 'checkbox' ) {
$tempPrefsArray['type'] = 'switch'; $tempPrefsArray['type'] = 'switch';
} }
if ( 'file' === $tempPrefsArray['type'] ) {
// dv( Config::getValue( 'uploads/images' ) );
if ( ! Config::getValue( 'uploads/images' ) ) {
Debug::info( 'Preference hidden because uploads are disabled.' );
continue;
}
}
$inputTypes[ $tempPrefsArray['type'] ][] = self::getFormFieldHtml( $name, $tempPrefsArray['pretty'], $tempPrefsArray['type'], $tempPrefsArray['value'], $tempPrefsArray['options'] ); $inputTypes[ $tempPrefsArray['type'] ][] = self::getFormFieldHtml( $name, $tempPrefsArray['pretty'], $tempPrefsArray['type'], $tempPrefsArray['value'], $tempPrefsArray['options'] );
} }
foreach ( $inputTypes as $skip => $items ) { foreach ( $inputTypes as $skip => $items ) {
@ -295,6 +305,7 @@ class Preferences {
$prefsArray[$name] = $route . Upload::last(); $prefsArray[$name] = $route . Upload::last();
} else { } else {
Issues::add( 'error', [ 'There was an error with your upload.' => Check::userErrors() ] ); Issues::add( 'error', [ 'There was an error with your upload.' => Check::userErrors() ] );
unset( $prefsArray[$name] );
} }
} }
} }

View File

@ -18,6 +18,7 @@ use TheTempusProject\Houdini\Classes\Issues;
use TheTempusProject\Houdini\Classes\Views; use TheTempusProject\Houdini\Classes\Views;
use TheTempusProject\Models\User; use TheTempusProject\Models\User;
use TheTempusProject\Models\Subscribe; use TheTempusProject\Models\Subscribe;
use TheTempusProject\Plugins\Subscribe as Plugin;
class SendMail extends AdminController { class SendMail extends AdminController {
public static $user; public static $user;
@ -27,10 +28,24 @@ class SendMail extends AdminController {
parent::__construct(); parent::__construct();
self::$title = 'Admin - Send Mail'; self::$title = 'Admin - Send Mail';
self::$user = new User; self::$user = new User;
if ( class_exists( 'TheTempusProject\Plugins\Subscribe' ) ) {
$plugin = new Plugin;
if ( ! $plugin->checkEnabled() ) {
Issues::add( 'notice', 'Subscriptions are disabled so those feature will be unavailable.' );
} else {
self::$subscribe = new Subscribe; self::$subscribe = new Subscribe;
} }
} else {
Issues::add( 'notice', 'Subscriptions plugin is not installed so those feature will be unavailable.' );
}
}
private function emailSubscribers( $params ) { private function emailSubscribers( $params ) {
if ( empty( self::$subscribe ) ) {
Issues::add( 'error', 'Subscriptions plugin is unavailable' );
return;
}
$list = self::$subscribe->list(); $list = self::$subscribe->list();
if ( empty( $list ) ) { if ( empty( $list ) ) {
Issues::add( 'error', 'No subscribers found' ); Issues::add( 'error', 'No subscribers found' );

View File

@ -24,6 +24,7 @@ use TheTempusProject\Houdini\Classes\Views;
use TheTempusProject\TheTempusProject as App; use TheTempusProject\TheTempusProject as App;
use TheTempusProject\Classes\Controller; use TheTempusProject\Classes\Controller;
use TheTempusProject\Classes\Forms; use TheTempusProject\Classes\Forms;
use TheTempusProject\Bedrock\Classes\Config;
class Register extends Controller { class Register extends Controller {
public function confirm( $code = null ) { public function confirm( $code = null ) {
@ -46,6 +47,11 @@ class Register extends Controller {
public function index() { public function index() {
self::$title = '{SITENAME} Sign Up'; self::$title = '{SITENAME} Sign Up';
self::$pageDescription = 'Many features of {SITENAME} are disabled or hidden from unregistered users. On this page you can sign up for an account to access all the app has to offer.'; self::$pageDescription = 'Many features of {SITENAME} are disabled or hidden from unregistered users. On this page you can sign up for an account to access all the app has to offer.';
if ( ! Config::getValue( 'main/registrationEnabled' ) ) {
return Issues::add( 'notice', 'The site administrator has disable the ability to register a new account.' );
}
Components::set( 'TERMS', Views::simpleView( 'terms' ) ); Components::set( 'TERMS', Views::simpleView( 'terms' ) );
if ( App::$isLoggedIn ) { if ( App::$isLoggedIn ) {
return Issues::add( 'notice', 'You are currently logged in.' ); return Issues::add( 'notice', 'You are currently logged in.' );

View File

@ -101,15 +101,17 @@ class Usercp extends Controller {
$menu = Views::simpleView( 'nav.usercp', App::$userCPlinks ); $menu = Views::simpleView( 'nav.usercp', App::$userCPlinks );
Navigation::activePageSelect( $menu, null, true, true ); Navigation::activePageSelect( $menu, null, true, true );
$prefs = new Preferences; $prefs = new Preferences;
$fields = App::$activePrefs; $userPrefs = App::$activePrefs;
if ( Input::exists( 'submit' ) ) { if ( Input::exists( 'submit' ) ) {
$fields = $prefs->convertFormToArray( true, false ); $fields = $prefs->convertFormToArray( true, false );
// @TODO now i may need to rework the form checker to work with this....
// if (!Forms::check('userPrefs')) {
// Issues::add( 'error', [ 'There was an error with your request.' => Check::userErrors() ] );
// }
self::$user->updatePrefs( $fields, App::$activeUser->ID ); self::$user->updatePrefs( $fields, App::$activeUser->ID );
Issues::add( 'success', 'Your preferences have been updated.' ); Issues::add( 'success', 'Your preferences have been updated.' );
// if the image upload fails, need to fall back on original
if ( empty( $fields['avatar'] ) ) {
$fields['avatar'] = $userPrefs['avatar'];
}
} else {
$fields = $userPrefs;
} }
Components::set( 'AVATAR_SETTINGS', $fields['avatar'] ); Components::set( 'AVATAR_SETTINGS', $fields['avatar'] );
Components::set( 'PREFERENCES_FORM', $prefs->getFormHtml( $fields ) ); Components::set( 'PREFERENCES_FORM', $prefs->getFormHtml( $fields ) );

View File

@ -3,7 +3,7 @@
<hr> <hr>
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="col-md-6">
<form action="" method="post" class=""> <form action="" method="post" class="" enctype="multipart/form-data">
<fieldset> <fieldset>
{PREFERENCES_FORM} {PREFERENCES_FORM}
</fieldset> </fieldset>

View File

@ -287,6 +287,11 @@ class TheTempusProject extends Bedrock {
"pretty" => "Enable CSRF Token for all forms.", "pretty" => "Enable CSRF Token for all forms.",
"default" => true "default" => true
], ],
"registrationEnabled" => [
"type" => "radio",
"pretty" => "Allow new users to register an account.",
"default" => true
],
"loginLimit" => [ "loginLimit" => [
"type" => "text", "type" => "text",
"pretty" => "Maximum Login Attempts per hour", "pretty" => "Maximum Login Attempts per hour",
@ -300,17 +305,15 @@ class TheTempusProject extends Bedrock {
], ],
"uploads" => [ "uploads" => [
"images" => [ "images" => [
"type"=> "radio", "type" => "radio",
"pretty"=> "Upload Images Enabled", "pretty" => "Upload Images Enabled",
"default"=> true, "default" => true,
"protected"=> true, "value" => true,
"value"=> true,
], ],
"maxImageSize"=> [ "maxImageSize"=> [
"type" => "text", "type" => "text",
"pretty" => "Maximum size for image uploads", "pretty" => "Maximum size for image uploads",
"default" => 500000, "default" => 500000,
"protected" => true,
"value" => 500000, "value" => 500000,
] ]
], ],