Skip to content
Permalink
Browse files

added invalid email address handling

  • Loading branch information...
following
following committed Feb 17, 2013
1 parent e8655ec commit b7b51eab81004b595273671d88d645c72bdaf492
@@ -63,6 +63,8 @@ function formAction()
$commit = isset($_REQUEST['chkcommit']) ? $_REQUEST['chkcommit']+0 : 0;
$delete = isset($_REQUEST['chkdelete']) ? $_REQUEST['chkdelete']+0 : 0;
$disable = isset($_REQUEST['chkdisable']) ? $_REQUEST['chkdisable']+0 : 0;
$emailproblem = isset($_REQUEST['chkemail']) ? $_REQUEST['chkemail']+0 : 0;
$datalicense = isset($_REQUEST['chkdl']) ? $_REQUEST['chkdl']+0 : 0;
$userid = isset($_REQUEST['userid']) ? $_REQUEST['userid']+0 : 0;
$disduelicense = isset($_REQUEST['chkdisduelicense']) ? $_REQUEST['chkdisduelicense']+0 : 0;
@@ -77,11 +79,13 @@ function formAction()
if ($commit == 0)
$tpl->error($translate->t('You have to check that you are sure!','','',0));
if ($disduelicense == 1) {
if ($disduelicense == 1)
{
$errmesg = $user->disduelicense();
if ($errmesg !== true)
$tpl->error($errmesg);
} elseif ($disable == 1)
}
else if ($disable == 1)
{
if ($user->disable() == false)
$tpl->error(ERROR_UNKNOWN);
@@ -91,6 +95,10 @@ function formAction()
if ($user->delete() == false)
$tpl->error(ERROR_UNKNOWN);
}
else if ($emailproblem == 1)
{
$user->addEmailProblem($datalicense);
}
$tpl->redirect('adminuser.php?action=searchuser&username=' . urlencode($username) .
'&success=' . ($disduelicense + $disable));
@@ -106,7 +114,7 @@ function searchUser()
$tpl->assign('username', $username);
$tpl->assign('msg', $msg);
$rs = sql("SELECT `user_id`, `username`, `email`, `date_created`, `last_modified`, `is_active_flag`, `activation_code`, `first_name`, `last_name` FROM `user` WHERE `username`='&1' OR `email`='&1'", $username);
$rs = sql("SELECT `user_id`, `username`, `email`, `email_problems`, `date_created`, `last_modified`, `is_active_flag`, `activation_code`, `first_name`, `last_name` FROM `user` WHERE `username`='&1' OR `email`='&1'", $username);
$r = sql_fetch_assoc($rs);
sql_free_result($rs);
if ($r == false)
@@ -130,6 +138,7 @@ function searchUser()
$tpl->error(ERROR_UNKNOWN);
$tpl->assign('candisable', $user->canDisable());
$tpl->assign('candelete', $user->canDelete());
$tpl->assign('cansetemail', !$user->missedDataLicenseMail());
$tpl->display();
}
@@ -30,5 +30,6 @@ date commit ID change
- added index logentries:userid
- changed user.password length to 32
- removed sqlsession.remote_addr and index remote_addr
2013-02-16 new table data_licenses
2013-02-16 06d832c3 new table data_licenses
added user.data_license
2013-02-17 added user.email_problems
@@ -849,6 +849,7 @@ INSERT INTO `sys_menu` (`id`, `id_string`, `title`, `title_trans_id`, `menustrin
INSERT INTO `sys_menu` (`id`, `id_string`, `title`, `title_trans_id`, `menustring`, `menustring_trans_id`, `access`, `href`, `visible`, `parent`, `position`, `color`, `sitemap`, `only_if_parent`) VALUES ('85', 'MNU_CACHES_LOG', 'Create a logentry', '1687', 'Create a logentry', '1687', '0', 'log2.php', '0', '10', '10', '', '0', NULL);
INSERT INTO `sys_menu` (`id`, `id_string`, `title`, `title_trans_id`, `menustring`, `menustring_trans_id`, `access`, `href`, `visible`, `parent`, `position`, `color`, `sitemap`, `only_if_parent`) VALUES ('86', 'MNU_START_CHANGELOG', 'Changelog', '1797', 'Changelog', '1797', '0', 'articles.php?page=changelog', '0', '0', '10', '', '1', NULL);
INSERT INTO `sys_menu` (`id`, `id_string`, `title`, `title_trans_id`, `menustring`, `menustring_trans_id`, `access`, `href`, `visible`, `parent`, `position`, `color`, `sitemap`, `only_if_parent`) VALUES ('87', 'MNU_START_OPERATOR', 'Operator Association', '1798', 'Operator Association', '1798', '0', 'articles.php?page=verein', '1', '1', '8', '', '1', NULL);
INSERT INTO `sys_menu` (`id`, `id_string`, `title`, `title_trans_id`, `menustring`, `menustring_trans_id`, `access`, `href`, `visible`, `parent`, `position`, `color`, `sitemap`, `only_if_parent`) VALUES ('88', 'MNU_VERIFY_EMAIL', 'Verify e-mail address', '1824', 'Verify e-mail address', '1824', '0', 'verifyemail.php', '0', '0', '0', '', '0', NULL);

-- Table sys_trans
SET NAMES 'utf8';
@@ -2260,6 +2261,13 @@ INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1820', 'You can
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1821', 'OC.de new', '2013-02-15 00:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1822', 'OC.de new, slimline', '2013-02-15 00:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1823', 'OC.de new, without statistics', '2013-02-15 00:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1824', 'Verify e-mail address', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1825', 'One or more e-mails could not be delivered to the address you specified in your user profile', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1826', 'Please confirm that this email address is correct, or enter a new one.', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1827', 'Enter new email address', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1828', 'Confirm this email address', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1829', 'Mark e-mail address as invalid', '2013-02-17 18:48:04');
INSERT INTO `sys_trans` (`id`, `text`, `last_modified`) VALUES ('1830', 'data license mail was not delivered', '2013-02-17 18:48:04');

-- Table sys_trans_ref
SET NAMES 'utf8';
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1821', 'DE', 'OC.de neu', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1822', 'DE', 'OC.de neu, slimline', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1823', 'DE', 'OC.de neu, ohne Statistik', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1824', 'DE', 'E-Mail-Adresse bestätigen', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1825', 'DE', 'Eine oder mehrere Emails konnte nicht an deine hinterlegte Adresse zugestellt werden', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1826', 'DE', 'Bitte bestätige, dass diese Adresse korrekt ist, oder gib eine neue ein!', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1827', 'DE', 'Neue Adresse eingeben', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1828', 'DE', 'Diese Adresse bestätigen', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1829', 'DE', 'E-Mail-Adresse als ungültig markieren', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1830', 'DE', 'Datenlizenzmail wurde nicht zugestellt', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1', 'EN', 'Reorder IDs \r', '2010-09-02 00:15:30');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('2', 'EN', 'The database could not be reconnected.', '2010-08-28 11:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('3', 'EN', 'Testing – please do not login', '2010-08-28 11:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1821', 'EN', 'OC.de new', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1822', 'EN', 'OC.de new, slimline', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1823', 'EN', 'OC.de new, without statistics', '2013-02-14 00:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1824', 'EN', 'Verify email address', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1825', 'EN', 'One or more e-mails could not be delivered to the address you specified in your user profile', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1826', 'EN', 'Please confirm that this email address is correct, or enter a new one.', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1827', 'EN', 'Enter new email address', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1828', 'EN', 'Confirm this email address', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1829', 'EN', 'Mark e-mail address as invalid', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1830', 'EN', 'data license mail was not delivered', '2013-02-17 18:48:07');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('1', 'ES', 'Reordenar ID', '2010-12-09 00:17:55');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('2', 'ES', 'La base de datos no se pudo conectar.', '2010-12-09 00:17:55');
INSERT INTO `sys_trans_text` (`trans_id`, `lang`, `text`, `last_modified`) VALUES ('3', 'ES', 'En pruebas - por favor, no entre.', '2010-12-09 00:17:55');
@@ -10,6 +10,7 @@ CREATE TABLE `user` (
`username` varchar(60) NOT NULL,
`password` varchar(32) default NULL,
`email` varchar(60) default NULL,
`email_problems` int(10) NOT NULL default '0',
`latitude` double NOT NULL,
`longitude` double NOT NULL,
`is_active_flag` tinyint(1) NOT NULL,
@@ -95,6 +95,17 @@ function __autoload($class_name)
if (function_exists('post_config'))
post_config();
// check for email address problems
// use direct database access instead of user class for performance reasons - need not
// to include user.class.php in any script
if (!isset($verifyemail) &&
$login->userid > 0 &&
sql_value("SELECT `email_problems` FROM `user` WHERE `user_id`='&1'", 0, $login->userid) != 0)
{
header("Location: verifyemail.php?page=" . basename($_SERVER['REQUEST_URI']));
exit;
}
// normalize important settings
function normalize_settings()
{
@@ -49,6 +49,7 @@ function __construct($nNewUserId=ID_NEW)
$this->reUser->addString('username', '', false);
$this->reUser->addString('password', null, true);
$this->reUser->addString('email', null, true);
$this->reUser->addString('email_problems', 0, false);
$this->reUser->addFloat('latitude', 0, false);
$this->reUser->addFloat('longitude', 0, false);
$this->reUser->addDate('last_modified', time(), true, RE_INSERT_IGNORE);
@@ -1113,6 +1114,31 @@ function delete()
return true;
}
// email bounce processing
function addEmailProblem($licensemail=false)
{
if ($licensemail)
return $this->reUser->setValue('email_problems', 1000001) && $this->save();
else
return $this->reUser->setValue('email_problems', $this->getEmailProblems() + 1) && $this->save();
}
function getEmailProblems()
{
// see also common.inc.php "SELECT `email_problems`"
return $this->reUser->getValue('email_problems') % 1000000;
}
function missedDataLicenseMail()
{
return $this->reUser->getValue('email_problems') > 1000000;
}
function confirmEmailAddress()
{
return $this->reUser->setValue('email_problems', 0) && $this->save();
}
function reload()
{
$this->reUser->reload();
@@ -7,6 +7,7 @@
* Display some status information about the server and Opencaching
***************************************************************************/
$verifyemail = true;
require('./lib2/web.inc.php');
$tpl->name = 'login';
$tpl->menuitem = MNU_LOGIN;
@@ -7,6 +7,7 @@
* Display some status information about the server and Opencaching
***************************************************************************/
$verifyemail = true;
require('./lib2/web.inc.php');
require_once('./lib2/logic/user.class.php');
$tpl->name = 'newemail';
@@ -112,6 +113,7 @@
$user->clearNewEMailCode();
// $tpl->assign('newemail', '');
// $tpl->assign('code', '');
$user->confirmEmailAddress();
}
}
}
@@ -0,0 +1,59 @@
<p></p><strong>Folgende wichtige Email konnten wir dir nicht zustellen. Wir bitten um Beachtung!</strong></p>
<br />

<p>Liebe Opencaching-Nutzer,


<p>vor fast einem Jahr hatten wir euch in einer Rundmail angeschrieben und gefragt, ob ihr euch unserem Team anschließen und Opencaching mitgestalten möchtet. Wie ihr seitdem in unserem Blog (<a href="http://blog.opencaching.de/">http://blog.opencaching.de/</a>) lesen konntet, war dieser Aufruf überaus erfolgreich!

<p>Heute sind wir einen großen Schritt weiter und machen Opencaching fit für die Zukunft. Dazu gehört auch, es auf eine möglichst solide und "wasserdichte" rechtliche Grundlage zu stellen.

<p>Das Wichtigste und Wertvollste an Opencaching sind eure Cachelistings und Logs. Opencaching-Inhalte sind offen und frei - jeder kann sie vollständig und ohne Anmeldung oder Bezahlung von www.opencaching.de abrufen. Dabei sollen jedoch eure Rechte als Urheber dieser Inhalte gewahrt bleiben und Missbrauch verhindert werden.

<p>Wir haben verschiedene Möglichkeiten diskutiert und erwogen, wie dieses Ziel am besten erreichbar ist, und uns für folgendes Lizenzmodell entschieden:

<p>Opencaching.de bringt alle Inhalte unter eine Creative Commons Lizenz

<p>Durch die Lizenzierung aller durch die Benutzer eingebrachten Inhalte (user-generated content) wird festgeschrieben, was bisher als selbstverständlich angesehen wird: Die Rechte an den Inhalten bleiben bei dem, der sie auch eingebracht hat.
Es gibt verschiedene Creative-Commons-Varianten. Wir haben daraus folgende ausgewählt und werden euch das Lizenzmodell näher erläutern:

<p>&nbsp;&nbsp;&nbsp;&nbsp;Namensnennung-NichtKommerziell-KeineBearbeitung 3.0 Deutschland (CC BY-NC-ND 3.0)

<p>(Englisch: <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">http://creativecommons.org/licenses/by-nc-nd/3.0/</a> bzw. <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode">http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode</a> - Deutsch: <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/de/">http://creativecommons.org/licenses/by-nc-nd/3.0/de/</a> bzw. <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode">http://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode</a>)

<p>Die Namensnennung ("BY")

<p>Selbstredend soll der Autor des jeweiligen Inhaltes genannt werden, wenn sein Inhalt an anderer Stelle gezeigt wird. Zur Vereinfachung - und abweichend von der Original-CC-Lizenz - wird die Form der Namensnennung fest vorgegeben:

<p>&nbsp;&nbsp;&nbsp;(c) $NICKNAME, www.opencaching.de, CC-BY-NC-ND, Stand: $DATUM

<p>Zusätzlich ist darauf hinzuweisen, dass der aktuelle Stand des Cachelistings auf Opencaching.de abrufbar ist, wenn technisch möglich mit einem direkten Link auf das Listing. Besonders das Datum ist wichtig, da nichts so lebendig ist wie das Geocaching und so zuweilen in kurzen Abständen wichtige Änderungen in Cachebeschreibungen nötig werden können. Da die Inhalte aber durch den jeweiligen Besitzer des Geocaches nur direkt auf Opencaching.de geändert werden können, muss auch immer darauf verwiesen werden, das nur "das Original" als aktuell zu betrachten ist.

<p>Die nicht-kommerzielle Nutzung ("NC")

<p>Es ist ein Grundprinzip von Opencaching, dass niemand Geld mit eurer Arbeit verdient - weder Opencaching selbst noch Dritte. Dies soll auch so bleiben: Die Verwendung der Benutzerinhalte zu kommerziellen Zwecken bleibt komplett ausgeschlossen.

<p>Keine Bearbeitung ("ND")

<p>Die Sache liegt auf der Hand: Ein nachträglich bearbeitetes Cachelisting ist wertlos und kann darüber hinaus zu wirklichen Problemen führen. Nur der Besitzer des Geocaches weiß wie es vor Ort aussieht, weiß was bei der Suche und auf dem Weg dorthin zu beachten ist. Sind solche Informationen im Listing hinterlegt und werden sie nachträglich durch Dritte verändert, können sowohl die Suchenden als auch der Besitzer des Geocaches in Schwierigkeiten geraten, die durch die Beschränkung auf die unveränderte Weitergabe ausgeschlossen werden.

<p>Wie und wann erfolgt aber nun die "Umstellung" auf diese Lizenz? Was müssen die Benutzer von Opencaching.de beachten?

<p>Wir werden die Lizenz in 7 Wochen, d.h. zum 7. April 2013, zur offiziellen Lizenz aller Inhalte von Opencaching.de erklären. Alle Inhalte die ab diesem Stichtag auf Opencaching.de veröffentlicht werden, fallen dann automatisch unter diese Lizenz. Die bisherigen Inhalte werden dabei nachlizenziert und wenn kein Widerspruch eingelegt wird, gilt die Lizenz automatisch als zum Stichtag angenommen.

<p>Wenn jemand nicht möchte, das seine Inhalte durch die CC-Lizenz geschützt werden, hat er bis zum Stichtag 31. März 2013 [Anm.: Lizenzaktivierung minus 1 Woche] die Gelegenheit, dies Opencaching.de gegenüber unter der Emailadresse contact@opencaching.de zu äußern. Diese Mail sollte von dem Emailaccount aus verschickt werden, mit dem der jeweilige Benutzer bei Opencaching.de registriert ist und den Betreff "Lizenzablehnung - $BENUTZERNAME" haben.<br />
Die Ablehnung der Lizenz bewirkt dann eine Deaktivierung des Benutzerkontos bei Opencaching.de, einhergehend mit der Sperrung der unter diesem Benutzerkonto veröffentlichten Cachelistings. Die Listings werden dabei mit einem "Hiddenflag" versehen, so das sie künftig auch für die Anzeige gesperrt sind. Logtexte, die ebenfalls unter die Lizenz fallen, werden aus der Datenbank gelöscht. Der Logeintrag selbst mit Status "gefunden" / "nicht gefunden" etc. und Logdatum bleibt bestehen, sodass die Historie der Caches erhalten bleibt.

<p>Was gilt es sonst noch zu beachten?

<p>Die Nutzungsbedingungen von Opencaching.de verlieren durch diese Lizenz selbstverständlich nicht ihre Gültigkeit, sie sind also weiterhin zu beachten!
Auch wenn die CC-Lizenzierung festschreibt, das die eingebrachten Inhalte dem jeweiligen Benutzer gehören, gelten auch weiterhin gewisse Regeln, die den Betrieb der Plattform und ein faires Miteinander aller Benutzer gewährleisten sollen. So wird bspw. auch weiterhin das komplettes "Zerstören" eines Cachelistings (bspw. "Koordinatennullen") als Listingvandalismus betrachtet und kann zur Sperrung des jeweiligen Benutzeraccounts führen.

<p>Fragen?

<p>Kein Problem, wir stehen in unserem Forum (http://forum.geocaching-network.com/) selbstverständlich für alle Fragen rund um die Lizenzierung zur Verfügung.


<p>Happy Caching wünscht euch

<p>Euer Opencaching.de-Team
@@ -45,7 +45,7 @@
</tr>
<tr>
<td>{t}E-Mail:{/t}</td>
<td>{$user.email|escape}</td>
<td>{if $user.email_problems > 0}<span class="errormsg">{$user.email|escape}</span>{else}{$user.email|escape}{/if}</td>
</tr>
<tr>
<td>{t}Date created:{/t}</td>
@@ -126,6 +126,12 @@
<td><input type="checkbox" name="chkdelete" value="1" /> {t}Delete{/t}</td>
</tr>
{/if}
{if $cansetemail==true}
<tr>
<td></td>
<td><input type="checkbox" name="chkemail" value="1"> {t}Mark e-mail address as invalid{/t}&nbsp;&nbsp;&nbsp;<input type="checkbox" name="chkdl" value="1"> {t}data license mail was not delivered{/t}</td>
</tr>
{/if}

{* {if $candelete==true || $candisable==true} *}
<tr>
Oops, something went wrong.

0 comments on commit b7b51ea

Please sign in to comment.
You can’t perform that action at this time.