Jelajahi Sumber

fixed bug in Menu objects

Piotr Labudda 8 tahun lalu
induk
melakukan
85a42cefb1
1 mengubah file dengan 27 tambahan dan 18 penghapusan
  1. 27 18
      SE/se-lib/Route/P5Menu.php

+ 27 - 18
SE/se-lib/Route/P5Menu.php

@@ -55,24 +55,33 @@ class Route_P5Menu extends RouteBase {
 			'body' => [
 				'version' => $this->getVersion(),
 
-				'objects' => array_map(function ($acl, $idZasob) use ($makeShortLabel) {
-					if (!$acl) return [
-						'id' => $idZasob,
-						'TODO' => 'TODO'
-					];
-
-					$zasobObj = ProcesHelper::getZasobTableInfo($acl->getID());
-					return [
-						'id' => $acl->getID(),
-						'namespace' => $acl->getNamespace(),
-						'name' => $acl->getName(),
-						'desc' => $zasobObj->DESC,
-						'label' => ($zasobObj->DESC_PL) ? htmlspecialchars($zasobObj->DESC_PL) : $zasobObj->DESC,
-						'short_label' => $makeShortLabel($zasobObj),
-						'opis' => htmlspecialchars($zasobObj->OPIS),
-						// 'raw_zasob_obj' => $zasobObj,
-					];
-				}, array_values($listObjects), array_keys($listObjects)),
+				'objects' => array_values( array_filter(
+					array_map(function ($acl, $idZasob) use ($makeShortLabel) {
+						if (!$acl) return [
+							'id' => $idZasob,
+							'TODO' => 'TODO'
+						];
+
+						$zasobObj = ProcesHelper::getZasobTableInfo($acl->getID());
+						return [
+							'id' => $acl->getID(),
+							'namespace' => $acl->getNamespace(),
+							'name' => $acl->getName(),
+							'desc' => $zasobObj->DESC,
+							'label' => ($zasobObj->DESC_PL) ? htmlspecialchars($zasobObj->DESC_PL) : $zasobObj->DESC,
+							'short_label' => $makeShortLabel($zasobObj),
+							'opis' => htmlspecialchars($zasobObj->OPIS),
+							// 'raw_zasob_obj' => $zasobObj,
+						];
+					}, array_values($listObjects), array_keys($listObjects)),
+					function ($infoAcl) {
+						if (!array_key_exists('namespace', $infoAcl)) {
+							trigger_error("Warning: problem z zasobem {$infoAcl['id']} - brak ACL", E_USER_WARNING);
+							return false;
+						}
+						return true;
+					}
+				) ),
 
 				'urls' => array_map(function ($label, $idZasob) {
 					return [