added in vendor for prod
This commit is contained in:
97
vendor/open-function-computers-llc/rad-theme-engine/src/Util.php
vendored
Normal file
97
vendor/open-function-computers-llc/rad-theme-engine/src/Util.php
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace ofc;
|
||||
|
||||
class Util
|
||||
{
|
||||
/**
|
||||
* slugify
|
||||
* modified from https://lucidar.me/en/web-dev/how-to-slugify-a-string-in-php/
|
||||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
public static function slugify(string $str) : string
|
||||
{
|
||||
$text = strip_tags($str);
|
||||
$text = str_replace(" & ", " and ", $text);
|
||||
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
|
||||
setlocale(LC_ALL, 'en_US.utf8');
|
||||
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
|
||||
$text = preg_replace('~[^-\w]+~', '', $text);
|
||||
$text = trim(strtolower($text), '-');
|
||||
$text = preg_replace('~-+~', '-', $text);
|
||||
if (empty($text)) {
|
||||
return 'n-a';
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* snakify
|
||||
* basically the same as slugify but with _ instead of -
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
public static function snakeify(string $string) :string
|
||||
{
|
||||
return str_replace("-", "_", self::slugify($string));
|
||||
}
|
||||
|
||||
public static function processFieldGroup($fieldGroup)
|
||||
{
|
||||
|
||||
add_action('admin_head-post.php', function () use ($fieldGroup) {
|
||||
global $post;
|
||||
if ($fieldGroup) {
|
||||
echo site()->renderTemplate(FieldHTML::metaBoxToggler(["WYSIWYG"]), [
|
||||
"group-name" => self::slugify($fieldGroup[0]),
|
||||
"for" => "page",
|
||||
"hidden" => ["WYSIWYG"],
|
||||
]);
|
||||
}
|
||||
});
|
||||
|
||||
add_action('add_meta_boxes', function () use ($fieldGroup) {
|
||||
$name = $fieldGroup[0];
|
||||
array_shift($fieldGroup);
|
||||
foreach ($fieldGroup as $group) {
|
||||
// conditionally show/hide the box
|
||||
$slugName = self::slugify($name);
|
||||
|
||||
add_meta_box(
|
||||
$slugName,
|
||||
$name,
|
||||
function ($post) use ($fieldGroup, $group) {
|
||||
foreach ($fieldGroup as $field) {
|
||||
// sanatize media fields
|
||||
if ($field["type"] === "image") {
|
||||
if (!isset($field["store"])) {
|
||||
$field["store"] = "json";
|
||||
}
|
||||
}
|
||||
|
||||
echo site()->renderTemplate(FieldHTML::template($field["type"], get_post_meta($post->ID, "rad_".$field['name'], true), $post->ID, $field), [
|
||||
"value" => get_post_meta($post->ID, "rad_".$field['name'], true),
|
||||
"id" => $post->ID,
|
||||
"field" => $field,
|
||||
])."<hr />";
|
||||
}
|
||||
},
|
||||
'page',
|
||||
'advanced',
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
add_action('save_post', function ($post_id) use ($fieldGroup) {
|
||||
foreach ($fieldGroup['fields'] as $field) {
|
||||
if (!isset($_POST['rad_'.$field['name']])) {
|
||||
continue;
|
||||
}
|
||||
update_post_meta($post_id, 'rad_'.$field['name'], wp_kses_post($_POST['rad_'.$field['name']]));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user