44
55use DynamicMenu \Collections \Collection ;
66use DynamicMenu \Contracts \CollectionContract ;
7+ use DynamicMenu \Supports \DefaultConfig ;
78
89/**
910 * Dynamic Menu
1718 */
1819class ArrayCollection extends Collection implements CollectionContract
1920{
21+ /**
22+ * Instance of class DefaultConfig.
23+ *
24+ * @var \DynamicMenu\Supports\DefaultConfig
25+ */
26+ private $ config ;
27+
2028 /**
2129 * Remaining items to organize
2230 *
@@ -28,10 +36,12 @@ class ArrayCollection extends Collection implements CollectionContract
2836 * New instance of class.
2937 *
3038 * @param array $items
39+ * @param \DynamicMenu\Supports\DefaultConfig $config
3140 * @return void
3241 */
33- public function __construct ($ items = [])
42+ public function __construct ($ items = [], DefaultConfig $ config )
3443 {
44+ $ this ->config = $ config ;
3545 $ this ->setItems ($ items );
3646 }
3747
@@ -78,11 +88,13 @@ public function generateChildress(array $menus)
7888 public function filterParent (array $ items , bool $ parents = false )
7989 {
8090 return array_filter ($ items , function ($ item ) use ($ parents ){
91+ $ parent_key = $ this ->config ->getParentKey ();
92+
8193 if ($ parents ) {
82- return ! $ item [' menu_id ' ];
94+ return ! $ item [$ parent_key ];
8395 }
8496
85- return ($ item [' menu_id ' ]);
97+ return ($ item [$ parent_key ]);
8698 });
8799 }
88100
@@ -97,11 +109,14 @@ public function filterParent(array $items, bool $parents = false)
97109 public function filterChildress (array $ items , $ menu , bool $ parents = false )
98110 {
99111 return array_filter ($ items , function ($ item ) use ($ parents , $ menu ){
112+ $ primary_key = $ this ->config ->getPrimaryKey ();
113+ $ parent_key = $ this ->config ->getParentKey ();
114+
100115 if ($ parents ) {
101- return ((int ) $ item [' menu_id ' ] === (int ) $ menu [' id ' ]);
116+ return ((int ) $ item [$ parent_key ] === (int ) $ menu [$ primary_key ]);
102117 }
103118
104- return ((int ) $ item [' menu_id ' ] !== (int ) $ menu [' id ' ]);
119+ return ((int ) $ item [$ parent_key ] !== (int ) $ menu [$ primary_key ]);
105120 });
106121 }
107122
@@ -113,10 +128,12 @@ public function filterChildress(array $items, $menu, bool $parents = false)
113128 */
114129 public function sortBy (array $ items )
115130 {
131+ $ order = $ this ->config ->getOrder ();
132+
116133 $ results = [];
117134
118135 foreach ($ items as $ key => $ value ) {
119- $ results [$ key ] = $ value [' order ' ];
136+ $ results [$ key ] = $ value [$ order ];
120137 }
121138
122139 asort ($ results , SORT_REGULAR );
0 commit comments