示例#1
0
/**
 * 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;
}
示例#2
0
                            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');
}