Done !
Server IP : 162.0.217.223 / Your IP : 216.73.216.150 Web Server : LiteSpeed System : Linux premium269.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : mypckeys ( 1539) PHP Version : 8.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/mypckeys/yeslicense.org/wp-content/plugins/squirrly-seo/models/services/ |
Upload File : |
<?php defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' ); class SQ_Models_Services_OpenGraph extends SQ_Models_Abstract_Seo { /** * Facebook locales * * @var array */ const locales = [ 'af_ZA', // Afrikaans. 'ak_GH', // Akan. 'am_ET', // Amharic. 'ar_AR', // Arabic. 'as_IN', // Assamese. 'ay_BO', // Aymara. 'az_AZ', // Azerbaijani. 'be_BY', // Belarusian. 'bg_BG', // Bulgarian. 'bp_IN', // Bhojpuri. 'bn_IN', // Bengali. 'br_FR', // Breton. 'bs_BA', // Bosnian. 'ca_ES', // Catalan. 'cb_IQ', // Sorani Kurdish. 'ck_US', // Cherokee. 'co_FR', // Corsican. 'cs_CZ', // Czech. 'cx_PH', // Cebuano. 'cy_GB', // Welsh. 'da_DK', // Danish. 'de_DE', // German. 'el_GR', // Greek. 'en_GB', // English (UK). 'en_PI', // English (Pirate). 'en_UD', // English (Upside Down). 'en_US', // English (US). 'em_ZM', 'eo_EO', // Esperanto. 'es_ES', // Spanish (Spain). 'es_LA', // Spanish. 'es_MX', // Spanish (Mexico). 'et_EE', // Estonian. 'eu_ES', // Basque. 'fa_IR', // Persian. 'fb_LT', // Leet Speak. 'ff_NG', // Fulah. 'fi_FI', // Finnish. 'fo_FO', // Faroese. 'fr_CA', // French (Canada). 'fr_FR', // French (France). 'fy_NL', // Frisian. 'ga_IE', // Irish. 'gl_ES', // Galician. 'gn_PY', // Guarani. 'gu_IN', // Gujarati. 'gx_GR', // Classical Greek. 'ha_NG', // Hausa. 'he_IL', // Hebrew. 'hi_IN', // Hindi. 'hr_HR', // Croatian. 'hu_HU', // Hungarian. 'ht_HT', // Haitian Creole. 'hy_AM', // Armenian. 'id_ID', // Indonesian. 'ig_NG', // Igbo. 'is_IS', // Icelandic. 'it_IT', // Italian. 'ik_US', 'iu_CA', 'ja_JP', // Japanese. 'ja_KS', // Japanese (Kansai). 'jv_ID', // Javanese. 'ka_GE', // Georgian. 'kk_KZ', // Kazakh. 'km_KH', // Khmer. 'kn_IN', // Kannada. 'ko_KR', // Korean. 'ks_IN', // Kashmiri. 'ku_TR', // Kurdish (Kurmanji). 'ky_KG', // Kyrgyz. 'la_VA', // Latin. 'lg_UG', // Ganda. 'li_NL', // Limburgish. 'ln_CD', // Lingala. 'lo_LA', // Lao. 'lt_LT', // Lithuanian. 'lv_LV', // Latvian. 'mg_MG', // Malagasy. 'mi_NZ', // Maori. 'mk_MK', // Macedonian. 'ml_IN', // Malayalam. 'mn_MN', // Mongolian. 'mr_IN', // Marathi. 'ms_MY', // Malay. 'mt_MT', // Maltese. 'my_MM', // Burmese. 'nb_NO', // Norwegian (bokmal). 'nd_ZW', // Ndebele. 'ne_NP', // Nepali. 'nl_BE', // Dutch (Belgie). 'nl_NL', // Dutch. 'nn_NO', // Norwegian (nynorsk). 'nr_ZA', // Southern Ndebele. 'ns_ZA', // Northern Sotho. 'ny_MW', // Chewa. 'om_ET', // Oromo. 'or_IN', // Oriya. 'pa_IN', // Punjabi. 'pl_PL', // Polish. 'ps_AF', // Pashto. 'pt_BR', // Portuguese (Brazil). 'pt_PT', // Portuguese (Portugal). 'qc_GT', // Quiché. 'qu_PE', // Quechua. 'qr_GR', 'qz_MM', // Burmese (Zawgyi). 'rm_CH', // Romansh. 'ro_RO', // Romanian. 'ru_RU', // Russian. 'rw_RW', // Kinyarwanda. 'sa_IN', // Sanskrit. 'sc_IT', // Sardinian. 'se_NO', // Northern Sami. 'si_LK', // Sinhala. 'su_ID', // Sundanese. 'sk_SK', // Slovak. 'sl_SI', // Slovenian. 'sn_ZW', // Shona. 'so_SO', // Somali. 'sq_AL', // Albanian. 'sr_RS', // Serbian. 'ss_SZ', // Swazi. 'st_ZA', // Southern Sotho. 'sv_SE', // Swedish. 'sw_KE', // Swahili. 'sy_SY', // Syriac. 'sz_PL', // Silesian. 'ta_IN', // Tamil. 'te_IN', // Telugu. 'tg_TJ', // Tajik. 'th_TH', // Thai. 'tk_TM', // Turkmen. 'tl_PH', // Filipino. 'tl_ST', // Klingon. 'tn_BW', // Tswana. 'tr_TR', // Turkish. 'ts_ZA', // Tsonga. 'tt_RU', // Tatar. 'tz_MA', // Tamazight. 'uk_UA', // Ukrainian. 'ur_PK', // Urdu. 'uz_UZ', // Uzbek. 've_ZA', // Venda. 'vi_VN', // Vietnamese. 'wo_SN', // Wolof. 'xh_ZA', // Xhosa. 'yi_DE', // Yiddish. 'yo_NG', // Yoruba. 'zh_CN', // Simplified Chinese (China). 'zh_HK', // Traditional Chinese (Hong Kong). 'zh_TW', // Traditional Chinese (Taiwan). 'zu_ZA', // Zulu. 'zz_TR', // Zazaki. ]; public function __construct() { parent::__construct(); if ( isset( $this->_post->sq->doseo ) && $this->_post->sq->doseo ) { if ( ! $this->_post->sq->do_og ) { add_filter( 'sq_open_graph', array( $this, 'returnFalse' ) ); return; } add_filter( 'sq_locale', array( $this, 'setLocale' ) ); add_filter( 'sq_html_prefix', array( $this, 'addOGPrefix' ) ); add_filter( 'sq_open_graph', array( $this, 'generateOpenGraph' ) ); add_filter( 'sq_open_graph', array( $this, 'packOpenGraph' ), 99 ); } else { add_filter( 'sq_open_graph', array( $this, 'returnFalse' ) ); } } public function addOGPrefix( $prefix = '' ) { $prefix .= 'og: http://ogp.me/ns#'; if ( ! empty( $this->_post->socials->fb_admins ) || $this->_post->socials->fbadminapp <> '' ) { $prefix .= ' fb: http://ogp.me/ns/fb#'; } return $prefix; } public function generateOpenGraph( $og ) { if ( ! $og ) { $og = array(); } if ( SQ_Classes_Helpers_Tools::getOption( 'sq_auto_facebook' ) ) { if ( $this->_post->url <> '' ) { $og['og:url'] = apply_filters( 'sq_canonical_url', urldecode( esc_url( $this->_post->url ) ) ); } if ( $this->_post->sq->og_title <> '' ) { $og['og:title'] = SQ_Classes_Helpers_Sanitize::clearTitle( $this->_post->sq->og_title ); } else { $og['og:title'] = SQ_Classes_Helpers_Sanitize::clearTitle( $this->_post->sq->title ); if ( $og['og:title'] <> '' && strlen( $og['og:title'] ) > $this->_post->sq->og_title_maxlength ) { $og['og:title'] = $this->truncate( $og['og:title'], 10, $this->_post->sq->og_title_maxlength ); } } if ( $this->_post->sq->og_description <> '' ) { $og['og:description'] = SQ_Classes_Helpers_Sanitize::clearDescription( $this->_post->sq->og_description ); } else { $og['og:description'] = SQ_Classes_Helpers_Sanitize::clearDescription( $this->_post->sq->description ); if ( $og['og:description'] <> '' && strlen( $og['og:description'] ) > $this->_post->sq->og_description_maxlength ) { $og['og:description'] = $this->truncate( $og['og:description'], 10, $this->_post->sq->og_description_maxlength ); } } if ( $this->_post->sq->og_type <> '' ) { if ( $this->_post->sq->og_type == 'newsarticle' ) { $og['og:type'] = 'article'; } else { $og['og:type'] = $this->_post->sq->og_type; } } else { $og['og:type'] = 'website'; } if ( $this->_post->sq->og_media <> '' ) { $og['og:image'] = $this->_post->sq->og_media; $og['og:image:width'] = '500'; $imagetype = $this->getImageType( $this->_post->sq->og_media ); if ( $imagetype ) { $og['og:image:type'] = $imagetype; } if ( $og['og:type'] == 'video' ) { $this->_setMedia( $og ); } } else { $this->_setMedia( $og ); } //Get the default global image for Open Graph if ( SQ_Classes_Helpers_Tools::getOption( 'sq_og_image' ) ) { if ( ! isset( $og['og:image'] ) ) { $og['og:image'] = SQ_Classes_Helpers_Tools::getOption( 'sq_og_image' ); $og['og:image:width'] = '500'; $imagetype = $this->getImageType( SQ_Classes_Helpers_Tools::getOption( 'sq_og_image' ) ); if ( $imagetype ) { $og['og:image:type'] = $imagetype; } } } $og['og:site_name'] = get_bloginfo( 'title' ); $og['og:locale'] = apply_filters( 'sq_locale', get_locale() ); if ( $this->_post->socials->fbadminapp <> '' ) { $og['fb:app_id'] = $this->_post->socials->fbadminapp; } if ( ! empty( $this->_post->socials->fb_admins ) ) { foreach ( $this->_post->socials->fb_admins as $admin ) { if ( isset( $admin->id ) ) { $og['fb:admins'][] = $admin->id; } } } if ( $this->_post->sq->og_type == 'article' ) { if ( isset( $this->_post->post_date ) && $this->_post->post_date <> '' ) { $og['og:publish_date'] = date( "c", strtotime( $this->_post->post_date ) ); $og['article:published_time'] = date( "c", strtotime( $this->_post->post_date ) ); } if ( isset( $this->_post->post_modified ) && $this->_post->post_modified <> '' ) { $og['article:modified_time'] = date( "c", strtotime( $this->_post->post_modified ) ); } if ( isset( $this->_post->category ) && $this->_post->category <> '' ) { $og['article:section'] = $this->_post->category; } else { $category = get_the_category( $this->_post->ID ); if ( ! empty( $category ) && $category[0]->cat_name <> 'Uncategorized' ) { $og['article:section'] = $category[0]->cat_name; } } if ( SQ_Classes_Helpers_Tools::getOption( 'sq_jsonld_global_person' ) ) { $jsonld = SQ_Classes_Helpers_Tools::getOption( 'sq_jsonld' ); if ( isset( $jsonld['Person']['name'] ) && $jsonld['Person']['name'] <> '' ) { $og['article:author'] = $jsonld['Person']['name']; } } elseif ( (int) $this->_post->post_author > 0 ) { $author = get_user_by( 'ID', (int) $this->_post->post_author ); if ( isset( $author->display_name ) ) { $og['article:author'] = $author->display_name; } } if ( $this->_post->sq->keywords <> '' ) { $keywords = explode( ',', $this->_post->sq->keywords ); } if ( ! empty( $keywords ) ) { foreach ( $keywords as $keyword ) { $og['article:tag'][] = $keyword; } } if ( SQ_Classes_Helpers_Tools::getOption( 'sq_keywordtag' ) ) { $posttags = get_the_tags( $this->_post->post_id ); if ( ! empty( $posttags ) ) { foreach ( $posttags as $tag ) { $og['article:tag'][] = $tag->name; } } } } elseif ( $this->_post->post_type == 'profile' && $this->_post->post_author <> '' ) { if ( strpos( $this->_post->post_author, " " ) !== false ) { $author = explode( " ", $this->_post->post_author ); } else { $author = array( $this->_post->post_author ); } $og['profile:first_name'] = $author[0]; if ( isset( $author[1] ) ) { $og['profile:last_name'] = $author[1]; } } elseif ( $this->_post->post_type === 'product' ) { if ( $this->_post->category <> '' ) { $og['product:category'] = $this->_post->category; } if ( (int) $this->_post->sq->primary_category > 0 ) { $category = get_term( (int) $this->_post->sq->primary_category, 'product_cat' ); if ( isset( $category->name ) && $category->name <> '' ) { $og['product:category'] = $category->name; } } global $product; if ( class_exists( 'WC_Product' ) && $product instanceof WC_Product ) { $currency = 'USD'; $regular_price = $sale_price = $price = $sales_price_from = $sales_price_to = 0; //Product ID $og['product:retailer_item_id'] = ( method_exists( $product, 'get_sku' ) ) ? ( $product->get_sku() <> '' ? $product->get_sku() : '' ) : ''; //Product Brand $sq_woocommerce = get_post_meta( $this->_post->ID, '_sq_woocommerce', true ); if ( isset( $sq_woocommerce['brand'] ) && $sq_woocommerce['brand'] <> '' ) { $og['brand'] = $sq_woocommerce['brand']; } if ( method_exists( $product, 'is_on_backorder' ) && $product->is_on_backorder() ) { $og['product:availability'] = __( 'On backorder', 'woocommerce' ); } elseif ( method_exists( $product, 'is_in_stock' ) && $product->is_in_stock() ) { $og['product:availability'] = __( 'In stock', 'woocommerce' ); } else { $og['product:availability'] = __( 'Out of stock', 'woocommerce' ); } if ( method_exists( $product, 'get_regular_price' ) ) { $regular_price = $product->get_regular_price(); } if ( method_exists( $product, 'get_sale_price' ) ) { $sale_price = $product->get_sale_price(); if ( $sale_price > 0 && method_exists( $product, 'get_date_on_sale_from' ) && method_exists( $product, 'get_date_on_sale_to' ) ) { $sales_price_from = $product->get_date_on_sale_from(); $sales_price_to = $product->get_date_on_sale_to(); if ( is_a( $sales_price_from, 'WC_DateTime' ) && method_exists( $sales_price_from, 'getTimestamp' ) ) { $sales_price_from = $sales_price_from->getTimestamp(); } if ( is_a( $sales_price_to, 'WC_DateTime' ) && method_exists( $sales_price_to, 'getTimestamp' ) ) { $sales_price_to = $sales_price_to->getTimestamp(); } } } if ( method_exists( $product, 'get_price' ) ) { $price = $product->get_price(); } if ( function_exists( 'get_woocommerce_currency' ) ) { $currency = get_woocommerce_currency(); } if ( $regular_price > 0 && $regular_price <> $price ) { //Get the price with VAT if exists if ( function_exists( 'wc_get_price_including_tax' ) && function_exists( 'wc_tax_enabled' ) ) { if ( wc_tax_enabled() && ! wc_prices_include_tax() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) ) { $regular_price = wc_get_price_including_tax( $product, array( 'price' => $regular_price ) ); } } $og['product:original_price:amount'] = wc_format_decimal( $regular_price, wc_get_price_decimals() ); $og['product:original_price:currency'] = $currency; } if ( $price > 0 ) { //Get the price with VAT if exists if ( function_exists( 'wc_get_price_including_tax' ) && function_exists( 'wc_tax_enabled' ) ) { if ( wc_tax_enabled() && ! wc_prices_include_tax() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) ) { $price = wc_get_price_including_tax( $product, array( 'price' => $price ) ); } } $og['product:price:amount'] = wc_format_decimal( $price, wc_get_price_decimals() ); $og['product:price:currency'] = $currency; } if ( $sale_price > 0 ) { //Get the price with VAT if exists if ( function_exists( 'wc_get_price_including_tax' ) && function_exists( 'wc_tax_enabled' ) ) { if ( wc_tax_enabled() && ! wc_prices_include_tax() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) ) { $sale_price = wc_get_price_including_tax( $product, array( 'price' => $sale_price ) ); } } $og['product:sale_price:amount'] = wc_format_decimal( $sale_price, wc_get_price_decimals() ); $og['product:sale_price:currency'] = $currency; if ( $sales_price_from > 0 ) { $og['product:sale_price:start'] = date( "Y-m-d", $sales_price_from ); } if ( $sales_price_to ) { $og['product:sale_price:end'] = date( "Y-m-d", $sales_price_to ); } } } } } return $og; } protected function _setMedia( &$og ) { if ( $og['og:type'] == 'video' ) { if ( $videos = $this->getPostVideos() ) { if ( ! empty( $videos ) ) { $video = current( $videos ); if ( $video['src'] <> '' ) { $video['src'] = preg_replace( '/(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>\s]+)/si', "https://www.youtube.com/v/$1", $video['src'] ); $og['og:video'] = $video['src']; $og['og:video:url'] = $video['src']; $og['og:video:secure_url'] = $video['src']; $og['og:video:type'] = ( ( strpos( $video['src'], 'mp4' ) !== false ) ? 'video/mp4' : 'application/x-shockwave-flash' ); $og['og:video:width'] = '640'; $og['og:video:height'] = '360'; if ( isset( $video['thumbnail'] ) && $video['thumbnail'] <> '' ) { $og['og:image'] = $video['thumbnail']; } } } } } else { $images = $this->getPostImages(); if ( ! empty( $images ) ) { $image = current( $images ); if ( isset( $image['src'] ) ) { $og['og:image'] = $image['src']; if ( isset( $image['width'] ) ) { $og['og:image:width'] = $image['width']; } if ( isset( $image['height'] ) ) { $og['og:image:height'] = $image['height']; } $imagetype = $this->getImageType( $image['src'] ); if ( $imagetype ) { $og['og:image:type'] = $imagetype; } } } } } /** * Sanitize locale. * * @param string $locale * * @return string */ public function sanitize( $locale ) { $fix_locales = array( 'ca' => 'ca_ES', 'en' => 'en_US', 'el' => 'el_GR', 'et' => 'et_EE', 'ja' => 'ja_JP', 'sq' => 'sq_AL', 'uk' => 'uk_UA', 'vi' => 'vi_VN', 'zh' => 'zh_CN', 'te' => 'te_IN', 'ur' => 'ur_PK', 'cy' => 'cy_GB', 'eu' => 'eu_ES', 'th' => 'th_TH', 'af' => 'af_ZA', 'hy' => 'hy_AM', 'gu' => 'gu_IN', 'kn' => 'kn_IN', 'mr' => 'mr_IN', 'kk' => 'kk_KZ', 'lv' => 'lv_LV', 'sw' => 'sw_KE', 'tl' => 'tl_PH', 'ps' => 'ps_AF', 'as' => 'as_IN', ); if ( isset( $fix_locales[ $locale ] ) ) { $locale = $fix_locales[ $locale ]; } // Convert locales like "es" to "es_ES", in case that works for the given locale (sometimes it does). if ( 2 === strlen( $locale ) ) { $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); } return $locale; } /** * Validate FB . * * @param string $locale . * * @return string */ public function validate( $locale ) { if ( in_array( $locale, self::locales, true ) ) { return $locale; } $locale = strtolower( substr( $locale, 0, 2 ) ) . '_' . strtoupper( substr( $locale, 0, 2 ) ); return in_array( $locale, self::locales, true ) ? $locale : SQ_Classes_Helpers_Tools::getOption( 'sq_og_locale' ); } /** * Set local meta for FB * * @param $locale * * @return string */ public function setLocale( $locale ) { //if WPML is installed, get the local language if ( function_exists( 'wpml_get_language_information' ) && (int) $this->_post->ID > 0 ) { if ( $language = wpml_get_language_information( (int) $this->_post->ID ) ) { if ( ! is_wp_error( $language ) && isset( $language['locale'] ) ) { if ( $locale <> 'en' ) { $locale = $language['locale']; } } } } if ( function_exists( 'weglot_get_current_language' ) ) { $locale = weglot_get_current_language(); } $locale = $this->sanitize( $locale ); return $this->validate( $locale ); } /** * Pack the OpenGraph to meta format * * @param array $og * * @return bool|string */ public function packOpenGraph( $og = array() ) { if ( ! empty( $og ) ) { foreach ( $og as $key => &$value ) { if ( is_array( $value ) ) { $str = ''; foreach ( $value as $subvalue ) { $str .= '<meta property="' . $key . '" content="' . $subvalue . '" />' . ( ( count( (array) $value ) > 1 ) ? "\n" : '' ); } $value = $str; } else { $value = '<meta property="' . $key . '" content="' . $value . '" />'; } } return "\n" . join( "\n", array_values( $og ) ); } return false; } }