Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordpres.../src/reposito...
File: indexable-hierarchy-repository.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Yoast\WP\SEO\Repositories;
[2] Fix | Delete
[3] Fix | Delete
use Yoast\WP\Lib\Model;
[4] Fix | Delete
use Yoast\WP\Lib\ORM;
[5] Fix | Delete
use Yoast\WP\SEO\Builders\Indexable_Hierarchy_Builder;
[6] Fix | Delete
use Yoast\WP\SEO\Helpers\Indexable_Helper;
[7] Fix | Delete
use Yoast\WP\SEO\Models\Indexable;
[8] Fix | Delete
[9] Fix | Delete
/**
[10] Fix | Delete
* Class Indexable_Hierarchy_Repository.
[11] Fix | Delete
*/
[12] Fix | Delete
class Indexable_Hierarchy_Repository {
[13] Fix | Delete
[14] Fix | Delete
/**
[15] Fix | Delete
* Represents the indexable hierarchy builder.
[16] Fix | Delete
*
[17] Fix | Delete
* @var Indexable_Hierarchy_Builder
[18] Fix | Delete
*/
[19] Fix | Delete
protected $builder;
[20] Fix | Delete
[21] Fix | Delete
/**
[22] Fix | Delete
* Represents the indexable helper.
[23] Fix | Delete
*
[24] Fix | Delete
* @var Indexable_Helper
[25] Fix | Delete
*/
[26] Fix | Delete
protected $indexable_helper;
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* Sets the hierarchy builder.
[30] Fix | Delete
*
[31] Fix | Delete
* @required
[32] Fix | Delete
*
[33] Fix | Delete
* @param Indexable_Hierarchy_Builder $builder The indexable hierarchy builder.
[34] Fix | Delete
*
[35] Fix | Delete
* @return void
[36] Fix | Delete
*/
[37] Fix | Delete
public function set_builder( Indexable_Hierarchy_Builder $builder ) {
[38] Fix | Delete
$this->builder = $builder;
[39] Fix | Delete
}
[40] Fix | Delete
[41] Fix | Delete
/**
[42] Fix | Delete
* Sets the indexable helper.
[43] Fix | Delete
*
[44] Fix | Delete
* @required
[45] Fix | Delete
*
[46] Fix | Delete
* @param Indexable_Helper $indexable_helper The indexable helper.
[47] Fix | Delete
*
[48] Fix | Delete
* @return void
[49] Fix | Delete
*/
[50] Fix | Delete
public function set_helper( Indexable_Helper $indexable_helper ) {
[51] Fix | Delete
$this->indexable_helper = $indexable_helper;
[52] Fix | Delete
}
[53] Fix | Delete
[54] Fix | Delete
/**
[55] Fix | Delete
* Removes all ancestors for an indexable.
[56] Fix | Delete
*
[57] Fix | Delete
* @param int $indexable_id The indexable id.
[58] Fix | Delete
*
[59] Fix | Delete
* @return bool Whether or not the indexables were successfully deleted.
[60] Fix | Delete
*/
[61] Fix | Delete
public function clear_ancestors( $indexable_id ) {
[62] Fix | Delete
return $this->query()->where( 'indexable_id', $indexable_id )->delete_many();
[63] Fix | Delete
}
[64] Fix | Delete
[65] Fix | Delete
/**
[66] Fix | Delete
* Adds an ancestor to an indexable.
[67] Fix | Delete
*
[68] Fix | Delete
* @param int $indexable_id The indexable id.
[69] Fix | Delete
* @param int $ancestor_id The ancestor id.
[70] Fix | Delete
* @param int $depth The depth.
[71] Fix | Delete
*
[72] Fix | Delete
* @return bool Whether or not the ancestor was added successfully.
[73] Fix | Delete
*/
[74] Fix | Delete
public function add_ancestor( $indexable_id, $ancestor_id, $depth ) {
[75] Fix | Delete
if ( ! $this->indexable_helper->should_index_indexables() ) {
[76] Fix | Delete
return false;
[77] Fix | Delete
}
[78] Fix | Delete
[79] Fix | Delete
$hierarchy = $this->query()->create(
[80] Fix | Delete
[
[81] Fix | Delete
'indexable_id' => $indexable_id,
[82] Fix | Delete
'ancestor_id' => $ancestor_id,
[83] Fix | Delete
'depth' => $depth,
[84] Fix | Delete
'blog_id' => \get_current_blog_id(),
[85] Fix | Delete
]
[86] Fix | Delete
);
[87] Fix | Delete
[88] Fix | Delete
return $hierarchy->save();
[89] Fix | Delete
}
[90] Fix | Delete
[91] Fix | Delete
/**
[92] Fix | Delete
* Retrieves the ancestors. Create them when empty.
[93] Fix | Delete
*
[94] Fix | Delete
* @param Indexable $indexable The indexable to get the ancestors for.
[95] Fix | Delete
*
[96] Fix | Delete
* @return int[] The indexable id's of the ancestors in order of grandparent to child.
[97] Fix | Delete
*/
[98] Fix | Delete
public function find_ancestors( Indexable $indexable ) {
[99] Fix | Delete
$ancestors = $this->query()
[100] Fix | Delete
->select( 'ancestor_id' )
[101] Fix | Delete
->where( 'indexable_id', $indexable->id )
[102] Fix | Delete
->order_by_desc( 'depth' )
[103] Fix | Delete
->find_array();
[104] Fix | Delete
[105] Fix | Delete
if ( ! empty( $ancestors ) ) {
[106] Fix | Delete
if ( \count( $ancestors ) === 1 && $ancestors[0]['ancestor_id'] === '0' ) {
[107] Fix | Delete
return [];
[108] Fix | Delete
}
[109] Fix | Delete
return \wp_list_pluck( $ancestors, 'ancestor_id' );
[110] Fix | Delete
}
[111] Fix | Delete
[112] Fix | Delete
$indexable = $this->builder->build( $indexable );
[113] Fix | Delete
[114] Fix | Delete
return \wp_list_pluck( $indexable->ancestors, 'id' );
[115] Fix | Delete
}
[116] Fix | Delete
[117] Fix | Delete
/**
[118] Fix | Delete
* Finds the children for a given indexable.
[119] Fix | Delete
*
[120] Fix | Delete
* @param Indexable $indexable The indexable to find the children for.
[121] Fix | Delete
*
[122] Fix | Delete
* @return array Array with indexable id's for the children.
[123] Fix | Delete
*/
[124] Fix | Delete
public function find_children( Indexable $indexable ) {
[125] Fix | Delete
$children = $this->query()
[126] Fix | Delete
->select( 'indexable_id' )
[127] Fix | Delete
->where( 'ancestor_id', $indexable->id )
[128] Fix | Delete
->find_array();
[129] Fix | Delete
[130] Fix | Delete
if ( empty( $children ) ) {
[131] Fix | Delete
return [];
[132] Fix | Delete
}
[133] Fix | Delete
[134] Fix | Delete
return \wp_list_pluck( $children, 'indexable_id' );
[135] Fix | Delete
}
[136] Fix | Delete
[137] Fix | Delete
/**
[138] Fix | Delete
* Starts a query for this repository.
[139] Fix | Delete
*
[140] Fix | Delete
* @return ORM
[141] Fix | Delete
*/
[142] Fix | Delete
public function query() {
[143] Fix | Delete
return Model::of_type( 'Indexable_Hierarchy' );
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
/**
[147] Fix | Delete
* Finds all the children by given ancestor id's.
[148] Fix | Delete
*
[149] Fix | Delete
* @param array $object_ids List of id's to get the children for.
[150] Fix | Delete
*
[151] Fix | Delete
* @return array List of indexable id's for the children.
[152] Fix | Delete
*/
[153] Fix | Delete
public function find_children_by_ancestor_ids( array $object_ids ) {
[154] Fix | Delete
if ( empty( $object_ids ) ) {
[155] Fix | Delete
return [];
[156] Fix | Delete
}
[157] Fix | Delete
[158] Fix | Delete
$children = $this->query()
[159] Fix | Delete
->select( 'indexable_id' )
[160] Fix | Delete
->where_in( 'ancestor_id', $object_ids )
[161] Fix | Delete
->find_array();
[162] Fix | Delete
[163] Fix | Delete
if ( empty( $children ) ) {
[164] Fix | Delete
return [];
[165] Fix | Delete
}
[166] Fix | Delete
[167] Fix | Delete
return \wp_list_pluck( $children, 'indexable_id' );
[168] Fix | Delete
}
[169] Fix | Delete
}
[170] Fix | Delete
[171] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function