diff --git a/server/core.php b/server/core.php index d42a632..306c88f 100644 --- a/server/core.php +++ b/server/core.php @@ -509,7 +509,11 @@ class translations{ public $filename = ""; public function client_languages() { - $client_languages = $_SERVER['HTTP_ACCEPT_LANGUAGE']; + if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ + $client_languages = $_SERVER['HTTP_ACCEPT_LANGUAGE']; + } else { + $client_languages = "en-US;q=0.5,en;q=0.3"; + } if(strpos($client_languages, ';') == false){ if(strpos($client_languages, '-') !== false){ return [substr($client_languages, 0, 5)]; diff --git a/server/cron.php b/server/cron.php new file mode 100644 index 0000000..228d35e --- /dev/null +++ b/server/cron.php @@ -0,0 +1,88 @@ + $errNo, + "error" => $errMsg, + "file" => $file, + "line" => $line + ]; + $output_status = "error"; +} +error_reporting(-1); +set_error_handler('customErrorHandler'); + +list($cronJobDay, $cronJobTime) = explode(";", $database->getOption("cron_job_time")); + +$execDateTime = new stdClass(); +$execDateTime->day = date('d'); +$execDateTime->month = date('m'); +$execDateTime->year = date("Y"); +$execDateTime->hour = date('H'); +$execDateTime->minutes = date('i'); + +$cronJobDateTime = new stdClass(); +$cronJobDateTime->day = $cronJobDay; +$cronJobDateTime->month = date('m'); +$cronJobDateTime->year = date("Y"); +$cronJobDateTime->hour = explode(":", $cronJobTime)[0]; +$cronJobDateTime->minutes = explode(":", $cronJobTime)[1]; + +$start = $database->getOption("cron_job_enabled") && isset($_POST['cron']) && $_POST['cron'] == "cron_job-".$database->getOption("cron_job_code"); +$start_reset = $execDateTime == $cronJobDateTime; + +$action = "Availability Minutes "; +if($start){ + if($start_reset){ + $action .= "reset and "; + $sql = "SELECT * FROM `%PREFIX%_profiles` WHERE `available` = 1 "; + $profiles = $database->exec($sql, true); + if(count($profiles) > 0){ + $list = []; + foreach($profiles as $profile){ + $list[] = [$profile["id"] => $profile["minuti_dispo"]]; + } + $database->exec("INSERT INTO `%PREFIX%_minuti` (`id`, `mese`, `anno`, `list`) VALUES (NULL, :month, :year, :list)",false,[":month" => $execDateTime->month,":year" => $execDateTime->year,":list"=>json_encode($list)]); + $database->exec("UPDATE %PREFIX%_profiles SET minuti_dispo = 0"); + } + } + $action .= "update"; + + $sql = "SELECT * FROM `%PREFIX%_profiles` WHERE `available` = 1 "; + $profiles = $database->exec($sql, true); + if(count($profiles) > 0){ + $output = []; + $output[] = $profiles; + $output_status = "ok"; + $queries = []; + foreach ($profiles as $row) { + $value = (int)$row["minuti_dispo"]+5; + $id = $row["id"]; + $increment[$id] = $value; + $database->exec("UPDATE %PREFIX%_profiles SET minuti_dispo = :value WHERE id = :id", true, [":value" => $value, ":id" => $id]); + $tmp = $id . " - " . $value . " "; + $tmp .= count($database->stmt->rowCount()) == 1 ? "success" : "fail"; + $queries[] = $tmp; + } + $output[] = $queries; + } else { + $output = ["profiles array empty"]; + $output_status = "ok"; + } +} + +echo(json_encode([ + "start" => $start, + "start_reset" => $start_reset, + "execDateTime" => $execDateTime, + "cronJobDateTime" => $cronJobDateTime, + "action" => $action, + "output" => [ + "status" => $output_status, + "message" => $output + ] +])); \ No newline at end of file diff --git a/server/install/installHelper.php b/server/install/installHelper.php index f02358b..2ad4ce7 100644 --- a/server/install/installHelper.php +++ b/server/install/installHelper.php @@ -231,11 +231,9 @@ PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `".$prefix."_minuti` ( `id` int(11) NOT NULL AUTO_INCREMENT, -`mese` enum('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre') NOT NULL, -`anno` varchar(4) NOT NULL, +`mese` int(2) NOT NULL, +`anno` int(2) NOT NULL, `list` mediumtext NOT NULL, -`a1` mediumtext NOT NULL, -`a2` mediumtext NOT NULL, PRIMARY KEY (`id`) )ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `".$prefix."_tipo` ( @@ -406,23 +404,26 @@ function initOptions($name, $visible, $password, $report_email, $owner){ $option_check_cf_ip = empty($_SERVER['HTTP_CF_CONNECTING_IP']) ? "INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('11', 'check_cf_ip', 1, '1', current_timestamp(), current_timestamp(), '1');" : "INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('10', 'check_cf_ip', 0, '1', current_timestamp(), current_timestamp(), '1');"; $prep = $connection->prepare(" INSERT INTO `".$prefix."_profiles` (`id`, `hidden`) VALUES (NULL, :hidden); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('1', 'report_email', :report_email, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('2', 'owner', :owner, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('3', 'web_url', :web_url, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('4', 'use_custom_error_sound', 0, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('5', 'use_custom_error_image', 0, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('6', 'intrusion_save', 1, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('7', 'intrusion_save_info', 1, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('8', 'enable_technical_support', 0, '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('9', 'technical_support_key', '', '1', current_timestamp(), current_timestamp(), '1'); -INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES ('10', 'cron_job_code', :cron_job_code, '1', current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'report_email', :report_email, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'owner', :owner, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'web_url', :web_url, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'use_custom_error_sound', 0, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'use_custom_error_image', 0, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'intrusion_save', 1, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'intrusion_save_info', 1, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'enable_technical_support', 0, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'technical_support_key', '', 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_code', :cron_job_code, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_enabled', 1, 1, current_timestamp(), current_timestamp(), '1'); +INSERT INTO `".$prefix."_options` (`id`, `name`, `value`, `enabled`, `created_time`, `last_edit`, `user_id`) VALUES (NULL, 'cron_job_time', :cron_job_time, 1, current_timestamp(), current_timestamp(), '1'); $option_check_cf_ip"); mt_srand(10); $prep->bindValue(':hidden', ($visible ? 0 : 1), PDO::PARAM_INT); $prep->bindValue(':report_email', $report_email, PDO::PARAM_STR); $prep->bindValue(':owner', $owner, PDO::PARAM_STR); $prep->bindValue(':web_url', str_replace("install/install.php", "", full_path()), PDO::PARAM_STR); - $prep->bindValue(':cron_job_code', uniqid().mt_rand(), PDO::PARAM_STR); + $prep->bindValue(':cron_job_code', str_replace(".", "", bin2hex(random_bytes(10)).base64_encode(openssl_random_pseudo_bytes(30))), PDO::PARAM_STR); + $prep->bindValue(':cron_job_time', "01;00:00", PDO::PARAM_STR); $prep->execute(); } catch (Exception $e) { if(is_cli()){