options = get_option("pw-mobile-app"); $this->accountOptions = get_option("androapp_account_settings"); $this->scriptsOptions = get_option("androapp_scripts_detected"); $this->buildOptions = get_option("pw-mobile-build-options"); $this->androAds = get_option("androapp_ads"); $this->postContentOptions = get_option("androapp_post_content_tab"); $this->pw_wp_menu = new Pw_Wp_Menu(); $this->pwapp_gcm = new Pw_Wp_Gcm_Register(); $this->pwapp_woo = new Pw_Wp_Woocommerce(); $this->pwapp_woo_post = new Pw_Wp_Woo(null ); $this->pwapp_posts = new Pw_Wp_Posts(null); } function pw_comment_filter($content) { if(!is_single()) { remove_filter('comment_text','stallion_sc_link2', 99); } return $content; } // Add checkboxes function androapp_notification_settings() { global $post; $prevSelectedValue = get_post_meta($post->ID, "androapp_post_notify", true); $dont_send_push_notification = ($prevSelectedValue == 'on' ? ' checked' : ''); if(!$prevSelectedValue){ $dont_send_push_notification = ($this->accountOptions[pw_mobile_app_settings::$defaultPostPushNotification] == '1' ? ' checked': ''); } ?>
/>
ID, "androapp_post_notify", sanitize_text_field($_POST["androapp_post_notify"])); } /* //it cuased push notification even if dont send is selected in scheduled posts else{ if($new_status != 'auto-draft'){ update_post_meta($post->ID, "androapp_post_notify", 'off'); } }*/ if (($old_status != 'publish') && ($new_status == 'publish') && ($post->post_type == "post" || $post->post_type == "page")){ $dont_send_push_notification = get_post_meta($post->ID, "androapp_post_notify", true); if(empty($dont_send_push_notification) || $dont_send_push_notification == 'off') { $this->schedule_push_notification($post); } } } function schedule_push_notification_save(){ global $post; $this->schedule_push_notification($post); } function schedule_push_notification($post){ if(class_exists('WP_JSON_Posts')){ $disableBulkSend = $accountOptions[pw_mobile_app_settings::$disableBulkSend]; $disableNotificationCache = $accountOptions[pw_mobile_app_settings::$disableNotificationCache]; $postType = $post->post_type; $wp_server_posts = null; if($postType == 'post'){ $wp_server_posts = new WP_JSON_Posts(new WP_JSON_Server()); }else{ $wp_server_posts = new WP_JSON_Pages(new WP_JSON_Server()); } $response = $wp_server_posts->get_post($post->ID, 'view'); if(isset($response) && isset($response->data)){ $wppost = $response->data; } $excerpt = $wppost['pwapp_excerpt']; $postimage = $wppost['featuredimage']; if(empty($postimage)){ $postimage = $wppost['pwapp_post_image']; } $postlink = $wppost['link']; $cache = "yes"; if(isset($disableNotificationCache) && $disableNotificationCache == 'yes'){ $cache = "no"; } wp_schedule_single_event( time()+ 10*30 , 'send_push_notification_after_publish', array ($post->ID, $post->post_title, $excerpt, $postimage, $postlink, $cache, $postType, $this->accountOptions[ANDROAPP_GCM_API_KEY] , "stack", !($this->accountOptions[pw_mobile_app_settings::$disableBulkSend] == 1) )); } } function send_push_notification_after_publish($post_id, $post_title, $excerpt, $postimage, $link, $cache, $postType, $google_api_key, $notification_type, $isBulkSend) { require_once PW_MOBILE_PATH.'gcm/send_message.php'; sendPushNotification(array("post_id" => $post_id, "title" => $post_title, "excerpt" =>$excerpt, "postImage" => $postimage, "link" => $postlink, "cache" => $cache, "postType" => $postType, "notification_type" => $notification_type), $google_api_key, $isBulkSend); } function removeShortcodes($shortcodes){ global $shortcode_tags; $shortCodesFunctionArray = array(); foreach($shortcodes as $shortcode){ if(!empty($shortcode_tags[$shortcode])){ $shortCodesFunctionArray[$shortcode] = $shortcode_tags[$shortcode]; unset($shortcode_tags[$shortcode]); } } return $shortCodesFunctionArray; } function addShortcodesBack($shortCodesFunctionArray){ global $shortcode_tags; foreach($shortCodesFunctionArray as $key => $shortcode){ $shortcode_tags[$key] = $shortcode; } } function getScripts(){ $out = ""; if(!empty($this->scriptsOptions) && !empty($this->options[pw_mobile_app_settings::$selectedScripts])){ $scripts = $this->scriptsOptions['scripts']; $selectedScripts = explode("\n", $this->options[pw_mobile_app_settings::$selectedScripts]); foreach($selectedScripts as $handle){ $handle = trim($handle); if($scripts[$handle]){ $out .= ""; } } } if(!empty($this->options[pw_mobile_app_settings::$postProcessedCss])){ $out .= ""; } return $out; } function getShareText($post, $data, $key){ if($key == "TITLE"){ return $data['title']; } else if($key == "EXCERPT"){ return strip_tags($this->androapp_get_rendered_value($data['excerpt'])); } else if($key == "SEO"){ $wpseo_metadesc = get_post_meta($post['ID'], '_yoast_wpseo_metadesc', true); if(!empty($wpseo_metadesc)){ return $wpseo_metadesc; } else{ if (class_exists('WPSEO_Meta')) { return $this->get_seo_description($post['ID']); } } return $data['title']; }else if($key == "FULL"){ return wpautop($post['post_content']); } return ""; } function getPostContentTypeFromPostId($postId, $defaultPostContentType){ $loadUrlPostIds = array_map('trim', explode(",", $this->options['loadurl_postids'])); $preProcessedPostIds = array_map('trim', explode(",", $this->options['preprocessed_postids'])); $postProcessedPostIds = array_map('trim', explode(",", $this->options['postprocessed_postids'])); if(in_array($postId, $loadUrlPostIds)){ return "loadurl"; }else if(in_array($postId, $preProcessedPostIds)){ return "preprocessed"; }else if(in_array($postId, $postProcessedPostIds)){ return "postprocessed"; } return $defaultPostContentType; } function androapp_woocommerce_api_product_response($data, $product, $fields, $server){ global $wp_query; global $post; $orig_post = $post; $prev_ishome = $wp_query->is_home; $wp_query->is_home = false; if(is_array($product)){ $postid = $product['ID']; }else{ $postid = $product->id; } $post_obj = get_post($postid); $post = $post_obj; setup_postdata( $post_obj ); $data['pwapp_feed_image_dimension_type'] = $this->options['image_dimension']; $share_text_fn = $this->options['share_function_name']; $firstImage = $data['featured_src']; if($this->options['image_dimension'] != 'noimage'){ $data['pwapp_post_image'] = $firstImage; } if($this->options['share_image_preference'] != 'noimage'){ $data['share_image'] = $firstImage; } $preview = ""; if($this->options['excerpt_preference'] == 'seo_meta_desc'){ $wpseo_metadesc = get_post_meta($postid, '_yoast_wpseo_metadesc', true); if(!empty($wpseo_metadesc)){ $preview = html_entity_decode($wpseo_metadesc,null,'UTF-8'); } else{ if (class_exists('WPSEO_Meta')) { $preview = $this->get_seo_description($postid); } } }else if($this->options['excerpt_preference'] == 'none'){ $preview = ""; }else{ $this->options['excerpt_preference'] = "excerpt"; $preview = $data['description']; } $data['pwapp_excerpt'] = $preview; $data['excerpt'] = $preview; $postcontent = ""; $postContentType = $this->getPostContentTypeFromPostId($postid, $this->options['post_content']); if($postContentType == 'preprocessed'){ $shortcodesToRemove = array('caption', 'wp_caption', 'gallery', 'playlist', 'audio','video'); $shortcodesArray = $this->removeShortcodes($shortcodesToRemove); $stripped_content = strip_shortcodes(wpautop($post['post_content'])); $this->addShortcodesBack($shortcodesArray); $postcontent = do_shortcode($stripped_content); }else if($postContentType == 'postprocessed'){ $postcontent = $this->getScripts()."
" .$this->androapp_get_rendered_value($data['content']) ."
"; } $data['pwapp_post_content'] = $postcontent; $data['pwapp_post_content_type'] = $postContentType; $data['pwapp_preview_type'] = $this->options['excerpt_preference']; $data['share_text'] = ""; if(!empty($share_text_fn) && function_exists($share_text_fn) ){ $data['share_text'] = $share_text_fn($product, $data['link']); } if(empty($data['share_text'])){ if(empty($data['share_image'])){ $data['share_text'] = $this->getShareText($product, $data, $this->options[pw_mobile_app_settings::$sharePreference]); }else{ $data['share_text'] = $this->getShareText($product, $data, $this->options[pw_mobile_app_settings::$shareTextWithImage]); } if(!empty($this->options[pw_mobile_app_settings::$shareSuffixText])){ $data['share_text'] .= "\n".$this->options[pw_mobile_app_settings::$shareSuffixText]; } if($this->options[pw_mobile_app_settings::$shareSuffixLink] == "HOME"){ $data['share_text'] .= " ".get_bloginfo('url'); } else if($this->options[pw_mobile_app_settings::$shareSuffixLink] == "POST"){ $data['share_text'] .= " ". $data['permalink']; } }else{ if($this->options[pw_mobile_app_settings::$shareImageWithCustomFunction] == "1"){ $data['share_image'] = null; } } if($this->options[pw_mobile_app_settings::$showCommentsCount] == "1" && $this->options[pw_mobile_app_settings::$commentsProvider] == "wordpress"){ $comments_count = wp_count_comments( $postid); $data['androapp_comments_count'] = $comments_count->approved; } //$data['supercache'] = "androappsupercache"; $post = $orig_post; wp_reset_postdata(); $wp_query->is_home = $prev_ishome; return $data; } function androapp_header_action( ) { if ( is_single() && isAndroAppRequest()) { echo $this->postContentOptions[pw_mobile_app_settings::$headerScript]; } } function androapp_before_post_filter( $content ) { if ( is_single() && isAndroAppRequest()) { $content = $this->postContentOptions[pw_mobile_app_settings::$beforePostContent].$content; } return $content; } function androapp_after_post_filter( $content ) { if ( is_single() && isAndroAppRequest()) { $content = $content.$this->postContentOptions[pw_mobile_app_settings::$afterPostContent]; } return $content; } function add_pre_post_content($data){ if (array_key_exists('pwapp_after_post_content', $data)) { $data['pwapp_after_post_content'] = $this->postContentOptions[pw_mobile_app_settings::$afterPostContent].$data['pwapp_after_post_content']; }else{ $data['pwapp_after_post_content'] = $this->postContentOptions[pw_mobile_app_settings::$afterPostContent]; } if (array_key_exists('pwapp_before_post_content', $data)){ $data['pwapp_before_post_content'] = $this->postContentOptions[pw_mobile_app_settings::$beforePostContent].$data['pwapp_before_post_content']; }else{ $data['pwapp_before_post_content'] = $this->postContentOptions[pw_mobile_app_settings::$beforePostContent]; } if (array_key_exists('androapp_header', $data)){ $data['androapp_header'] = $this->postContentOptions[pw_mobile_app_settings::$headerScript].$data['androapp_header']; }else{ $data['androapp_header'] = $this->postContentOptions[pw_mobile_app_settings::$headerScript]; } return $data; } function pw_mobile_prepare_comment_v2($data, $comment, $request){ $data->data = $this->pw_mobile_prepare_comment($data->data, $comment , 'view'); return $data; } function pw_mobile_prepare_comment($data, $comment, $context){ $data['androapp_content'] = $this->androapp_get_rendered_value($data['content']); $data['androapp_author_name'] = $comment->comment_author; return $data; } function pw_mobile_prepare_post_v2($data, $post, $request){ //print_r($data); $data->data = $this->pw_mobile_prepare_post($data->data, (array) $post, 'view'); return $data; } function androapp_get_rendered_value($input){ if(is_array($input)){ return $input['rendered']; } return $input; } function androapp_getAuthor($id){ global $post; $author = array(); $author['ID'] = $id; $author['name'] = get_the_author(); $author['slug'] = get_the_author_meta('user_nicename', $id );; return $author; } function androapp_getTerms(){ global $post; $terms = array(); $categories = get_the_category(); if($categories){ foreach($categories as $category){ $category->ID = $category->term_id; } $terms['category'] = $categories; } $tags = get_the_tags(); if($tags){ foreach($tags as $tag){ $tag->ID = $tag->term_id; } $terms['post_tag'] = $tags; } return $terms; } function pw_mobile_prepare_post($data, $post_array, $context) { if(!($data['type'] == "post" || $data['type'] == "page")){ return $data; } global $wp_query; global $post; $data = $this->add_pre_post_content($data); $orig_post = $post; $prev_ishome = $wp_query->is_home; $wp_query->is_home = false; $post_obj = get_post($post_array['ID']); $post = $post_obj; setup_postdata( $post_obj ); // print_r($post); //return ""; $data['pwapp_author'] = $this->androapp_getAuthor($data['author']); $data['pwapp_terms'] = $this->androapp_getTerms(); $data['pwapp_feed_image_dimension_type'] = $this->options['image_dimension']; $share_text_fn = $this->options['share_function_name']; $firstImage = null; if(has_post_thumbnail( $post_array['ID'] )){ $imagesize = 'full'; if($this->buildOptions['androapp_theme'] == 'compact'){ $imagesize = 'thumbnail'; } $attch = wp_get_attachment_image_src( get_post_thumbnail_id( $post_array['ID'] ), $imagesize); if(is_array($attch) && count($attch) > 0){ $firstImage = $attch[0]; $data['featuredimage'] = $attch[0]; } } if(empty($firstImage)){ if(empty($this->options[pw_mobile_app_settings::$useOnlyFeaturedImage]) || $this->options[pw_mobile_app_settings::$useOnlyFeaturedImage] != 1){ $firstImage = androapp_get_first_image($post_array['post_content']); } } if($this->options['image_dimension'] != 'noimage'){ $data['pwapp_post_image'] = $firstImage; } if($this->options['share_image_preference'] != 'noimage'){ $data['share_image'] = $firstImage; } $data['featured_image_showhide'] = $this->options['featured_image_showhide']; if(!empty($data['featured_media']) && $data['featured_media'] != 0){ $featuredimagejsobject = wp_prepare_attachment_for_js($data['featured_media']); $featured_image = array(); $featured_image['ID'] = $data['featured_media']; $featured_image['excerpt'] = $featuredimagejsobject['caption']; $featured_image['title'] = $featuredimagejsobject['title']; if(is_array($featuredimagejsobject['sizes']) && is_array($featuredimagejsobject['sizes']['large'])){ $featured_image['source'] = $featuredimagejsobject['sizes']['large']['url']; } if(empty($featured_image['source'])){ $featured_image['source'] = $featuredimagejsobject['url']; } $data['featured_image'] = $featured_image; } $preview = ""; if($this->options['excerpt_preference'] == 'seo_meta_desc'){ $wpseo_metadesc = get_post_meta($post_array['ID'], '_yoast_wpseo_metadesc', true); if(!empty($wpseo_metadesc)){ $preview = html_entity_decode($wpseo_metadesc,null,'UTF-8'); }else{ if (class_exists('WPSEO_Meta')) { $preview = $this->get_seo_description($post_array['ID']); } } }else if($this->options['excerpt_preference'] == 'none'){ $preview = ""; }else{ $this->options['excerpt_preference'] = "excerpt"; $preview = $this->androapp_get_rendered_value($data['excerpt']); } $data['pwapp_excerpt'] = $preview; $data['pwapp_title'] = $this->androapp_get_rendered_value($data['title']); $postcontent = ""; if (array_key_exists('pwapp_before_post_content', $data)){ $postcontent = $data['pwapp_before_post_content']; } $after_post_content = ""; if (array_key_exists('pwapp_after_post_content', $data)){ $after_post_content = $data['pwapp_after_post_content']; } $postContentType = $this->getPostContentTypeFromPostId($post_array['ID'], $this->options['post_content']); if($postContentType == 'preprocessed'){ $shortcodesToRemove = array('caption', 'wp_caption', 'gallery', 'playlist', 'audio','video'); $shortcodesArray = $this->removeShortcodes($shortcodesToRemove); $stripped_content = strip_shortcodes(wpautop($post_array['post_content'])); $this->addShortcodesBack($shortcodesArray); $stripped_content .= $after_post_content; $postcontent .= do_shortcode($stripped_content); }else if($postContentType == 'postprocessed'){ //using $data['content'] for instagram video for autostrada.tv, changing back to post_array $content = do_shortcode($postcontent) .$this->androapp_get_rendered_value($post_array['post_content']) .do_shortcode($after_post_content); $content = apply_filters( 'the_content', $content );//apply filters for related posts $postcontent = $this->getScripts()."
".$content."
"; } if(isset($this->accountOptions[pw_mobile_app_settings::$stripAdsenseUnits]) && $this->accountOptions[pw_mobile_app_settings::$stripAdsenseUnits] == '1'){ $data['pwapp_post_content'] = $this->stripAdsense($postcontent); }else{ $data['pwapp_post_content'] = $postcontent; } $data['pwapp_post_content_type'] = $postContentType; $data['pwapp_preview_type'] = $this->options['excerpt_preference']; $data['share_text'] = ""; if(!empty($share_text_fn) && function_exists($share_text_fn) ){ $data['share_text'] = $share_text_fn($post_array, $data['link']); } if(empty($data['share_text'])){ if(empty($data['share_image'])){ $data['share_text'] = $this->getShareText($post_array, $data, $this->options[pw_mobile_app_settings::$sharePreference]); }else{ $data['share_text'] = $this->getShareText($post_array, $data, $this->options[pw_mobile_app_settings::$shareTextWithImage]); } if(!empty($this->options[pw_mobile_app_settings::$shareSuffixText])){ $data['share_text'] .= "\n".$this->options[pw_mobile_app_settings::$shareSuffixText]; } if($this->options[pw_mobile_app_settings::$shareSuffixLink] == "HOME"){ $data['share_text'] .= " ".get_bloginfo('url'); } else if($this->options[pw_mobile_app_settings::$shareSuffixLink] == "POST"){ $data['share_text'] .= " ". $data['link']; } }else{ if($this->options[pw_mobile_app_settings::$shareImageWithCustomFunction] == "1"){ $data['share_image'] = null; } } if($this->options[pw_mobile_app_settings::$showCommentsCount] == "1" && $this->options[pw_mobile_app_settings::$commentsProvider] == "wordpress"){ $comments_count = wp_count_comments( $post_array['ID']); $data['androapp_comments_count'] = $comments_count->approved; } $data['supercache'] = "androappsupercache"; $post = $orig_post; wp_reset_postdata(); $wp_query->is_home = $prev_ishome; return $data; } function myplugin_api_init( $server ) { add_filter( 'json_endpoints', array( $this->pw_wp_menu, 'register_routes'), 0); add_filter( 'json_endpoints', array( $this->pwapp_gcm, 'register_routes'), 0); add_filter( 'json_endpoints', array( $this->pwapp_woo, 'register_routes'), 0); $this->pwapp_posts = new Pw_Wp_Posts( $server ); add_filter( 'json_endpoints', array( $this->pwapp_posts, 'register_routes'), 0); $this->pwapp_woo_post = new Pw_Wp_Woo( $server ); add_filter( 'json_endpoints', array( $this->pwapp_woo_post, 'register_routes'), 0); } function get_seo_description($post_id){ global $post; $ogdesc = ""; if (class_exists('WPSEO_Meta')){ $ogdesc = WPSEO_Meta::get_value( 'opengraph-description', $post_id ); // Replace Yoast SEO Variables. $ogdesc = wpseo_replace_vars( $ogdesc, $post ); // Use metadesc if $ogdesc is empty. if ( $ogdesc === '' ) { $frontend = WPSEO_Frontend::get_instance(); $ogdesc = $frontend->metadesc( false ); } } // Tag og:description is still blank so grab it from get_the_excerpt(). if ( ! is_string( $ogdesc ) || ( is_string( $ogdesc ) && $ogdesc === '' ) ) { $ogdesc = $this->my_excerpt($post); } return html_entity_decode($ogdesc,null,'UTF-8'); } function my_excerpt($post) { if ($post->post_excerpt) { // excerpt set, return it return apply_filters('the_excerpt', $post->post_excerpt); } else { // setup_postdata( $post ); $excerpt = get_the_excerpt(); //wp_reset_postdata(); return $excerpt; } } function add_css_bottom() { if(isAndroAppRequest()) { echo ''; } } function endswith($string, $test) { $strlen = strlen($string); $testlen = strlen($test); if ($testlen > $strlen) return false; $substr = substr($string, $strlen - $testlen-1, $testlen); return $substr == $test; } function removeIns($el){ $count = 0; while($el != null){ $count++; if($count > 10){ return; } if($el->nodeName == 'br' || $el->nodeName == 'ins'){ $nextSibling = $el->nextSibling; $el->parentNode->removeChild($el); $el = $nextSibling; }else if($el->nodeName == 'script'){ return; }else{ $el = $el->nextSibling; } } } function stripAdsense($html){ try{ $html = "".$html.""; $domDocument = new DOMDocument(); // modify state $libxml_previous_state = libxml_use_internal_errors(true); // parse $domDocument->loadHTML('' . $html); // handle errors libxml_clear_errors(); // restore libxml_use_internal_errors($libxml_previous_state); $domNodeList = $domDocument->getElementsByTagname('script'); foreach ( $domNodeList as $domElement ) { $src = $domElement->getAttribute('src'); if (strpos($src, 'adsbygoogle.js') !== false) { $this->removeIns($domElement->nextSibling); $domElement->parentNode->removeChild($domElement); } if (strpos($src, 'show_ads.js') !== false) { $this->removeIns($domElement->nextSibling); $domElement->parentNode->removeChild($domElement); } } $html = $domDocument->saveHTML(); $bodyPos = strpos($html, '') ; if($bodyPos !== false){ $html = substr($html, $bodyPos+6); $end = ""; if($this->endswith($html, $end)){ $html = substr($html, 0, strlen($html) - strlen($end) -1); } } } catch(Exception $e) { //echo 'Message: ' .$e->getMessage(); } return $html; } }