Files
thetempusproject/app/classes/database_model.php
Joey Kimsey d7e8b586d7 various updates
remove dependence on jQuery
add image delete
Admin ui fix for mobile
image updates to new style
update comments
2025-02-05 06:36:29 -05:00

145 lines
4.4 KiB
PHP

<?php
/**
* app/classes/database_model.php
*
* This is the main TempusProject database model.
*
* @version 5.0.1
* @author Joey Kimsey <Joey@thetempusproject.com>
* @link https://TheTempusProject.com
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
*/
namespace TheTempusProject\Classes;
use TheTempusProject\Bedrock\Classes\DatabaseModel as BedrockDatabaseModel;
use TheTempusProject\Bedrock\Functions\Check;
use TheTempusProject\Canary\Bin\Canary as Debug;
use TheTempusProject\Models\Log;
class DatabaseModel extends BedrockDatabaseModel {
public $preferenceMatrix;
public $permissionMatrix;
public static $installFlags = MODEL_INSTALL_FLAGS;
protected static $user;
protected static $log;
protected static $group;
protected static $session;
protected static $message;
protected static $routes;
public function __construct() {
parent::__construct();
}
public function uninstall() {
Debug::log( 'Uninstalling Model: ' . get_class($this) );
parent::uninstall();
$this->uninstallPreferences();
$this->uninstallPermissions();
return true;
}
public function installPreferences() {
if ( empty( $this->preferenceMatrix ) ) {
Debug::log( 'preferenceMatrix is empty' );
return true;
}
$prefs = new Preferences();
foreach ( $this->preferenceMatrix as $name => $details ) {
$prefs->add( $name, $details );
}
return $prefs->save( true );
}
public function uninstallPreferences() {
if ( empty( $this->preferenceMatrix ) ) {
Debug::log( 'preferenceMatrix is empty' );
return true;
}
$prefs = new Preferences();
foreach ( $this->preferenceMatrix as $name => $details ) {
$prefs->remove( $name, true );
}
}
public function installPermissions() {
if ( empty( $this->permissionMatrix ) ) {
Debug::log( 'permissionMatrix is empty' );
return true;
}
$perms = new Permissions();
foreach ( $this->permissionMatrix as $name => $details ) {
$perms->add( $name, $details );
}
return $perms->save( true );
}
public function uninstallPermissions() {
$perms = new Permissions();
if ( empty( $this->permissionMatrix ) ) {
Debug::log( 'permissionMatrix is empty' );
return true;
}
foreach ( $this->permissionMatrix as $name => $details ) {
$perms->remove( $name, true );
}
}
public function delete( $idArray ) {
if ( empty( self::$log ) ) {
self::$log = new Log;
}
if ( !is_array( $idArray ) ) {
$idArray = [ $idArray ];
}
foreach ( $idArray as $id ) {
if ( !Check::id( $id ) ) {
Debug::info( "invalid ID: $id." );
$error = true;
continue;
}
$result = parent::delete( $id );
if ( true !== $result ) {
Debug::info( ucfirst( $this->tableName ) . " did not delete properly: $id" );
$error = true;
continue;
}
self::$log->admin( 'Deleted ' . ucfirst( $this->tableName ) . ": $id" );
Debug::info( ucfirst( $this->tableName ) . " successfully deleted: $id" );
}
if ( !empty( $error ) ) {
Debug::error( 'One or more rows were not deleted.' );
return false;
}
return true;
}
public function install( $options ) {
Debug::log( 'Installing Database Model');
$module_data = [];
$errors = [];
foreach ( self::$installFlags as $flag_name ) {
if ( empty( $options[$flag_name] ) ) {
continue;
}
$result = $this->$flag_name();
if ( empty( $result ) ) {
$errors[] = ['errorInfo' => get_class($this) . " Failed to execute $flag_name properly."];
$module_data[ $flag_name ] = INSTALL_STATUS_FAIL;
continue;
}
if ( 'installResources' === $flag_name ) {
$module_data['installedResources'] = $result;
}
$module_data[ $flag_name ] = INSTALL_STATUS_SUCCESS;
continue;
}
return [ $module_data, $errors ];
}
}