function fncDisplay() { global $_CONF; global $LANG_ASSIST_ADMIN; global $_ASSIST_CONF; global $_DB_dbms; $retval = ""; $pi_name = "assist"; $tmplfld = assist_templatePath('admin', 'default', $pi_name); $T = new Template($tmplfld); $lang = COM_getLanguageName(); $path = $_CONF['site_admin_url'] . '/plugins/assist/docs/'; //$path = 'docs/'; if (!file_exists($path . $lang . '/')) { $lang = 'japanese'; //'english'; } $document_url = $path . $lang . '/'; $T->set_file('admin', 'information.thtml'); $T->set_var('pi_name', $pi_name); $T->set_var('version', $_ASSIST_CONF['version']); $T->set_var('dbms', $_DB_dbms); $T->set_var('dbversion', DB_getVersion()); $T->set_var('php_os', PHP_OS); $T->set_var('phpversion', phpversion()); if ($_CONF['facebook_consumer_key'] == "") { $T->set_var('fbid', $LANG_ASSIST_ADMIN['err_fbid']); } else { $T->set_var('fbid', $_CONF['facebook_consumer_key']); } $T->set_var('piname', $LANG_ASSIST_ADMIN['piname']); $T->set_var('about_thispage', $LANG_ASSIST_ADMIN['about_admin_information']); $T->set_var('lang_document', $LANG_ASSIST_ADMIN['document']); $T->set_var('document_url', $document_url); $T->set_var('online', $LANG_ASSIST_ADMIN['online']); $T->set_var('lang_configuration', $LANG_ASSIST_ADMIN['configuration']); $T->set_var('lang_autotags', $LANG_ASSIST_ADMIN['autotags']); $T->set_var('lang_templatesetvar', $LANG_ASSIST_ADMIN['templatesetvar']); $T->set_var('site_url', $_CONF['site_url']); $T->set_var('site_admin_url', $_CONF['site_admin_url']); $T->parse('output', 'admin'); $retval .= $T->finish($T->get_var('output')); return $retval; }
/** * Returns true if the database server version matches the criteria and the required * file is available in the plugin, false otherwise. * * @param $db string The name of the dbms to check for * @param $pi_name string The short name of the plugin for which to check support * @param $version string A version to ask for, the default operator is '>=' * @param $operator string Optional operator to override the default * See COM_versionCompare() for all valid operators * @return bool * * @since Geeklog 1.8.0 * */ function PLG_checkAvailableDb($db, $pi_name, $version, $operator = '>=') { global $_CONF; // check if the plugin supports the dbms $dbFile = $_CONF['path'] . 'plugins/' . $pi_name . '/sql/' . strtolower($db) . '_install.php'; // if both requirements are satisfied, return true if (file_exists($dbFile) && COM_versionCompare(DB_getVersion(), $version, $operator)) { return true; } return false; }
function _checkVersion() { global $_CONF, $_USER, $_PLUGIN_INFO; // build XML request require_once $_CONF['path'] . 'lib/http/http.php'; $result = ''; $http = new http_class(); $http->timeout = 5; $http->data_timeout = 5; $http->debug = 0; $http->html_debug = 0; $http->user_agent = 'glFusion/' . GVERSION; $url = "http://www.glfusion.org/versions/index.php"; $error = $http->GetRequestArguments($url, $arguments); $arguments["RequestMethod"] = "POST"; $arguments["PostValues"] = array("v" => GVERSION . PATCHLEVEL, "p" => PHP_VERSION, "d" => urlencode(DB_getVersion())); if ($_CONF['send_site_data']) { $arguments["PostValues"]['s'] = $_CONF['site_url']; } $error = $http->Open($arguments); if ($error == "") { $error = $http->SendRequest($arguments); if ($error == "") { for (;;) { $error = $http->ReadReplyBody($body, 1000); if ($error != "" || strlen($body) == 0) { break; } $result = $result . $body; } } } if (!$result) { return array(-1, -1, array()); } // parse XML response $response = xml2array($result); if (isset($response['response'])) { if (isset($response['response']['glfusion'])) { $latest = $response['response']['glfusion']['version']; } else { $latest = 'unknown'; } if (isset($response['response']['glfusion']['date'])) { $releaseDate = $response['response']['glfusion']['date']; } else { $releaseDate = 'unknown'; } } // check glFusion CMS version $current = GVERSION . PATCHLEVEL; list($latestMajor, $latestMinor, $latestRev, $latestExtra) = explode('.', $latest . '....'); list($currentMajor, $currentMinor, $currentRev, $currentExtra) = explode('.', $current . '....'); $glFusionUpToDate = 0; if ($currentMajor >= $latestMajor) { if ($currentMajor > $latestMajor) { $glFusionUpToDate = 2; } else { if ($currentMinor >= $latestMinor) { if ($currentMinor > $latestMinor) { $glFusionUpToDate = 2; } else { if ($currentRev >= $latestRev) { if ($currentRev > $latestRev) { $glFusionUpToDate = 2; } else { if ($currentExtra != '' || $latestExtra != '') { if (strcmp($currentExtra, $latestExtra) == 0) { $glFusionUpToDate = 1; } } else { $glFusionUpToDate = 1; } } } } } } } // run through all our active plugins and see if any are out of date $pluginsUpToDate = 1; $done = 0; if (is_array($response['response']['plugin'])) { foreach ($_PLUGIN_INFO as $iPlugin => $iPluginVer) { $upToDate = 0; foreach ($response['response']['plugin'] as $plugin) { if (strcmp($plugin['name'], $iPlugin) == 0) { if (_upToDate($plugin['version'], $iPluginVer) == 0) { $pluginsUpToDate = 0; $done = 1; break; } } } if ($done) { break; } } } // build data if we need it... $pluginData = array(); $pluginData['glfusioncms']['plugin'] = 'glfusioncms'; $pluginData['glfusioncms']['installed_version'] = $current; $pluginData['glfusioncms']['display_name'] = ''; $pluginData['glfusioncms']['latest_version'] = $latest; $pluginData['glfusioncms']['release_date'] = $releaseDate; $pluginData['glfusioncms']['url'] = ''; if (is_array($response['response']['plugin'])) { foreach ($_PLUGIN_INFO as $iPlugin => $iPluginVer) { $upToDate = 0; $pluginData[$iPlugin]['plugin'] = $iPlugin; $pluginData[$iPlugin]['installed_version'] = $iPluginVer; $pluginData[$iPlugin]['display_name'] = $iPlugin; $pluginData[$iPlugin]['latest_version'] = 0; $pluginData[$iPlugin]['release_date'] = 0; $pluginData[$iPlugin]['url'] = ''; foreach ($response['response']['plugin'] as $plugin) { if (strcmp($plugin['name'], $iPlugin) == 0) { $pluginData[$iPlugin]['display_name'] = $plugin['displayname']; $pluginData[$iPlugin]['latest_version'] = $plugin['version']; $pluginData[$iPlugin]['release_date'] = $plugin['date']; if (isset($plugin['url'])) { $pluginData[$iPlugin]['url'] = $plugin['url']; } } } } } return array($glFusionUpToDate, $pluginsUpToDate, $pluginData); }
/** * Remove 4-6 byte UTF-8 characters, including emoji icons used on mobile phones * * @param string $text * @param string $replace * @return string */ public static function remove4byteUtf8Chars($text, $replace = '') { global $_CONF, $_DB_dbms; static $isRemove = null; if ($isRemove === null) { if (!isset($_CONF['remove_4byte_chars']) || $_CONF['remove_4byte_chars']) { $isRemove = true; } else { // in case $_CONF['remove_4byte_chars'] is set to false if (strcasecmp($_DB_dbms, 'mysql') === 0) { $isRemove = version_compare('5.5.3', DB_getVersion(), '>'); } else { $isRemove = false; } } } if ($isRemove) { $text = preg_replace('/[\\xf0-\\xfd][\\x80-\\xbf]{2}[\\x80-\\xbf]{1,3}/', $replace, $text); } return $text; }
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.6.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 = _bytes_to_mg($memory_limit); // / 1024) / 1024; $T->set_var('item', 'memory_limit'); // check for at least 48M $T->set_var('status', $memory_limit < 50331648 ? '<span class="notok">' . $memory_limit_print . '</span>' : '<span class="yes">' . $memory_limit_print . '</span>'); $T->set_var('recommended', '64M'); $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 = _bytes_to_mg($upload_limit); $T->set_var('item', 'upload_max_filesize'); // check for at least 8M $T->set_var('status', $upload_limit < 8388608 ? '<span class="notok">' . $upload_limit_print . '</span>' : '<span class="yes">' . $upload_limit_print . '</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 = _bytes_to_mg($post_limit); $T->set_var('status', $post_limit < 8388608 ? '<span class="notok">' . $post_limit_print . '</span>' : '<span class="yes">' . $post_limit_print . '</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++; $mysql_version = DB_getVersion(); $T->set_var('mysql', 'MySQL Version'); $T->set_var('mysql_version', $mysql_version); $T->set_var('rowclass', $classCounter % 2 + 1); $classCounter++; $T->set_block('page', 'libs', 'lib'); if (extension_loaded('mbstring')) { $T->set_var(array('item' => $LANG01['mbstring_library'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['mbstring_ok'])); } else { $T->set_var(array('item' => $LANG01['mbstring_library'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['mbstring_not_found'])); } $T->set_var('rowclass', $classCounter % 2 + 1); $T->parse('lib', 'libs', true); $classCounter++; if (extension_loaded('openssl')) { $T->set_var(array('item' => $LANG01['openssl_library'], 'status' => '<span class="yes">' . $LANG01['ok'] . '</span>', 'notes' => $LANG01['openssl_ok'])); } else { $T->set_var(array('item' => $LANG01['openssl_library'], 'status' => '<span class="notok">' . $LANG01['not_found'] . '</span>', 'notes' => $LANG01['openssl_not_found'])); } $T->set_var('rowclass', $classCounter % 2 + 1); $T->parse('lib', 'libs', true); $classCounter++; 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 = $LANG01['recheck']; $action = 'checkenvironment'; $T->set_var('error_message', $LANG01['correct_perms']); $recheck = '<button type="submit" name="submit" onclick="submitForm( checkenv, \'checkenvironment\' );">' . LB; $recheck .= $LANG01['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'], 'lang_extensions' => $LANG01['extensions'], 'lang_recheck' => $LANG01['recheck'], '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; }