array(), // File names 'fsize' => array(), // File size 'fctime' => array(), // File creation timestamp 'infos' => array(), // File informations (maybe loaded!) 'ver' => array(), // Version number 'cver' => array(), // Current version number ); // Get count of theme_check for validation $count = trim($response[count($response) - 2]); foreach ($response as $idx => $value) { $value = str_replace("\n", '', $value); $ver = ''; // Leave loop when data is invalid or EOF? if ((substr($value, 0, 6) == "theme-") && (substr($value, -4) == ".zip")) { // Extract name and version $name = substr($value, 6, -4); $ver = trim(substr($response[$idx + 3], 4)); // Load version $cver = getThemeVersion($name); // Is the theme already installed or not? if (($ver != $cver) && ($cver != '?') && ($cver != '!')) { // No, it isn't. So let's add this one! $themes['fname'][] = $name; $themes['fsize'][] = $response[$idx + 1]; $themes['fctime'][] = $response[$idx + 2]; $themes['ver'][] = $ver; $themes['cver'][] = $cver; // Extract language strings from reponse $langDummy = explode('[nl]', $response[$idx + 4]); $languages = array(); $themeInfo = getMessage('ADMIN_EXT_NO_INFO_FOUND'); // Trim every data line foreach ($langDummy as $k => $v) { $v = trim($v); if (substr($v, 3) == '') $v = '---'; $langDummy[$k] = $v; if ($v == 'xx:xx') break; $languages[] = $v; } // END - foreach // If language is found stop searching on matching line foreach($languages as $search) { if (substr($search, 0, 3) == (getLanguage().':')) { $themeInfo = substr($search, 3); break; } } // END - foreach // Add informations to array $themes['infos'][] = $themeInfo; } // END - if } // END - if } // END - foreach // Ok, themes are on our server but maybe you have already installed them? if (count($themes['fname']) > 0) { // Sort array (I missed ver and cver here) array_pk_sort($themes, array('cver', 'fname'), 0, 1); // Extensions where found which are not downloaded and installed $OUT = ''; $SW = 2; $totalSize = 0; foreach ($themes['fname'] as $idx => $name) { // Prepare data $content = array( 'sw' => $SW, 'index' => ($idx + 1), 'name' => $name, 'created' => generateDateTime($themes['fctime'][$idx], 2), 'size' => translateComma(round($themes['fsize'][$idx] / 1.024) / 1000), 'version' => $themes['ver'][$idx], 'current' => $themes['cver'][$idx], 'infos' => $themes['infos'][$idx], ); // Load row template $OUT .= loadTemplate('admin_list_theme_row', true, $content); // Add total size $totalSize += $themes['fsize'][$idx]; // Switch color $SW = 3 - $SW; } $content['rows'] = $OUT; $content['total'] = count($themes['fname']); $content['kbytes'] = translateComma(round($totalSize / 1.024) / 1000); // Load template loadTemplate('admin_list_theme', false, $content); } else { // All Themes are downloaded and installed loadTemplate('admin_theme_installed', false, $count); } } else { // No theme where found loadTemplate('admin_settings_saved', false, getMessage('ADMIN_THEME_NOTHING_FOUND')); } // [EOF] ?>