diff --git a/assets/images/pexels-289586.jpg b/assets/images/pexels-289586.jpg new file mode 100644 index 0000000..dcc817c Binary files /dev/null and b/assets/images/pexels-289586.jpg differ diff --git a/assets/images/pexels-466685.jpg b/assets/images/pexels-466685.jpg new file mode 100644 index 0000000..de84d42 Binary files /dev/null and b/assets/images/pexels-466685.jpg differ diff --git a/assets/images/pexels-546819.jpg b/assets/images/pexels-546819.jpg new file mode 100644 index 0000000..761cfae Binary files /dev/null and b/assets/images/pexels-546819.jpg differ diff --git a/includes/pexels.php b/includes/pexels.php new file mode 100644 index 0000000..e36a3b6 --- /dev/null +++ b/includes/pexels.php @@ -0,0 +1,58 @@ + 0 ? $k : 'Vc99rnmOhHhJAbgGQoKLZtsaIVfkeownoQNbTj78VemUjKh08ZYRbf18'; +} +function pexels_get($url) { + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ 'Authorization: '. pexels_key() ], + CURLOPT_TIMEOUT => 15, + ]); + $resp = curl_exec($ch); + $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($code >= 200 && $code < 300 && $resp) return json_decode($resp, true); + return null; +} +function download_to($srcUrl, $destPath) { + // Ensure the directory exists. + $dir = dirname($destPath); + if (!is_dir($dir)) { + if (!mkdir($dir, 0775, true)) { + error_log("Failed to create directory: " . $dir); + return false; + } + } + + // Use cURL to download the image, as file_get_contents can be restricted. + $ch = curl_init($srcUrl); + $fp = fopen($destPath, 'wb'); + if (!$fp) { + error_log("Failed to open file for writing: " . $destPath); + curl_close($ch); + return false; + } + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 60); + $result = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + fclose($fp); + + if ($result === false || $httpCode !== 200) { + error_log("Failed to download image from " . $srcUrl . ". HTTP code: " . $httpCode); + // Clean up the failed download + if (file_exists($destPath)) { + unlink($destPath); + } + return false; + } + + return true; +} diff --git a/index.php b/index.php index 322cedb..d3e5a05 100644 --- a/index.php +++ b/index.php @@ -38,7 +38,7 @@ "id" => 1, "title" => "The Future of Web Development", "excerpt" => "Exploring the latest trends and technologies shaping the web. From AI-powered tools to the rise of serverless architectures...", - "image" => "https://picsum.photos/seed/tech/800/600", + "image" => "assets/images/pexels-546819.jpg", "alt" => "Abstract technology background", "category" => "Technology", "date" => "September 29, 2025" @@ -47,7 +47,7 @@ "id" => 2, "title" => "A Guide to Mindful Productivity", "excerpt" => "In a world of constant distractions, learn how to focus your energy, manage your time, and achieve your goals with less stress.", - "image" => "https://picsum.photos/seed/writing/800/600", + "image" => "assets/images/pexels-289586.jpg", "alt" => "A person writing in a notebook", "category" => "Productivity", "date" => "September 25, 2025" @@ -56,7 +56,7 @@ "id" => 3, "title" => "Exploring Urban Landscapes", "excerpt" => "A photographic journey through the architectural marvels and hidden gems of the world's most vibrant cities.", - "image" => "https://picsum.photos/seed/city/800/600", + "image" => "assets/images/pexels-466685.jpg", "alt" => "Cityscape at dusk", "category" => "Travel", "date" => "September 22, 2025" diff --git a/post.php b/post.php index e51cb46..66d9d3d 100644 --- a/post.php +++ b/post.php @@ -27,7 +27,7 @@ "id" => 1, "title" => "The Future of Web Development", "content" => "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh.

Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.

", - "image" => "https://picsum.photos/seed/tech/1200/600", + "image" => "assets/images/pexels-546819.jpg", "alt" => "Abstract technology background", "category" => "Technology", "date" => "September 29, 2025", @@ -37,7 +37,7 @@ "id" => 2, "title" => "A Guide to Mindful Productivity", "content" => "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh.

Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.

", - "image" => "https://picsum.photos/seed/writing/1200/600", + "image" => "assets/images/pexels-289586.jpg", "alt" => "A person writing in a notebook", "category" => "Productivity", "date" => "September 25, 2025", @@ -47,7 +47,7 @@ "id" => 3, "title" => "Exploring Urban Landscapes", "content" => "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh.

Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.

", - "image" => "https://picsum.photos/seed/city/1200/600", + "image" => "assets/images/pexels-466685.jpg", "alt" => "Cityscape at dusk", "category" => "Travel", "date" => "September 22, 2025",