Kennis & inzichten > cms made simple, php, webdevelopment > Change the Newsletter Made Simple module to send out attachments

Change the Newsletter Made Simple module to send out attachments

Ferdi Verlaan

Ferdi Verlaan

Manager OTC & NOC

We have a customer who sends out newsletters as an PDF attachment. NMS is capable of sending these attachments within the module itselve, but only from the root. In this case we would like to use the /uploads/pdf folder. My workaround for the attachment dir bug;

Open /modules/CGExtensions/CGExtensions.module.php:

locate the function ‘CreateFileDropdown’ and change the code to:
/*
* A convenience function to create a file dropdown
*/
function CreateFileDropdown($id,$name,$selectedfile=”,$dir = ”,$extensions =
”,$allownone = ”,$allowmultiple = false,$size = 3)
{
$config = cmsms()->GetConfig();

if( startswith( $dir, ‘.’ ) ) $dir = ”;
if( $dir == ” ) $dir = $config[‘image_uploads_path’];
if( !is_dir($dir) ) $dir = cms_join_path($config[‘uploads_path’],$dir);

if( $extensions == ” ) $extensions =
$this->GetPreference(‘fileextensions’,”);

$tmp = cge_dir::get_file_list($dir,$extensions);
$tmp2 = array();
if( !empty($allownone) ) $tmp2[$this->Lang(‘none’)] = ”;
$filelist = array_merge($tmp2,$tmp);

if( $allowmultiple ) {
if( !endswith($name,'[]’) ) $name .= ‘[]’;
return $this->CreateInputSelectList($id,$name,$filelist,array(),$size);
}
return $this->CreateInputDropdown($id,$name,$filelist,-1,$selectedfile);
}

In /modules/NMS/action.compose.message.php; locate the string ‘case:
‘attachment” and replace complete section with:

case ‘attachment’:
// a file selector dropdown?
$content = ”;
if( isset($blockvalues[$safe_name]) ) {
$content = $blockvalues[$safe_name];
}
if( isset($params[$obj->name]) ) {
$content = trim($params[$obj->name]);
}
//$cgextensions = $this->GetModuleInstance(‘CGExtensions’);
//$obj->control =
$cgextensions->CreateFileDropdown($id,$obj->name,$content,”,”,1);
$dir = ”;
if( isset($keyval[‘dir’]) ) {
$dir = $keyval[‘dir’];
$obj->dir = $dir;
}
$cgextensions = $this->GetModuleInstance(‘CGExtensions’);
$obj->control =
$cgextensions->CreateFileDropdown($id,$obj->name,$content,$dir,”,1);

break;

Now the dir function works, only relative to the /uploads folder, but works
nevertheless. Make sure in the CGExtensions module that the extension is allowed
to be uploaded/used.

And to make it work with sending the newsletter don’t forget the following in /modules/NMS/NMS.modules.php locate the code:

foreach( $this->attached_files as $onefile ) {
echo $onefile;
$fn = cms_join_path($config[‘uploads_path’],$onefile);
$mailer->AddAttachment($fn,$onefile);
}

I’ve just manually changed the path to the path i need, for example:

foreach( $this->attached_files as $onefile ) {
echo $onefile;
$fn = cms_join_path($config[‘uploads_path’].’/PDF’,$onefile);
$mailer->AddAttachment($fn,$onefile);
}

Ferdi Verlaan

Over de auteur

Ferdi Verlaan

Werkzaam bij AASHQ sinds 2005, beheert en inspireert Ferdi een team van uitstekende ontwikkelaars, systeem- en netwerkingenieurs.

Hij is bedreven in verschillende programmeertalen maar ook zeer kundig in zowel Windows (Server) als Linux-besturingssystemen.

Ook interessante artikelen

Deze artikelen kunnen jou ook misschien aanspreken

aasadmin

Yorick van Schie

Software engineer

aasadmin

Yorick van Schie

Software engineer

Plan een kennismaking van 30 minuten

Vrijblijvend en direct met een engineer. Je krijgt een inventarisatie en een eerste prijsindicatie.

Plan een kennismaking