function arrayMergeRecursiveNumericKeyHackFix(&$array) { if (!is_array($array)) { return; } foreach ($array as $key => $value) { $finalKey = $key; $numKey = preg_replace("/[^0-9]/", '', $key); if ($key == '_' . $numKey) { unset($array[$key]); $array[$numKey] = $value; $finalKey = $numKey; } arrayMergeRecursiveNumericKeyHackFix($array[$finalKey]); } return; }
public static function getSearchedPluginsThemes() { $actionID = Reg::get('currentRequest.actionID'); $datas = DB::getFields("?:temp_storage", "data", "type = 'getPluginsThemes' AND paramID = '" . $actionID . "'"); DB::delete("?:temp_storage", "type = 'getPluginsThemes' AND paramID = '" . $actionID . "'"); if (empty($datas)) { return array(); } $finalData = array(); foreach ($datas as $data) { $finalData = array_merge_recursive($finalData, (array) unserialize($data)); } arrayMergeRecursiveNumericKeyHackFix($finalData); ksortTree($finalData); //finding not installed for site view only $typeItems = array_keys($finalData['typeView']); foreach ($typeItems as $item) { foreach ($finalData['siteView'] as $siteID => $value) { if (empty($value['active'][$item]) && empty($value['inactive'][$item])) { $typeViewTemp = reset($finalData['typeView'][$item]); $finalData['siteView'][$siteID]['notInstalled'][$item] = reset($typeViewTemp); } } } return $finalData; }