Click.php
8 months ago
Click_Processing_Job.php
5 months ago
Config_File_Manager.php
1 year ago
Link_Rule.php
1 year ago
Link_Rule_Finder.php
9 months ago
Config_File_Manager.php
63 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWP\Click_Tracking; |
| 4 | |
| 5 | use IAWP\Utils\Request; |
| 6 | use IAWP\Utils\Salt; |
| 7 | /** @internal */ |
| 8 | class Config_File_Manager |
| 9 | { |
| 10 | /** |
| 11 | * Recreate the click tracking config file to account for changes in pro status, visitor token |
| 12 | * salt, or a custom IP address header. |
| 13 | * |
| 14 | * @return void |
| 15 | */ |
| 16 | public static function recreate() : void |
| 17 | { |
| 18 | self::delete_file(self::config_file_path()); |
| 19 | self::ensure(); |
| 20 | } |
| 21 | /** |
| 22 | * Ensure the click tracking config file exists. |
| 23 | * |
| 24 | * @return void |
| 25 | */ |
| 26 | public static function ensure() : void |
| 27 | { |
| 28 | self::remove_legacy_files(); |
| 29 | if (\is_file(self::config_file_path())) { |
| 30 | return; |
| 31 | } |
| 32 | $data = ['is_pro' => \IAWPSCOPED\iawp_is_pro(), 'visitor_token_salt' => Salt::visitor_token_salt(), 'avoid_temporary_directory' => \defined('IAWP_AVOID_TEMPORARY_DIRECTORY') ? \IAWP_AVOID_TEMPORARY_DIRECTORY : \false]; |
| 33 | if (\is_string(Request::custom_ip_header())) { |
| 34 | $data['custom_ip_header'] = Request::custom_ip_header(); |
| 35 | } |
| 36 | $contents = "<?php exit; ?>\n"; |
| 37 | $contents .= \json_encode($data); |
| 38 | \file_put_contents(self::config_file_path(), $contents); |
| 39 | } |
| 40 | /** |
| 41 | * For a couple releases, click tracking files were in the uploads folder. This method is responsible for |
| 42 | * cleaning them up if they are still there. |
| 43 | * |
| 44 | * @return void |
| 45 | */ |
| 46 | private static function remove_legacy_files() : void |
| 47 | { |
| 48 | self::delete_file(\IAWPSCOPED\iawp_upload_path_to('/iawp-click-endpoint.php')); |
| 49 | self::delete_file(\IAWPSCOPED\iawp_upload_path_to('/iawp-click-config.php')); |
| 50 | self::delete_file(\IAWPSCOPED\iawp_upload_path_to('/iawp-click-data.php')); |
| 51 | } |
| 52 | private static function config_file_path() : string |
| 53 | { |
| 54 | return \IAWPSCOPED\iawp_path_to('/iawp-click-config.php'); |
| 55 | } |
| 56 | private static function delete_file(string $file) : void |
| 57 | { |
| 58 | if (\is_file($file)) { |
| 59 | \unlink($file); |
| 60 | } |
| 61 | } |
| 62 | } |
| 63 |