/** * Checks if the module requirements are satisfied. Should a module require * other modules to be installed and active, then optionally makes them so * * @param array $reqs Requirements of a module from _getmoduleinfo() * @return bool If successful or not */ function module_check_requirements($reqs, $forceinject = false) { // Since we can inject here, we need to save off the module we're on global $mostrecentmodule; $oldmodule = $mostrecentmodule; $result = true; if (!is_array($reqs)) { return false; } // Check the requirements. reset($reqs); while (list($key, $val) = each($reqs)) { $info = explode("|", $val); if (!is_module_installed($key, $info[0])) { return false; } // This is actually cheap since we cache the result $status = module_status($key); // If it's not injected and we should force it, do so. if (!($status & MODULE_INJECTED) && $forceinject) { $result = $result && injectmodule($key); } } $mostrecentmodule = $oldmodule; return $result; }
// check if it's a semplice module if ($comment === 'semplicelabs') { // extract zip $zip->extractTo($modules_target_dir); } // close zip $zip->close(); } else { echo 'Module installation failed!'; } // delete zip unlink($module_zip); } else { echo "Please upload a valid module zip file!"; } } if ($mode === 'reload') { // update modules modules_to_json(); // list modules echo list_modules(false, false, false, false); } elseif ($mode === 'deactivate') { // active toggle module module_status($module_id, $module_status); // update modules modules_to_json(); // list modules echo list_modules(false, false, false, false); } ?>
} function module_edit_save($mid, $custom_title, $view, $inmenu, $mod_group) { global $prefix, $db; $mid = intval($mid); if ($view != 1) { $mod_group = 0; } $result = $db->sql_query("update " . $prefix . "_modules set custom_title='{$custom_title}', view='{$view}', inmenu='{$inmenu}', mod_group='{$mod_group}' where mid='{$mid}'"); Header("Location: admin.php?op=modules"); } switch ($op) { case "modules": modules(); break; case "module_status": module_status($mid, $active); break; case "module_edit": module_edit($mid); break; case "module_edit_save": module_edit_save($mid, $custom_title, $view, $inmenu, $mod_group); break; case "home_module": home_module($mid, $ok); break; } } else { echo "Access Denied"; }
function settings_run() { global $session; $op = httpget('op'); $category = stripslashes(rawurldecode(httpget('cat'))) ?: 'Account'; page_header("Settings - {$category}"); switch ($op) { case 'save': $accounts = db_prefix('accounts'); $post = httpallpost(); unset($post['showFormTabIndex']); foreach ($post as $key => $val) { $post[$key] = stripcslashes($val); } $post['oldvalues'] = json_decode($post['oldvalues'], true); foreach ($post['oldvalues'] as $key => $val) { $post['oldvalues'][$key] = stripslashes($val); } $post = modulehook('prefs-change', $post); if ($post['return'] != '') { $return = $post['return']; unset($post['return']); } //Fix template changes. if (md5(md5($post['oldpass'])) == $session['user']['password'] && $post['newpass'] != '') { require_once 'lib/systemmail.php'; $newPass = md5(md5($post['newpass'])); db_query("UPDATE {$accounts}\n SET password = '******'\n WHERE acctid = '{$session['user']['acctid']}'"); systemmail($session['user']['acctid'], 'Account Settings', "`@Your password was changed successfully!"); } unset($post['newpass']); unset($post['oldpass']); foreach ($post as $key => $val) { if ($key == 'bio' && $val != $post['oldvalues']['bio']) { $session['user']['bio'] = $val; } else { if (!is_array($val) && $val != $post['oldvalues'][$key]) { if (strpos($key, '__user') || strpos($key, '__check')) { $moduleKey = explode('__', $key); set_module_pref($moduleKey[1], $val, $moduleKey[0]); unset($moduleKey); } else { $session['user']['prefs'][$key] = $val; } } } } $prefs = @serialize($session['user']['prefs']); db_query("UPDATE {$accounts} SET prefs = '{$prefs}'\n WHERE acctid = '{$session['user']['acctid']}'"); redirect("runmodule.php?module=settings&cat={$return}&save=true"); addnav('Go back', 'runmodule.php?module=settings'); break; default: $modules = db_prefix('modules'); $userprefs = db_prefix('module_userprefs'); $rewrite = trim(get_module_setting('rewrite')); $rewrite = json_decode($rewrite, true); $languages = getsetting('serverlanguages', 'en, English'); $prefs = $session['user']['prefs']; $prefs['bio'] = $session['user']['bio']; $prefs['template'] = $_COOKIE['template'] ?: getsetting('defaultskin', 'jade.htm'); $prefs['email'] = $session['user']['emailaddress']; $prefsFormat = ['Account' => ['bio' => 'Short biography, textarea', 'newpass' => 'New password, password', 'oldpass' => 'If you are changing your password, type your old one, password', 'email' => 'Email, text'], 'Display' => ['template' => 'Skin, theme', 'language' => 'Which language do you prefer?, enum, ' . $languages, 'timestamp' => 'Show timestamps in commentary?, enum, 0, None, 1, Real Time, 2, Relative Time'], 'Game Behavior' => ['emailonmail' => 'Receive emails when you receive a mail?, bool', 'systemmail' => 'Receive emails for system messages?, bool', 'Be sure to check your email\'s spam folder and add our email as a trusted sender!, note', 'dirtyemail' => 'Allow profanity in mail?, bool', 'timeoffset' => sprintf_translate('Hours to offset time (currently %s)?, int', date($prefs['timeformat'], strtotime('now') + $prefs['timeoffset'] * 3600)), 'ihavenocheer' => 'Disable holiday text?, bool', 'nojump' => 'Disable jumping to the commentary when posting or refreshing?, bool']]; if (count(explode(',', $languages)) < 3) { unset($prefs['Display']['language']); } $prefsFormat = modulehook('prefs-format', $prefsFormat); $prefsTemp = []; $modulesFound = []; $sql = db_query("SELECT modulename, formalname FROM {$modules}\n WHERE infokeys LIKE '%|prefs|%'\n AND active = 1\n ORDER BY modulename"); while ($row = db_fetch_assoc($sql)) { $formal = $row['formalname']; $modulesFound[$row['modulename']] = true; if (module_status($row['modulename']) == MODULE_FILE_NOT_PRESENT) { foreach ($rewrite as $key => $moduleName) { if ($moduleName == $formal || strpos($key, $row['modulename']) !== false) { unset($rewrite[$key]); } } set_module_setting('rewrite', json_encode($rewrite)); } else { $prefsTemp[$formal] = get_module_info($row['modulename'])['prefs']; } unset($prefsTemp[$formal][0]); foreach ($prefsTemp[$formal] as $setting => $description) { $description = explode('|', $description)[0]; if (strpos($setting, 'user_') === false) { unset($prefsTemp[$formal][$setting]); } else { $structuredKey = "{$row['modulename']}__{$setting}"; if ($rewrite[$structuredKey] != $formal) { $prefsTemp[$rewrite[$structuredKey]][$structuredKey] = $description; } else { $prefsTemp[$formal][$structuredKey] = $description; } unset($prefsTemp[$formal][$setting]); } } if (count($prefsTemp[$formal]) == 0) { unset($prefsTemp[$formal]); unset($modulesFound[$row['modulename']]); } } foreach ($modulesFound as $name => $true) { $sql = db_query("SELECT modulename, setting, value FROM {$userprefs}\n WHERE modulename = '{$name}'\n AND (setting LIKE 'user_%' OR setting LIKE 'check_%')\n AND userid = '{$session['user']['acctid']}'\n "); while ($row = db_fetch_assoc($sql)) { $prefs["{$row['modulename']}__{$row['setting']}"] = $row['value']; } } $prefsFormat = array_merge_recursive($prefsFormat, $prefsTemp); $prefsFormat = modulehook('prefs-format', $prefsFormat); require_once 'lib/villagenav.php'; villagenav(); addnav('Refresh', 'runmodule.php?module=settings'); addnav('Categories'); foreach (array_keys($prefsFormat) as $int => $name) { addnav($name, "runmodule.php?module=settings&cat=" . rawurlencode($name)); } output("`c`b`i`Q{$category} Settings`b`i`c"); if (httpget('save')) { output("`@`iYour Settings have been saved!`i`n"); } rawoutput("<form action='runmodule.php?module=settings&op=save' method = 'POST'>"); require_once 'lib/showform.php'; showform($prefsFormat[$category], $prefs); rawoutput(sprintf("<input type='hidden' name='oldvalues' value='%s' />", json_encode($prefs))); rawoutput("<input type='hidden' name='return' value='{$category}' />"); rawoutput("</form>"); rawoutput("<script type='text/javascript'>\n document.getElementsByName('template')[0].onchange = function () {\n var index = this.selectedIndex;\n var selection = this.children[index].value;\n document.cookie = 'template=' + selection + ';expires=86400';\n }\n\n </script>"); addnav('', 'runmodule.php?module=settings&op=save'); break; } page_footer(); }