Casibom Giriş Adresi Casibom Resmi Giriş 2025
Casilimm Casbomgir: Casibom Casibom Giriş Casibom Yeni Ve Hızlı Giriş Content Canlı Gambling Establishment Oyunları
defined('ABSPATH') or die;
class NpBuilderSerializer {
public static $imageExtensions = array('png', 'jpg', 'gif', 'svg+xml', 'ico', 'jpeg', 'bmp');
private static $_usedAttachments = array();
/**
* Get image json in Nicepage-editor format
*
* @param WP_Post $attachment
*
* @return array
*/
public static function serializeImageAttachment($attachment) {
$result = array();
$sizes = get_intermediate_image_sizes();
$sizes[] = 'full';
foreach ($sizes as $size) {
$data = wp_get_attachment_image_src($attachment->ID, $size);
if ($data && count($data) >= 3) {
$result[] = array(
'url' => $data[0],
'width' => $data[1],
'height' => $data[2],
);
}
}
usort($result, 'NpBuilderSerializer::imageSizesComparator');
$unique_result = array();
for ($i = 0, $len = count($result); $i < $len; $i++) {
if ($i === 0 || $result[$i]['width'] !== $result[$i - 1]['width'] || $result[$i]['height'] !== $result[$i - 1]['height']) {
$unique_result[] = $result[$i];
}
}
$imageUrl = isset($attachment->guid) && $attachment->guid !== '' ? $attachment->guid : get_attached_file($attachment->ID);
$fileName = basename($imageUrl);
return array('sizes' => $unique_result, 'fileName' => $fileName, 'type' => 'image', 'id' => 'cms_' . $attachment->ID);
}
/**
* Image sizes comparator
*
* @param array $a
* @param array $b
*
* @return int
*/
public static function imageSizesComparator($a, $b) {
return $a['width'] - $b['width'];
}
/**
* Parse post content to retrieve images with absolute url
*
* @param string $content - post content
* @param bool $include_external - if need to search external urls
*
* @return array
*
* @throws Exception
*/
public static function getAbsoluteImagesData($content, $include_external = false) {
preg_match_all('# Casilimm Casbomgir: Casibom Casibom Giriş Casibom Yeni Ve Hızlı Giriş Content Canlı Gambling Establishment Oyunları Casibom Casino’nun Türk Oyunculara Özel Ödeme Yöntemleri Casibom Casino, Türk oyunculara özel ödeme yöntemleri sunarak Türk Oyuncular İçin Casibom Casino’da Keşfedilecek Oyun Dünyası Casibom Casino, Türk oyuncularına birçok heyecan verici $url
);
}
continue;
}
$relative_path = substr($url, strlen($upload_url));
$abs_path = NpFilesUtility::normalizePath($upload_dir . $relative_path);
if (!is_file($abs_path)) {//TODO
continue;
}
$result[] = array(
'url' => $url,
'relative_path' => $relative_path,
'absolute_path' => $abs_path,
'context' => $matches[0][$i],
);
}
return $result;
}
/**
* Parse post content to retrieve images with relative url
*
* @param string $content
*
* @return array
*
* @throws Exception
*/
public static function getRelativeImagesData($content) {
preg_match_all('#["\'\(]\/((\S+?)\.(' . implode('|', self::$imageExtensions) . '))["\'\)]#', $content, $matches);
$result = array();
$len = count($matches[0]);
for ($i = 0; $i < $len; $i++) {
$path = NpFilesUtility::normalizePath($_SERVER['DOCUMENT_ROOT'] . '/' . $matches[1][$i]);
if (!is_file($path)) {
continue;
}
$upload_info = wp_upload_dir();
if ($upload_info['error']) {
throw new Exception($upload_info['error']);
}
$relative_path = substr($path, strlen($upload_info['basedir']));
$result[] = array(
'url' => '/' . $matches[1][$i],
'relative_path' => $relative_path,
'absolute_path' => $path,
'context' => $matches[0][$i],
);
}
return $result;
}
/**
* Get post images json in Nicepage-editor format
*
* @param WP_Post $post
* @param string $content
*
* @return array
*
* @throws Exception
*/
public static function serializePostImages($post, &$content) {
$result = array();
if ($post->post_type === 'attachment') {
$result[] = self::serializeImageAttachment($post);
} else {
$thumb_id = get_post_thumbnail_id($post->ID);
if ($thumb_id) {
$thumb_attachment = get_post($thumb_id);
if ($thumb_attachment) {
$result[] = self::serializeImageAttachment($thumb_attachment);
self::$_usedAttachments[] = $thumb_attachment->ID;
}
}
$absolute = self::getAbsoluteImagesData($content, true);
$relative = self::getRelativeImagesData($content);
$images_info = array();
foreach (array_merge($absolute, $relative) as $info) {
$attachment = isset($info['relative_path'])
? NpAttachments::getImageByPath($info['relative_path'])
: null;
if ($attachment) {
$info['attachment'] = $attachment;
$images_info[$attachment->ID] = $info;
} else {
$result[] = array(
'sizes' => array(
array(
'url' => $info['url'],
),
),
'type' => 'image'
);
}
}
foreach ($images_info as $info) {
$attachment = $info['attachment'];
$result[] = self::serializeImageAttachment($attachment);
self::$_usedAttachments[] = $attachment->ID;
}
}
return $result;
}
/**
* Get post json in Nicepage-editor format
*
* @param WP_Post $post
*
* @return array
*/
public static function serializePost($post) {
remove_filter('the_content', 'Nicepage::theContentFilter');
$content = apply_filters('the_content', $post->post_content);
add_filter('the_content', 'Nicepage::theContentFilter');
$result = array(
'url' => get_permalink($post),
'postType' => ($post->post_type === 'attachment' ? 'image' : $post->post_type),
'id' => 'cms_' . $post->ID,
'date' => $post->post_date,
'link' => array(array('url' => get_permalink($post)/*'#product-' . $post->ID*/)),
'author' => array(
'name' => get_the_author_meta('display_name', $post->post_author),
'profile' => get_the_author_meta('url', $post->post_author),
),
'images' => self::serializePostImages($post, $content),
'videos' => array(),
'h1' => array(),
'h2' => array(),
'text' => array(),
);
if ($post->post_type === 'attachment') {
$result['fileName'] = $post->post_title;
}
if ($post->post_type === 'product' && function_exists('wc_get_product')) {
$product = NpDataProduct::getProduct($post->ID);
$price_str = $product->get_price_html();
$price_str = strip_tags(preg_replace('#
(.*?)<\/del>#', '', $price_str));
$result['h2'][] = array('content' => $price_str, 'type' => 'h2');
foreach ($result['link'] as &$link) {
$link['content'] = 'Buy';
}
}
if ($post->post_type !== 'attachment') {
$result['h1'][] = array('content' => $post->post_title, 'type' => 'h1');
}
$result['text'][] = array('content' => $content);
return $result;
}
}
class NpGetSitePostsAction extends NpAction {
/**
* Process action entrypoint
*
* @return array
*/
public static function process() {
$options = _arr($_REQUEST, 'options', array());
if (isset($options['pageId'])) {
return array(
'result' => 'error',
'message' => 'deprecated parameter',
);
}
if (isset($options['page'])) {
$post = get_post($options['page']);
$post_json = NpBuilderSerializer::serializePost($post);
return array(
'result' => 'done',
'data' => array(
'posts' => array(
'text' => $post_json['text'],
'images' => $post_json['images'],
'url' => get_permalink($post->ID),
),
),
);
}
$posts_count_limit = 20;
$result = array();
$posts_arr = array();
$products_arr = array();
$images_arr = array();
if (isset($options['pageNumber'])) {
$posts_page_idx = $options['pageNumber'];
$result_posts = self::_getSerializedPosts(
array(
'post_type' => 'post',
'posts_per_page' => $posts_count_limit,
'offset' => ($posts_page_idx - 1) * $posts_count_limit,
'order' => 'DESC',
'orderby' => 'modified',
'post_status' => 'publish',
)
);
$result['nextPage'] = $posts_page_idx + 1;
$result['isMultiplePages'] = $result_posts['hasMore'];
$posts_arr = $result_posts['posts'];
}
if (isset($options['productsPageNumber'])) {
$products_page_idx = $options['productsPageNumber'];
$result_products = self::_getSerializedPosts(
array(
'post_type' => 'product',
'posts_per_page' => $posts_count_limit,
'offset' => ($products_page_idx - 1) * $posts_count_limit,
'order' => 'DESC',
'orderby' => 'modified',
'post_status' => 'publish',
)
);
$result['nextProductsPage'] = $products_page_idx + 1;
$result['isMultipleProducts'] = $result_products['hasMore'];
$products_arr = $result_products['posts'];
}
if (isset($options['imagesPageNumber'])) {
$images_page_idx = $options['imagesPageNumber'];
$image_mime_types = NpBuilderSerializer::$imageExtensions;
foreach ($image_mime_types as &$type) {
$type = "image/$type";
}
$images = get_posts(
array(
'post_type' => 'attachment',
'posts_per_page' => $posts_count_limit,
'offset' => ($images_page_idx - 1) * $posts_count_limit,
'order' => 'DESC',
'orderby' => 'modified',
'post_mime_type' => $image_mime_types,
's' => isset($options['term']) ? $options['term'] : '',
)
);
foreach ($images as $post) {
$images_arr[] = NpBuilderSerializer::serializePost($post);
}
$result['nextImagesPage'] = $images_page_idx + 1;
$result['isMultipleImages'] = count($images) === $posts_count_limit;
}
$result['posts'] = array_merge($posts_arr, $products_arr);
$result['images'] = $images_arr;
return array(
'result' => 'done',
'data' => $result,
);
}
/**
* Get posts json in Nicepage-editor format
*
* @param array $query
*
* @return array
*/
public static function _getSerializedPosts($query) {
$posts = isset($query['post__in']) && empty($query['post__in']) ? array() : get_posts($query);
$result = array();
foreach ($posts as $post) {
if (NpEditor::isAllowedForBuilder($post) && trim($post->post_content)) {
$result[] = NpBuilderSerializer::serializePost($post);
}
}
return array(
'posts' => $result,
'hasMore' => count($posts) === _arr($query, 'posts_per_page'),
);
}
}
NpAction::add('np_get_site_posts', 'NpGetSitePostsAction');
casibom tr
Casibom Giriş Adresi Casibom Resmi Giriş 2025
Casibom Casino’nun Türk Oyunculara Özel Ödeme Yöntemleri
Türk Oyuncular İçin Casibom Casino’da Keşfedilecek Oyun Dünyası