function check_all()
{
    $check = array();
    if (allow_version()) {
        $check['allow_version'] = '1';
    } else {
        $check['allow_version'] = '0';
    }
    if ($gdv = gdVersion()) {
        if ($gdv >= 2) {
            $check['gdVersion'] = '1';
        } else {
            $check['gdVersion'] = '0';
        }
    } else {
        $check['gdVersion'] = '0';
    }
    if (is_writable('hm_content/uploads')) {
        $check['uploadWritable'] = '1';
    } else {
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            $check['uploadWritable'] = '1';
        } else {
            $check['uploadWritable'] = '0';
        }
    }
    if (function_exists('mcrypt_encrypt')) {
        $check['mcrypt'] = '1';
    } else {
        $check['mcrypt'] = '0';
    }
    if (!in_array('0', $check)) {
        return TRUE;
    } else {
        return FALSE;
    }
}
Beispiel #2
0
/**
* Generate images of alternate sizes.
*/
function resizeImage($cnvrt_arry)
{
    global $platform, $imgs, $cnvrt_path, $reqd_image, $convert_writable, $convert_magick, $convert_GD, $convert_cmd, $cnvrt_alt, $cnvrt_mesgs, $compat_quote;
    if (empty($imgs) || $convert_writable == FALSE) {
        return;
    }
    if ($convert_GD == TRUE && !($gd_version = gdVersion())) {
        return;
    }
    if ($cnvrt_alt['no_prof'] == TRUE) {
        $strip_prof = ' +profile "*"';
    } else {
        $strip_prof = '';
    }
    if ($cnvrt_alt['mesg_on'] == TRUE) {
        $str = '';
    }
    foreach ($imgs as $img_file) {
        if ($cnvrt_alt['indiv'] == TRUE && $img_file != $reqd_image['file']) {
            continue;
        }
        $orig_img = $reqd_image['pwd'] . '/' . $img_file;
        $cnvrtd_img = $cnvrt_path . '/' . $cnvrt_arry['prefix'] . $img_file;
        if (!is_file($cnvrtd_img)) {
            $img_size = GetImageSize($orig_img);
            $height = $img_size[1];
            $width = $img_size[0];
            $area = $height * $width;
            $maxarea = $cnvrt_arry['maxwid'] * $cnvrt_arry['maxwid'] * 0.9;
            $maxheight = $cnvrt_arry['maxwid'] * 0.75 + 1;
            if ($area > $maxarea || $width > $cnvrt_arry['maxwid'] || $height > $maxheight) {
                if ($width / $cnvrt_arry['maxwid'] >= $height / $maxheight) {
                    $dim = 'W';
                }
                if ($height / $maxheight >= $width / $cnvrt_arry['maxwid']) {
                    $dim = 'H';
                }
                if ($dim == 'W') {
                    $cnvt_percent = round(0.9375 * $cnvrt_arry['maxwid'] / $width * 100, 2);
                }
                if ($dim == 'H') {
                    $cnvt_percent = round(0.75 * $cnvrt_arry['maxwid'] / $height * 100, 2);
                }
                // convert it
                if ($convert_magick == TRUE) {
                    // Image Magick image conversion
                    if ($platform == 'Win32' && $compat_quote == TRUE) {
                        $winquote = '"';
                    } else {
                        $winquote = '';
                    }
                    exec($winquote . $convert_cmd . ' -geometry ' . $cnvt_percent . '%' . ' -quality ' . $cnvrt_arry['qual'] . ' -sharpen ' . $cnvrt_arry['sharpen'] . $strip_prof . ' "' . $orig_img . '"' . ' "' . $cnvrtd_img . '"' . $winquote);
                    $using = $cnvrt_mesgs['using IM'];
                } elseif ($convert_GD == TRUE) {
                    // GD image conversion
                    if (eregi('\\.jpg$|\\.jpeg$', $img_file) == TRUE && (imageTypes() & IMG_JPG) == TRUE) {
                        $src_img = imageCreateFromJpeg($orig_img);
                    } elseif (eregi('\\.gif$', $img_file) == TRUE && (imageTypes() & IMG_PNG) == TRUE) {
                        $src_img = imageCreateFromPng($orig_img);
                    } elseif (eregi('\\.gif$', $img_file) == TRUE && (imageTypes() & IMG_GIF) == TRUE) {
                        $src_img = imageCreateFromGif($orig_img);
                    } else {
                        continue;
                    }
                    $src_width = imageSx($src_img);
                    $src_height = imageSy($src_img);
                    $dest_width = $src_width * ($cnvt_percent / 100);
                    $dest_height = $src_height * ($cnvt_percent / 100);
                    if ($gd_version >= 2) {
                        $dst_img = imageCreateTruecolor($dest_width, $dest_height);
                        imageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
                    } else {
                        $dst_img = imageCreate($dest_width, $dest_height);
                        imageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
                    }
                    imageDestroy($src_img);
                    if (eregi('\\.jpg$|\\.jpeg$/i', $img_file) == TRUE && (imageTypes() & IMG_JPG) == TRUE) {
                        imageJpeg($dst_img, $cnvrtd_img, $cnvrt_arry['qual']);
                    } elseif (eregi('\\.gif$', $img_file) == TRUE && (imageTypes() & IMG_PNG) == TRUE) {
                        imagePng($dst_img, $cnvrtd_img);
                    } elseif (eregi('\\.gif$/i', $img_file) == TRUE && (imageTypes() & IMG_GIF) == TRUE) {
                        imageGif($dst_img, $cnvrtd_img);
                    }
                    imageDestroy($dst_img);
                    $using = $cnvrt_mesgs['using GD'] . $gd_version;
                }
                if ($cnvrt_alt['mesg_on'] == TRUE && is_file($cnvrtd_img)) {
                    $str .= "  <small>\n" . '   ' . $cnvrt_mesgs['generated'] . $cnvrt_arry['txt'] . $cnvrt_mesgs['converted'] . $cnvrt_mesgs['image_for'] . $img_file . $using . ".\n" . "  </small>\n  <br />\n";
                }
            }
        }
    }
    if (isset($str)) {
        return $str;
    }
}
</head>
<body>
	<div id="content">
		<p class="hello_world">Chào mừng bạn đến với HoaMai CMS, chúng ta cần cài đặt để bắt đầu sử dụng mã nguồn</p>
		<h1 class="title">Bước 1: Kiểm tra cấu hình máy chủ</h1>
		<div class="form_content">
			<?php 
