<?php
/***************************************************************************
* copyright            : (C) 2001-2003 Advanced Internet Designs Inc.
* email                : forum@prohost.org
* $Id: admmlist.php,v 1.1.1.1.8.1 2004/11/24 14:12:19 kazuyan Exp $
*
* This program is free software; you can redistribute it and/or modify it 
* under the terms of the GNU General Public License as published by the 
* Free Software Foundation; either version 2 of the License, or 
* (at your option) any later version.
***************************************************************************/

function format_regex(&$regex)
{
	if (empty($regex)) {
		return;
	}

	$s = strpos($regex, '/') + 1;
	$e = strrpos($regex, '/');

	$ret = substr($regex, $e + 1);
	$regex = substr($regex, $s, ($e - $s));

	return $ret;
}
	require('./GLOBALS.php'); fud_phpgw();
	fud_use('adm.inc', true);
	fud_use('widgets.inc', true);
	fud_use('mlist.inc', true);

	$tbl = $GLOBALS['DBHOST_TBL_PREFIX'];
	$edit = isset($_GET['edit']) ? (int)$_GET['edit'] : (isset($_POST['edit']) ? (int)$_POST['edit'] : '');

	if (isset($_POST['ml_forum_id'])) {
		$mlist = new fud_mlist;
		if ($edit) {
			$mlist->sync($edit);
			$edit = '';
		} else {
			$mlist->add();
		}
	} else if (isset($_GET['del'])) {
		fud_mlist::del((int)$_GET['del']);
	}

	if (isset($_GET['edit']) && $edit && ($o = db_sab('SELECT * FROM '.$tbl.'mlist WHERE id='.$edit))) {
		foreach ($o as $k => $v) {
			${'ml_' . $k} = $v;
		}
		$ml_subject_regex_haystack_opt = format_regex($ml_subject_regex_haystack);
		$ml_body_regex_haystack_opt = format_regex($ml_body_regex_haystack);
	} else {
		$tmp = new fud_mlist;
		$c = get_object_vars($tmp);
		foreach ($c as $k => $v) {
			${'ml_' . $k} = $v;
		}
		$ml_subject_regex_haystack_opt = $ml_body_regex_haystack_opt = '';
	}

	require($WWW_ROOT_DISK . 'adm/admpanel.php');

	if ($FUD_OPT_2 & 8388608) {
		echo '<font color="#ff0000" size="+3">'.lang('You MUST UNLOCK the forum\'s files before you can run the mailing list importing scripts.').'</font><p>';
	}
