$xml = e107::getXml(); $source_file = $edit_upload_list ? e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES : e_ADMIN . e_READ_FILETYPES; $temp_vars = $xml->loadXMLfile($source_file, true, false); if ($temp_vars === FALSE) { echo "Error parsing XML file!"; } else { foreach ($temp_vars['class'] as $v1) { $v = $v1['@attributes']; $current_perms[$v['name']] = array('type' => $v['type'], 'maxupload' => $v['maxupload']); } } } elseif (is_readable(e_ADMIN . 'filetypes.php')) { $source_file = 'filetypes.php'; $current_perms[e_UC_MEMBER] = array('type' => implode(',', array_keys(get_allowed_filetypes('filetypes.php', ''))), 'maxupload' => '2M'); if (is_readable(e_ADMIN . 'admin_filetypes.php')) { $current_perms[e_UC_ADMIN] = array('type' => implode(',', array_keys(get_allowed_filetypes('admin_filetypes.php', ''))), 'maxupload' => '2M'); $source_file .= ' + admin_filetypes.php'; } } else { // Set a default $current_perms[e_UC_MEMBER] = array('type' => 'zip,tar,gz,jpg,png', 'maxupload' => '2M'); } $text = "<div style='text-align:center'>\n\t<form method='post' action='" . e_SELF . "?filetypes'>\n\t<table style='" . ADMIN_WIDTH . "' class='fborder'>\n\t\t<colgroup>\n\t\t<col style='width:30%' />\n\t\t<col style='width:40%' />\n\t\t<col style='width:25%' />\n\t\t<col style='width:5%' />\n\t\t</colgroup>\n\t <tr>\n\t\t<td class='forumheader3' colspan='4'><input type='hidden' name='upload_do_edit' value='1'>" . str_replace(array('--SOURCE--', '--DEST--'), array(e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES, e_ADMIN . e_READ_FILETYPES), UPLLAN_52) . "</td>\n\t </tr>\n\t <tr>\n\t\t<td class='forumheader3' colspan='4'>" . UPLLAN_57 . $source_file . "</td>\n\t </tr>\n\t <tr>\n\t\t<td class='fcaption'>" . LAN_USERCLASS . "</td>\n\t\t<td class='fcaption'>" . UPLLAN_54 . "</td>\n\t\t<td class='fcaption' style='text-align:center'>" . UPLLAN_55 . "</td>\n\t\t<td class='fcaption' style='text-align:center'>" . LAN_DELETE . "</td>\n\t </tr>"; foreach ($current_perms as $uclass => $uinfo) { $text .= "\n\t\t<tr>\n\t\t <td class='forumheader3'><select name='file_class_select[]' class='tbox'>\n\t\t " . $e_userclass->vetted_tree('file_class_select', array($e_userclass, 'select'), $uclass, 'member,main,classes,admin, no-excludes') . "\n\t\t </select></td>\n\t\t <td class='forumheader3'><input type='text' name='file_type_list[]' value='{$uinfo['type']}' class='tbox' size='40' /></td>\n\t\t <td class='forumheader3' style='text-align:center'><input type='text' name='file_maxupload[]' value='{$uinfo['maxupload']}' class='tbox' size='10' /></td>\n\t\t <td class='forumheader3'><input type='checkbox' value='1' name='file_line_delete_{$uclass}' /></td>\n\t\t</tr>"; } // Now put up a box to add a new setting $text .= "\n\t <tr>\n\t\t <td class='forumheader3'><select name='file_class_select[]' class='tbox'>\n\t\t " . $e_userclass->vetted_tree('file_class_select', array($e_userclass, 'select'), '', 'member,main,classes,admin,blank, no-excludes') . "\n\t\t </select></td>\n\t\t <td class='forumheader3'><input type='text' name='file_type_list[]' value='' class='tbox' size='40' /></td>\n\t\t <td class='forumheader3' style='text-align:center'><input type='text' name='file_maxupload[]' value='" . ini_get('upload_max_filesize') . "' class='tbox' size='10' /></td>\n\t\t <td class='forumheader3'> </td>\n\t </tr>"; $text .= "\n\t <tr>\n\t\t<td class='forumheader3' style='text-align:center' colspan='4'>\n\t\t\t\t<input class='btn button' type='submit' name='generate_filetypes_xml' value='" . UPLLAN_56 . "' />\n\t\t</td>\n\t </tr>\n\t</table></form>\n\t</div>"; $ns->tablerender(LAN_FILETYPES, $text); break;
/** * */ function show_upload_filetypes() { $ns = e107::getRender(); $e_userclass = e107::getUserClass(); if (!getperms("0")) { exit; } //TODO still needed? $definition_source = DOWLAN_71; $source_file = ''; $edit_upload_list = varset($_POST['upload_do_edit'], false); if (isset($_POST['generate_filetypes_xml'])) { // Write back edited data to filetypes_.xml $file_text = "<e107Filetypes>\n"; foreach ($_POST['file_class_select'] as $k => $c) { if (!isset($_POST['file_line_delete_' . $c]) && vartrue($_POST['file_type_list'][$k])) { $file_text .= " <class name='{$c}' type='{$_POST['file_type_list'][$k]}' maxupload='" . vartrue($_POST['file_maxupload'][$k], ini_get('upload_max_filesize')) . "'/>\n"; } } $file_text .= "</e107Filetypes>"; if (($handle = fopen(e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES, 'wt')) == FALSE || fwrite($handle, $file_text) == FALSE || fclose($handle) == FALSE) { $text = DOWLAN_88 . e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES; } else { $text = DOWLAN_86 . e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES . '<br/>' . DOWLAN_87 . e_ADMIN . e_READ_FILETYPES . '<br/>'; } $ns->tablerender(DOWLAN_49, $text); } $current_perms = array(); if ($edit_upload_list && is_readable(e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES) || !$edit_upload_list && is_readable(e_ADMIN . e_READ_FILETYPES)) { require_once e_HANDLER . 'xml_class.php'; $xml = new xmlClass(); $xml->setOptArrayTags('class'); $source_file = $edit_upload_list ? e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES : e_ADMIN . e_READ_FILETYPES; $temp_vars = $xml->loadXMLfile($source_file, true, false); if ($temp_vars === FALSE) { echo "Error parsing XML file!"; } else { foreach ($temp_vars['class'] as $v1) { $v = $v1['@attributes']; $current_perms[$v['name']] = array('type' => $v['type'], 'maxupload' => $v['maxupload']); } } } elseif (is_readable(e_ADMIN . 'filetypes.php')) { $source_file = 'filetypes.php'; $current_perms[e_UC_MEMBER] = array('type' => implode(',', array_keys(get_allowed_filetypes('filetypes.php', ''))), 'maxupload' => '2M'); if (is_readable(e_ADMIN . 'admin_filetypes.php')) { $current_perms[e_UC_ADMIN] = array('type' => implode(',', array_keys(get_allowed_filetypes('admin_filetypes.php', ''))), 'maxupload' => '2M'); $source_file .= ' + admin_filetypes.php'; } } else { // Set a default $current_perms[e_UC_MEMBER] = array('type' => 'zip,tar,gz,jpg,png', 'maxupload' => '2M'); } $frm = new e_form(true); //enable inner tabindex counter $columnInfo = array("ftypes_userclass" => array("title" => DOWLAN_73, "type" => "", "width" => "auto", "thclass" => "", "forced" => true), "ftypes_extension" => array("title" => DOWLAN_74, "type" => "", "width" => "auto", "thclass" => ""), "ftypes_max_size" => array("title" => DOWLAN_75, "type" => "", "width" => "auto", "thclass" => ""), "ftypes_confirm_del" => array("title" => DOWLAN_76, "type" => "", "width" => "auto", "thclass" => "last")); $filterColumns = array("ftypes_userclass", "ftypes_extension", "ftypes_max_size", "ftypes_confirm_del"); $text = "\n <form method='post' action='" . e_SELF . "?filetypes'>\n <fieldset id='core-download-upload1'>\n <div>\n <div>\n <input type='hidden' name='upload_do_edit' value='1'/><p>" . str_replace(array('--SOURCE--', '--DEST--'), array(e_UPLOAD_TEMP_DIR . e_SAVE_FILETYPES, e_ADMIN . e_READ_FILETYPES), DOWLAN_85) . "</p><p>" . DOWLAN_72 . $source_file . "\n </p></div>\n <table class='table adminform'>" . $frm->colGroup($columnInfo) . $frm->thead($columnInfo, $filterColumns) . "\n <tbody>\n "; foreach ($current_perms as $uclass => $uinfo) { $text .= "\n <tr>\n <td>\n <select name='file_class_select[]' class='tbox'>\n " . $e_userclass->vetted_tree('file_class_select', array($e_userclass, 'select'), $uclass, 'member,main,classes,admin, no-excludes') . "\n </select>\n </td>\n <td><input type='text' name='file_type_list[]' value='{$uinfo['type']}' class='tbox' size='40'/></td>\n <td><input type='text' name='file_maxupload[]' value='{$uinfo['maxupload']}' class='tbox' size='10'/></td>\n <td><input type='checkbox' value='1' name='file_line_delete_{$uclass}'/></td>\n </tr>\n "; } // Now put up a box to add a new setting $text .= "\n <tr>\n <td colspan='" . count($columnInfo) . "'>" . DOWLAN_90 . "</td>\n </tr>\n <tr>\n <td><select name='file_class_select[]' class='tbox'>\n " . $e_userclass->vetted_tree('file_class_select', array($e_userclass, 'select'), '', 'member,main,classes,admin,blank, no-excludes') . "\n </select></td>\n <td><input type='text' name='file_type_list[]' value='' class='tbox' size='40'/></td>\n <td colspan='2'><input type='text' name='file_maxupload[]' value='" . ini_get('upload_max_filesize') . "' class='tbox' size='10'/></td>\n </tr>\n </tbody>\n </table>\n </div>\n </fieldset>\n <div class='buttons-bar center'>\n <input class='btn btn-default button' type='submit' name='generate_filetypes_xml' value='" . DOWLAN_77 . "'/>\n </div>\n \t\t</form>\n "; $ns->tablerender(DOWLAN_23, $text); }
/** * Get an array of permitted filetypes according to a set hierarchy. * If a specific file name given, that's used. Otherwise the default hierarchy is used * * @param string $file_mask - comma-separated list of allowed file types * @param string $filename - optional override file name - defaults ignored * * @return array of filetypes */ function get_filetypes($file_mask = FALSE, $filename = '') { if ($filename != '') { if (strtolower(substr($filename, -4) == '.xml')) { return get_XML_filetypes($filename, $file_mask); } return get_allowed_filetypes($filename, $file_mask); } if (is_readable(e_SYSTEM . e_READ_FILETYPES)) { return get_XML_filetypes(e_READ_FILETYPES, $file_mask); } if (ADMIN && is_readable(e_ADMIN . 'admin_filetypes.php')) { return get_allowed_filetypes('admin_filetypes.php', $file_mask); } if (is_readable(e_ADMIN . 'filetypes.php')) { return get_allowed_filetypes('filetypes.php', $file_mask); } return array(); // Just an empty array }