WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 07.03.2021 13:18:53

berny
Member

droplet für Newsletter

Irgendwo ist der Wurm drinnen, ich komm einfach nicht drauf:

Code (Excludes wegen Fehlersuche):

////Entschlüsselung der Parameter
//
// 
// Modul-Direction definieren
$message = "debug tnl_id = ".$tnl_id."<br />";
$tnl_id = isset($_REQUEST['tnl_id']) ? intval($_REQUEST['tnl_id']) : 0;
$mod_dir = "tiny_newsletter";
//
global $database, $wb;
/*function tnl_show_message($mod_dir, $message) {
	/* $path = WB_PATH.'/modules/'.$mod_dir.'/templates/tnl.inc/message.html';
	$content = file_get_contents($path);
	if (strpos($content, '[MESSAGE]') === false) {return('no valid template found');}
	$vars = array('[WB_URL]','[MOD_DIR]', '[MESSAGE]');
	$values = array(WB_URL, $mod_dir, $message);
	$content = str_replace($vars, $values, $content);
$content = $message;
	return $content;
}*/
// Wenn kein Newsletter_id übergeben wird.
if ($tnl_id == 0) {
$message .= "Kein Newsletter ausgew&auml;hlt";
} else {
$sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters` WHERE `tnl_id` == '.$tnl_id.' ORDER BY `tnl_published_when` DESC';
$resultdb = $database->query($sql);
	$out = '';
	while( ($result = $resultdb->fetchRow())) {
		$subject = $result['tnl_subject'];
                $body = $result['tnl_body'];
                $out.='<h3>'.$subject.'</h3><br /><br />'.$body.'';
	}
	$out.='';	
$message .= $out;
}
// Ende kein Newsletter
return $message;
// archiv abfragen...
// $sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters_archive` WHERE `tnl_id` == $tnl_id';

Fehler:

2021-03-07T11:09:23+00:00 [Exception] There was an unknown exception: Call to a member function fetchRow() on null in line (27) of /modules/droplets/droplets.php(24) : eval()'d code

Habe schon alles mögliche probiert, aber irgendetwas übersehe ich offensichtlich....
Die Archivabfrage funktioniert ja....

//: set group permissions
(!isset($_REQUEST['group')) ? ($group = 1) : ($group = $_REQUEST['group']+1);
//:
global $database, $wb;
$sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters` WHERE `tnl_min_active` <= '.$group.' ORDER BY `tnl_published_when` DESC';
$resultdb = $database->query($sql);
	$out = '<ul class="tnlarchive">';
	while( ($result = $resultdb->fetchRow())) {
		$outdate = date(DATE_FORMAT, $result['tnl_published_when']);
		$out.='<li><a target="_blank" href="#?tnl_id='.$result['tnl_id'].'">'.$outdate.' | '.$result['tnl_subject'].'</a></li>';
	}
	$out.='</ul>';	
return $out;

Hilfe!!!

Offline

#2 07.03.2021 13:35:32

florian
Administrator

Re: droplet für Newsletter

Nur ein = im Query verwenden.
... WHERE `tnl_id` = '.$tnl_id.'  ...

Last edited by florian (07.03.2021 13:37:36)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

berny

#3 07.03.2021 15:31:12

berny
Member

Re: droplet für Newsletter

Danke, das wars.... big_smile
Wie immer, ein Zeichen machts aus ....... mad

Offline

#4 07.03.2021 16:58:30

berny
Member

Re: droplet für Newsletter

Hab jetzt die erste Alpha Version der droplets raus.
das eine Listet, das andere zeigt den Newsletter.

Ev kann das wer checken, ob das geht.

Last edited by berny (07.03.2021 16:59:03)

Offline

#5 10.03.2021 17:02:59

berny
Member

Re: droplet für Newsletter

so, ein paar Kleinigkeiten hinzugefügt:
um die Verschlüsselung zu verbessern kann man das ganze um einen String erweitern. ($pluscode)

//tnl_list_go

// Config Droplet
//: Achtung, Verschlüsselungsparameter im Droplet ändern.
//Zusatzparameter (Buchstaben und Zahlen, keine Sonderzeichen)
//die gleichen wie im tnl_webview_go  Droplet
$pluscode = "1234abcd";
//: Modulverzeichnis angeben:
$mod_dir = "tiny_newsletter";
//:
// Group-Aufruf im droplet, nicht in der Url!
(!isset($group)) ? ($group = 1) : ($group = $group);
//: Start Droplet
global $database, $wb;
$url = strtok($_SERVER["REQUEST_URI"], '?');
$escaped_url = htmlspecialchars( $url, ENT_QUOTES, 'UTF-8' );
$sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters` WHERE `tnl_min_active` <= '.$group.' ORDER BY `tnl_published_when` DESC';
$resultdb = $database->query($sql);
	$out = '<ul class="tnlarchive">';
	while( ($result = $resultdb->fetchRow())) {
		$outdate = date(DATE_FORMAT, $result['tnl_published_when']);
		$param = base64_url_encode($result['tnl_id'], $pluscode);
		$out.='<li><a href="'.$escaped_url.'?id='.$param.'">'.$outdate.' | '.$result['tnl_subject'].'</a></li>';
	}
	$out.='</ul>';	
return $out;
function base64_url_encode($input, $pluscode) {
$pluscount = strlen($pluscount);
$input = $pluscode.$input;
 return strtr(base64_encode($input), '+/=', '._-');
}
// tnl_webview_go

// Config Droplet
//: Achtung, Verschlüsselungsparameter im Droplet ändern.
//Entschlüsselung der Parameter
//Zusatzparameter (Buchstaben und Zahlen, keine Sonderzeichen)
//die gleichen wie im tnl_list_go  Droplet
$pluscode = "1234abcd";
//: Modulverzeichnis angeben:
$mod_dir = "tiny_newsletter";
//:
//: Start Droplet
// $message = "debug tnl_id = ".$tnl_id."<br />";
(isset($_GET['id'])) ? ($input=$_GET['id']) : ($input=0);
// $message .= 'debug - input = '.$input.'<br />';
$tnl_id = base64_url_decode($input, $pluscode);
// $message .= 'debug - tnl_id = '.$tnl_id.'<br />';
$mod_dir = "tiny_newsletter";
//
global $database, $wb;
// Wenn kein Newsletter_id übergeben wird.
if ($tnl_id == 0) {
$message .= "Kein Newsletter ausgew&auml;hlt";
} else {
$sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters` WHERE `tnl_id` = '.$tnl_id.' ORDER BY `tnl_published_when` DESC';
$resultdb = $database->query($sql);
	$out = '';
	while( ($result = $resultdb->fetchRow())) {
		$subject = $result['tnl_subject'];
                $body = $result['tnl_body'];
                $out.='<h3>'.$subject.'</h3>'.$body.'';
	}
	$out.='';	
$message .= $out;
}
// Ende kein Newsletter
return $message;
// archiv abfragen...
// $sql = 'SELECT * from `'.TABLE_PREFIX.'mod_tiny_newsletter_newsletters_archive` WHERE `tnl_id` == $tnl_id';
function base64_url_decode($input, $pluscode) {
$pluscount = strlen($pluscode);
$tnl_id = base64_decode(strtr($input, '._-', '+/='));
$tnl_id = substr($tnl_id, $pluscount);
return $tnl_id;
}

Offline

#6 08.11.2023 00:40:44

hpzaun
Member

Re: droplet für Newsletter

Hi berny,
Der letzte Post ist zwar aus 2021.
Was sollen die Droplets genau machen?
Wofür brauche ich den $pluscode?
Ich habe die Droplets aus #4 nach dem Download-Zip importiert.
Dann den Code aus #5 in die Droplets kopiert.

Zu tnl_list_go:
Was macht die Liste tnl_list_go anders als das Droplet tnlarchive (Publikationsdatum absteigend sortierte, mit der Web-Ansicht des jeweiligen Newsletters sortierte Liste. Es werden nur die veröffentlichten Newsletter angezeigt (logisch))
tnlarchive erzeugt die Liste mit folgender Verlinkung und n=Newsletter-Nummer. -> domin.de/wbce/modules/tiny_newsletter/web.php?n=24
Mit tnl_list_go sieht die Verlinkungin der Liste so aus: domin.de/wbce/pages/newsletter/droplet-test-tnl_go_list.php?id=MTIzNGFiY2QyNA--
Bei Anklicken wird er der Newsletter aber nicht angezeigt

Zu tnl_webview_go
Was soll tnl_webview_go anzeigen?  Das Droplet funktioniert bei mir nicht. Es wird noch nicht einmal die entsprechende Unter-Webseite aufgebaut.
Nur Block: Hauptblock Modul: WYSIWYG mit folgendem Inhalt
Droplet-Tests tnl_webview_go
[[tnl_webview_go]]

Schönen Abend
hpzaun

Offline

#7 12.11.2023 12:54:58

berny
Member

Re: droplet für Newsletter

Der pluscode dient der Verschlüsselung, musst du nicht, kannst du.

Offline

Board footer

up