PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / trunk
Shortcodes and extra features for Phlox theme vtrunk
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 5 months ago class-auxels-archive-menu-links.php 5 months ago class-auxels-envato-elements.php 5 months ago class-auxels-import-parser.php 3 years ago class-auxels-import.php 3 years ago class-auxels-search-post-type.php 5 months ago class-auxels-wc-attribute-nav-menu.php 5 months ago class-auxin-admin-dashboard.php 5 months ago class-auxin-demo-importer.php 19 hours ago class-auxin-dependency-sorting.php 3 years ago class-auxin-import.php 5 months ago class-auxin-install.php 5 months ago class-auxin-master-nav-menu-admin.php 5 months ago class-auxin-page-template.php 5 months ago class-auxin-permalink.php 5 months ago class-auxin-plugin-requirements.php 3 years ago class-auxin-post-type-base.php 5 months 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 5 months ago class-auxin-welcome-sections.php 1 year ago class-auxin-welcome.php 1 month ago class-auxin-whitelabel.php 3 years ago class-auxin-widget-indie.php 5 months ago class-auxin-widget-shortcode-map.php 5 months ago class-auxin-widget.php 5 months 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