관리-도구
편집 파일: spageedit.php
<form method="post" action=""> <table> <?php require_once dirname(__FILE__).'/accesscheck.php'; # configure subscribe page $subselect = ''; $access = accessLevel("spage"); switch ($access) { case "owner": $subselect = " where owner = ".$_SESSION["logindetails"]["id"];break; case "all": $subselect = "";break; case "none": default: $subselect = " where id = 0";break; } if (isset($_GET['id'])) { $id = sprintf('%d',$_GET['id']); } else { $id = 0; } if (isset($_POST["save"]) || isset($_POST["activate"]) || isset($_POST["deactivate"])) { $owner = $_POST["owner"]; $title = removeXss($_POST['title']); if (!$owner) $owner = $_SESSION['logindetails']['id']; if ($id) { Sql_Query(sprintf('update %s set title = "%s",owner = %d where id = %d', $tables["subscribepage"],$title,$owner,$id)); } else { Sql_Query(sprintf('insert into %s (title,owner) values("%s",%d)', $tables["subscribepage"],$title,$owner)); $id = Sql_Insert_id(); } Sql_Query(sprintf('delete from %s where id = %d',$tables["subscribepage_data"],$id)); foreach (array("title","language_file","intro","header","footer","thankyoupage","button","htmlchoice","emaildoubleentry") as $item) { Sql_Query(sprintf('insert into %s (name,id,data) values("%s",%d,"%s")', $tables["subscribepage_data"],$item,$id,$_POST[$item])); } foreach (array("subscribesubject","subscribemessage","confirmationsubject","confirmationmessage") as $item) { SaveConfig("$item:$id",stripslashes($_POST[$item]),0); } ## rewrite attributes Sql_Query(sprintf('delete from %s where id = %d and name like "attribute___"', $tables["subscribepage_data"],$id)); $attributes = ""; if (isset($_POST['attr_use']) && is_array($_POST['attr_use'])) { $cnt=0; while (list($att,$val) = each ($_POST['attr_use'])) { $default = $attr_default[$att]; $order = $attr_listorder[$att]; $required = $attr_required[$att]; Sql_Query(sprintf('insert into %s (id,name,data) values(%d,"attribute%03d","%s")', $tables["subscribepage_data"],$id,$att, $att.'###'.$default.'###'.$order.'###'.$required)); $cnt++; $attributes .= $att.'+'; } } Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"attributes","%s")', $tables["subscribepage_data"],$id,$attributes)); if (isset($_POST['list']) && is_array($_POST['list'])) { Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"lists","%s")', $tables["subscribepage_data"],$id,join(',',$_POST['list']))); } if (ENABLE_RSS) { Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"rssintro","%s")', $tables["subscribepage_data"],$id,$rssintro)); Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"rss","%s")', $tables["subscribepage_data"],$id,join(',',$rss))); Sql_Query(sprintf('replace into %s (id,name,data) values(%d,"rssdefault","%s")', $tables["subscribepage_data"],$id,$rssdefault)); } if (!empty($_POST['activate'])) { Sql_Query(sprintf('update %s set active = 1 where id = %d', $tables["subscribepage"],$id)); Redirect("spage"); exit; } elseif (!empty($_POST['deactivate'])) { Sql_Query(sprintf('update %s set active = 0 where id = %d', $tables["subscribepage"],$id)); Redirect("spage"); exit; } } ob_end_flush(); ## initialise values from defaults $data = array(); $data["title"] = $GLOBALS['I18N']->get('Title of this set of lists'); $data["button"] = $strSubmit; $data["intro"] = $strSubscribeInfo; $data['language_file'] = '';#$GLOBALS['language_module']; $data["header"] = getConfig("pageheader"); $data["footer"] = getConfig("pagefooter"); $data["thankyoupage"] = '<h3>'.$GLOBALS["strThanks"].'</h3>'."\n". $GLOBALS["strEmailConfirmation"]; $data["subscribemessage"] = getConfig("subscribemessage"); $data["subscribesubject"] = getConfig("subscribesubject"); $data["confirmationmessage"] = getConfig("confirmationmessage"); $data["confirmationsubject"] = getConfig("confirmationsubject"); $data["htmlchoice"] = "checkforhtml"; $data["emaildoubleentry"] = "yes"; $data["rssdefault"] = "daily"; $data["rssintro"] = $GLOBALS['I18N']->get('Please indicate how often you want to receive messages'); $rss = array_keys($rssfrequencies); $selected_lists = array(); $attributedata = array(); if ($id) { ## Fill values from database $req = Sql_Query(sprintf('select * from %s where id = %d',$tables["subscribepage_data"],$id)); while ($row = Sql_Fetch_Array($req)) { $data[$row["name"]] = $row["data"]; } $ownerreq = Sql_Fetch_Row_Query(sprintf('select owner from %s where id = %d',$GLOBALS['tables']['subscribepage'],$id)); $data['owner'] = $ownerreq[0]; $attributes = explode('+',$data["attributes"]); if (isset($data['rss'])) { $rss = explode(",",$data["rss"]); } else { $rss = array(); } foreach ($attributes as $attribute) { if (!empty($data[sprintf('attribute%03d',$attribute)])) { list($attributedata[$attribute]["id"], $attributedata[$attribute]["default_value"], $attributedata[$attribute]["listorder"], $attributedata[$attribute]["required"]) = explode('###',$data[sprintf('attribute%03d',$attribute)]); } } if (isset($data['lists'])) { $selected_lists = explode(',',$data["lists"]); } else { $selected_lists = array(); } printf('<input type=hidden name="id" value="%d">',$id); $data["subscribemessage"] = getConfig("subscribemessage:$id"); $data["subscribesubject"] = getConfig("subscribesubject:$id"); $data["confirmationmessage"] = getConfig("confirmationmessage:$id"); $data["confirmationsubject"] = getConfig("confirmationsubject:$id"); } print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('General Information').'</h1></td></tr>'; printf('<tr><td valign=top>%s</td><td><input type=text name=title value="%s" size=60></td></tr>', $GLOBALS['I18N']->get('Title'), htmlspecialchars(stripslashes($data["title"]))); $language_file = $GLOBALS['language_module']; if (is_dir(dirname(__FILE__).'/../texts')) { $language_files = array(); $landir = dir(dirname(__FILE__).'/../texts'); while (false !== ($direntry = $landir->read())) { if (is_file($landir->path.'/'.$direntry) && preg_match('/\.inc$/i',$direntry)) { $language_files[$direntry] = basename($direntry,'.inc'); } } $landir->close(); } asort($language_files); $language_select = '<select name="language_file">'; $language_select .= '<option value="">--'.$GLOBALS['I18N']->get('default').'</option>'; foreach ($language_files as $key => $val) { $language_select .= sprintf('<option value="%s" %s>%s</option>',$key,$key == $data['language_file']? 'selected="selected"':'',$val); } $language_select .= '</select>'; printf('<tr><td valign=top>%s</td><td>%s</td></tr>', $GLOBALS['I18N']->get('Language file to use'),$language_select); printf('<tr><td valign=top>%s</td><td><textarea name=intro cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Intro'), htmlspecialchars(stripslashes($data["intro"]))); printf('<tr><td valign=top>%s</td><td><textarea name=header cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Header'), htmlspecialchars(stripslashes($data["header"]))); printf('<tr><td valign=top>%s</td><td><textarea name=footer cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Footer'), htmlspecialchars(stripslashes($data["footer"]))); printf('<tr><td valign=top>%s</td><td><textarea name=thankyoupage cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Thank you page'), htmlspecialchars(stripslashes($data["thankyoupage"]))); printf('<tr><td valign=top>%s</td><td><input type=text name=button value="%s" size=60></td></tr>', $GLOBALS['I18N']->get('Text for Button'), htmlspecialchars($data["button"])); printf('<tr><td valign=top>%s</td><td>', $GLOBALS['I18N']->get('HTML Email choice')); printf ('<input type=radio name="htmlchoice" value="textonly" %s> %s <br/>', $data["htmlchoice"] == "textonly"?"checked":"", $GLOBALS['I18N']->get('Don\'t offer choice, default to <b>text</b>')); printf ('<input type=radio name="htmlchoice" value="htmlonly" %s> %s <br/>', $data["htmlchoice"] == "htmlonly"?"checked":"", $GLOBALS['I18N']->get('Don\'t offer choice, default to <b>HTML</b>')); printf ('<input type=radio name="htmlchoice" value="checkfortext" %s> %s <br/>', $data["htmlchoice"] == "checkfortext"?"checked":"", $GLOBALS['I18N']->get('Offer checkbox for text')); printf ('<input type=radio name="htmlchoice" value="checkforhtml" %s> %s <br/>', $data["htmlchoice"] == "checkforhtml"?"checked":"", $GLOBALS['I18N']->get('Offer checkbox for HTML')); printf ('<input type=radio name="htmlchoice" value="radiotext" %s> %s <br/>', $data["htmlchoice"] == "radiotext"?"checked":"", $GLOBALS['I18N']->get('Radio buttons, default to text')); printf ('<input type=radio name="htmlchoice" value="radiohtml" %s> %s <br/>', $data["htmlchoice"] == "radiohtml"?"checked":"", $GLOBALS['I18N']->get('Radio buttons, default to HTML')); print "</td></tr>"; printf('<tr><td valign=top>'.$GLOBALS['I18N']->get('Display Email confirmation').'</td><td>'); printf ('<input type=radio name="emaildoubleentry" value="yes" %s>%s<br/>', $data["emaildoubleentry"]=="yes"?"checked":"", $GLOBALS['I18N']->get('Display email confirmation')); printf ('<input type=radio name="emaildoubleentry" value="no" %s>%s<br/>', $data["emaildoubleentry"]=="no"?"checked":"", $GLOBALS['I18N']->get('Don\'t display email confirmation')); print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('Message they receive when they subscribe').'</h1></td></tr>'; printf('<tr><td valign=top>%s</td><td><input type=text name=subscribesubject value="%s" size=60></td></tr>', $GLOBALS['I18N']->get('Subject'), htmlspecialchars(stripslashes($data["subscribesubject"]))); printf('<tr><td valign=top>%s</td><td><textarea name=subscribemessage cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Message'), htmlspecialchars(stripslashes($data["subscribemessage"]))); print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('Message they receive when they confirm their subscription').'</h1></td></tr>'; printf('<tr><td valign=top>%s</td><td><input type=text name=confirmationsubject value="%s" size=60></td></tr>', $GLOBALS['I18N']->get('Subject'), htmlspecialchars(stripslashes($data["confirmationsubject"]))); printf('<tr><td valign=top>%s</td><td><textarea name=confirmationmessage cols=60 rows=10 wrap=virtual>%s</textarea></td></tr>', $GLOBALS['I18N']->get('Message'), htmlspecialchars(stripslashes($data["confirmationmessage"]))); print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('Select the attributes to use').'</h1></td></tr><tr><td colspan=2>'; $req = Sql_Query(sprintf('select * from %s order by listorder', $tables["attribute"])); $checked = array(); while ($row = Sql_Fetch_Array($req)) { if (isset($attributedata[$row["id"]]) && is_array($attributedata[$row["id"]])) { $checked[$row["id"]] = "checked"; $bgcol = '#F7E7C2'; $value = $attributedata[$row["id"]]; } else { $checked[$row["id"]] = ''; $value = $row; $bgcol = '#ffffff'; } ?> <table border=1 width=100% bgcolor="<?php echo $bgcol?>"> <tr><td colspan=2 width=150><?php echo $GLOBALS['I18N']->get('Attribute')?>:<?php echo $row["id"] ?></td> <td colspan=2><?php echo $GLOBALS['I18N']->get('Check this box to use this attribute in the page')?> <input type="checkbox" name="attr_use[<?php echo $row["id"] ?>]" value="1" <?php echo $checked[$row["id"]]?>></td></tr> <tr><td colspan=2><?php echo $GLOBALS['I18N']->get('Name')?>: </td><td colspan=2><h2><?php echo htmlspecialchars(stripslashes($row["name"])) ?></h2></td></tr> <tr><td colspan=2><?php echo $GLOBALS['I18N']->get('Type')?>: </td><td colspan=2><h2><?php echo $GLOBALS['I18N']->get($row["type"])?></h2></td></tr> <tr><td colspan=2><?php echo $GLOBALS['I18N']->get('Default Value')?>: </td><td colspan=2><input type=text name="attr_default[<?php echo $row["id"]?>]" value="<?php echo htmlspecialchars(stripslashes($value["default_value"])) ?>" size=40></td></tr> <tr><td><?php echo $GLOBALS['I18N']->get('Order of Listing')?>: </td><td><input type=text name="attr_listorder[<?php echo $row["id"]?>]" value="<?php echo $value["listorder"] ?>" size=5></td> <td><?php echo $GLOBALS['I18N']->get('Is this attribute required?')?>: </td><td><input type=checkbox name="attr_required[<?php echo $row["id"]?>]" value="1" <?php echo $value["required"] ? "checked": "" ?>></td></tr> </table><hr> <?php } print '</td></tr>'; if (ENABLE_RSS) { print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('RSS settings').'</h1></td></tr>'; printf('<tr><td valign=top>'.$GLOBALS['I18N']->get('Intro Text').'</td><td> <textarea name=rssintro rows=3 cols=60>%s</textarea></td></tr>', htmlspecialchars(stripslashes($data["rssintro"]))); foreach ($rssfrequencies as $key => $val) { printf('<tr><td colspan=2><input type=checkbox name="rss[]" value="%s" %s> %s %s (%s <input type=radio name="rssdefault" value="%s" %s>) </td></tr>', $key,in_array($key,$rss)?"checked":"", $GLOBALS['I18N']->get('Offer option to receive'), $GLOBALS['I18N']->get($val), $GLOBALS['I18N']->get('default'), $key,$data["rssdefault"] == $key ? "checked":"" ); } print "<tr><td colspan=2><hr></td></tr>"; } print '<tr><td colspan=2><h1>'.$GLOBALS['I18N']->get('Select the lists to offer').'</h1></td></tr>'; $req = Sql_query("SELECT * FROM {$tables["list"]} $subselect order by listorder"); if (!Sql_Affected_Rows()) print '<tr><td colspan=2>'.$GLOBALS['I18N']->get('No lists available, please create one first').'</td></tr>'; while ($row = Sql_Fetch_Array($req)) { printf ('<tr><td valign=top width=150><input type=checkbox name="list[%d]" value="%d" %s> %s</td><td>%s</td></tr>', $row["id"],$row["id"],in_array($row["id"],$selected_lists)?"checked":"",stripslashes($row["name"]),stripslashes($row["description"])); } print '</table>'; if ($GLOBALS["require_login"] && (isSuperUser() || accessLevel("spageedit") == "all")) { print '<br/>'.$GLOBALS['I18N']->get('Owner').': <select name="owner">'; $admins = $GLOBALS["admin_auth"]->listAdmins(); foreach ($admins as $adminid => $adminname) { printf ('<option value="%d" %s>%s</option>',$adminid,$adminid == $data['owner']? 'selected':'',$adminname); } print '</select>'; } print ' <br/><input type="submit" name="save" value="'.$GLOBALS['I18N']->get('Save Changes').'"> <input type="submit" name="activate" value="'.$GLOBALS['I18N']->get('Save and Activate').'"> <input type="submit" name="deactivate" value="'.$GLOBALS['I18N']->get('Save and Deactivate').'"> </form>'; ?>