<?php	
/*
	CMS ,,Black Min''  Został stworzony przez di_Timonix'a
	
	ten plik służy do ładowanie menu Black Mina
	
	Black Min cms,
	
	#plik: 1.0
*/


	class menu_bm {
	
		//var menu_item_bm = [];
		
		// zmiene do generowania menu black min'abs
		var $rodzic_tag_menu = "ol";
		var $dziecko_tag_menu = "li";
		var $rodzic_sub_menu_tag = "ul";
		var $class_rodzic_menu = "";
		var $class_dziecko_menu = "";
		var $class_sub_menu = "";
	
		// funkcjia do pobierania menu z bazy danych
		private function get_menu_item_bm() {
			global $host, $db_user, $db_password, $db_name, $prefix_table, $polaczenie, $rezultat, $date, $date2, $date3, $date4, $time, $time2;
			
			// tworzenie tablicy do przechowywania menu
			$return_menu = [];
			
			mysqli_report(MYSQLI_REPORT_STRICT);
				
			try 
			{
				$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
				if ($polaczenie->connect_errno!=0)
				{
					throw new Exception(mysqli_connect_errno());
				}
				else
				{		
					mysqli_query($polaczenie, "SET CHARSET utf8");
					mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");		
					
					$menu_structur = get_menu_structur_item_bm();
					
					// rozkładanie na czyniki pierwsze struktury menu głównego for id
					$menu_structur = json_decode($menu_structur, true);
					
					// zliczanie zawartości id struktury menu
					$ile_load = count($menu_structur);
					$ile_load2 = count($menu_structur);
					
					$zlicz_all_menu = 0;
					
					// sprawdzenie czy menu ma jakiś item
					if ($ile_load >= 1){
						
						// odejmowanie jedynki od zliczonego elementu
						// sprowadzenie wyniku do stanu logicznego dla tablicy
						$ile_load = $ile_load-1;
						
						for ($i = 0; $i <= $ile_load; $i++) 
						{
							
							// dodanie rekordu do zliczenia
							$zlicz_all_menu = $zlicz_all_menu + 1 ;
							
							// przypisywanie elementu tablicy do zmiennej
							$menu_element1 = $menu_structur[$i]['id'];
							
							$rezultat2 = "SELECT * FROM `".$prefix_table."bm_postmeta` WHERE `bm_nazwa` LIKE 'menu_item' AND `id` = '$menu_element1'";
							$wynik2 = $polaczenie->query($rezultat2);
						
							$ile2 = mysqli_num_rows($wynik2);
							$ile2 = $ile2-1;
							
							// pobieranie wartości z bazy danych
							$row2 = mysqli_fetch_assoc($wynik2);
							$id_menu_item = $row2['id'];
							$tytul_menu_item = $row2['bm_nazwa'];
							$menu_item = $row2['bm_wartosc'];
							
							//odszyfrowywanie jsona item menu 
							$menu_items = json_decode($menu_item, true);
							
							$tytul_menu_1 = $menu_items['0'];
							$url_menu_1 = $menu_items['1'];
							$itemtype_menu_1 = $menu_items['2'];
							$tytul_menu = utf8_decode ( $tytul_menu_1 );
							$url_menu = utf8_decode ( $url_menu_1 );
							$itemtype_menu = utf8_decode ( $itemtype_menu_1 );
							
							$rodzic = [
								"title_menu" => $tytul_menu,
								"url_menu" => $url_menu,
								"sub_menu" => [],
							];
					
							array_push($return_menu, $rodzic);

							if (isset($menu_structur[$i]['children']) === true) {

								// zliczanie ile rodzic ma dzieci
								$zlicz1 = count($menu_structur[$i]['children']);
								$zlicz1 = $zlicz1-1;

								for ($ii = 0; $ii <= $zlicz1; $ii++) 
								{
									
									// dodanie rekordu do zliczenia
									$zlicz_all_menu = $zlicz_all_menu + 1 ;
						
									// przypisywanie elementu tablicy do zmiennej
									$menu_element2 = $menu_structur[$i]['children'][$ii]['id'];
									
									$rezultat3 = "SELECT * FROM `".$prefix_table."bm_postmeta` WHERE `bm_nazwa` LIKE 'menu_item' AND `id` = '$menu_element2'";
									$wynik3 = $polaczenie->query($rezultat3);
								
									$ile3 = mysqli_num_rows($wynik3);
									$ile3 = $ile3-1;
									
									// pobieranie wartości z bazy danych
									$row3 = mysqli_fetch_assoc($wynik3);
									$id_menu_item2 = $row3['id'];
									$tytul_menu_item2 = $row3['bm_nazwa'];
									$menu_item2 = $row3['bm_wartosc'];
									
									//odszyfrowywanie jsona item menu 
									$menu_items2 = json_decode($menu_item2, true);
									
									$tytul_menu2 = $menu_items2['0'];
									$url_menu2 = $menu_items2['1'];
									$itemtype_menu2 = $menu_items2['2'];
									$tytul_menu_2 = utf8_decode ( $tytul_menu2 );
									$url_menu_2 = utf8_decode ( $url_menu2 );
									$itemtype_menu_2 = utf8_decode ( $itemtype_menu2 );

									$rodzic2 = [
										"title_menu" => $tytul_menu_2,
										"url_menu" => $url_menu_2,
										"sub_menu" => [],
									];
							
									//array_push($return_menu[$i], $rodzic);
									array_push($return_menu[$i]["sub_menu"], $rodzic2);
									//$return_menu[$i]["sub_menu"] = $rodzic2;

									if (isset($menu_structur[$i]['children'][$ii]['children']) === true) {

										// zliczanie ile rodzic ma dzieci
										$zlicz2 = count($menu_structur[$i]['children'][$ii]['children']);
										$zlicz2 = $zlicz2-1;

										for ($iii = 0; $iii <= $zlicz2; $iii++) 
										{
											
											// dodanie rekordu do zliczenia
											$zlicz_all_menu = $zlicz_all_menu + 1 ;
								
											// przypisywanie elementu tablicy do zmiennej
											$menu_element3 = $menu_structur[$i]['children'][$ii]['children'][$iii]['id'];
											
											$rezultat4 = "SELECT * FROM `".$prefix_table."bm_postmeta` WHERE `bm_nazwa` LIKE 'menu_item' AND `id` = '$menu_element3'";
											$wynik4 = $polaczenie->query($rezultat4);
										
											$ile4 = mysqli_num_rows($wynik4);
											$ile4 = $ile4-1;
											
											// pobieranie wartości z bazy danych
											$row4 = mysqli_fetch_assoc($wynik4);
											$id_menu_item3 = $row4['id'];
											$tytul_menu_item3 = $row4['bm_nazwa'];
											$menu_item3 = $row4['bm_wartosc'];
											
											//odszyfrowywanie jsona item menu 
											$menu_items3 = json_decode($menu_item3, true);
											
											$tytul_menu3 = $menu_items3['0'];
											$url_menu3 = $menu_items3['1'];
											$itemtype_menu3 = $menu_items3['2'];
											$tytul_menu_3 = utf8_decode ( $tytul_menu3 );
											$url_menu_3 = utf8_decode ( $url_menu3 );
											$itemtype_menu_3 = utf8_decode ( $itemtype_menu3 );

											$rodzic3 = [
												"title_menu" => $tytul_menu_3,
												"url_menu" => $url_menu_3,
											];
									
											//array_push($return_menu[$i], $rodzic);
											array_push($return_menu[$i]['sub_menu'][$ii]['sub_menu'], $rodzic3);

										}
									}
								}	
							}		
						}
					}	
				}
			}	
			catch(Exception $e)
			{
				echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o powtórzenie działań póżniej!</span>';
				//echo '<br />Informacja developerska: '.$e;
			}
			
			return $return_menu;
		
		}
		
		// sprawdzanie czy menu jest w cioasteczku 
		// jeżeli jest gernerujemy menu
		// jeżeli nie ma go to wczytujemy menu z bazy dabych do cziasteczka
		/*private function check_cookie_menu_blackmin(){
			if(isset($_COOKIE['mms_blackmin'])) {
				// pobieranie menu z ciasteczka i załadowanie jego do konstruktora
				$mmse_blackmin = json_decode($_COOKIE['mms_blackmin'], true);
				return $mmse_blackmin;
			} else {
				// dodawanie do ciasteczek menu głównego black mina (jakie ustawił sobie administrator)
				$mmse_blackmin = menu_bm::get_menu_item_bm();
				$mmse_blackmin =  json_encode($mmse_blackmin);
				setcookie('mms_blackmin', $mmse_blackmin, time()+(24*60*60*24), "/"); // 86400 = 1 day
				return false;
			}
		}*/

		// funkcjia do zmiany tagu html dla generowanego menu
		public function update_tag_menu($rodzic_tag, $dziecko_tag, $rodzic_sub_menu_tag){
			$this->rodzic_tag_menu = $rodzic_tag;
			$this->dziecko_tag_menu = $dziecko_tag;
			$this->rodzic_sub_menu_tag = $rodzic_sub_menu_tag;
		}

		// funkcjia do zmiany klasy html dla generowanego menu
		public function update_class_menu($rodzic_class, $dziecko_class, $class_sub_menu){
			$this->class_rodzic_menu .= $rodzic_class;
			$this->class_dziecko_menu .= $dziecko_class;
			$this->class_sub_menu .= $class_sub_menu;
		}
		
		// funkcjia do ładowania menu
		public function load_menu(){
			// sprawdzenie czy menu zostało włożone do ciasteczka poprawnie
			/*if(menu_bm::check_cookie_menu_blackmin() == false){
				if(!isset($_COOKIE['mms_blackmin'])) {
					if($_COOKIE['mms_blackmin'] == NULL){
						echo '<meta http-equiv="Refresh" content="0; ">';
						exit();
					}
				}	
			}else{
				$s = menu_bm::check_cookie_menu_blackmin();
			}*/
			
			$s = menu_bm::get_menu_item_bm();
			
			// główny element menu rodzic
			echo '<'. $this->rodzic_tag_menu .' class="menu '. $this->class_rodzic_menu .'">';
			
			// zliczanie zawartości id struktury menu
			$ile_load = count($s);
			
			$zlicz_all_menu = 0;
			
			// sprawdzenie czy menu ma jakiś item
			if ($ile_load >= 1){
				
				// odejmowanie jedynki od zliczonego elementu
				// sprowadzenie wyniku do stanu logicznego dla tablicy
				$ile_load = $ile_load-1;
				
				for ($i = 0; $i <= $ile_load; $i++) 
				{
					
					// dodanie rekordu do zliczenia
					$zlicz_all_menu = $zlicz_all_menu + 1 ;
					
					$title = $s[$i]['title_menu'];
					$url = $s[$i]['url_menu'];
					
					// dziecko zawierający element menu
					echo '<'. $this->dziecko_tag_menu .' class="'. $this->class_dziecko_menu .'"><a href="'.$url.'">'.$title.'</a>';

					if (isset($s[$i]['sub_menu']) == true) {
						
						// zliczanie ile rodzic ma dzieci
						$zlicz1 = count($s[$i]['sub_menu']);
						$zlicz1 = $zlicz1-1;
		
						// rodzic sub menu potomka dziecko
						echo '<'. $this->rodzic_sub_menu_tag .' class="sub_menu '. $this->class_sub_menu .'">';

						for ($ii = 0; $ii <= $zlicz1; $ii++) 
						{
							
							// dodanie rekordu do zliczenia
							$zlicz_all_menu = $zlicz_all_menu + 1 ;

							$title = $s[$i]['sub_menu'][$ii]['title_menu'];
							$url = $s[$i]['sub_menu']{$ii}['url_menu'];
							
							// dziecko zawierający element menu
							echo '<'. $this->dziecko_tag_menu .' class="'. $this->class_dziecko_menu .'"><a href="'.$url.'">'.$title.'</a>';

							if (isset($s[$i]['sub_menu'][$ii]['sub_menu']) === true) {

								// zliczanie ile rodzic ma dzieci
								$zlicz2 = count($s[$i]['sub_menu'][$ii]['sub_menu']);
								$zlicz2 = $zlicz2-1;

								// rodzic sub menu potomka dziecko
								echo '<'. $this->rodzic_sub_menu_tag .' class="sub_menu '. $this->class_sub_menu .'">';

								for ($iii = 0; $iii <= $zlicz2; $iii++) 
								{
									
									// dodanie rekordu do zliczenia
									$zlicz_all_menu = $zlicz_all_menu + 1 ;

									$title = $s[$i]['sub_menu'][$ii]['sub_menu'][$iii]['title_menu'];
									$url = $s[$i]['sub_menu'][$ii]['sub_menu'][$iii]['url_menu'];
									
									// dziecko zawierający element menu
									echo '<'. $this->dziecko_tag_menu .' class="'. $this->class_dziecko_menu .'"><a href="'.$url.'">'.$title.'</a></'. $this->dziecko_tag_menu .'>';
	

								}
								
								// rodzic sub menu potomka dziecko
								echo '</'. $this->rodzic_sub_menu_tag .'>';
								
							}
							
							// dziecko zawierający element menu
							echo '</'. $this->dziecko_tag_menu .'>';
							
						}	
						
						// rodzic sub menu potomka dziecko
						echo '</'. $this->rodzic_sub_menu_tag .'>';
						
					}	

					// dziecko zawierający element menu
					echo '</'. $this->dziecko_tag_menu .'>';
					
				}
			}

			// główny element menu rodzic
			echo '</'. $this->rodzic_tag_menu .' ">';			
		
		}

	}

?>