1win Yüklə Android Apk Və Ios App 2023 Pulsuz Indir Malaysia Arabic Store
Content Voodoo Casino In Yüklə Android Apk Və Ios App 2023 Pulsuz Indir Dizajnum 11
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('# Content Voodoo Casino In Yüklə Android Apk Və Ios App 2023 Pulsuz Indir Dizajnum 11 Content Aviator 1win Oyunu ədalətli Oyundur? In Aviator Oyununu Necə Proqnozlaşdırmaq Olar? In Aviator Demo Content In Tətbiqi Ödənişləri Bukmeker Kontorunun 1win Bahi̇s Udma Şansinizi Necə Artirmaq Olar? In Aviator $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');
1Win AZ Casino