246 Zeilen
10 KiB
PHP
246 Zeilen
10 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Project:
|
||
* Contenido Content Management System
|
||
*
|
||
* Description:
|
||
* Frontend user editor
|
||
*
|
||
* Requirements:
|
||
* @con_php_req 5.0
|
||
*
|
||
*
|
||
* @package Contenido Backend includes
|
||
* @version 1.1.7
|
||
* @author Bj<42>rn Behrens (HerrB)
|
||
* @copyright four for business AG <www.4fb.de>
|
||
* @license http://www.contenido.org/license/LIZENZ.txt
|
||
* @link http://www.4fb.de
|
||
* @link http://www.contenido.org
|
||
* @since file available since contenido release <= 4.6
|
||
*
|
||
* {@internal
|
||
* created 2007-01-01, Bj<42>rn Behrens (HerrB)
|
||
* modified 2008-06-27, Dominik Ziegler, add security fix
|
||
*
|
||
* $Id: include.recipients_edit.php 128 2019-07-03 11:58:28Z oldperl $:
|
||
* }}
|
||
*
|
||
*/
|
||
if (!defined('CON_FRAMEWORK')) {
|
||
die('Illegal call');
|
||
}
|
||
|
||
|
||
$oPage = new cPage;
|
||
$oRecipients = new RecipientCollection;
|
||
|
||
if (is_array($cfg['plugins']['recipients'])) {
|
||
foreach ($cfg['plugins']['recipients'] as $plugin) {
|
||
plugin_include("recipients", $plugin . "/" . $plugin . ".php");
|
||
}
|
||
}
|
||
|
||
// Note, that the object name has to be $recipient for plugins
|
||
if ($action == "recipients_create" && $perm->have_perm_area_action($area, $action)) {
|
||
$recipient = $oRecipients->create("mail@domain.tld", " " . i18n("-- new recipient --", "cl_newsletter"));
|
||
$oPage->setReload();
|
||
} elseif ($action == "recipients_delete" && $perm->have_perm_area_action($area, $action)) {
|
||
$oRecipients->delete($idrecipient);
|
||
$recipient = new Recipient;
|
||
$oPage->setReload();
|
||
} elseif ($action == "recipients_purge" && $perm->have_perm_area_action($area, "recipients_delete")) {
|
||
$oClient = new cApiClient($client);
|
||
$timeframe = $oClient->getProperty("newsletter", "purgetimeframe");
|
||
if (!$timeframe) {
|
||
$timeframe = 30;
|
||
}
|
||
$purgedrecipients = $oRecipients->purge($timeframe);
|
||
/* backslashdollar: There is a problem translating \$ - it is either not recognized or translated correctly (using poEdit) */
|
||
if ($purgedrecipients > 0) {
|
||
$sNotis = $notification->messageBox("info", sprintf(str_replace("backslashdollar", "\$", i18n("%1backslashdollard recipients, which hasn't been confirmed since more than %2backslashdollard days has been removed.", "cl_newsletter")), $purgedrecipients, $timeframe), 0);
|
||
} else {
|
||
$sNotis = $notification->messageBox("info", sprintf(str_replace("backslashdollar", "\$", i18n("There are no recipients, which hasn't been confirmed since more than %2backslashdollard days has been removed.", "cl_newsletter")), 0, $timeframe), 0);
|
||
}
|
||
|
||
$recipient = new Recipient;
|
||
$oPage->setReload();
|
||
} else {
|
||
$recipient = new Recipient($idrecipient);
|
||
}
|
||
|
||
if ($recipient->virgin == false && $recipient->get("idclient") == $client && $recipient->get("idlang") == $lang) {
|
||
if ($action == "recipients_save" && $perm->have_perm_area_action($area, $action)) {
|
||
$oPage->setReload();
|
||
$aMessages = array();
|
||
|
||
$name = stripslashes($name);
|
||
$email = stripslashes($email);
|
||
$confirmed = (int) $confirmed;
|
||
$deactivated = (int) $deactivated;
|
||
$newstype = (int) $newstype;
|
||
|
||
$recipient->set("name", $name);
|
||
|
||
if (!isValidMail($email)) {
|
||
$aMessages[] = i18n("Please specify a valid e-mail address", "cl_newsletter");
|
||
} else {
|
||
$email = strtolower($email); // e-mail always in lower case
|
||
if ($recipient->get("email") != $email) {
|
||
$oRecipients->resetQuery();
|
||
$oRecipients->setWhere("email", $email);
|
||
$oRecipients->setWhere("idclient", $client);
|
||
$oRecipients->setWhere("idlang", $lang);
|
||
$oRecipients->setWhere($recipient->primaryKey, $recipient->get($recipient->primaryKey), "!=");
|
||
$oRecipients->query();
|
||
|
||
if ($oRecipients->next()) {
|
||
$aMessages[] = i18n("Could not set new e-mail adress: Other recipient with same e-mail address already exists", "cl_newsletter");
|
||
} else {
|
||
$recipient->set("email", $email);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ($recipient->get("confirmed") != $confirmed && $confirmed) {
|
||
$recipient->set("confirmeddate", date("Y-m-d H:i:s"), false);
|
||
} elseif (!$confirmed) {
|
||
$recipient->set("confirmeddate", "0000-00-00 00:00:00", false);
|
||
}
|
||
$recipient->set("confirmed", $confirmed);
|
||
$recipient->set("deactivated", $deactivated);
|
||
$recipient->set("news_type", $newstype);
|
||
|
||
// Check out if there are any plugins
|
||
if (is_array($cfg['plugins']['recipients'])) {
|
||
foreach ($cfg['plugins']['recipients'] as $plugin) {
|
||
if (function_exists("recipients_" . $plugin . "_wantedVariables") && function_exists("recipients_" . $plugin . "_store")) {
|
||
$wantVariables = call_user_func("recipients_" . $plugin . "_wantedVariables");
|
||
|
||
if (is_array($wantVariables)) {
|
||
$varArray = array();
|
||
|
||
foreach ($wantVariables as $value) {
|
||
$varArray[$value] = stripslashes($GLOBALS[$value]);
|
||
}
|
||
}
|
||
$store = call_user_func("recipients_" . $plugin . "_store", $varArray);
|
||
}
|
||
}
|
||
}
|
||
|
||
$recipient->store();
|
||
|
||
// Remove group associations
|
||
if (isset($_REQUEST["ckbRemove"])) {
|
||
$oGroupMembers = new RecipientGroupMemberCollection;
|
||
|
||
foreach ($_REQUEST["ckbRemove"] as $iGroupMemberID) {
|
||
if (is_numeric($iGroupMemberID)) {
|
||
$oGroupMembers->delete($iGroupMemberID);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (count($aMessages) > 0) {
|
||
$sNotis = $notification->returnNotification("warning", implode("<br>", $aMessages)) . "<br>";
|
||
}
|
||
|
||
$oForm = new UI_Table_Form("properties");
|
||
$oForm->setVar("frame", $frame);
|
||
$oForm->setVar("area", $area);
|
||
$oForm->setVar("action", "recipients_save");
|
||
$oForm->setVar("idrecipient", $recipient->get("idnewsrcp"));
|
||
|
||
$oForm->addHeader(i18n("Edit recipient", "cl_newsletter"));
|
||
|
||
$oTxtName = new cHTMLTextbox("name", $recipient->get("name"), 40);
|
||
$oTxtEMail = new cHTMLTextbox("email", $recipient->get("email"), 40);
|
||
$oCkbConfirmed = new cHTMLCheckbox("confirmed", "1");
|
||
$oCkbConfirmed->setChecked($recipient->get("confirmed"));
|
||
$oCkbDeactivated = new cHTMLCheckbox("deactivated", "1");
|
||
$oCkbDeactivated->setChecked($recipient->get("deactivated"));
|
||
|
||
$oSelNewsType = new cHTMLSelectElement("newstype");
|
||
$oOption = new cHTMLOptionElement(i18n("Text only", "cl_newsletter"), "0");
|
||
$oSelNewsType->addOptionElement(0, $oOption);
|
||
$oOption = new cHTMLOptionElement(i18n("HTML and text", "cl_newsletter"), "1");
|
||
$oSelNewsType->addOptionElement(1, $oOption);
|
||
$oSelNewsType->setDefault($recipient->get("news_type"));
|
||
|
||
$oForm->add(i18n("Name", "cl_newsletter"), $oTxtName->render());
|
||
$oForm->add(i18n("E-Mail", "cl_newsletter"), $oTxtEMail->render());
|
||
$oForm->add(i18n("Confirmed", "cl_newsletter"), $oCkbConfirmed->toHTML(false) . " (" . $recipient->get("confirmeddate") . ")");
|
||
$oForm->add(i18n("Deactivated", "cl_newsletter"), $oCkbDeactivated->toHTML(false));
|
||
$oForm->add(i18n("Message type", "cl_newsletter"), $oSelNewsType->render());
|
||
|
||
$aPluginOrder = trim_array(explode(",", getSystemProperty("plugin", "recipients-pluginorder")));
|
||
|
||
// Check out if there are any plugins
|
||
if (is_array($aPluginOrder)) {
|
||
foreach ($aPluginOrder as $sPlugin) {
|
||
if (function_exists("recipients_" . $sPlugin . "_getTitle") &&
|
||
function_exists("recipients_" . $sPlugin . "_display")) {
|
||
$aPluginTitle = call_user_func("recipients_" . $sPlugin . "_getTitle");
|
||
$aPluginDisplay = call_user_func("recipients_" . $sPlugin . "_display", $recipient);
|
||
|
||
if (is_array($aPluginTitle) && is_array($aPluginDisplay)) {
|
||
foreach ($aPluginTitle as $sKey => $sValue) {
|
||
$oForm->add($sValue, $aPluginDisplay[$sKey]);
|
||
}
|
||
} else {
|
||
if (is_array($aPluginTitle) || is_array($aPluginDisplay)) {
|
||
$oForm->add(i18n("WARNING", "cl_newsletter"), sprintf(i18n("The plugin %s delivered an array for the displayed titles, but did not return an array for the contents.", "cl_newsletter"), $sPlugin));
|
||
} else {
|
||
$oForm->add($aPluginTitle, $aPluginDisplay);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$oGroupList = new UI_List;
|
||
$oGroupList->setWidth("100%");
|
||
$oGroupList->setBorder(1);
|
||
|
||
$oAssocGroups = new RecipientGroupMemberCollection;
|
||
$oAssocGroups->link("RecipientGroupCollection");
|
||
$oAssocGroups->setWhere("recipientgroupmembercollection.idnewsrcp", $recipient->get("idnewsrcp"));
|
||
$oAssocGroups->setOrder("recipientgroupcollection.groupname");
|
||
$oAssocGroups->query();
|
||
|
||
if ($oAssocGroups->count() == 0) {
|
||
$oGroupList->setCell(0, 1, i18n("Recipient is not member of any group", "cl_newsletter"));
|
||
} else {
|
||
// Headline
|
||
$oGroupList->setCell(0, 1, "<strong>" . i18n("Groupname", "cl_newsletter") . "</strong>");
|
||
$oImgDel = new cHTMLImage("images/delete.gif");
|
||
$oGroupList->setCell(0, 2, $oImgDel->render());
|
||
$oGroupList->setCellAlignment(0, 2, "right");
|
||
|
||
// Data
|
||
while ($oAssocGroup = $oAssocGroups->next()) {
|
||
$oGroup = $oAssocGroups->fetchObject("RecipientGroupCollection");
|
||
|
||
$oCkbRemove = new cHTMLCheckbox("ckbRemove[]", $oAssocGroup->get("idnewsgroupmember"));
|
||
echo ($oGroup->get("idnewsgroupmember"));
|
||
$oGroupList->setCell($oAssocGroup->get("idnewsgroupmember"), 1, $oGroup->get("groupname"));
|
||
$oGroupList->setCell($oAssocGroup->get("idnewsgroupmember"), 2, $oCkbRemove->toHTML(false));
|
||
$oGroupList->setCellAlignment($oAssocGroup->get("idnewsgroupmember"), 2, "right");
|
||
}
|
||
}
|
||
|
||
$oForm->add(i18n("Associated Groups", "cl_newsletter"), $oGroupList->render());
|
||
|
||
$oForm->add(i18n("Author", "cl_newsletter"), $classuser->getUserName($recipient->get("author")) . " (" . $recipient->get("created") . ")");
|
||
$oForm->add(i18n("Last modified by", "cl_newsletter"), $classuser->getUserName($recipient->get("modifiedby")) . " (" . $recipient->get("lastmodified") . ")");
|
||
|
||
$oPage->setContent($sNotis . $oForm->render(true));
|
||
} else {
|
||
$oPage->setContent($sNotis . "");
|
||
}
|
||
|
||
$oPage->render();
|
||
?>
|