/** * Init skin * * @param array $params request parameters * @return boolean always true */ function fn_init_skin($params) { if ((Registry::get('settings.skin_name_' . AREA_NAME) == '' || !is_dir(DIR_SKINS . Registry::get('settings.skin_name_' . AREA_NAME))) && !defined('SKINS_PANEL')) { $all = fn_get_dir_contents(DIR_SKINS, true); $skin_found = false; foreach ($all as $sk) { if (is_file(DIR_SKINS . $sk . '/' . AREA_NAME . '/index.tpl')) { Registry::set('settings.skin_name' . AREA_NAME, basename($sk)); $skin_found = true; break; } } if ($skin_found == false) { die("No skins found"); } else { echo <<<EOT \t\t\t\t<div style="background: #ff0000; color: #ffffff; font-weight: bold;" align="center">SELECTED SKIN NOT FOUND. REPLACED BY FIRST FOUND</div> EOT; } } if (defined('DEVELOPMENT')) { foreach (Registry::get('config.dev_skins') as $k => $v) { Registry::set('settings.skin_name_' . $k, $v); } } // Allow user to change the skin during the current session if (defined('SKINS_PANEL')) { $demo_skin = fn_get_cookie('demo_skin'); if (!empty($params['demo_skin'][AREA])) { $tmp_skin = basename($params['demo_skin'][AREA]); if (is_dir(DIR_SKINS . $tmp_skin)) { Registry::set('settings.skin_name_' . AREA_NAME, $tmp_skin); $demo_skin[AREA] = $tmp_skin; } else { Registry::set('settings.skin_name_' . AREA_NAME, $demo_skin[AREA]); } } elseif (empty($demo_skin[AREA])) { $demo_skin[AREA] = 'basic'; } Registry::set('settings.skin_name_' . AREA_NAME, $demo_skin[AREA]); fn_set_cookie('demo_skin', $demo_skin); Registry::set('demo_skin', array('selected' => $demo_skin, 'available_skins' => fn_get_available_skins(AREA_NAME))); } $skin_name = Registry::get('settings.skin_name_' . AREA_NAME); Registry::set('config.skin_name', $skin_name); Registry::set('config.skin_path', Registry::get('config.current_path') . '/skins/' . $skin_name . '/' . AREA_NAME); Registry::set('config.no_image_path', Registry::get('config.images_path') . 'no_image.gif'); return true; }
fn_copy(DIR_ROOT . '/var/skins_repository/' . $skin, DIR_SKINS . $skin, false); $manifest = parse_ini_file(DIR_ROOT . '/var/skins_repository/' . $skin . '/' . SKIN_MANIFEST); if (empty($manifest['admin'])) { fn_rm(DIR_SKINS . $skin . '/admin'); } } else { $msg = fn_get_lang_var('text_cannot_create_directory'); $msg = str_replace('[directory]', DIR_SKINS . $skin, $msg); fn_set_notification('E', fn_get_lang_var('error'), $msg); $error = true; } fn_stop_scroller(); } else { fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('error_skin_manifest_missed')); $error = true; } } if ($error == false) { fn_rm(DIR_COMPILED); db_query("UPDATE ?:settings SET ?u WHERE option_name = ?s", array('value' => $skin), "skin_name_{$zone}"); } } } } return array(CONTROLLER_STATUS_OK, "skin_selector.manage"); } if ($mode == 'manage') { $view->assign('available_skins', fn_get_available_skins()); $view->assign('customer_path', 'skins/' . Registry::get('settings.skin_name_customer') . '/customer'); $view->assign('admin_path', 'skins/' . Registry::get('settings.skin_name_admin') . '/admin'); }