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/controllers/ |
Upload File : |
<?php defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' ); class SQ_Controllers_FocusPages extends SQ_Classes_FrontController { /** @var object Checkin process with Squirrly Cloud */ public $checkin; /** @var array list of tasks labels */ public $labels = array(); /** @var false|SQ_Models_Domain_Post[] found pages in DB */ public $pages = false; /** @var SQ_Models_Domain_FocusPage[] of focus pages from API */ public $focuspages = array(); /** @var SQ_Models_Domain_FocusPage Used in the view for defining the Focus Page row */ public $focuspage; /** @var SQ_Models_Domain_Post */ public $post; /** @var WP_Post used for innerlinks */ public $innerlinks; /** * @var int $max_num_pages Total number of results */ public $max_num_pages = 0; /** * Initiate the class if called from menu * * @return mixed|void */ function init() { $tab = preg_replace( "/[^a-zA-Z0-9]/", "", SQ_Classes_Helpers_Tools::getValue( 'tab', 'pagelist' ) ); //Show connection only for the Focus Pages and not Inner links if ( in_array( $tab, array( 'addpage', 'pagelist', 'login', 'register' ) ) ) { if ( SQ_Classes_Helpers_Tools::getOption( 'sq_api' ) == '' ) { $this->show_view( 'Errors/Connect' ); return; } //Checkin to API V2 $this->checkin = SQ_Classes_RemoteController::checkin(); if ( is_wp_error( $this->checkin ) ) { if ( $this->checkin->get_error_message() == 'no_data' ) { $this->show_view( 'Errors/Error' ); return; } elseif ( $this->checkin->get_error_message() == 'maintenance' ) { $this->show_view( 'Errors/Maintenance' ); return; } } } SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'seosettings' ); SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'chart' ); SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'knob' ); if ( method_exists( $this, $tab ) ) { if ( SQ_Classes_Helpers_Tools::userCan( 'sq_manage_focuspages' ) ) { call_user_func( array( $this, $tab ) ); } } add_action( 'sq_focuspages_after', function () { //get the modal window for the assistant popup echo SQ_Classes_ObjController::getClass( 'SQ_Models_Assistant' )->getModal(); } ); add_action( 'sq_innerlinks_after', function () { //get the modal window for the innerlinks popup echo SQ_Classes_ObjController::getClass( 'SQ_Models_Assistant' )->getInnerlinksModal(); } ); $this->show_view( 'FocusPages/' . esc_attr( ucfirst( $tab ) ) ); } /** * Load for Add Focus Page menu tab */ public function addpage() { // Get the default pages if( $this->pages === false ){ $this->pages = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->getPages( '' ); } //get also the focus pages $this->focuspages = SQ_Classes_RemoteController::getFocusPages(); if ( ! empty( $this->focuspages ) ) { foreach ( $this->focuspages as &$focuspage ) { $focuspage = SQ_Classes_ObjController::getDomain( 'SQ_Models_Domain_FocusPage', $focuspage ); } } } /** * Called for List of the Focus Pages */ public function pagelist() { //Set the Labels and Categories SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'focuspages' ); SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'labels' ); //Set the focus pages and labels $this->setFocusPages(); } /** * Called for List of the Focus Pages */ public function innerlinks() { SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'focuspages' ); SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'bootstrap-ajax-select' ); SQ_Classes_ObjController::getClass( 'SQ_Classes_DisplayController' )->loadMedia( 'datatables' ); $page = (int)SQ_Classes_Helpers_Tools::getValue( 'spage', 1 ); $search = SQ_Classes_Helpers_Tools::getValue( 'squery' ); $type = SQ_Classes_Helpers_Tools::getValue( 'stype' ); $num = SQ_Classes_Helpers_Tools::getValue( 'snum', SQ_Classes_Helpers_Tools::getOption( 'sq_posts_per_page' ) ); $args = array( 'start' => ( $page - 1 ) * $num, 'num' => $num, 'search' => $search, ); $this->innerlinks = SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->getSqInnerlinks( $args ); if ( is_wp_error( $this->innerlinks ) ) { SQ_Classes_Error::setError( esc_html__( "Can't load data!", _SQ_PLUGIN_NAME_ ) ); $this->innerlinks = false; } elseif ( ! empty( $this->innerlinks ) ) { if ( $type || ( $search && trim( $search ) <> '' ) ) { foreach ( $this->innerlinks as $id => $innerlink ) { $from_url = get_permalink( $innerlink->from_post_id ); $to_url = get_permalink( $innerlink->to_post_id ); if ( $search ) { if ( SQ_Classes_Helpers_Tools::findStr( $innerlink->keyword, $search ) === false && SQ_Classes_Helpers_Tools::findStr( $from_url, $search ) === false && SQ_Classes_Helpers_Tools::findStr( $to_url, $search ) === false ) { unset( $this->innerlinks[ $id ] ); } } if ( $type ) { if ( $type == 'nofollow' && ! $innerlink->nofollow ) { unset( $this->innerlinks[ $id ] ); } if ( $type == 'blank' && ! $innerlink->blank ) { unset( $this->innerlinks[ $id ] ); } } } } $this->max_num_pages = ceil( count( $this->innerlinks ) / $num ); $start = ( $page - 1 ) * $num; $this->innerlinks = array_slice( $this->innerlinks, (int) $start, (int) $num ); } } /** * Set the Focus Pages and Labels */ public function setFocusPages() { $labels = SQ_Classes_Helpers_Tools::getValue( 'slabel', array() ); $days_back = (int) SQ_Classes_Helpers_Tools::getValue( 'days_back', 90 ); $sid = SQ_Classes_Helpers_Tools::getValue( 'sid' ); SQ_Classes_ObjController::getClass( 'SQ_Models_FocusPages' )->init(); $this->checkin = SQ_Classes_RemoteController::checkin(); if ( $focuspages = SQ_Classes_RemoteController::getFocusPages() ) { if ( is_wp_error( $focuspages ) ) { SQ_Classes_Error::setError( 'Could not load the Focus Pages.' ); } else { //Get the audits for the focus pages $audits = SQ_Classes_RemoteController::getFocusAudits( array( 'post_id' => $sid, 'days_back' => $days_back ) ); if ( ! empty( $focuspages ) ) { foreach ( $focuspages as $focuspage ) { //Add the audit data if exists if ( ! is_wp_error( $audits ) ) { if ( isset( $focuspage->user_post_id ) && ! empty( $audits ) ) { foreach ( $audits as $audit ) { if ( $focuspage->user_post_id == $audit->user_post_id ) { if ( isset( $audit->audit ) ) { $audit->audit = json_decode( $audit->audit ); } //set the audit data if ( isset( $audit->stats ) ) { $audit->stats = json_decode( $audit->stats ); } //set the stats and progress data $focuspage = (object) array_merge( (array) $focuspage, (array) $audit ); break; } } } } /** @var SQ_Models_Domain_FocusPage $focuspage */ $focuspage = SQ_Classes_ObjController::getDomain( 'SQ_Models_Domain_FocusPage', $focuspage ); //set the connection info with GSC and GA $focuspage->audit->sq_analytics_gsc_connected = ( isset( $this->checkin->connection_gsc ) ? $this->checkin->connection_gsc : 0 ); $focuspage->audit->sq_analytics_google_connected = ( isset( $this->checkin->connection_ga ) ? $this->checkin->connection_ga : 0 ); $focuspage->audit->sq_subscription_serpcheck = ( isset( $this->checkin->subscription_serpcheck ) ? $this->checkin->subscription_serpcheck : 0 ); //If there is a local page, then show focus if ( $focuspage->getWppost() ) { //if post_id is set, show only that focus page if ( $sid && $focuspage->id <> $sid ) { continue; } $this->focuspages[] = SQ_Classes_ObjController::getClass( 'SQ_Models_FocusPages' )->parseFocusPage( $focuspage, $labels )->getFocusPage(); } elseif ( $focuspage->user_post_id ) { SQ_Classes_Error::setError( esc_html__( "Focus Page does not exist or was deleted from your website.", 'squirrly-seo' ) ); SQ_Classes_RemoteController::deleteFocusPage( array( 'user_post_id' => $focuspage->user_post_id ) ); } } } } } //Remove the blank focus pages $this->focuspages = array_filter( $this->focuspages ); //Get the labels for view use if ( ! empty( $labels ) || count( (array) $this->focuspages ) > 1 ) { $this->labels = SQ_Classes_ObjController::getClass( 'SQ_Models_FocusPages' )->getLabels(); } } /** * Load the Google Chart * * @return void */ public function loadScripts() { echo '<script> function drawScoreChart(id, values, reverse) { var data = google.visualization.arrayToDataTable(values); var options = { title : "", chartArea:{width:"85%",height:"80%"}, enableInteractivity: "true", tooltip: {trigger: "auto"}, vAxis: { direction: ((reverse) ? -1 : 1), title: "", viewWindowMode:"explicit", viewWindow: { max:100, min:0 }}, hAxis: { title: "", baselineColor: "transparent", gridlineColor: "transparent", textPosition: "none" } , seriesType: "bars", series: {2: {type: "line"}}, legend: {position: "bottom"}, colors:["#6200EE"] }; var chart = new google.visualization.ComboChart(document.getElementById(id)); chart.draw(data, options); return chart; } function drawRankingChart(id, values, reverse) { var data = google.visualization.arrayToDataTable(values); var options = { curveType: "function", title: "", chartArea:{width:"100%",height:"100%"}, enableInteractivity: "true", tooltip: {trigger: "auto"}, pointSize: "2", colors: ["#6200EE"], hAxis: { baselineColor: "transparent", gridlineColor: "transparent", textPosition: "none" } , vAxis:{ direction: ((reverse) ? -1 : 1), baselineColor: "transparent", gridlineColor: "transparent", textPosition: "none" } }; var chart = new google.visualization.LineChart(document.getElementById(id)); chart.draw(data, options); return chart; } function drawTrafficChart(id, values, reverse) { var data = google.visualization.arrayToDataTable(values); var options = { title : "", chartArea:{width:"85%",height:"80%"}, enableInteractivity: "true", tooltip: {trigger: "auto"}, vAxis: { direction: ((reverse) ? -1 : 1), title: "", viewWindowMode:"explicit" }, hAxis: { title: "", baselineColor: "transparent", gridlineColor: "transparent", textPosition: "none" } , seriesType: "bars", series: {2: {type: "line"}}, legend: {position: "bottom"}, colors:["#6200EE"] }; var chart = new google.visualization.ComboChart(document.getElementById(id)); chart.draw(data, options); return chart; } </script>'; } /** * Called when action is triggered * * @return void */ public function action() { parent::action(); if ( ! SQ_Classes_Helpers_Tools::userCan( 'sq_manage_focuspages' ) ) { if ( SQ_Classes_Helpers_Tools::isAjax() ) { wp_send_json_error( esc_html__( "You do not have permission to perform this action", 'squirrly-seo' ) ); } else { SQ_Classes_Error::setError( esc_html__( "You do not have permission to perform this action", 'squirrly-seo' ) ); } } switch ( SQ_Classes_Helpers_Tools::getValue( 'action' ) ) { case 'sq_focus_pages_settings': //Save the settings if ( isset( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] === 'POST' ) { SQ_Classes_ObjController::getClass( 'SQ_Models_Settings' )->saveSettings(); SQ_Classes_Helpers_Tools::saveOptions( 'sq_innelinks_link_template', wp_kses( $_POST['sq_innelinks_link_template'], array( 'a' => array( 'href' => array(), 'class' => array(), 'style' => array(), 'title' => array() ) ) ) ); SQ_Classes_Helpers_Tools::saveOptions( 'sq_innelinks_exclude_tags', SQ_Classes_Helpers_Tools::getValue( 'sq_innelinks_exclude_tags', array() ) ); } //save the options in database SQ_Classes_Helpers_Tools::saveOptions(); //show the saved message if ( ! SQ_Classes_Error::isError() ) { SQ_Classes_Error::setMessage( esc_html__( "Saved", 'squirrly-seo' ) ); } break; case 'sq_focuspages_search': $search = (string) SQ_Classes_Helpers_Tools::getValue( 'skeyword', '' ); $this->pages = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->getPages( $search ); break; case 'sq_focuspages_inspecturl': SQ_Classes_Helpers_Tools::setHeader( 'json' ); $json = array(); $post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'post_id', 0 ); //Set the focus pages and labels $args = array(); $args['post_id'] = $post_id; if ( $json['html'] = SQ_Classes_RemoteController::getInspectURL( $args ) ) { //Support for international languages if ( function_exists( 'iconv' ) && SQ_Classes_Helpers_Tools::getOption( 'sq_non_utf8_support' ) ) { if ( strpos( get_bloginfo( "language" ), 'en' ) === false ) { $json['html'] = iconv( 'UTF-8', 'UTF-8//IGNORE', $json['html'] ); } } } if ( SQ_Classes_Error::isError() ) { $json['error'] = SQ_Classes_Error::getError(); } echo wp_json_encode( $json ); exit(); case 'sq_focuspages_getpage': SQ_Classes_Helpers_Tools::setHeader( 'json' ); $json = array(); //Set the focus pages and labels $this->setFocusPages(); $json['html'] = $this->get_view( 'FocusPages/FocusPages' ); //Support for international languages if ( function_exists( 'iconv' ) && SQ_Classes_Helpers_Tools::getOption( 'sq_non_utf8_support' ) ) { if ( strpos( get_bloginfo( "language" ), 'en' ) === false ) { $json['html'] = iconv( 'UTF-8', 'UTF-8//IGNORE', $json['html'] ); } } if ( SQ_Classes_Error::isError() ) { $json['error'] = SQ_Classes_Error::getError(); } echo wp_json_encode( $json ); exit(); case 'sq_focuspages_getinnerlinks': SQ_Classes_Helpers_Tools::setHeader( 'json' ); $json = array(); $post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'post_id', 0 ); //get the innerlinks for a local buffer if ( ! $this->innerlinks = get_transient( 'sq_innerlinks_suggestion' ) ) { $args = array(); $args['post_id'] = $post_id; $args['found'] = 0; if ( $this->innerlinks = SQ_Classes_RemoteController::getFocusPageInnerlinks( $args ) ) { if ( is_wp_error( $this->innerlinks ) ) { $json['error'] = $this->innerlinks->get_error_message(); } else { if ( ! empty( $this->innerlinks ) ) { $local_innerlinks = SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->getSqInnerlinks( array() ); if ( is_wp_error( $local_innerlinks ) ) { $json['error'] = $local_innerlinks->get_error_message(); } elseif ( ! empty( $local_innerlinks ) ) { $allow = array( 'from_post_id' => '', 'to_post_id' => '', 'keyword' => '' ); //Compare the innerlinks found by the Cloud $local_innerlinks = array_map( function ( $innerlink ) use ( $allow ) { return array_intersect_key( $innerlink->toArray(), $allow ); }, (array) $local_innerlinks ); $this->innerlinks = array_map( function ( $innerlink ) use ( $allow ) { return array_intersect_key( (array) $innerlink, $allow ); }, (array) $this->innerlinks ); $this->innerlinks = array_udiff( $this->innerlinks, $local_innerlinks, function ( $array1, $array2 ) { return strcmp( json_encode( $array1 ), json_encode( $array2 ) ); } ); } if ( ! empty( $this->innerlinks ) ) { foreach ( $this->innerlinks as $index => $innerlink ) { $innerlink = SQ_Classes_ObjController::getDomain( 'SQ_Models_Domain_Innerlink', $innerlink ); if ( $innerlink->found ){ unset( $this->innerlinks[ $index ] ); }elseif ( ! $from_post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->getCurrentSnippet( $innerlink->from_post_id ) ) { unset( $this->innerlinks[ $index ] ); } else { $valid = SQ_Classes_ObjController::getClass( 'SQ_Models_Post' )->checkInnerLink( $from_post->post_content, $innerlink->keyword, $innerlink->from_post_id ); if ( in_array( $from_post->post_type, array( 'elementor_library', 'ct_template', 'oxy_user_library', 'fusion_template', 'shop_2', 'profile' ) ) ) { unset( $this->innerlinks[ $index ] ); } if ( ! $valid || ! isset( $from_post->ID ) || $from_post->post_status <> 'publish' || ! post_type_exists( $from_post->post_type ) || $from_post->post_type == 'profile' ) { unset( $this->innerlinks[ $index ] ); } } } } if ( ! empty( $this->innerlinks ) ) { set_transient( 'sq_innerlinks_suggestion', $this->innerlinks, HOUR_IN_SECONDS ); } } } } } if ( ! empty( $this->innerlinks ) ) { $json['innerlinks'] = $this->innerlinks; } $json['html'] = $this->get_view( 'Blocks/Innerlinks' ); echo wp_json_encode( $json ); exit(); case 'sq_focuspages_addinnerlink': $keyword = SQ_Classes_Helpers_Tools::getValue( 'keyword', '' ); $from_post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'from_post_id', 0 ); $from_post_ids = SQ_Classes_Helpers_Tools::getValue( 'from_post_ids', array() ); $to_post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'to_post_id', 0 ); $nofollow = (int) SQ_Classes_Helpers_Tools::getValue( 'nofollow' ); $blank = (int) SQ_Classes_Helpers_Tools::getValue( 'blank' ); $id = SQ_Classes_Helpers_Tools::getValue( 'id' ); delete_transient( 'sq_innerlinks_suggestion' ); // Add inner Links if ( ! $id && ! empty( $from_post_ids ) ) { foreach ( $from_post_ids as $from_post_id ) { if ( $from_post_id && $to_post_id && $from_post_id <> $to_post_id && $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $from_post_id ) ) { // Check if the keyword exists in the post content and is valid for inner link $valid = SQ_Classes_ObjController::getClass( 'SQ_Models_Post' )->checkInnerLink( $post->post_content, $keyword, $to_post_id ); /** @var SQ_Models_Domain_Innerlink $innerlink */ $innerlink = SQ_Classes_ObjController::getDomain( 'SQ_Models_Domain_Innerlink', array( 'from_post_id' => (int) $from_post_id, 'to_post_id' => $to_post_id, 'keyword' => $keyword, 'valid' => $valid, ) )->toArray(); if ( $nofollow !== false ) { $innerlink['nofollow'] = $nofollow; } if ( $blank !== false ) { $innerlink['blank'] = $blank; } // Set the innerlink ID $id = substr( md5( join( "", (array) $innerlink ) ), 0, 10 ); // Check the optimizations and save them locally $innerlinks = $post->sq->innerlinks; $innerlinks[ $id ] = $innerlink; $post->sq->innerlinks = $innerlinks; SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post, $post->sq ); //send the post to API $args = array(); $args['from_post_id'] = (int) $from_post_id; $args['to_post_id'] = $to_post_id; $args['keyword'] = $keyword; $args['found'] = $valid; SQ_Classes_RemoteController::setFocusPageInnerlink( $args ); } } if ( SQ_Classes_Helpers_Tools::isAjax() ) { wp_send_json_success( esc_html__( "Inner link is saved.", 'squirrly-seo' ) ); } else { SQ_Classes_Error::setMessage( esc_html__( "Inner link is saved.", 'squirrly-seo' ) . " <br /> " ); } } elseif ( $id && $from_post_id && $to_post_id && $from_post_id <> $to_post_id && $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $from_post_id ) ) { //Check if the keyword exists in the post content and is valid for inner link $valid = SQ_Classes_ObjController::getClass( 'SQ_Models_Post' )->checkInnerLink( $post->post_content, $keyword, $to_post_id ); //Set the innerlink in post $innerlinks = $post->sq->innerlinks; if ( isset( $innerlinks[ $id ] ) ) { if ( $keyword ) { $innerlinks[ $id ]['keyword'] = $keyword; } if ( $nofollow ) { $innerlinks[ $id ]['nofollow'] = $nofollow; } if ( $blank ) { $innerlinks[ $id ]['blank'] = $blank; } $post->sq->innerlinks = $innerlinks; SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post, $post->sq ); } //send the post to API $args = array(); $args['from_post_id'] = $from_post_id; $args['to_post_id'] = $to_post_id; $args['keyword'] = $keyword; $args['found'] = $valid; SQ_Classes_RemoteController::setFocusPageInnerlink( $args ); if ( SQ_Classes_Helpers_Tools::isAjax() ) { wp_send_json_success( esc_html__( "Inner link is saved.", 'squirrly-seo' ) ); } else { SQ_Classes_Error::setMessage( esc_html__( "Inner link is saved.", 'squirrly-seo' ) . " <br /> " ); } } else { if ( SQ_Classes_Helpers_Tools::isAjax() ) { wp_send_json_error( sprintf( esc_html__( "Error! Could not add the innerlink.", 'squirrly-seo' ), $from_post_id ) ); } else { SQ_Classes_Error::setError( sprintf( esc_html__( "Error! Could not add the innerlink.", 'squirrly-seo' ), $from_post_id ) ); } } break; case 'sq_focuspages_checkinnerlink': delete_transient( 'sq_innerlinks_suggestion' ); $from_post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'from_post_id', 0 ); $id = SQ_Classes_Helpers_Tools::getValue( 'id' ); if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $from_post_id ) ) { //Set the innerlink in post $innerlinks = $post->sq->innerlinks; if ( isset( $innerlinks[ $id ] ) ) { //Check if the keyword exists in the post content and is valid for inner link $innerlinks[ $id ]['valid'] = SQ_Classes_ObjController::getClass( 'SQ_Models_Post' )->checkInnerLink( $post->post_content, $innerlinks[ $id ]['keyword'], $innerlinks[ $id ]['to_post_id'] ); if ( $innerlinks[ $id ]['valid'] ) { //send the post to API $args = array(); $args['from_post_id'] = $innerlinks[ $id ]['from_post_id']; $args['to_post_id'] = $innerlinks[ $id ]['to_post_id']; $args['keyword'] = $innerlinks[ $id ]['keyword']; $args['found'] = $innerlinks[ $id ]['valid']; SQ_Classes_RemoteController::setFocusPageInnerlink( $args ); SQ_Classes_Error::setMessage( esc_html__( "Keyword found & Inner Link valid.", 'squirrly-seo' ) . " <br /> " ); } else { SQ_Classes_Error::setError( esc_html__( "Keyword not found in content", 'squirrly-seo' ) . " <br /> " ); } $post->sq->innerlinks = $innerlinks; } SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post, $post->sq ); } break; case 'sq_focuspages_deleteinnerlink': delete_transient( 'sq_innerlinks_suggestion' ); $from_post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'from_post_id', 0 ); $id = SQ_Classes_Helpers_Tools::getValue( 'id' ); if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $from_post_id ) ) { //Set the innerlink in post $innerlinks = $post->sq->innerlinks; if ( isset( $innerlinks[ $id ] ) ) { //send the post to API $args = array(); $args['from_post_id'] = $innerlinks[ $id ]['from_post_id']; $args['to_post_id'] = $innerlinks[ $id ]['to_post_id']; $args['keyword'] = $innerlinks[ $id ]['keyword']; SQ_Classes_RemoteController::deleteFocusPageInnerlink( $args ); unset( $innerlinks[ $id ] ); $post->sq->innerlinks = $innerlinks; SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post, $post->sq ); SQ_Classes_Error::setMessage( esc_html__( "Inner Link Removed", 'squirrly-seo' ) . " <br /> " ); } else { SQ_Classes_Error::setError( esc_html__( "Could not delete the innerlink", 'squirrly-seo' ) . " <br /> " ); } } break; case 'sq_focuspages_addnew': $term_id = (int) SQ_Classes_Helpers_Tools::getValue( 'term_id', 0 ); $taxonomy = SQ_Classes_Helpers_Tools::getValue( 'taxonomy', '' ); $post_type = SQ_Classes_Helpers_Tools::getValue( 'type', '' ); if ( $post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'post_id', 0 ) ) { if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->getCurrentSnippet( $post_id, $term_id, $taxonomy, $post_type ) ) { //Save the post data in DB with the hash SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->savePost( $post ); if ( $post->post_status == 'publish' && $post->ID == $post_id ) { //send the post to API $args = array(); $args['post_id'] = $post->ID; $args['hash'] = $post->hash; $args['permalink'] = $post->url; if ( $focuspage = SQ_Classes_RemoteController::addFocusPage( $args ) ) { if ( ! is_wp_error( $focuspage ) ) { SQ_Classes_Error::setMessage( esc_html__( "Focus page is added. The audit may take a while so please be patient.", 'squirrly-seo' ) . " <br /> " ); if ( isset( $focuspage->user_post_id ) ) { set_transient( 'sq_auditpage_' . $focuspage->user_post_id, time() ); SQ_Classes_Helpers_Tools::saveOptions( 'seoreport_time', false ); } } elseif ( $focuspage->get_error_message() == 'limit_exceed' ) { $this->checkin = SQ_Classes_RemoteController::checkin(); if(isset($this->checkin->subscription_focus_pages) && !$this->checkin->subscription_focus_pages){ SQ_Classes_Error::setError( sprintf(esc_html__( "You have reached the maximum number of focus pages for this website (max: %d).", 'squirrly-seo' ) . " <br /> ", (int)$this->checkin->subscription_max_focus_pages ) ); }else{ SQ_Classes_Error::setError( sprintf(esc_html__( "You have reached the maximum number of focus pages per your account (max: %d).", 'squirrly-seo' ) . " <br /> " , (int)$this->checkin->subscription_max_focus_pages_all) ); } } } else { SQ_Classes_Error::setError( esc_html__( "Error! Could not add the focus page.", 'squirrly-seo' ) . " <br /> " ); } } else { SQ_Classes_Error::setError( esc_html__( "Error! This focus page is not public.", 'squirrly-seo' ) . " <br /> " ); } } else { SQ_Classes_Error::setError( sprintf( esc_html__( "Error! Could not find the focus page %d in your website.", 'squirrly-seo' ), $post_id ) . " <br /> " ); } } break; case 'sq_focuspages_update': $post_id = (int) SQ_Classes_Helpers_Tools::getValue( 'post_id', 0 ); $term_id = (int) SQ_Classes_Helpers_Tools::getValue( 'term_id', 0 ); $taxonomy = SQ_Classes_Helpers_Tools::getValue( 'taxonomy', '' ); $post_type = SQ_Classes_Helpers_Tools::getValue( 'type', '' ); if ( $id = (int) SQ_Classes_Helpers_Tools::getValue( 'id', 0 ) ) { if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->getCurrentSnippet( $post_id, $term_id, $taxonomy, $post_type ) ) { //Save the post data in DB with the hash SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->savePost( $post ); //send the post to API $args = array(); $args['post_id'] = $id; $args['hash'] = $post->hash; $args['permalink'] = $post->url; if ( $focuspage = SQ_Classes_RemoteController::updateFocusPage( $args ) ) { if ( ! is_wp_error( $focuspage ) ) { SQ_Classes_Error::setMessage( esc_html__( "Focus page sent for recheck. It may take a while so please be patient.", 'squirrly-seo' ) . " <br /> " ); set_transient( 'sq_auditpage_' . $id, time() ); } elseif ( $focuspage->get_error_message() == 'too_many_attempts' ) { SQ_Classes_Error::setError( esc_html__( "You've made too many requests, please wait a few minutes.", 'squirrly-seo' ) . " <br /> " ); } } else { SQ_Classes_Error::setError( esc_html__( "You've made too many requests, please wait a few minutes.", 'squirrly-seo' ) . " <br /> " ); set_transient( 'sq_auditpage_' . $id, time() ); } } else { SQ_Classes_Error::setError( sprintf( esc_html__( "Error! Could not find the focus page %d in your website.", 'squirrly-seo' ), $post_id ) . " <br /> " ); } } break; case 'sq_focuspages_delete': if ( $id = SQ_Classes_Helpers_Tools::getValue( 'id' ) ) { SQ_Classes_RemoteController::deleteFocusPage( array( 'user_post_id' => $id ) ); SQ_Classes_Error::setMessage( esc_html__( "The focus page is removed from monitoring", 'squirrly-seo' ) . " <br /> " ); } else { SQ_Classes_Error::setError( esc_html__( "Invalid params!", 'squirrly-seo' ) . " <br /> " ); } break; case 'sq_ajax_innerlinks_bulk_check': SQ_Classes_Helpers_Tools::setHeader( 'json' ); $ids = SQ_Classes_Helpers_Tools::getValue( 'inputs', array() ); $innerlinks = SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->getSqInnerlinks( array() ); if ( ! empty( $ids ) ) { foreach ( $ids as $id ) { if ( in_array( $id, array_keys( $innerlinks ) ) ) { if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $innerlinks[ $id ]->from_post_id ) ) { //check the optimizations and save them locally add_filter( 'sq_seo_before_update', function ( $sq ) use ( $post, $id ) { //Set the innerlink in post $innerlinks = $sq->innerlinks; if ( isset( $innerlinks[ $id ] ) ) { //Check if the keyword exists in the post content and is valid for inner link $innerlinks[ $id ]['valid'] = SQ_Classes_ObjController::getClass( 'SQ_Models_Post' )->checkInnerLink( $post->post_content, $innerlinks[ $id ]['keyword'], $innerlinks[ $id ]['to_post_id'] ); } $sq->innerlinks = $innerlinks; return $sq; }, 11, 1 ); SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post ); } } } echo wp_json_encode( array( 'message' => esc_html__( "Check Finished!", 'squirrly-seo' ) ) ); } else { echo wp_json_encode( array( 'error' => esc_html__( "Invalid params!", 'squirrly-seo' ) ) ); } exit(); case 'sq_ajax_innerlinks_bulk_delete': SQ_Classes_Helpers_Tools::setHeader( 'json' ); $ids = SQ_Classes_Helpers_Tools::getValue( 'inputs', array() ); $innerlinks = SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->getSqInnerlinks( array() ); if ( ! empty( $ids ) ) { foreach ( $ids as $id ) { if ( in_array( $id, array_keys( $innerlinks ) ) ) { if ( $post = SQ_Classes_ObjController::getClass( 'SQ_Models_Snippet' )->setPostByID( $innerlinks[ $id ]->from_post_id ) ) { //Set the innerlink in post $innerlinks = $post->sq->innerlinks; if ( isset( $innerlinks[ $id ] ) ) { unset( $innerlinks[ $id ] ); } $post->sq->innerlinks = $innerlinks; SQ_Classes_ObjController::getClass( 'SQ_Models_Qss' )->updateSqSeo( $post, $post->sq ); } } } echo wp_json_encode( array( 'message' => esc_html__( "Deleted!", 'squirrly-seo' ) ) ); delete_transient( 'sq_innerlinks_suggestion' ); } else { echo wp_json_encode( array( 'error' => esc_html__( "Invalid params!", 'squirrly-seo' ) ) ); } exit(); } } }