Passbolt is the Diamond Sponsor of #CakeFest 2024!
This year it's happening in Luxembourg.
📅 Save the date 24th - 26th July 2024 for an exciting opportunity filled with inspiring talks by influential members of the #CakePHP community, networking, delightful food and drinks, and of course, the ceremonial cake cutting. 🍰
A parabolic curve is a type of curve where every point is an equal distance from a focal point. There a number of different way to generate this sort of curve using maths, but one of the simplest is to use straight lines to create the illusion of the curve.
I was looking at this Sass (SCSS) compiler, written in #PHP, and I noticed something very odd.
Under “requires (dev)," it requires two packages, sass/sass-spec and thoughtbot/bourbon, both of which appear to be empty packages, containing only a composer.json file, which has no dependencies.
What’s the purpose of these packages? They otherwise appear suspicious, to me, but I can’t see that they're doing anything nefarious right now—they just appear pointless.
Merged https://github.com/jakubkulhan/bunny/pull/147 earlier today into the 0.6 dev branch. You can test it out with composer require bunny/bunny:^0.6@dev. Looking forward to any feedback on it before releasing bunny/bunny 0.6 in a few months. With the following other changes:
Guys I need some helping hand. I need some good reading (book/article) on the proper way of writing OOP. I gave a project where we use classes, but they are more used as a package if functions then working like objects. Like a class of only statics, passing around IDs not the real objects of data (this sending SRP down the drain), arrays, generally functional programming with extra steps. I'd fancy even a discussion as I want to slowly explain all that to my teammates #php#oop#programming
TIA
Hot on the heels of yesterday's post, I've now made all of this blog available in text-only mode. Simply append .txt to the URl of any page and you'll get back the contents in plain UTF-8 text. No formatting, no images (although you can see the alt text), no nothing! Front page https://shkspr.mobi/blog/.txt This blog […]
Hot on the heels of yesterday's post, I've now made all of this blog available in text-only mode.
Simply append .txt to the URl of any page and you'll get back the contents in plain UTF-8 text. No formatting, no images (although you can see the alt text), no nothing!
This was slightly tricky to get right! While there might be an easier way to do it, here's how I got it to work.
Firstly, when someone requests /whatever.txt, WordPress is going to 404 - because that page doesn't exist. So, my theme's functions.php, detects any URls which end in .txt and redirects it to a different template.
// Theme Switcheradd_filter( "template_include", "custom_theme_switch" );function custom_theme_switch( $template ) { // What was requested? $requested_url = $_SERVER["REQUEST_URI"]; // Check if the URL ends with .txt if ( substr( $requested_url, -4 ) === ".txt") { // Get the path to the custom template $custom_template = get_template_directory() . "/templates/txt-template.php"; // Check if the custom template exists if ( file_exists( $custom_template ) ) { return $custom_template; } } // Return the default template return $template;}
The txt-template.php file is more complex. It takes the requested URl, strips off the .txt, matches it against the WordPress rewrite rules, and then constructs the WP_Query which would have been run if the .txt wasn't there.
// Run the query for the URl requested$requested_url = $_SERVER['REQUEST_URI']; // This will be /whatever$blog_details = wp_parse_url( home_url() ); // Get the blog's domain to construct a full URl$query = get_query_for_url( $blog_details["scheme"] . "://" . $blog_details["host"] . substr( $requested_url, 0, -4 ));function get_query_for_url( $url ) { // Get all the rewrite rules global $wp_rewrite; // Get the WordPress site URL path $site_path = parse_url( get_site_url(), PHP_URL_PATH ) . "/"; // Parse the requested URL $url_parts = parse_url( $url ); // Remove the domain and site path from the URL // For example, change `https://example.com/blog/2024/04/test` to just `2024/04/test` $url_path = isset( $url_parts['path'] ) ? str_replace( $site_path, '', $url_parts['path'] ) : ''; // Match the URL against WordPress rewrite rules $rewrite_rules = $wp_rewrite->wp_rewrite_rules(); $matched_rule = false; foreach ( $rewrite_rules as $pattern => $query ) { if ( preg_match( "#^$pattern#", $url_path, $matches ) ) { $matched_rule = $query; break; } } // Replace each occurrence of $matches[N] with the corresponding value foreach ( $matches as $key => $value ) { $matched_rule = str_replace( "$matches[{$key}]", $value, $matched_rule ); } // Turn the query string into a WordPress query $query_params = array(); parse_str( parse_url( $matched_rule, PHP_URL_QUERY), $query_params ); // Construct a new WP_Query object using the extracted query parameters $query = new WP_Query($query_params); // Return the result of the query return $query;}