PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.17.14
Shortcodes and extra features for Phlox theme v2.17.14
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / includes / classes / class-auxin-dependency-sorting.php
auxin-elements / includes / classes Last commit date
class-auxels-admin-assets.php 1 year ago class-auxels-archive-menu-links.php 1 year ago class-auxels-envato-elements.php 1 year ago class-auxels-import-parser.php 3 years ago class-auxels-import.php 3 years ago class-auxels-search-post-type.php 6 months ago class-auxels-wc-attribute-nav-menu.php 1 year ago class-auxin-admin-dashboard.php 1 year ago class-auxin-demo-importer.php 6 months ago class-auxin-dependency-sorting.php 3 years ago class-auxin-import.php 1 year ago class-auxin-install.php 1 year ago class-auxin-master-nav-menu-admin.php 1 year ago class-auxin-page-template.php 1 year ago class-auxin-permalink.php 1 year ago class-auxin-plugin-requirements.php 3 years ago class-auxin-post-type-base.php 1 year ago class-auxin-svg-support-allowedattributes.php 7 years ago class-auxin-svg-support-allowedtags.php 7 years ago class-auxin-svg-support.php 1 year ago class-auxin-walker-nav-menu-back.php 1 year ago class-auxin-welcome-sections.php 1 year ago class-auxin-welcome.php 6 months ago class-auxin-whitelabel.php 3 years ago class-auxin-widget-indie.php 1 year ago class-auxin-widget-shortcode-map.php 11 months ago class-auxin-widget.php 1 year ago
class-auxin-dependency-sorting.php
84 lines
1 <?php
2
3 /**
4 * Dependency sorting/resolution algorithm for PHP
5 *
6 */
7 class Auxin_Dependency_Sorting {
8
9 /**
10 * The sorted list of dependency graph items
11 *
12 * @var array
13 */
14 public $sorted = array();
15
16 /**
17 * Stores the list of checked nodes in dependency graph
18 *
19 * @var array
20 */
21 protected $checked = array();
22
23 /**
24 * Stores the input dependency graph
25 *
26 * @var array
27 */
28 protected $graph = array();
29
30
31 public function __construct(){}
32
33 /**
34 * Check and sort dependencies for each node
35 *
36 * @param string $name The node name
37 * @param array $ancestors The nodes that are already collected
38 * @return void
39 */
40 private function node_check( $name, $ancestors = array() ){
41 $ancestors = (array) $ancestors;
42
43 $ancestors[] = $name;
44 $this->checked[ $name ] = true;
45
46 // sometimes a dependency is not in main nodes list
47 if( isset( $this->graph[ $name ] ) ){
48
49 foreach ( $this->graph[ $name ] as $dependency ) {
50 if( in_array( $dependency, $ancestors) ){
51 throw new Exception( "Circular dependency for following node detected: " . $name );
52 }
53 if( isset( $this->checked[ $dependency ] ) ){
54 continue;
55 }
56 $this->node_check( $dependency, $ancestors );
57 }
58
59 }
60
61 if( ! in_array( $name, $this->sorted ) ){
62 $this->sorted[] = $name;
63 }
64 }
65
66 /**
67 * Sorts and retrieves the list of sorted items based on defined dependencies
68 *
69 * @param array $graph The list of items and their dependencies
70 * @return array The sorted list of items based on defined dependencies
71 */
72 public function resolve( $graph ) {
73 $this->graph = $graph;
74
75 foreach ( $this->graph as $main_node => $ancestors) {
76 $this->node_check( $main_node );
77 }
78
79 return $this->sorted;
80 }
81
82 }
83
84