$check = array();
if (allow_version()) {
    $check['allow_version'] = '1';
    echo '<div class="alert alert-success" role="alert">Phiên bản PHP lớn hơn 5.3</div>';
} else {
    $check['allow_version'] = '0';
    echo '<div class="alert alert-danger" role="alert">Phiên bản PHP lớn hơn 5.3</div>';
}
if ($gdv = gdVersion()) {
    if ($gdv >= 2) {
        $check['gdVersion'] = '1';
        echo '<div class="alert alert-success" role="alert">Phiên bản thư viện GD lớn hơn 2.0</div>';
    } else {
        $check['gdVersion'] = '0';
        echo '<div class="alert alert-danger" role="alert">Phiên bản thư viện GD lớn hơn 2.0</div>';
    }
} else {
    $check['gdVersion'] = '0';
    echo '<div class="alert alert-danger" role="alert">Thư viện GD chưa được cài đặt</div>';
}
if (is_writable('hm_content/uploads')) {
    $check['uploadWritable'] = '1';
    echo '<div class="alert alert-success" role="alert">Thư mục hm_content/uploads được ghi</div>';
} else {
Beispiel #4
0
function _checkEnvironment()
{
    global $_CONF, $_TABLES, $_PLUGINS, $_SYSTEM, $LANG_ADMIN, $LANG01, $filemgmt_FileStore, $filemgmt_SnapStore, $filemgmt_SnapCat, $_FF_CONF, $_MG_CONF, $LANG_FILECHECK;
    $retval = '';
    $permError = 0;
    $T = new Template($_CONF['path_layout'] . 'admin');
    $T->set_file('page', 'envcheck.thtml');
    $menu_arr = array(array('url' => $_CONF['site_admin_url'] . '/envcheck.php', 'text' => $LANG01['recheck']), array('url' => $_CONF['site_admin_url'] . '/filecheck.php', 'text' => $LANG_FILECHECK['filecheck']), array('url' => $_CONF['site_admin_url'], 'text' => $LANG_ADMIN['admin_home']));
    $retval .= COM_startBlock($LANG01['hosting_env'], '', COM_getBlockTemplate('_admin_block', 'header'));
    $retval .= ADMIN_createMenu($menu_arr, $LANG01['php_warning'], $_CONF['layout_url'] . '/images/icons/envcheck.png');
    $retval .= COM_endBlock(COM_getBlockTemplate('_admin_block', 'footer'));
    /*
     * First we will validate the general environment..
     */
    $T->set_block('page', 'envs', 'env');
    // PHP Version
    $T->set_var('item', $LANG01['php_version']);
    $classCounter = 0;
    if (_phpOutOfDate()) {
        $T->set_var('status', '<span class="notok">' . phpversion() . '</span>');
    } else {
        $T->set_var('status', '<span class="yes">' . phpversion() . '</span>');
    }
    $T->set_var('recommended', '5.2.0+');
    $T->set_var('notes', $LANG01['php_req_version']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $rg = ini_get('register_globals');
    $sm = ini_get('safe_mode');
    $ob = ini_get('open_basedir');
    $rg = ini_get('register_globals');
    $T->set_var('item', 'register_globals');
    $T->set_var('status', $rg == 1 ? '<span class="notok">' . $LANG01['on'] . '</span>' : '<span class="yes">' . $LANG01['off'] . '</span>');
    $T->set_var('recommended', $LANG01['off']);
    $T->set_var('notes', $LANG01['register_globals']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $sm = ini_get('safe_mode');
    $T->set_var('item', 'safe_mode');
    $T->set_var('status', $sm == 1 ? '<span class="notok">' . $LANG01['on'] . '</span>' : '<span class="yes">' . $LANG01['off'] . '</span>');
    $T->set_var('recommended', $LANG01['off']);
    $T->set_var('notes', $LANG01['safe_mode']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $ob = ini_get('open_basedir');
    if ($ob == '') {
        $open_basedir_restriction = 0;
    } else {
        $open_basedir_restriction = 1;
        $open_basedir_directories = $ob;
    }
    $T->set_var('item', 'open_basedir');
    $T->set_var('status', $ob == '' ? '<span class="yes">' . $LANG01['off'] . '</span>' : '<span class="notok">' . $LANG01['enabled'] . '</span>');
    $T->set_var('notes', $LANG01['open_basedir']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $memory_limit = _return_bytes(ini_get('memory_limit'));
    $memory_limit_print = $memory_limit / 1024 / 1024;
    $T->set_var('item', 'memory_limit');
    $T->set_var('status', $memory_limit < 50331648 ? '<span class="notok">' . $memory_limit_print . 'M</span>' : '<span class="yes">' . $memory_limit_print . 'M</span>');
    $T->set_var('recommended', '48M');
    $T->set_var('notes', $LANG01['memory_limit']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $fu = ini_get('file_uploads');
    $T->set_var('item', 'file_uploads');
    $T->set_var('status', $fu == 1 ? '<span class="yes">' . $LANG01['on'] . '</span>' : '<span class="notok">' . $LANG01['off'] . '</span>');
    $T->set_var('recommended', $LANG01['on']);
    $T->set_var('notes', $LANG01['file_uploads']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $upload_limit = _return_bytes(ini_get('upload_max_filesize'));
    $upload_limit_print = $upload_limit / 1024 / 1024;
    $T->set_var('item', 'upload_max_filesize');
    $T->set_var('status', $upload_limit < 8388608 ? '<span class="notok">' . $upload_limit_print . 'M</span>' : '<span class="yes">' . $upload_limit_print . 'M</span>');
    $T->set_var('recommended', '8M');
    $T->set_var('notes', $LANG01['upload_max_filesize']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $post_limit = _return_bytes(ini_get('post_max_size'));
    if ($post_limit == 0) {
        $post_limit_print = 'unlimited';
        $T->set_var('status', '<span class="yes">' . $post_limit_print . '</span>');
    } else {
        $post_limit_print = $post_limit / 1024 / 1024;
        $T->set_var('status', $post_limit < 8388608 ? '<span class="notok">' . $post_limit_print . 'M</span>' : '<span class="yes">' . $post_limit_print . 'M</span>');
    }
    $T->set_var('item', 'post_max_size');
    $T->set_var('recommended', '8M');
    $T->set_var('notes', $LANG01['post_max_size']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $max_execution_time = ini_get('max_execution_time');
    $T->set_var('item', 'max_execution_time');
    $T->set_var('status', $max_execution_time < 30 ? '<span class="notok">' . $max_execution_time . ' secs</span>' : '<span class="yes">' . $max_execution_time . ' secs</span>');
    $T->set_var('recommended', '30 secs');
    $T->set_var('notes', $LANG01['max_execution_time']);
    $T->set_var('rowclass', $classCounter % 2 + 1);
    $T->parse('env', 'envs', true);
    $classCounter++;
    $T->set_block('page', 'libs', 'lib');
    if ($sm != 1 && $open_basedir_restriction != 1) {
        switch ($_CONF['image_lib']) {
            case 'imagemagick':
                // ImageMagick
                if (PHP_OS == "WINNT") {
                    $binary = "/convert.exe";
                } else {
                    $binary = "/convert";
                }
                clearstatcache();
                if (!@file_exists($_CONF['path_to_mogrify'] . $binary)) {
                    $T->set_var(array('item' => $LANG01['imagemagick'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['im_not_found']));
                } else {
                    $T->set_var(array('item' => $LANG01['imagemagick'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['im_ok']));
                }
                break;
            case 'gdlib':
                // GD Libs
                if ($gdv = gdVersion()) {
                    if ($gdv >= 2) {
                        $T->set_var(array('item' => $LANG01['gd_lib'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['gd_ok']));
                    } else {
                        $T->set_var(array('item' => $LANG01['gd_lib'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['gd_v1']));
                    }
                } else {
                    $T->set_var(array('item' => $LANG01['gd_lib'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['gd_not_found']));
                }
                break;
            case 'netpbm':
                // NetPBM
                if (PHP_OS == "WINNT") {
                    $binary = "/jpegtopnm.exe";
                } else {
                    $binary = "/jpegtopnm";
                }
                clearstatcache();
                if (!@file_exists($_CONF['path_to_netpbm'] . $binary)) {
                    $T->set_var(array('item' => $LANG01['netpbm'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['np_not_found']));
                } else {
                    $T->set_var(array('item' => $LANG01['netpbm'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['np_ok']));
                }
                break;
        }
        $T->set_var('rowclass', $classCounter % 2 + 1);
        $T->parse('lib', 'libs', true);
        $classCounter++;
        if ($_CONF['jhead_enabled']) {
            if (PHP_OS == "WINNT") {
                $binary = "/jhead.exe";
            } else {
                $binary = "/jhead";
            }
            clearstatcache();
            if (!@file_exists($_CONF['path_to_jhead'] . $binary)) {
                $T->set_var(array('item' => $LANG01['jhead'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['jhead_not_found']));
            } else {
                $T->set_var(array('item' => $LANG01['jhead'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['jhead_ok']));
            }
            $T->set_var('rowclass', $classCounter % 2 + 1);
            $T->parse('lib', 'libs', true);
            $classCounter++;
        }
        if ($_CONF['jpegtrans_enabled']) {
            if (PHP_OS == "WINNT") {
                $binary = "/jpegtran.exe";
            } else {
                $binary = "/jpegtran";
            }
            clearstatcache();
            if (!@file_exists($_CONF['path_to_jpegtrans'] . $binary)) {
                $T->set_var(array('item' => $LANG01['jpegtran'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['jpegtran_not_found']));
            } else {
                $T->set_var(array('item' => $LANG01['jpegtran'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['jpegtran_ok']));
            }
            $T->set_var('rowclass', $classCounter % 2 + 1);
            $T->parse('lib', 'libs', true);
            $classCounter++;
        }
    } else {
        $T->set_var(array('item' => $LANG01['graphics'], 'status' => $LANG01['not_checked'], 'notes' => $LANG01['bypass_note']));
    }
    // extract syndication storage path
    $feedpath = $_CONF['rdf_file'];
    $pos = strrpos($feedpath, '/');
    $feedPath = substr($feedpath, 0, $pos + 1);
    $file_list = array($_CONF['path_data'], $_CONF['path_log'] . 'error.log', $_CONF['path_log'] . 'access.log', $_CONF['path_log'] . 'captcha.log', $_CONF['path_log'] . 'spamx.log', $_CONF['path_data'] . 'layout_cache/', $_CONF['path_data'] . 'temp/', $_CONF['path_html'], $feedPath, $_CONF['rdf_file'], $_CONF['path_html'] . 'images/articles/', $_CONF['path_html'] . 'images/topics/', $_CONF['path_html'] . 'images/userphotos/', $_CONF['path_html'] . 'images/library/File/', $_CONF['path_html'] . 'images/library/Flash/', $_CONF['path_html'] . 'images/library/Image/', $_CONF['path_html'] . 'images/library/Media/', $_CONF['path_html'] . 'images/library/userfiles/');
    $mg_file_list = array($_CONF['path'] . 'plugins/mediagallery/tmp/', $_MG_CONF['path_mediaobjects'], $_MG_CONF['path_mediaobjects'] . 'covers/', $_MG_CONF['path_mediaobjects'] . 'orig/', $_MG_CONF['path_mediaobjects'] . 'disp/', $_MG_CONF['path_mediaobjects'] . 'tn/', $_MG_CONF['path_mediaobjects'] . 'orig/0/', $_MG_CONF['path_mediaobjects'] . 'disp/0/', $_MG_CONF['path_mediaobjects'] . 'tn/0/', $_MG_CONF['path_mediaobjects'] . 'orig/1/', $_MG_CONF['path_mediaobjects'] . 'disp/1/', $_MG_CONF['path_mediaobjects'] . 'tn/1/', $_MG_CONF['path_mediaobjects'] . 'orig/2/', $_MG_CONF['path_mediaobjects'] . 'disp/2/', $_MG_CONF['path_mediaobjects'] . 'tn/2/', $_MG_CONF['path_mediaobjects'] . 'orig/3/', $_MG_CONF['path_mediaobjects'] . 'disp/3/', $_MG_CONF['path_mediaobjects'] . 'tn/3/', $_MG_CONF['path_mediaobjects'] . 'orig/4/', $_MG_CONF['path_mediaobjects'] . 'disp/4/', $_MG_CONF['path_mediaobjects'] . 'tn/4/', $_MG_CONF['path_mediaobjects'] . 'orig/5/', $_MG_CONF['path_mediaobjects'] . 'disp/5/', $_MG_CONF['path_mediaobjects'] . 'tn/5/', $_MG_CONF['path_mediaobjects'] . 'orig/6/', $_MG_CONF['path_mediaobjects'] . 'disp/6/', $_MG_CONF['path_mediaobjects'] . 'tn/6/', $_MG_CONF['path_mediaobjects'] . 'orig/7/', $_MG_CONF['path_mediaobjects'] . 'disp/7/', $_MG_CONF['path_mediaobjects'] . 'tn/7/', $_MG_CONF['path_mediaobjects'] . 'orig/8/', $_MG_CONF['path_mediaobjects'] . 'disp/8/', $_MG_CONF['path_mediaobjects'] . 'tn/8/', $_MG_CONF['path_mediaobjects'] . 'orig/9/', $_MG_CONF['path_mediaobjects'] . 'disp/9/', $_MG_CONF['path_mediaobjects'] . 'tn/9/', $_MG_CONF['path_mediaobjects'] . 'orig/a/', $_MG_CONF['path_mediaobjects'] . 'disp/a/', $_MG_CONF['path_mediaobjects'] . 'tn/a/', $_MG_CONF['path_mediaobjects'] . 'orig/b/', $_MG_CONF['path_mediaobjects'] . 'disp/b/', $_MG_CONF['path_mediaobjects'] . 'tn/b/', $_MG_CONF['path_mediaobjects'] . 'orig/c/', $_MG_CONF['path_mediaobjects'] . 'disp/c/', $_MG_CONF['path_mediaobjects'] . 'tn/c/', $_MG_CONF['path_mediaobjects'] . 'orig/d/', $_MG_CONF['path_mediaobjects'] . 'disp/d/', $_MG_CONF['path_mediaobjects'] . 'tn/d/', $_MG_CONF['path_mediaobjects'] . 'orig/e/', $_MG_CONF['path_mediaobjects'] . 'disp/e/', $_MG_CONF['path_mediaobjects'] . 'tn/e/', $_MG_CONF['path_mediaobjects'] . 'orig/f/', $_MG_CONF['path_mediaobjects'] . 'disp/f/', $_MG_CONF['path_mediaobjects'] . 'tn/f/', $_MG_CONF['path_html'] . 'watermarks/');
    $fm_file_list = array($filemgmt_FileStore, $filemgmt_FileStore . 'tmp/', $filemgmt_SnapStore, $filemgmt_SnapStore . 'tmp/', $filemgmt_SnapCat, $filemgmt_SnapCat . 'tmp/');
    $forum_file_list = array($_FF_CONF['uploadpath'] . '/', $_FF_CONF['uploadpath'] . '/tn/');
    if (in_array('mediagallery', $_PLUGINS)) {
        $file_list = array_merge($file_list, $mg_file_list);
    }
    if (in_array('filemgmt', $_PLUGINS)) {
        $file_list = array_merge($file_list, $fm_file_list);
    }
    if (in_array('forum', $_PLUGINS)) {
        $file_list = array_merge($file_list, $forum_file_list);
    }
    $T->set_block('page', 'perms', 'perm');
    $classCounter = 0;
    foreach ($file_list as $path) {
        $ok = _isWritable($path);
        if (!$ok) {
            $T->set_var('location', $path);
            $T->set_var('status', $ok ? '<span class="yes">' . $LANG01['ok'] . '</span>' : '<span class="notwriteable">' . $LANG01['not_writable'] . '</span>');
            $T->set_var('rowclass', $classCounter % 2 + 1);
            $classCounter++;
            $T->parse('perm', 'perms', true);
            if (!$ok) {
                $permError = 1;
            }
        }
        /* --- debug code ---
                else {
                    $T->set_var('location',$path);
                    $T->set_var('status', $ok ? '<span class="yes">'.$LANG01['ok'].'</span>' : '<span class="notwriteable">'.$LANG01['not_writable'].'</span>');
                    $T->set_var('rowclass',($classCounter % 2)+1);
                    $classCounter++;
                    $T->parse('perm','perms',true);
                }
        ----------------------- */
    }
    // special test to see if we can create a directory under layout_cache...
    $rc = @mkdir($_CONF['path_data'] . 'layout_cache/test/');
    if (!$rc) {
        $T->set_var('location', $_CONF['path_data'] . 'layout_cache/<br /><strong>' . $_GLFUSION['errstr'] . '</strong>');
        $T->set_var('status', '<span class="notwriteable">' . $LANG01['unable_mkdir'] . '</span>');
        $T->set_var('rowclass', $classCounter % 2 + 1);
        $classCounter++;
        $T->parse('perm', 'perms', true);
        $permError = 1;
        @rmdir($_CONF['path_data'] . 'layout_cache/test/');
    } else {
        $ok = _isWritable($_CONF['path_data'] . 'layout_cache/test/');
        if (!$ok) {
            $T->set_var('location', $path);
            $T->set_var('status', $ok ? '<span class="yes">' . $LANG01['ok'] . '</span>' : '<span class="notwriteable">' . $LANG01['not_writable'] . '</span>');
            $T->set_var('rowclass', $classCounter % 2 + 1);
            $classCounter++;
            $T->parse('perm', 'perms', true);
            if (!$ok) {
                $permError = 1;
            }
        }
        @rmdir($_CONF['path_data'] . 'layout_cache/test/');
    }
    // special test to see if existing cache files exist and are writable...
    $rc = _checkCacheDir($_CONF['path_data'] . 'layout_cache/', $T, $classCounter);
    if ($rc > 0) {
        $permError = 1;
    }
    if ($permError) {
        $button = 'Recheck';
        $action = 'checkenvironment';
        $T->set_var('error_message', $LANG01['correct_perms']);
        $recheck = '<button type="submit" name="submit" onclick="submitForm( checkenv, \'checkenvironment\' );">' . LB;
        $recheck .= 'Recheck' . LB;
        $recheck .= '<img src="layout/arrow-recheck.gif" alt=""/>' . LB;
        $recheck .= '</button>' . LB;
    } else {
        $classCounter = 0;
        $recheck = '';
        $T->set_var('location', $LANG01['directory_permissions']);
        $T->set_var('status', 1 ? '<span class="yes">' . $LANG01['ok'] . '</span>' : '<span class="notwriteable">' . $LANG01['not_writable'] . '</span>');
        $T->set_var('rowclass', $classCounter % 2 + 1);
        $classCounter++;
        $T->parse('perm', 'perms', true);
        $T->set_var('location', $LANG01['file_permissions']);
        $T->set_var('status', 1 ? '<span class="yes">' . $LANG01['ok'] . '</span>' : '<span class="notwriteable">' . $LANG01['not_writable'] . '</span>');
        $T->set_var('rowclass', $classCounter % 2 + 1);
        $classCounter++;
        $T->parse('perm', 'perms', true);
    }
    $T->set_var(array('lang_host_env' => $LANG01['hosting_env'], 'lang_setting' => $LANG01['setting'], 'lang_current' => $LANG01['current'], 'lang_recommended' => $LANG01['recommended'], 'lang_notes' => $LANG01['notes'], 'lang_filesystem' => $LANG01['filesystem_check'], 'lang_php_settings' => $LANG01['php_settings'], 'lang_php_warning' => $LANG01['php_warning'], 'lang_current_php_settings' => $LANG01['current_php_settings'], 'lang_show_phpinfo' => $LANG01['show_phpinfo'], 'lang_hide_phpinfo' => $LANG01['hide_phpinfo'], 'lang_graphics' => $LANG01['graphics'], 'phpinfo' => _phpinfo()));
    if (!defined('DEMO_MODE')) {
        $T->set_var(array('phpinfo' => _phpinfo()));
    } else {
        $T->set_var('phpinfo', '');
    }
    $T->parse('output', 'page');
    $retval .= $T->finish($T->get_var('output'));
    return $retval;
}
function woo_get_image($key = 'image', $width = null, $height = null, $class = "thumbnail", $quality = 90, $id = null, $link = 'src', $repeat = 1, $offset = 0, $before = '', $after = '', $single = false, $force = false, $return = false)
{
    if (empty($id)) {
        global $post;
        $id = $post->ID;
    }
    $output = '';
    $custom_field = get_post_meta($id, $key, true);
    $set_width = ' width="' . $width . '" ';
    $set_height = ' height="' . $height . '" ';
    if (!empty($custom_field)) {
        // If the user set a custom field
        //Check for smaller images
        if ($gdv = gdVersion()) {
            $image_size = @getimagesize($custom_field);
            $image_size_width = $image_size[0];
            $image_size_height = $image_size[1];
        }
        if ($force == false) {
            // Does simple check to verify if images are smaller then specified.
            if ($width == null or $width > $image_size_width) {
                $set_width = '';
            }
            if ($height == null or $height > $image_size_height) {
                $set_height = '';
            }
        }
        if (get_option('woo_resize') == 'true') {
            $img_link = '<img src="' . get_bloginfo('template_url') . '/thumb.php?src=' . $custom_field . '&amp;h=' . $height . '&amp;w=' . $width . '&amp;zc=1&amp;q=' . $quality . '" alt="' . get_the_title($id) . '" class="' . $class . '" ' . $set_height . $set_width . ' />';
            if ($link == 'img') {
                // Just output the image
                $output .= $before;
                $output .= $img_link;
                $output .= $after;
            } else {
                // Default - output with link
                if ((is_single() or is_page()) and $single == false) {
                    $href = $custom_field;
                } else {
                    $href = get_permalink($id);
                }
                $output .= $before;
                $output .= '<a title="Permanent Link to ' . get_the_title($id) . '" href="' . $href . '">' . $img_link . '</a>';
                $output .= $after;
            }
        } else {
            // Not Resize
            $img_link = '<img src="' . $custom_field . '" alt="' . get_the_title($id) . '" ' . $set_height . $set_width . ' class="' . $class . '" />';
            if ($link == 'img') {
                // Just output the image
                $output .= $before;
                $output .= $img_link;
                $output .= $after;
            } else {
                // Default - output with link
                if ((is_single() or is_page()) and $single == false) {
                    $href = $custom_field;
                } else {
                    $href = get_permalink($id);
                }
                $output .= $before;
                $output .= '<a title="Permanent Link to ' . get_the_title($id) . '" href="' . $href . '">' . $img_link . '</a>';
                $output .= $after;
            }
        }
        if ($return == TRUE) {
            return $output;
        } else {
            echo $output;
            // Done
        }
    } elseif (empty($custom_field) && get_option('woo_auto_img') == 'true') {
        if ($offset >= 1) {
            $repeat = $repeat + $offset;
        }
        $attachments = get_children(array('post_parent' => $id, 'numberposts' => $repeat, 'post_type' => 'attachment', 'post_mime_type' => 'image'));
        if (empty($attachments)) {
            return;
        }
        $counter = -1;
        $size = 'large';
        foreach ($attachments as $att_id => $attachment) {
            $counter++;
            if ($counter < $offset) {
                continue;
            }
            $output = '';
            $src = wp_get_attachment_image_src($att_id, $size, true);
            //$link = get_attachment_link($id);
            $custom_field = $src[0];
            //Check for smaller images
            if ($gdv = gdVersion()) {
                $image_size = @getimagesize($custom_field);
                $image_size_width = $image_size[0];
                $image_size_height = $image_size[1];
            }
            if ($force == false) {
                // Does simple check to verify if images are smaller then specified.
                if ($width == null or $width > $image_size_width) {
                    $set_width = '';
                }
                if ($height == null or $height > $image_size_height) {
                    $set_height = '';
                }
            }
            if (get_option('woo_resize') == 'true') {
                $img_link = '<img src="' . get_bloginfo('template_url') . '/thumb.php?src=' . $custom_field . '&amp;h=' . $height . '&amp;w=' . $width . '&amp;zc=1&amp;q=' . $quality . '" alt="' . get_the_title($id) . '" class="' . $class . '" ' . $set_height . $set_width . '   />';
                if ($link == 'img' and $single == false) {
                    // Just output the image
                    $output .= $before;
                    $output .= $img_link;
                    $output .= $after;
                } else {
                    // Default - output with link
                    if ((is_single() or is_page()) and $single == false) {
                        $href = $custom_field;
                    } else {
                        $href = get_permalink($id);
                    }
                    $output .= $before;
                    $output .= '<a title="Permanent Link to ' . get_the_title($id) . '" href="' . $href . '">' . $img_link . '</a>';
                    $output .= $after;
                }
            } else {
                // Not Resize
                $img_link = '<img src="' . $custom_field . '" alt="' . get_the_title($id) . '" ' . $set_height . $set_width . ' />';
                if ($link == 'img') {
                    // Just output the image
                    $output .= $before;
                    $output .= $img_link;
                    $output .= $after;
                } else {
                    // Default - output with link
                    if ((is_single() or is_page()) and $single == false) {
                        $href = $custom_field;
                    } else {
                        $href = get_permalink($id);
                    }
                    $output .= $before;
                    $output .= '<a title="Permanent Link to ' . get_the_title($id) . '" href="' . $href . '">' . $img_link . '</a>';
                    $output .= $after;
                }
            }
            if ($return == TRUE) {
                return $output;
            } else {
                echo $output;
                // Done
            }
        }
    } else {
        return;
    }
}
Beispiel #6
0
function MG_checkEnvironment()
{
    global $_CONF, $_MG_CONF, $LANG_MG01, $_TABLES;
    $retval = '';
    $T = new Template($_MG_CONF['template_path']);
    $T->set_file('admin', 'envcheck.thtml');
    $T->set_var('site_url', $_CONF['site_url']);
    $T->set_var('site_admin_url', $_CONF['site_admin_url']);
    $T->set_var('xhtml', XHTML);
    $T->set_block('admin', 'CheckRow2', 'CRow2');
    $T->set_block('admin', 'CheckRow1', 'CRow1');
    $T->set_var('CRow2', '');
    if (ini_get('safe_mode') != 1) {
        switch ($_CONF['image_lib']) {
            case 'imagemagick':
                // ImageMagick
                $binary = 'convert' . (PHP_OS == 'WINNT' ? '.exe' : '');
                clearstatcache();
                if (!@file_exists($_MG_CONF['path_to_imagemagick'] . $binary)) {
                    $T->set_var(array('config_item' => 'ImageMagick Programs', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
                } else {
                    $T->set_var(array('config_item' => 'ImageMagick Programs', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
                }
                $T->parse('CRow2', 'CheckRow2', true);
                break;
            case 'netpbm':
                // NetPBM
                $binary = 'jpegtopnm' . (PHP_OS == 'WINNT' ? '.exe' : '');
                clearstatcache();
                if (!@file_exists($_CONF['path_to_netpbm'] . $binary)) {
                    $T->set_var(array('config_item' => 'NetPBM Programs', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
                } else {
                    $T->set_var(array('config_item' => 'NetPBM Programs', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
                }
                $T->parse('CRow2', 'CheckRow2', true);
                break;
            case 'gdlib':
                // GD Libs
                if ($gdv = gdVersion()) {
                    if ($gdv >= 2) {
                        $T->set_var(array('config_item' => 'GD Libraries', 'status' => '<span style="color:green">v2 Installed</span>'));
                    } else {
                        $T->set_var(array('config_item' => 'GD Libraries', 'status' => '<span style="color:yellow">v1 Installed</span>'));
                    }
                } else {
                    $T->set_var(array('config_item' => 'GD Libraries', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
                }
                $T->parse('CRow2', 'CheckRow2', true);
                break;
        }
        if ($_MG_CONF['jhead_enabled']) {
            $binary = '/jhead' . (PHP_OS == 'WINNT' ? '.exe' : '');
            clearstatcache();
            if (!@file_exists($_MG_CONF['jhead_path'] . $binary)) {
                $T->set_var(array('config_item' => 'jhead Program', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
            } else {
                $T->set_var(array('config_item' => 'jhead Program', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
            }
            $T->parse('CRow2', 'CheckRow2', true);
        }
        if ($_MG_CONF['jpegtran_enabled']) {
            $binary = '/jpegtran' . (PHP_OS == 'WINNT' ? '.exe' : '');
            clearstatcache();
            if (!@file_exists($_MG_CONF['jpegtran_path'] . $binary)) {
                $T->set_var(array('config_item' => 'jpegtran Program', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
            } else {
                $T->set_var(array('config_item' => 'jpegtran Program', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
            }
            $T->parse('CRow2', 'CheckRow2', true);
        }
        if ($_MG_CONF['ffmpeg_enabled']) {
            $binary = '/ffmpeg' . (PHP_OS == 'WINNT' ? '.exe' : '');
            clearstatcache();
            if (!@file_exists($_MG_CONF['ffmpeg_path'] . $binary)) {
                $T->set_var(array('config_item' => 'ffmpeg Program', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
            } else {
                $T->set_var(array('config_item' => 'ffmpeg Program', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
            }
            $T->parse('CRow2', 'CheckRow2', true);
        }
        if ($_MG_CONF['zip_enabled']) {
            $binary = '/unzip' . (PHP_OS == 'WINNT' ? '.exe' : '');
            clearstatcache();
            if (!@file_exists($_MG_CONF['zip_path'] . $binary)) {
                $T->set_var(array('config_item' => 'unzip Program', 'status' => '<span style="color:red">' . $LANG_MG01['not_found'] . '</span>'));
            } else {
                $T->set_var(array('config_item' => 'unzip Program', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
            }
            $T->parse('CRow2', 'CheckRow2', true);
        }
    } else {
        $T->set_var(array('config_item' => 'Program Locations', 'status' => '<span style="color:red">Unable to check because of safe_mode restrictions</span>'));
        $T->parse('CRow2', 'CheckRow2', true);
    }
    $tmp = $T->get_var('CRow2');
    if (!empty($tmp)) {
        $T->set_var('config_title', $LANG_MG01['host_environment']);
        $T->parse('CRow1', 'CheckRow1', true);
    }
    // Now Check the directory permissions...
    $T->set_var('CRow2', '');
    $T->set_var('config_title', $LANG_MG01['mg_dir_structure']);
    $errCount = 0;
    // check tmp path
    if (!is_writable($_MG_CONF['tmp_path'])) {
        $T->set_var(array('config_item' => 'tmp Path', 'status' => '<span style="color:red">' . $LANG_MG01['not_writable'] . '</span>'));
        $T->parse('CRow2', 'CheckRow2', true);
    } else {
        $T->set_var(array('config_item' => 'tmp Path', 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
        $T->parse('CRow2', 'CheckRow2', true);
    }
    //      Now check directory permissions...
    $loopy = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f');
    $elements = count($loopy);
    // do orig
    for ($i = 0; $i < $elements; $i++) {
        if (!is_writable($_MG_CONF['path_mediaobjects'] . 'orig/' . $loopy[$i])) {
            $errCount++;
            $T->set_var(array('config_item' => $_MG_CONF['path_mediaobjects'] . 'orig/' . $loopy[$i], 'status' => '<span style="color:red">' . $LANG_MG01['not_writable'] . '</span>'));
            $T->parse('CRow2', 'CheckRow2', true);
        }
    }
    for ($i = 0; $i < $elements; $i++) {
        if (!is_writable($_MG_CONF['path_mediaobjects'] . 'disp/' . $loopy[$i])) {
            $T->set_var(array('config_item' => $_MG_CONF['path_mediaobjects'] . 'disp/' . $loopy[$i], 'status' => '<span style="color:red">' . $LANG_MG01['not_writable'] . '</span>'));
            $errCount++;
            $T->parse('CRow2', 'CheckRow2', true);
        }
    }
    for ($i = 0; $i < $elements; $i++) {
        if (!is_writable($_MG_CONF['path_mediaobjects'] . 'tn/' . $loopy[$i])) {
            $T->set_var(array('config_item' => $_MG_CONF['path_mediaobjects'] . 'tn/' . $loopy[$i], 'status' => '<span style="color:red">' . $LANG_MG01['not_writable'] . '</span>'));
            $T->parse('CRow2', 'CheckRow2', true);
            $errCount++;
        }
    }
    if (!is_writable($_MG_CONF['path_mediaobjects'] . 'covers/')) {
        $T->set_var(array('config_item' => $_MG_CONF['path_mediaobjects'] . 'covers/', 'status' => '<span style="color:red">' . $LANG_MG01['not_writable'] . '</span>'));
        $T->parse('CRow2', 'CheckRow2', true);
        $errCount++;
    }
    if ($errCount == 0) {
        $T->set_var(array('config_item' => $LANG_MG01['mg_directories'], 'status' => '<span style="color:green">' . $LANG_MG01['ok'] . '</span>'));
        $T->parse('CRow2', 'CheckRow2', true);
    }
    $T->parse('CRow1', 'CheckRow1', true);
    // check php.ini settings...
    $T->set_var('CRow2', '');
    $T->set_var('config_title', $LANG_MG01['php_ini_settings']);
    $inichecks = array('upload_max_filesize', 'file_uploads', 'post_max_size', 'max_execution_time', 'memory_limit', 'max_input_time', 'safe_mode', 'upload_tmp_dir');
    for ($i = 0; $i < count($inichecks); $i++) {
        $T->set_var(array('config_item' => $inichecks[$i], 'status' => ini_get($inichecks[$i])));
        $T->parse('CRow2', 'CheckRow2', true);
    }
    $T->parse('CRow1', 'CheckRow1', true);
    $T->set_var(array('lang_recheck' => $LANG_MG01['recheck'], 'lang_continue' => $LANG_MG01['continue']));
    $T->parse('output', 'admin');
    $retval .= $T->finish($T->get_var('output'));
    return $retval;
}
Beispiel #7
0
     }
     // Grab a random Background Image or set FALSE if none was found
     $bg_img = sizeof($bg_imgs) ? rand(0, sizeof($bg_imgs) - 1) : false;
 }
 $fonts = array();
 if ($fonts_dir = @opendir(IP_ROOT_PATH . CAPTCHA_FONTS_PATH)) {
     while (true == ($file = @readdir($fonts_dir))) {
         if (substr(strtolower($file), -3) == 'ttf') {
             $fonts[] = $file;
         }
     }
     @closedir($fonts_dir);
 }
 $font = rand(0, sizeof($fonts) - 1);
 // Generate
 $image = gdVersion() >= 2 ? imagecreatetruecolor($total_width, $total_height) : imagecreate($total_width, $total_height);
 $background_color = imagecolorallocate($image, $bg_color[0], $bg_color[1], $bg_color[2]);
 imagefill($image, 0, 0, $background_color);
 #imagecolortransparent($image, $background_color);
 // Generate backgrund
 if ($chess == '1' || $chess == '2' && rand(0, 1)) {
     // Draw rectangles
     for ($i = 0; $i <= 8; $i++) {
         $rectanglecolor = imagecolorallocate($image, rand(100, 200), rand(100, 200), rand(100, 200));
         imagefilledrectangle($image, 0, 0, round($total_width - $total_width / 8 * $i), round($total_height), $rectanglecolor);
         $rectanglecolor = imagecolorallocate($image, rand(100, 200), rand(100, 200), rand(100, 200));
         imagefilledrectangle($image, 0, 0, round($total_width - $total_width / 8 * $i), round($total_height / 2), $rectanglecolor);
     }
 }
 if ($ellipses == '1' || $ellipses == '2' && rand(0, 1)) {
     // Draw random ellipses
function resize_image($image_file_name, $resize_width, $resize_height, $resize_quality)
{
    // Check file and read into memory
    $image_data = getimagesize($image_file_name);
    $pic_width = $image_data[0];
    $pic_height = $image_data[1];
    switch ($image_data[2]) {
        case '1':
            $read_function = 'imagecreatefromgif';
            $type = 'image/gif';
            break;
        case '2':
            $read_function = 'imagecreatefromjpeg';
            $type = 'image/jpeg';
            break;
        case '3':
            $read_function = 'imagecreatefrompng';
            $type = 'image/png';
            break;
        default:
            return false;
    }
    $src = @$read_function($image_file_name);
    // Resize image
    if (!$src) {
        return false;
    }
    if ($pic_width / $pic_height > $resize_width / $resize_height) {
        $resize_height = $resize_width * ($pic_height / $pic_width);
    } else {
        $resize_width = $resize_height * ($pic_width / $pic_height);
    }
    $resize = gdVersion() == 1 ? @imagecreate($resize_width, $resize_height) : @imagecreatetruecolor($resize_width, $resize_height);
    $resize_function = gdVersion == 1 ? 'imagecopyresized' : 'imagecopyresampled';
    @$resize_function($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height);
    // Write file to disk
    switch ($image_data[2]) {
        case '1':
            @unlink($image_file_name);
            // Check gif support and use convert to jpeg if not possible
            if (imagetypes() & IMG_GIF) {
                @imagegif($resize, $image_file_name);
                $type = 'image/gif';
            } else {
                @imagejpeg($resize, $image_file_name, $resize_quality);
                $type = 'image/jpeg';
            }
            break;
        case '2':
            @unlink($image_file_name);
            @imagejpeg($resize, $image_file_name, $resize_quality);
            $type = 'image/jpeg';
            break;
        case '3':
            @unlink($image_file_name);
            @imagepng($resize, $image_file_name);
            $type = 'image/png';
            break;
    }
    @chmod($image_file_name, 0777);
    imagedestroy($src);
    imagedestroy($resize);
    return $type;
}
Beispiel #9
0
function _checkEnvironment()
{
    global $_CONF, $_TABLES, $_PLUGINS, $_SYSTEM, $LANG_ADMIN, $LANG_ENVCHECK, $_SCRIPTS;
    $retval = '';
    $permError = 0;
    $T = new Template($_CONF['path_layout'] . 'admin');
    $T->set_file('page', 'envcheck.thtml');
    $_SCRIPTS->setJavaScriptLibrary('jquery');
    $javascript = '
                    $(document).ready(function(){
                      $("#toggle_phpinfo").click(function(){
                        $("#panel_phpinfo").slideToggle("slow");
                      });
                    });';
    $_SCRIPTS->setJavascript($javascript, true);
    $menu_arr = array(array('url' => $_CONF['site_admin_url'] . '/envcheck.php', 'text' => $LANG_ENVCHECK['recheck']), array('url' => $_CONF['site_admin_url'], 'text' => $LANG_ADMIN['admin_home']));
    $retval .= COM_startBlock($LANG_ENVCHECK['hosting_env'], '', COM_getBlockTemplate('_admin_block', 'header'));
    $retval .= ADMIN_createMenu($menu_arr, $LANG_ENVCHECK['php_warning'], $_CONF['layout_url'] . '/images/icons/envcheck.png');
    // ***********************************************
    // PHP Settings Section - First we will validate the general environment.
    $header_arr = array(array('text' => $LANG_ENVCHECK['setting'], 'field' => 'settings'), array('text' => $LANG_ENVCHECK['current'], 'field' => 'current'), array('text' => $LANG_ENVCHECK['recommended'], 'field' => 'recommended'), array('text' => $LANG_ENVCHECK['notes'], 'field' => 'notes'));
    $text_arr = array('has_menu' => false, 'title' => $LANG_ENVCHECK['php_settings'], 'form_url' => "{$_CONF['site_admin_url']}/envcheck.php");
    $data_arr = array();
    if (_phpOutOfDate()) {
        $current = '<span class="notok">' . phpversion() . '</span>';
    } else {
        $current = '<span class="yes">' . phpversion() . '</span>';
    }
    $data_arr[] = array('settings' => $LANG_ENVCHECK['php_version'], 'current' => $current, 'recommended' => '5.2.0+', 'notes' => $LANG_ENVCHECK['php_req_version']);
    $rg = ini_get('register_globals');
    $sm = ini_get('safe_mode');
    $ob = ini_get('open_basedir');
    $current = $rg == 1 ? '<span class="notok">' . $LANG_ENVCHECK['on'] . '</span>' : '<span class="yes">' . $LANG_ENVCHECK['off'] . '</span>';
    $data_arr[] = array('settings' => 'register_globals', 'current' => $current, 'recommended' => $LANG_ENVCHECK['off'], 'notes' => $LANG_ENVCHECK['register_globals']);
    $current = $sm == 1 ? '<span class="notok">' . $LANG_ENVCHECK['on'] . '</span>' : '<span class="yes">' . $LANG_ENVCHECK['off'] . '</span>';
    $data_arr[] = array('settings' => 'safe_mode', 'current' => $current, 'recommended' => $LANG_ENVCHECK['off'], 'notes' => $LANG_ENVCHECK['safe_mode']);
    $ob = ini_get('open_basedir');
    if ($ob == '') {
        $open_basedir_restriction = 0;
    } else {
        $open_basedir_restriction = 1;
        $open_basedir_directories = $ob;
    }
    $current = $ob == '' ? '<span class="yes">' . $LANG_ENVCHECK['off'] . '</span>' : '<span class="notok">' . $LANG_ENVCHECK['enabled'] . '</span>';
    $data_arr[] = array('settings' => 'open_basedir', 'current' => $current, 'recommended' => $LANG_ENVCHECK['off'], 'notes' => $LANG_ENVCHECK['open_basedir']);
    $memory_limit = _return_bytes(ini_get('memory_limit'));
    $memory_limit_print = $memory_limit / 1024 / 1024;
    $current = $memory_limit < 50331648 ? '<span class="notok">' . $memory_limit_print . 'M</span>' : '<span class="yes">' . $memory_limit_print . 'M</span>';
    $data_arr[] = array('settings' => 'memory_limit', 'current' => $current, 'recommended' => '48M', 'notes' => $LANG_ENVCHECK['memory_limit']);
    $fu = ini_get('file_uploads');
    $current = $fu == 1 ? '<span class="yes">' . $LANG_ENVCHECK['on'] . '</span>' : '<span class="notok">' . $LANG_ENVCHECK['off'] . '</span>';
    $data_arr[] = array('settings' => 'file_uploads', 'current' => $current, 'recommended' => $LANG_ENVCHECK['on'], 'notes' => $LANG_ENVCHECK['file_uploads']);
    $upload_limit = _return_bytes(ini_get('upload_max_filesize'));
    $upload_limit_print = $upload_limit / 1024 / 1024;
    $current = $upload_limit < 8388608 ? '<span class="notok">' . $upload_limit_print . 'M</span>' : '<span class="yes">' . $upload_limit_print . 'M</span>';
    $data_arr[] = array('settings' => 'upload_max_filesize', 'current' => $current, 'recommended' => '8M', 'notes' => $LANG_ENVCHECK['upload_max_filesize']);
    $post_limit = _return_bytes(ini_get('post_max_size'));
    $post_limit_print = $post_limit / 1024 / 1024;
    $current = $post_limit < 8388608 ? '<span class="notok">' . $post_limit_print . 'M</span>' : '<span class="yes">' . $post_limit_print . 'M</span>';
    $data_arr[] = array('settings' => 'post_max_size', 'current' => $current, 'recommended' => '8M', 'notes' => $LANG_ENVCHECK['post_max_size']);
    $max_execution_time = ini_get('max_execution_time');
    $current = $max_execution_time < 30 ? '<span class="notok">' . $max_execution_time . ' secs</span>' : '<span class="yes">' . $max_execution_time . ' secs</span>';
    $data_arr[] = array('settings' => 'max_execution_time', 'current' => $current, 'recommended' => '30 secs', 'notes' => $LANG_ENVCHECK['max_execution_time']);
    $admin_list = ADMIN_simpleList('', $header_arr, $text_arr, $data_arr);
    $T->set_var('php_settings_list', $admin_list);
    // ***********************************************
    // Libraries
    $header_arr = array(array('text' => $LANG_ENVCHECK['item'], 'field' => 'item'), array('text' => $LANG_ENVCHECK['status'], 'field' => 'status'), array('text' => $LANG_ENVCHECK['notes'], 'field' => 'notes'));
    $text_arr = array('has_menu' => false, 'title' => $LANG_ENVCHECK['libraries'], 'form_url' => "{$_CONF['site_admin_url']}/envcheck.php");
    $data_arr = array();
    if (extension_loaded('openssl')) {
        $data_arr[] = array('item' => $LANG_ENVCHECK['openssl_library'], 'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>', 'notes' => $LANG_ENVCHECK['openssl_ok']);
    } else {
        $data_arr[] = array('item' => $LANG_ENVCHECK['openssl_library'], 'status' => '<span class="notok">' . $LANG_ENVCHECK['not_found'] . '</span>', 'notes' => $LANG_ENVCHECK['openssl_not_found']);
    }
    if ($sm != 1 && $open_basedir_restriction != 1) {
        switch ($_CONF['image_lib']) {
            case 'imagemagick':
                // ImageMagick
                if (PHP_OS == "WINNT") {
                    $binary = "/convert.exe";
                } else {
                    $binary = "/convert";
                }
                clearstatcache();
                if (!@file_exists($_CONF['path_to_mogrify'] . $binary)) {
                    $data_arr[] = array('item' => $LANG_ENVCHECK['imagemagick'], 'status' => '<span class="notok">' . $LANG_ENVCHECK['not_found'] . '</span>', 'notes' => $LANG_ENVCHECK['im_not_found']);
                } else {
                    $data_arr[] = array('item' => $LANG_ENVCHECK['imagemagick'], 'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>', 'notes' => $LANG_ENVCHECK['im_ok']);
                }
                break;
            case 'gdlib':
                // GD Libs
                if ($gdv = gdVersion()) {
                    if ($gdv >= 2) {
                        $data_arr[] = array('item' => $LANG_ENVCHECK['gd_lib'], 'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>', 'notes' => $LANG_ENVCHECK['gd_ok']);
                    } else {
                        $data_arr[] = array('item' => $LANG_ENVCHECK['gd_lib'], 'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>', 'notes' => $LANG_ENVCHECK['gd_v1']);
                    }
                } else {
                    $data_arr[] = array('item' => $LANG_ENVCHECK['gd_lib'], 'status' => '<span class="notok">' . $LANG_ENVCHECK['not_found'] . '</span>', 'notes' => $LANG_ENVCHECK['gd_not_found']);
                }
                break;
            case 'netpbm':
                // NetPBM
                if (PHP_OS == "WINNT") {
                    $binary = "/jpegtopnm.exe";
                } else {
                    $binary = "/jpegtopnm";
                }
                clearstatcache();
                if (!@file_exists($_CONF['path_to_netpbm'] . $binary)) {
                    $data_arr[] = array('item' => $LANG_ENVCHECK['netpbm'], 'status' => '<span class="notok">' . $LANG_ENVCHECK['not_found'] . '</span>', 'notes' => $LANG_ENVCHECK['np_not_found']);
                } else {
                    $data_arr[] = array('item' => $LANG_ENVCHECK['netpbm'], 'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>', 'notes' => $LANG_ENVCHECK['np_ok']);
                }
                break;
            default:
                $data_arr[] = array('item' => $LANG_ENVCHECK['graphics'], 'status' => $LANG_ENVCHECK['not_checked'], 'notes' => $LANG_ENVCHECK['not_used_note']);
        }
        /* Left incase we decided to use jhead and/or jpegtran Program in future
                if ( $_CONF['jhead_enabled'] ) {
                    if (PHP_OS == "WINNT") {
                        $binary = "/jhead.exe";
                    } else {
                        $binary = "/jhead";
                    }
                    clearstatcache();
                    if (! @file_exists( $_CONF['path_to_jhead'] . $binary ) ) {
                        $data_arr[] = array(
                            'item' => $LANG_ENVCHECK['jhead'],
                            'status' =>  '<span class="notok">' .  $LANG_ENVCHECK['not_found'] . '</span>',
                            'notes'     => $LANG_ENVCHECK['jhead_not_found'],
                        );
                    } else {
                        $data_arr[] = array(
                            'item'      => $LANG_ENVCHECK['jhead'],
                            'status'    => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>',
                            'notes'     => $LANG_ENVCHECK['jhead_ok'],
                        );
                    }
                }
        
                if ( $_CONF['jpegtrans_enabled'] ) {
                    if (PHP_OS == "WINNT") {
                        $binary = "/jpegtran.exe";
                    } else {
                        $binary = "/jpegtran";
                    }
                    clearstatcache();
                    if (! @file_exists( $_CONF['path_to_jpegtrans'] . $binary ) ) {
                        $data_arr[] = array(
                            'item'   => $LANG_ENVCHECK['jpegtran'],
                            'status' => '<span class="notok">' .  $LANG_ENVCHECK['not_found'] . '</span>',
                            'notes'  => $LANG_ENVCHECK['jpegtran_not_found'],
                        );
                    } else {
                        $data_arr[] = array(
                            'item'   => $LANG_ENVCHECK['jpegtran'],
                            'status' => '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>',
                            'notes'  => $LANG_ENVCHECK['jpegtran_ok'],
                        );
                    }
                }
                */
    } else {
        $data_arr[] = array('item' => $LANG_ENVCHECK['graphics'], 'status' => $LANG_ENVCHECK['not_checked'], 'notes' => $LANG_ENVCHECK['bypass_note']);
    }
    $admin_list = ADMIN_simpleList('', $header_arr, $text_arr, $data_arr);
    $T->set_var('graphics_list', $admin_list);
    // ***********************************************
    // Directory / File Permissions
    $header_arr = array(array('text' => $LANG_ENVCHECK['location'], 'field' => 'location'), array('text' => $LANG_ENVCHECK['status'], 'field' => 'status'));
    $text_arr = array('has_menu' => false, 'title' => $LANG_ENVCHECK['filesystem_check'], 'form_url' => "{$_CONF['site_admin_url']}/envcheck.php");
    $data_arr = array();
    // extract syndication storage path
    $feedpath = $_CONF['rdf_file'];
    $pos = strrpos($feedpath, '/');
    $feedPath = substr($feedpath, 0, $pos + 1);
    $file_list = array($_CONF['path_data'], $_CONF['path_log'] . 'error.log', $_CONF['path_log'] . 'access.log', $_CONF['path_log'] . 'captcha.log', $_CONF['path_log'] . 'spamx.log', $_CONF['path_log'] . '404.log', $_CONF['path_data'] . 'layout_cache/', $_CONF['path_html'], $feedPath, $_CONF['rdf_file'], $_CONF['path_html'] . 'images/articles/', $_CONF['path_html'] . 'images/topics/', $_CONF['path_html'] . 'images/userphotos/', $_CONF['path_html'] . 'images/library/File/', $_CONF['path_html'] . 'images/library/Flash/', $_CONF['path_html'] . 'images/library/Image/', $_CONF['path_html'] . 'images/library/Media/');
    /* For Media Gallery Plugin - left in incase add plugin api checks in future
        $mg_file_list = array($_CONF['path'].'plugins/mediagallery/tmp/',
                            $_MG_CONF['path_mediaobjects'],
                            $_MG_CONF['path_mediaobjects'].'covers/',
                            $_MG_CONF['path_mediaobjects'].'orig/',
                            $_MG_CONF['path_mediaobjects'].'disp/',
                            $_MG_CONF['path_mediaobjects'].'tn/',
                            $_MG_CONF['path_mediaobjects'].'orig/0/',
                            $_MG_CONF['path_mediaobjects'].'disp/0/',
                            $_MG_CONF['path_mediaobjects'].'tn/0/',
                            $_MG_CONF['path_mediaobjects'].'orig/1/',
                            $_MG_CONF['path_mediaobjects'].'disp/1/',
                            $_MG_CONF['path_mediaobjects'].'tn/1/',
                            $_MG_CONF['path_mediaobjects'].'orig/2/',
                            $_MG_CONF['path_mediaobjects'].'disp/2/',
                            $_MG_CONF['path_mediaobjects'].'tn/2/',
                            $_MG_CONF['path_mediaobjects'].'orig/3/',
                            $_MG_CONF['path_mediaobjects'].'disp/3/',
                            $_MG_CONF['path_mediaobjects'].'tn/3/',
                            $_MG_CONF['path_mediaobjects'].'orig/4/',
                            $_MG_CONF['path_mediaobjects'].'disp/4/',
                            $_MG_CONF['path_mediaobjects'].'tn/4/',
                            $_MG_CONF['path_mediaobjects'].'orig/5/',
                            $_MG_CONF['path_mediaobjects'].'disp/5/',
                            $_MG_CONF['path_mediaobjects'].'tn/5/',
                            $_MG_CONF['path_mediaobjects'].'orig/6/',
                            $_MG_CONF['path_mediaobjects'].'disp/6/',
                            $_MG_CONF['path_mediaobjects'].'tn/6/',
                            $_MG_CONF['path_mediaobjects'].'orig/7/',
                            $_MG_CONF['path_mediaobjects'].'disp/7/',
                            $_MG_CONF['path_mediaobjects'].'tn/7/',
                            $_MG_CONF['path_mediaobjects'].'orig/8/',
                            $_MG_CONF['path_mediaobjects'].'disp/8/',
                            $_MG_CONF['path_mediaobjects'].'tn/8/',
                            $_MG_CONF['path_mediaobjects'].'orig/9/',
                            $_MG_CONF['path_mediaobjects'].'disp/9/',
                            $_MG_CONF['path_mediaobjects'].'tn/9/',
                            $_MG_CONF['path_mediaobjects'].'orig/a/',
                            $_MG_CONF['path_mediaobjects'].'disp/a/',
                            $_MG_CONF['path_mediaobjects'].'tn/a/',
                            $_MG_CONF['path_mediaobjects'].'orig/b/',
                            $_MG_CONF['path_mediaobjects'].'disp/b/',
                            $_MG_CONF['path_mediaobjects'].'tn/b/',
                            $_MG_CONF['path_mediaobjects'].'orig/c/',
                            $_MG_CONF['path_mediaobjects'].'disp/c/',
                            $_MG_CONF['path_mediaobjects'].'tn/c/',
                            $_MG_CONF['path_mediaobjects'].'orig/d/',
                            $_MG_CONF['path_mediaobjects'].'disp/d/',
                            $_MG_CONF['path_mediaobjects'].'tn/d/',
                            $_MG_CONF['path_mediaobjects'].'orig/e/',
                            $_MG_CONF['path_mediaobjects'].'disp/e/',
                            $_MG_CONF['path_mediaobjects'].'tn/e/',
                            $_MG_CONF['path_mediaobjects'].'orig/f/',
                            $_MG_CONF['path_mediaobjects'].'disp/f/',
                            $_MG_CONF['path_mediaobjects'].'tn/f/',
                            $_MG_CONF['path_html'].'watermarks/',
                        );
    
        $fm_file_list = array(
                            $filemgmt_FileStore,
                            $filemgmt_FileStore.'tmp/',
                            $filemgmt_SnapStore,
                            $filemgmt_SnapStore.'tmp/',
                            $filemgmt_SnapCat,
                            $filemgmt_SnapCat.'tmp/',
                        );
    
        $forum_file_list = array(
                            $_FF_CONF['uploadpath'].'/',
                            $_FF_CONF['uploadpath'].'/tn/',
                          );
    
    
        if (in_array('mediagallery', $_PLUGINS)) {
            $file_list = array_merge($file_list, $mg_file_list);
        }
        if (in_array('filemgmt', $_PLUGINS)) {
            $file_list = array_merge($file_list, $fm_file_list);
        }
        if (in_array('forum', $_PLUGINS)) {
            $file_list = array_merge($file_list, $forum_file_list);
        }
    */
    $T->set_block('page', 'perms', 'perm');
    foreach ($file_list as $path) {
        $ok = _isWritable($path);
        if (!$ok) {
            $status = $ok ? '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>' : '<span class="notwriteable">' . $LANG_ENVCHECK['not_writable'] . '</span>';
            $data_arr[] = array('location' => $path, 'status' => $status);
            if (!$ok) {
                $permError = 1;
            }
        }
        /* --- debug code ---
                else {
                    $status = $ok ? '<span class="yes">'.$LANG_ENVCHECK['ok'].'</span>' : '<span class="notwriteable">'.$LANG_ENVCHECK['not_writable'].'</span>';
                    $data_arr[] = array(
                        'location' => $path,
                        'status' => $status
                    );
                }
        ----------------------- */
    }
    // special test to see if we can create a directory under layout_cache...
    $rc = @mkdir($_CONF['path_data'] . 'layout_cache/test/');
    if (!$rc) {
        $location = $_CONF['path_data'] . 'layout_cache/';
        $status = '<span class="notwriteable">' . $LANG_ENVCHECK['unable_mkdir'] . '</span>';
        $data_arr[] = array('location' => $location, 'status' => $status);
        $permError = 1;
        @rmdir($_CONF['path_data'] . 'layout_cache/test/');
    } else {
        $ok = _isWritable($_CONF['path_data'] . 'layout_cache/test/');
        if (!$ok) {
            $status = $ok ? '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>' : '<span class="notwriteable">' . $LANG_ENVCHECK['not_writable'] . '</span>';
            $data_arr[] = array('location' => $path, 'status' => $status);
            if (!$ok) {
                $permError = 1;
            }
        }
        @rmdir($_CONF['path_data'] . 'layout_cache/test/');
    }
    // special test to see if existing cache files exist and are writable...
    $rc = _checkCacheDir($_CONF['path_data'] . 'layout_cache/', $data_arr);
    if ($rc > 0) {
        $permError = 1;
    }
    if (!$permError) {
        $recheck = '';
        $status = 1 ? '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>' : '<span class="notwriteable">' . $LANG_ENVCHECK['not_writable'] . '</span>';
        $data_arr[] = array('location' => $LANG_ENVCHECK['directory_permissions'], 'status' => $status);
        $status = 1 ? '<span class="yes">' . $LANG_ENVCHECK['ok'] . '</span>' : '<span class="notwriteable">' . $LANG_ENVCHECK['not_writable'] . '</span>';
        $data_arr[] = array('location' => $LANG_ENVCHECK['file_permissions'], 'status' => $status);
    }
    $admin_list = ADMIN_simpleList('', $header_arr, $text_arr, $data_arr);
    $T->set_var('filesystem_list', $admin_list);
    // ***********************************************
    // Current PHP Settings
    $T->set_var(array('lang_current_php_settings' => $LANG_ENVCHECK['current_php_settings'], 'lang_showhide_phpinfo' => $LANG_ENVCHECK['showhide_phpinfo'], 'phpinfo' => _phpinfo()));
    /*
    if ( !defined('DEMO_MODE') ) {
        $T->set_var(array(
            'phpinfo'       => _phpinfo(),
        ));
    } else {
        $T->set_var('phpinfo','');
    }
    */
    $T->set_var('phpinfo', _phpinfo());
    $T->parse('output', 'page');
    $retval .= $T->finish($T->get_var('output'));
    $retval .= COM_endBlock(COM_getBlockTemplate('_admin_block', 'footer'));
    return $retval;
}