function export_add_form($target, $default = false) { global $xtpl, $NAS_QUOTA_UNITS, $NAS_EXPORT_TYPES; $empty = array(0 => $_GET["for"] == "member" ? "--- new member ---" : "--- VPS owner ---"); $members = members_list(); $ds_help = _("Allowed chars: a-z A-Z 0-9 _ : . - /<br>" . "Must NOT start with '/'.<br>" . "Must NOT contain more '/' in row.<br>" . "Create child exports using '/'. They will share parent's quota."); if ($default) { $members = $empty + $members; $ds_help .= "<br>%member_id% - ID of newly created member"; if ($_GET["for"] == "vps") { $ds_help .= "<br>%veid% - ID of newly created VPS"; } } $xtpl->table_title(_("Add export")); $xtpl->form_create($target, 'post'); if ($_SESSION["is_admin"]) { $xtpl->form_add_select(_("Member") . ':', 'member', $members, $_POST["member"]); } $xtpl->form_add_select(_("Pool") . ':', 'root_id', nas_root_list_where($_SESSION["is_admin"] ? '' : "user_export = 1"), $_POST["root_id"]); if ($_SESSION["is_admin"]) { $xtpl->form_add_input(_("Dataset") . ':', 'text', '30', 'dataset', $_POST["dataset"], $ds_help); } $xtpl->form_add_input(_("Path") . ':', 'text', '30', 'path', $_POST["path"], $ds_help); $xtpl->table_td(_("Quota") . ':'); $xtpl->form_add_input_pure('text', '30', 'quota_val', $_POST["quota_val"] ? $_POST["quota_val"] : '0'); $xtpl->form_add_select_pure('quota_unit', $NAS_QUOTA_UNITS, $_POST["quota_unit"]); $xtpl->table_td(_("0 is none")); $xtpl->table_tr(); if ($_SESSION["is_admin"]) { $xtpl->form_add_checkbox(_("User editable") . ':', 'user_editable', '1', $_POST["user_editable"]); $xtpl->form_add_select(_("Type") . ':', 'type', $NAS_EXPORT_TYPES, $_POST["type"]); } $xtpl->form_out(_("Export")); }
$xtpl->title(_("Network-attached storage")); $export_add_target = '?page=nas&action=export_add_save'; $mount_export_add_target = '?page=nas&action=mount_export_add_save'; $mount_custom_add_target = '?page=nas&action=mount_custom_add_save'; $mount_edit_target = '?page=nas&action=mount_edit_save'; switch ($_GET["action"]) { case "export_add": export_add_form($export_add_target); $xtpl->sbar_add(_("Back"), '?page=nas'); break; case "export_add_save": if ($_POST["node"] && $_POST["path"]) { $ok = false; } $m = new member_load($_SESSION["is_admin"] ? $_POST["member"] : $_SESSION["member"]["m_id"]); foreach (nas_root_list_where($_SESSION["is_admin"] ? '' : "user_export = 1") as $r_id => $r) { if ($r_id == $_POST["root_id"]) { $ok = true; } } if (($path = is_ds_valid($_POST["path"])) === false) { $xtpl->perex(_("Path contains forbidden characters"), ''); export_add_form($export_add_target); } else { if ($_SESSION["is_admin"] && ($ds = is_ds_valid($_POST["dataset"])) === false) { $xtpl->perex(_("Dataset contains forbidden characters"), ''); export_add_form($export_add_target); } else { if ($ok && $m->exists) { nas_export_add($_SESSION["is_admin"] ? $_POST["member"] : $_SESSION["member"]["m_id"], $_POST["root_id"], $_SESSION["is_admin"] ? $ds : NULL, $path, $_POST["quota_val"] * (2 << $NAS_UNITS_TR[$_POST["quota_unit"]]), $_SESSION["is_admin"] ? $_POST["user_editable"] : -1, $_SESSION["is_admin"] ? $_POST["type"] : "data"); notify_user(_("Export created"), _("Export was created."));