?>
<form method="post" name="frm_forum" action="admmlist.php">
<?php echo _hs; ?>
<table border="0" cellspacing="1" cellpadding="3">
	<tr bgcolor="#bff8ff">
		<td><?php echo lang('Mailing List Email') ?>:<br><font size="-1"><?php echo lang('The email address of the mailing list.') ?></font></td>
		<td><input type="text" name="ml_name" value="<?php echo htmlspecialchars($ml_name); ?>" maxlength="255"></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Forum') ?>:<br>
			<font size="-1"><?php echo lang('Messages imported from the mailing list will be imported into this forum.') ?>
			<?php echo lang('It is <b>**highly recommeded**</b> that you setup a seperate forum for each mailing list.') ?></font>
		</td>
		<td><select name="ml_forum_id">
		<?php
			$c = uq('SELECT f.id, f.name
				FROM '.$tbl.'forum f
				INNER JOIN '.$tbl.'cat c ON f.cat_id=c.id
				LEFT JOIN '.$tbl.'nntp n ON f.id=n.forum_id
				LEFT JOIN '.$tbl.'mlist ml ON f.id=ml.forum_id
				WHERE n.id IS NULL AND (ml.id IS NULL OR ml.id='.(int)$edit.')
				ORDER BY c.view_order, f.view_order');
			while ($r = db_rowarr($c)) {
				echo '<option value="'.$r[0].'"'.($r[0] != $ml_forum_id ? '' : ' selected').'>'.$r[1].'</option>';
			}
		?>
		</select></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Moderate Mailing List Posts') ?>:<br>
			<font size="-1"><?php echo lang('Any posts from the mailing list would 1st need to be approved by moderator(s) before they are made visible on the forum.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_mlist_post_apr', "No\nYes", "0\n1", ($ml_mlist_opt & 1 ? 1 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Syncronize Forum Posts to Mailing List') ?>:<br>
			<font size="-1"><?php echo lang('If enabled, posts made by forum members inside the forum will be sent to the mailing list by the forum. On the mailing list the posts would appear on behalf of the user who has made the post.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_allow_frm_post', "No\nYes", "0\n2", ($ml_mlist_opt & 2 ? 2 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Moderate Forum Posts') ?>:<br>
			<font size="-1"><?php echo lang('If enabled, any posts made by forum members in the forum would need to be 1st approved by the moderator(s) before they are syncronized to the mailing list or appear in the forum.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_frm_post_apr', "No\nYes", "0\n4", ($ml_mlist_opt & 4 ? 4 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Allow Mailing List Attachments') ?>:<br>
			<font size="-1"><?php echo lang('If enabled, ANY file attachment attached to a message on the mailing list will be imported into the forum regardless of any limitations imposed on file attachments within the forum.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_allow_mlist_attch', "No\nYes", "0\n8", ($ml_mlist_opt & 8 ? 8 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Allow HTML in Mailing List Messages') ?>:<br>
			<font size="-1"><?php echo lang('If enabled, HTML contained within mailing list messages that are imported will not be stripped.') ?>
 			<b><?php echo lang('**not recommended**') ?></b></font>
		</td>
		<td><?php draw_select('ml_allow_mlist_html', "No\nYes", "0\n16", ($ml_mlist_opt & 16 ? 16 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Slow Reply Match') ?>:<br>
			<font size="-1"><?php echo lang('Certain mail client do sent send necessary headers needed to determine if a message is a reply to an existing message. If this option is enabled and normally avaliable reply headers are not there, the forum will try to determine if message is a reply by comparing the message\'s subject to subjects of existing messages in the forum.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_complex_reply_match', "No\nYes", "0\n32", ($ml_mlist_opt & 32 ? 32 : 0)); ?></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td>
			<?php echo lang('Create New Users') ?>:<br>
			<font size="-1"><?php echo lang('When importing messages from the mailing list, should a new user be created for every mailing list author, who cannot be matched against an existing forum user. If this option is set to \'No\', then all imported mailing list messages who\'s authors cannot be matched against existing forum members will be attributed to the anonymous user.') ?>
			</font>
		</td>
		<td><?php draw_select('ml_create_users', "Yes\nNo", "64\n0", ($ml_mlist_opt & 64 ? 64 : 0)); ?></td>
	</tr>

	<tr>
		<td colspan="2"><br></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td colspan="2"><font size="-1"><b><?php echo lang('Optional') ?></b> <?php echo lang('Subject Mangling') ?><br>
			<font size="-1"><?php echo lang('This field allows you to specify a regular expression, that will be applied to the subjects of messages imported from the mailing list. This is useful to remove automatically appended strings that are often used to identify mailing list messages. ex. [PHP]') ?>
			</font>
		</td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td><?php echo lang('Replace mask') ?>:</td>
		<td nowrap>/<input type="text" name="ml_subject_regex_haystack" value="<?php echo htmlspecialchars($ml_subject_regex_haystack); ?>">/<input type="text" name="ml_subject_regex_haystack_opt" size="3" value="<?php echo htmlspecialchars(stripslashes($ml_subject_regex_haystack_opt)); ?>"></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td><?php echo lang('Replace with') ?>:</td>
		<td><input type="text" name="ml_subject_regex_needle" value="<?php htmlspecialchars($ml_subject_regex_needle); ?>"></td>
	</tr>

	<tr>
		<td colspan="2"><br></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td colspan="2"><font size="-1"><b><?php echo lang('Optional') ?></b> <?php echo lang('Body Mangling') ?><br>
			<font size="-1"><?php echo lang('This field allows you to specify a regular expression, that will be applied to the bodies of messages imported from the mailing list. It is recommended you use this option to remove the automatically prepended text added by the mailing list to the bottom of each message. This text often informs the user on how to unsubscribe from the list and is merely a waste of space in a forum enviroment.') ?>
			</font>
		</td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td><?php echo lang('Replace mask') ?>:</td>
		<td nowrap>/<input type="text" name="ml_body_regex_haystack" value="<?php echo htmlspecialchars($ml_body_regex_haystack); ?>">/<input type="text" name="ml_body_regex_haystack_opt" size="3" value="<?php echo htmlspecialchars(stripslashes($ml_body_regex_haystack_opt)); ?>"></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td><?php echo lang('Replace with') ?>:</td>
		<td><input type="text" name="ml_body_regex_needle" value="<?php echo htmlspecialchars($ml_body_regex_needle); ?>"></td>
	</tr>

	<tr>
		<td colspan="2"><br></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td colspan="2"><font size="-1"><b><?php echo lang('Optional') ?></b> <?php echo lang('Custom Headers') ?><br>
			<font size="-1"><?php echo lang('This field allows you to specify custom headers, that will be appended to any existing headers sent by the forum when posting a message to the mailing list. To avoid problem enter each header on a seperate line and do not place blank lines.') ?>
			</font>
		</td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td valign="top"><?php echo lang('Custom Headers') ?>:</td>
		<td nowrap><textarea nowrap cols="50" rows="5"><?php echo htmlspecialchars($ml_additional_headers); ?></textarea></td>
	</tr>

	<tr>
		<td colspan="2"><br></td>
	</tr>

	<tr bgcolor="#bff8ff">
		<td colspan="2" align="right">
			<?php if ($edit) { echo '<input type="submit" value="'.lang('Cancel').'" name="btn_cancel">&nbsp;'; } ?>
			<input type="submit" value="<?php echo ($edit ? lang('Update Mailing List Rule') : lang('Add Mailing List Rule')); ?>" name="ml_submit">
		</td>
	</tr>
</table>
<input type="hidden" name="edit" value="<?php echo $edit; ?>">
</form>
<br><br>
<table border="0" cellspacing="3" cellpadding="2" width="100%">
	<tr bgcolor="#e5ffe7">
		<td nowrap><?php echo lang('Mailing List Rule') ?></td>
		<td><?php echo lang('Forum') ?></td>
		<td><?php echo lang('Exec Line') ?></td>
		<td align="center"><?php echo lang('Action') ?></td>
	</tr>
<?php
	$c = uq('SELECT ml.id, ml.name, f.name FROM '.$tbl.'mlist ml INNER JOIN '.$tbl.'forum f ON f.id=ml.forum_id');
	$i = 1;
	while ($r = db_rowarr($c)) {
		if ($edit == $r[0]) {
			$bgcolor = ' bgcolor="#ffb5b5"';
		} else {
			$bgcolor = ($i++%2) ? ' bgcolor="#fffee5"' : '';
		}
		echo '<tr'.$bgcolor.'><td>'.htmlspecialchars($r[1]).'</td><td>'.$r[2].'</td>
		<td nowrap><font size="-1">'.$GLOBALS['DATA_DIR'].'scripts/maillist.php '.$r[0].'</font></td>
		<td>[<a href="admmlist.php?edit='.$r[0].'&'._rsidl.'">'.lang('Edit').'</a>] [<a href="admmlist.php?del='.$r[0].'&'._rsidl.'">'.lang('Delete').'</a>]</td></tr>';
	}
?>
</table>
<p>
<b><?php echo lang('***Notes***') ?></b><br>
<?php echo lang('Exec Line parameter in the table above shows the execution line that you will need to pipe the mailing list messages to.') ?><br>
<?php echo lang('Procmail example') ?>:
<pre>
:0:
* ^TO_.*php-general@lists.php.net
| /home/forum/F/test/maillist.php 1
</pre>
<?php require($WWW_ROOT_DISK . 'adm/admclose.php'); ?>
