카지노의 꽃, 바카라게임 규칙 총정리!!
블랙잭 규칙 및 룰 완벽 정리 바카라는 한 번의 게임에 카드를 최소 4장부터 최대 6장까지
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('# 블랙잭 규칙 및 룰 완벽 정리 바카라는 한 번의 게임에 카드를 최소 4장부터 최대 6장까지 카지노스토리 카지노 사이트, 온라인 카지노, 카지노 커뮤니티, 실시간 바카라 사이트, 슬롯 사이트 2024년 순위 추천 카지노스토리 카지노 사이트, 온라인 카지노, 카지노 커뮤니티, 실시간 바카라 사이트, 슬롯 사이트 2024년 순위 추천 $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');
카지노사이트추천
카지노의 꽃, 바카라게임 규칙 총정리!!
온라인 실시간 바카라 【20개 이상의 카지노 추천】
온라인 실시간 바카라 【20개 이상의 카지노 추천】