#!/usr/bin/php
<?php
// SPDX-FileCopyrightText: 2026 Andreas Itzchak ("Izzy") Rehberg <izzysoft@qumran.org>
// SPDX-License-Identifier: AGPL-3.0-or-later

require_once('class.db_mysql.php');
$configfile = __DIR__ . "/appstats_config.json";

if ( !file_exists($configfile) ) {
  trigger_error("Could not find config file '{$configfile}, exiting.",E_USER_ERROR);
  exit(5);
}
if ( !$config = json_decode(file_get_contents($configfile)) ) {
  trigger_error("Could not read or decode config file '{$configfile}, exiting.",E_USER_ERROR);
  exit(4);
}
if ( ! (file_exists($config->outdir) && is_dir($config->outdir) && is_writable($config->outdir)) ) {
  trigger_error("Configured output directory '" . $config->outdir . "' does not exist, or can not be written to. Exiting.",E_USER_ERROR);
  exit(3);
}

$db = new DB_Sql();
$db->Hostname = $config->dbhost;
$db->Database = $config->database;
$db->User     = $config->dbuser;
$db->Password = $config->dbpass;
$db->connect();
$db->charset('utf8mb4');

// added apps
$csv = "package_name;\"label\";date\n";
$db->query("select packageName,name,added from apps where repoId='iod' order by added desc");
while ( $db->next_record() ) {
  $csv .= $db->f('packageName') . ';"' . addslashes($db->f('name')) . '";' . $db->f('added') . "\n";
}
file_put_contents($config->outdir . '/new_apps.csv', $csv);

// app categories
$json = new stdClass();
$db->query("select packageName,categories from apps where repoId='iod' order by packageName asc");
while ( $db->next_record() ) {
  $json->{$db->f('packageName')} = explode(',',$db->f('categories'));
}
file_put_contents($config->outdir . '/appcategories.json', json_encode($json));

// app names
$json = new stdClass();
$db->query("select packageName,name from apps where repoId='iod' order by name asc");
while ( $db->next_record() ) {
  $json->{$db->f('packageName')} = $db->f('name');
}
file_put_contents($config->outdir . '/appnames.json', json_encode($json));


?>