"; $response = sendAPICompanySearchRequest($username, $password, $data); $companyArray = json_decode($response, true); $companyData = array(); foreach ($companyArray as $company) { $companyData[] = [$company['name'],$company['ehraid'],$company['uid'],$company['chid'],$company['legalSeat'],$company['registryOfCommerceId'],$company['legalForm']['name']['de'],$company['status'],$company['sogcDate'],$company['deletionDate']]; } if (! file_exists($filename)) { // If File doesn't exist yet $file = fopen($filename, 'w'); if($file) { fputcsv($file, ['name', 'ehraid', 'uid', 'chid', 'legalSeat', 'registryOfCommerceId', 'legalForm', 'status', 'sogcDate', 'deletionDate']); } } else { // If file already exists $file = fopen($filename, 'a'); } if ($file) { foreach ($companyData as $row){ fputcsv($file, $row); } fclose($file); } } function sendEmail($emailAddress, $filename) { echo "sending ".$filename." too ".$emailAddress; $to = $emailAddress; $subject = "Ihr Export von Zefix ist bereit"; $message = "Nutzen Sie den folgenden Link um ihre Daten herunterzuladen. Die Daten werden nach 48 Stunden automatisch auf unserem Server gelöscht.\nhttps://".$_SERVER['HTTP_HOST'].'/'.$filename; $headers = "From: api@zefix.silias.ch\r\n"; $headers .= "Reply-To: info@silias.ch\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; if (mail($to, $subject, $message, $headers)) { echo "Email sent successfully!"; } else { echo "Email sending failed."; } } // Stop executing bevore reaching PHP Max Execution Time function convertcsvToXlsx(string $csvFile, string $xlsxFile) { $csvData = []; if (($handle = fopen($csvFile, "r")) !== false) { while (($data = fgetcsv($handle, 1000, ",")) !== false) { $csvData[] = $data; } fclose($handle); } else { echo "Failed to open $csvFile for reading."; } write_xlsxFile($xlsxFile, $csvData); } while($latesEndTime - time() > 60){ // If the directory for Tasks is already created if(is_dir($taskDir)) { $taskfiles = scandir($taskDir); $taskfiles = array_diff($taskfiles, array('.', '..')); sort($taskfiles); // if there are any taks which are older then min oldness. To be sure the file writing process is finished. if(count($taskfiles) > 0 && intval(explode("-", $taskfiles[0])[0]) + $minTaskOldness < time()) { $taskString = file_get_contents($taskDir.'/'.$taskfiles[0]); $task = json_decode($taskString, true); // if there are any requests to do, do the first if(count($task['requests']) > 0) { doRequest($task['requests'][0], str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]), $username , $password); echo "Request done"; echo "
"; array_shift($task['requests']); $taskString = json_encode($task); $taskfile = fopen($taskDir.'/'.$taskfiles[0], 'w'); if($taskfile){ fwrite($taskfile, $taskString); fclose($taskfile); } } // if there are no Requests left, send the E-Mail else { convertcsvToXlsx(str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]), str_replace(".json", ".xlsx", $downloadDir.'/'.$taskfiles[0])); unlink(str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0])); sendEmail($task['email'], str_replace(".json", ".xlsx", $downloadDir.'/'.$taskfiles[0])); unlink($taskDir.'/'.$taskfiles[0]); echo "Task File deleted"; echo "
"; } } else { // acutal Time - start time echo "nothing to do after: ".strval(time() - ($latesEndTime - $maxExecutionTime)); echo "sleeping 10 seconds"; echo "
"; sleep(10); } } } ?>