<?php
/**
 * One-shot installer Assemblaggi.
 * Browser (www-data): http://…/install_assemblaggi_once.php
 * Force postupdate:     ?force=1
 */
$root = '/var/www/html/vte23083_2711';
$src = '/var/www/html/docs/analisi-moduli-vte/assemblaggi/modulo';
$dst = $root . '/modules/Assemblaggi';

chdir($root);
@ini_set('display_errors', '1');
error_reporting(E_ALL);

if (php_sapi_name() !== 'cli') {
	header('Content-Type: text/plain; charset=UTF-8');
}

if (!is_dir($src)) {
	echo "Sorgente mancante: {$src}\n";
	exit(1);
}

$force = (php_sapi_name() === 'cli')
	? in_array('--force', $argv ?? [], true)
	: (isset($_GET['force']) && $_GET['force'] === '1');

require_once $root . '/config.inc.php';
require_once $root . '/include/utils/utils.php';
require_once $root . '/vtlib/Vtiger/Module.php';
require_once $root . '/vtlib/Vtiger/Package.php';

$exists = (bool) Vtiger_Module::getInstance('Assemblaggi');
if ($exists && !$force) {
	echo "Assemblaggi già installato. Usa --force / ?force=1 per aggiornare file + install.php.\n";
	exit(0);
}

if (!is_dir($dst)) {
	if (!@mkdir($dst, 0775, true) && !is_dir($dst)) {
		echo "Impossibile creare {$dst}. Esegui come www-data o con sudo.\n";
		exit(1);
	}
}

$iterator = new RecursiveIteratorIterator(
	new RecursiveDirectoryIterator($src, FilesystemIterator::SKIP_DOTS),
	RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $item) {
	$target = $dst . DIRECTORY_SEPARATOR . $iterator->getSubPathName();
	if ($item->isDir()) {
		if (!is_dir($target)) {
			mkdir($target, 0775, true);
		}
	} else {
		copy($item->getPathname(), $target);
	}
}
echo "File copiati in {$dst}\n";

if (!$exists) {
	$manifest = $dst . '/manifest.xml';
	if (!is_file($manifest) && is_file($manifest . '.installed')) {
		rename($manifest . '.installed', $manifest);
	}
	$package = new Vtiger_Package();
	$package->importByManifest('Assemblaggi');
	echo "importByManifest eseguito.\n";
} else {
	echo "Modulo già in tab: eseguo install.php (postupdate).\n";
	include_once $dst . '/install.php';
}

$mod = Vtiger_Module::getInstance('Assemblaggi');
echo $mod ? "OK tabid={$mod->id} name={$mod->name}\n" : "ERRORE: modulo non in vte_tab\n";
echo "DONE\n";
