public static function flatten($data, array $options = array())
{
$defaults = array('separator' => '.', 'path' => null);
$options += $defaults;
$result = array();
if ($options['path'] !== null) {
$options['path'] .= $options['separator'];
}
foreach ($data as $key => $val) {
if (!is_array($val)) {
$result[$options['path'] . $key] = $val;
continue;
}
$opts = array('separator' => $options['separator'], 'path' => $options['path'] . $key);
$result += (array) static::flatten($val, $opts);
}
return $result;
}
public static function find(array $options = array()) { $defaults = array('collect' => true); $options += $defaults; $data = array(); $libs = Libraries::get(null, 'path'); $recursive = true; foreach ($libs as $lib => $path) { $result = array(); $path .= '/views/widgets'; $files = StaticContents::available(compact('path', 'recursive')); if (!$files) { continue; } $temp = array_keys(Set::flatten($files, array('separator' => '/'))); foreach ($temp as $key => $value) { if (strpos($value, 'admin.') !== false) { continue; } if (strpos($value, 'inc.') !== false) { continue; } $result[$key] = str_replace('.html.php', '', $value); } $data[$lib] = $result; } return $data; }