WIP refactoring newsLib - late additions
This commit is contained in:
88
homepage/cwsvJudo/src/pages/test/phpLibs/cwsvJudo/news.php
Normal file
88
homepage/cwsvJudo/src/pages/test/phpLibs/cwsvJudo/news.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace cwsvJudo\News;
|
||||
|
||||
function swap(mixed &$x, mixed &$y) : void{
|
||||
$tmp=$x;
|
||||
$x=$y;
|
||||
$y=$tmp;
|
||||
}
|
||||
|
||||
function filter_integer_range(mixed $value, ?int $min = null, ?int $max = null) : ?int {
|
||||
$options = ["options"=>["flags"=> FILTER_NULL_ON_FAILURE]];
|
||||
|
||||
if (!is_null($min) && !is_null($max)){
|
||||
if( $min > $max ){
|
||||
swap($min, $max);
|
||||
}
|
||||
}
|
||||
|
||||
if(!is_null($min)){
|
||||
$options["options"]["min_range"] = $min;
|
||||
}
|
||||
|
||||
if(!is_null($max)){
|
||||
$options["options"]["max_range"] = $max;
|
||||
}
|
||||
|
||||
return filter_var(
|
||||
$value,
|
||||
FILTER_VALIDATE_INT,
|
||||
$options,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
function filter_integer(mixed $value) : ?int {
|
||||
return filter_integer_range($value);
|
||||
}
|
||||
|
||||
function filter_id(mixed $value, int $min = 0) : ?int {
|
||||
return filter_integer_range($value, $min, null);
|
||||
}
|
||||
|
||||
function filter_url(mixed $value){
|
||||
return filter_var(
|
||||
$value,
|
||||
FILTER_VALIDATE_URL,
|
||||
["options" => ["flags" => FILTER_NULL_ON_FAILURE]]
|
||||
);
|
||||
}
|
||||
|
||||
class PromoImage {
|
||||
public function __construct(array $data) {
|
||||
$this->src = filter_url($data["src"]);
|
||||
$this->height = filter_integer_range(
|
||||
value: $data["height"],
|
||||
min: 0,
|
||||
max: null
|
||||
);
|
||||
$this->width = filter_integer_range($data["width"], 0, null);
|
||||
}
|
||||
|
||||
public function to_json(){
|
||||
return json_encode(
|
||||
value: [
|
||||
"src" => $this->src,
|
||||
"width" => $this->width,
|
||||
"height" => $this->height
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
private string $src;
|
||||
private int $width;
|
||||
private int $height;
|
||||
}
|
||||
|
||||
// a single news entry
|
||||
class Entry{
|
||||
|
||||
// private
|
||||
private int $id;
|
||||
private \DateTime $date;
|
||||
private string $title;
|
||||
private string $content;
|
||||
private string $author;
|
||||
private PromoImage $promo;
|
||||
}
|
||||
Reference in New Issue
Block a user