Security update for Core, with self-updated composer
[yaffs-website] / vendor / psy / psysh / src / Psy / Command / ListCommand / ConstantEnumerator.php
index e8479f2d252ad0f4cc0d2b9198b6f1448790b020..88d348d0a119637f71871939ec564d027af3d608 100644 (file)
@@ -39,24 +39,37 @@ class ConstantEnumerator extends Enumerator
             return;
         }
 
-        $category  = $input->getOption('user') ? 'user' : $input->getOption('category');
-        $label     = $category ? ucfirst($category) . ' Constants' : 'Constants';
-        $constants = $this->prepareConstants($this->getConstants($category));
+        $user     = $input->getOption('user');
+        $internal = $input->getOption('internal');
+        $category = $input->getOption('category');
 
-        if (empty($constants)) {
-            return;
+        $ret = array();
+
+        if ($user) {
+            $ret['User Constants'] = $this->getConstants('user');
         }
 
-        $ret = array();
-        $ret[$label] = $constants;
+        if ($internal) {
+            $ret['Interal Constants'] = $this->getConstants('internal');
+        }
 
-        return $ret;
+        if ($category) {
+            $label = ucfirst($category) . ' Constants';
+            $ret[$label] = $this->getConstants($category);
+        }
+
+        if (!$user && !$internal && !$category) {
+            $ret['Constants'] = $this->getConstants();
+        }
+
+        return array_map(array($this, 'prepareConstants'), array_filter($ret));
     }
 
     /**
      * Get defined constants.
      *
-     * Optionally restrict constants to a given category, e.g. "date".
+     * Optionally restrict constants to a given category, e.g. "date". If the
+     * category is "internal", include all non-user-defined constants.
      *
      * @param string $category
      *
@@ -70,6 +83,12 @@ class ConstantEnumerator extends Enumerator
 
         $consts = get_defined_constants(true);
 
+        if ($category === 'internal') {
+            unset($consts['user']);
+
+            return call_user_func_array('array_merge', $consts);
+        }
+
         return isset($consts[$category]) ? $consts[$category] : array();
     }