feat: add videodb media index with Docker stack
- Add videodb PHP/MySQL media collection manager (Blu-ray, DVD, CD) - Dockerfile: PHP 8.1 + Apache with GD/mysqli/exif extensions - docker-compose.yml: app on port 6761 + MySQL 8.0 with health checks - docker-entrypoint.sh: auto-generates config.inc.php from env vars, waits for MySQL, initializes DB schema idempotently - init-db.php: CLI schema installer using app's own prefix_query() logic - Persistent volumes for DB, cache, and cover images Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
160
videodb/setup.php
Normal file
160
videodb/setup.php
Normal file
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
/**
|
||||
* Setup page
|
||||
*
|
||||
* Handles saving of the various config options.
|
||||
*
|
||||
* @package Setup
|
||||
* @author Andreas Gohr <a.gohr@web.de>
|
||||
* @author Andreas Götz <cpuidle@gmx.de>
|
||||
* @version $Id: setup.php,v 2.50 2013/03/10 16:22:22 andig2 Exp $
|
||||
*/
|
||||
|
||||
require_once './core/functions.php';
|
||||
require_once './core/setup.core.php';
|
||||
|
||||
localnet_or_die();
|
||||
permission_or_die(PERM_ADMIN);
|
||||
|
||||
/**
|
||||
* input
|
||||
*/
|
||||
$quicksave = req_int('quicksave');
|
||||
$save = req_int('save');
|
||||
$cacheempty = req_int('cacheempty');
|
||||
$enginedefault = req_string('enginedefault');
|
||||
// all other input are within `if ((quick)save) foreach {}`
|
||||
|
||||
/*
|
||||
* Note:
|
||||
*
|
||||
* for administrators, the profile settings will override generic setup
|
||||
*/
|
||||
if ($quicksave)
|
||||
{
|
||||
// insert data
|
||||
foreach ($SETUP_QUICK as $opt)
|
||||
{
|
||||
$val = req_string($opt);
|
||||
$SQL = 'REPLACE INTO '.TBL_CONFIG." (opt, value) VALUES ('$opt', '" . escapeSQL($val) . "')";
|
||||
runSQL($SQL);
|
||||
}
|
||||
|
||||
// make sure no artifacts
|
||||
$smarty->clearCache('list.tpl');
|
||||
|
||||
// reload config
|
||||
load_config(true);
|
||||
}
|
||||
// save data
|
||||
elseif ($save)
|
||||
{
|
||||
// add dynamic config options for saving
|
||||
setup_additionalSettings();
|
||||
|
||||
// insert data
|
||||
foreach ($SETUP_GLOBAL as $opt)
|
||||
{
|
||||
$val = req_string($opt);
|
||||
if ($opt == 'languageflags') {
|
||||
// convert languages array back into string
|
||||
$val = @join('::', req_array('languages'));
|
||||
}
|
||||
if ($opt == 'adultgenres') {
|
||||
// convert languages array back into string
|
||||
$val = @join('::', req_array('adultgenres'));
|
||||
}
|
||||
if ($opt == 'listcolumns') {
|
||||
// save for loading into session
|
||||
$listcolumns = $val;
|
||||
}
|
||||
if ($opt == 'showtv') {
|
||||
// save for loading into session
|
||||
$showtv = $val;
|
||||
}
|
||||
|
||||
$SQL = 'REPLACE INTO '.TBL_CONFIG." (opt, value) VALUES ('$opt', '" . escapeSQL($val) . "')";
|
||||
runSQL($SQL);
|
||||
}
|
||||
|
||||
$config['engine'] = array();
|
||||
foreach ($config['engines'] as $engine => $meta)
|
||||
{
|
||||
$opt = 'engine'.$engine;
|
||||
$val = req_int($opt);
|
||||
// make sure default engine ist active
|
||||
if (!empty($enginedefault) && $engine == $enginedefault) $val = 1;
|
||||
|
||||
$SQL = 'REPLACE INTO '.TBL_CONFIG." (opt, value) VALUES ('$opt', '" . escapeSQL($val) . "')";
|
||||
runSQL($SQL);
|
||||
|
||||
// mark engine as available
|
||||
$config['engine'][$engine] = $val;
|
||||
|
||||
// add meta-engine if enabled
|
||||
if ($val) engine_setup_meta($engine, $meta);
|
||||
}
|
||||
|
||||
// update session variables
|
||||
update_session();
|
||||
|
||||
// remove user-specific config options
|
||||
$user_id = get_current_user_id();
|
||||
if (!empty($user_id))
|
||||
{
|
||||
$SQL = "DELETE FROM ".TBL_USERCONFIG." WHERE user_id = '".escapeSQL($user_id)."'";
|
||||
runSQL($SQL);
|
||||
}
|
||||
|
||||
// make sure no artifacts
|
||||
$smarty->clearCache('list.tpl');
|
||||
|
||||
// reload config
|
||||
load_config(true);
|
||||
}
|
||||
|
||||
// set default engine to imdb if not set
|
||||
if (empty($config['enginedefault']))
|
||||
{
|
||||
$config['enginedefault'] = 'imdb';
|
||||
}
|
||||
|
||||
// check permissions again - they may have changed
|
||||
if (!check_permission(PERM_ADMIN))
|
||||
{
|
||||
redirect('login.php');
|
||||
}
|
||||
|
||||
// destroy cookies if required
|
||||
if ($_COOKIE['VDBusername'] && !$config['multiuser'])
|
||||
{
|
||||
setcookie('VDBpassword', '', time()-7200);
|
||||
setcookie('VDBusername', '', time()-7200);
|
||||
setcookie('VDBuserid', '', time()-7200);
|
||||
}
|
||||
|
||||
// cache maintenance
|
||||
if ($cacheempty)
|
||||
{
|
||||
// clear thumbnail cache
|
||||
runSQL('DELETE FROM '.TBL_CACHE);
|
||||
|
||||
// clean HTTP cache
|
||||
cache_prune_folders(CACHE.'/'.CACHE_HTML.'/', 0, true, false, '*', (int) $config['hierarchical']);
|
||||
|
||||
// clean Smarty as well
|
||||
$smarty->clearAllCache();
|
||||
}
|
||||
|
||||
// prepare options
|
||||
$setup = setup_mkOptions(false);
|
||||
|
||||
// prepare templates
|
||||
tpl_page('configview');
|
||||
|
||||
$smarty->assign('setup', $setup);
|
||||
$smarty->assign('cacheclear', $cacheempty);
|
||||
|
||||
// display templates
|
||||
tpl_display('setup.tpl');
|
||||
|
||||
Reference in New Issue
Block a user