function email_collection($colrefs, $collectionname, $fromusername, $userlist, $message, $feedback, $access = -1, $expires = "", $useremail = "", $from_name = "", $cc = "", $themeshare = false, $themename = "", $themeurlsuffix = "", $list_recipients = false, $add_internal_access = false, $group = "")
 {
     # Attempt to resolve all users in the string $userlist to user references.
     # Add $collection to these user's 'My Collections' page
     # Send them an e-mail linking to this collection
     #  handle multiple collections (comma seperated list)
     global $baseurl, $email_from, $applicationname, $lang, $userref, $email_multi_collections, $usergroup, $attach_user_smart_groups;
     if ($useremail == "") {
         $useremail = $email_from;
     }
     if ($group == "") {
         $group = $usergroup;
     }
     if (trim($userlist) == "") {
         return $lang["mustspecifyoneusername"];
     }
     $userlist = resolve_userlist_groups($userlist);
     if ($attach_user_smart_groups && strpos($userlist, $lang["groupsmart"] . ": ") !== false) {
         $groups_users = resolve_userlist_groups_smart($userlist, true);
         if ($groups_users != '') {
             if ($userlist != "") {
                 $userlist = remove_groups_smart_from_userlist($userlist);
                 if ($userlist != "") {
                     $userlist .= ",";
                 }
             }
             $userlist .= $groups_users;
         }
     }
     $ulist = trim_array(explode(",", $userlist));
     $emails = array();
     $key_required = array();
     if ($feedback) {
         $feedback = 1;
     } else {
         $feedback = 0;
     }
     $reflist = trim_array(explode(",", $colrefs));
     $emails_keys = resolve_user_emails($ulist);
     $emails = $emails_keys['emails'];
     $key_required = $emails_keys['key_required'];
     # Add the collection(s) to the user's My Collections page
     $urefs = sql_array("select ref value from user where username in ('" . join("','", $ulist) . "')");
     if (count($urefs) > 0) {
         # Delete any existing collection entries
         sql_query("delete from user_collection where collection in ('" . join("','", $reflist) . "') and user in ('" . join("','", $urefs) . "')");
         # Insert new user_collection row(s)
         #loop through the collections
         for ($nx1 = 0; $nx1 < count($reflist); $nx1++) {
             #loop through the users
             for ($nx2 = 0; $nx2 < count($urefs); $nx2++) {
                 sql_query("insert into user_collection(collection,user,request_feedback) values ({$reflist[$nx1]}, {$urefs[$nx2]}, {$feedback} )");
                 if ($add_internal_access) {
                     foreach (get_collection_resources($reflist[$nx1]) as $resource) {
                         if (get_edit_access($resource)) {
                             open_access_to_user($urefs[$nx2], $resource, $expires);
                         }
                     }
                 }
                 #log this
                 collection_log($reflist[$nx1], "S", 0, sql_value("select username as value from user where ref = {$urefs[$nx2]}", ""));
             }
         }
     }
     # Send an e-mail to each resolved user
     # htmlbreak is for composing list
     $htmlbreak = "\r\n";
     global $use_phpmailer;
     if ($use_phpmailer) {
         $htmlbreak = "<br><br>";
         $htmlbreaksingle = "<br>";
     }
     if ($fromusername == "") {
         $fromusername = $applicationname;
     }
     // fromusername is used for describing the sender's name inside the email
     if ($from_name == "") {
         $from_name = $applicationname;
     }
     // from_name is for the email headers, and needs to match the email address (app name or user name)
     $templatevars['message'] = str_replace(array("\\n", "\\r", "\\"), array("\n", "\r", ""), $message);
     if (trim($templatevars['message']) == "") {
         $templatevars['message'] = $lang['nomessage'];
     }
     $templatevars['fromusername'] = $fromusername;
     $templatevars['from_name'] = $from_name;
     if (count($reflist) > 1) {
         $subject = $applicationname . ": " . $lang['mycollections'];
     } else {
         $subject = $applicationname . ": " . $collectionname;
     }
     if ($fromusername == "") {
         $fromusername = $applicationname;
     }
     $externalmessage = $lang["emailcollectionmessageexternal"];
     $internalmessage = $lang["emailcollectionmessage"];
     $viewlinktext = $lang["clicklinkviewcollection"];
     if ($themeshare) {
         $externalmessage = $lang["emailthemecollectionmessageexternal"];
         $internalmessage = $lang["emailthememessage"];
         $viewlinktext = $lang["clicklinkviewcollections"];
     }
     ##  loop through recipients
     for ($nx1 = 0; $nx1 < count($emails); $nx1++) {
         ## loop through collections
         $list = "";
         $list2 = "";
         $origviewlinktext = $viewlinktext;
         // Save this text as we may change it for internal theme shares for this user
         if ($themeshare && !$key_required[$nx1]) {
             $url = "";
             $subject = $applicationname . ": " . $themename;
             $url = $baseurl . "/pages/themes.php" . $themeurlsuffix;
             $viewlinktext = $lang["clicklinkviewthemes"];
             $emailcollectionmessageexternal = false;
             if ($use_phpmailer) {
                 $link = "<a href=\"{$url}\">" . $themename . "</a>";
                 $list .= $htmlbreak . $link;
                 // alternate list style
                 $list2 .= $htmlbreak . $themename . ' -' . $htmlbreaksingle . $url;
                 $templatevars['list2'] = $list2;
             } else {
                 $list .= $htmlbreak . $url;
             }
             for ($nx2 = 0; $nx2 < count($reflist); $nx2++) {
                 #log this
                 collection_log($reflist[$nx2], "E", 0, $emails[$nx1]);
             }
         } else {
             for ($nx2 = 0; $nx2 < count($reflist); $nx2++) {
                 $url = "";
                 $key = "";
                 $emailcollectionmessageexternal = false;
                 # Do we need to add an external access key for this user (e-mail specified rather than username)?
                 if ($key_required[$nx1]) {
                     $k = generate_collection_access_key($reflist[$nx2], $feedback, $emails[$nx1], $access, $expires, $group);
                     $key = "&k=" . $k;
                     $emailcollectionmessageexternal = true;
                 }
                 $url = $baseurl . "/?c=" . $reflist[$nx2] . $key;
                 $collection = array();
                 $collection = sql_query("select name,savedsearch from collection where ref='{$reflist[$nx2]}'");
                 if ($collection[0]["name"] != "") {
                     $collection_name = i18n_get_collection_name($collection[0]);
                 } else {
                     $collection_name = $reflist[$nx2];
                 }
                 if ($use_phpmailer) {
                     $link = "<a href=\"{$url}\">{$collection_name}</a>";
                     $list .= $htmlbreak . $link;
                     // alternate list style
                     $list2 .= $htmlbreak . $collection_name . ' -' . $htmlbreaksingle . $url;
                     $templatevars['list2'] = $list2;
                 } else {
                     $list .= $htmlbreak . $collection_name . $htmlbreak . $url . $htmlbreak;
                 }
                 #log this
                 collection_log($reflist[$nx2], "E", 0, $emails[$nx1]);
             }
         }
         //$list.=$htmlbreak;
         $templatevars['list'] = $list;
         $templatevars['from_name'] = $from_name;
         if (isset($k)) {
             if ($expires == "") {
                 $templatevars['expires_date'] = $lang["email_link_expires_never"];
                 $templatevars['expires_days'] = $lang["email_link_expires_never"];
             } else {
                 $day_count = round((strtotime($expires) - strtotime('now')) / (60 * 60 * 24));
                 $templatevars['expires_date'] = $lang['email_link_expires_date'] . nicedate($expires);
                 $templatevars['expires_days'] = $lang['email_link_expires_days'] . $day_count;
                 if ($day_count > 1) {
                     $templatevars['expires_days'] .= " " . $lang['expire_days'] . ".";
                 } else {
                     $templatevars['expires_days'] .= " " . $lang['expire_day'] . ".";
                 }
             }
         } else {
             # Set empty expiration tempaltevars
             $templatevars['expires_date'] = '';
             $templatevars['expires_days'] = '';
         }
         if ($emailcollectionmessageexternal) {
             $template = $themeshare ? "emailthemeexternal" : "emailcollectionexternal";
         } else {
             $template = $themeshare ? "emailtheme" : "emailcollection";
         }
         if (count($emails > 1) && $list_recipients === true) {
             $body = $lang["list-recipients"] . "\n" . implode("\n", $emails) . "\n\n";
             $templatevars['list-recipients'] = $lang["list-recipients"] . "\n" . implode("\n", $emails) . "\n\n";
         } else {
             $body = "";
         }
         $body .= $templatevars['fromusername'] . " " . ($emailcollectionmessageexternal ? $externalmessage : $internalmessage) . "\n\n" . $templatevars['message'] . "\n\n" . $viewlinktext . "\n\n" . $templatevars['list'];
         #exit ($body . "<br>" . $viewlinktext);
         send_mail($emails[$nx1], $subject, $body, $fromusername, $useremail, $template, $templatevars, $from_name, $cc);
         $viewlinktext = $origviewlinktext;
     }
     hook("additional_email_collection", "", array($colrefs, $collectionname, $fromusername, $userlist, $message, $feedback, $access, $expires, $useremail, $from_name, $cc, $themeshare, $themename, $themeurlsuffix, $template, $templatevars));
     # Return an empty string (all OK).
     return "";
 }
Example #2
0
function save_request($request)
	{
	# Use the posted form to update the request
	global $applicationname,$baseurl,$lang,$request_senduserupdates;
		
	$status=getvalescaped("status","",true);
	$expires=getvalescaped("expires","");
	$currentrequest=get_request($request);
	$oldstatus=$currentrequest["status"];
	$assigned_to=getvalescaped("assigned_to","");
	$reason=getvalescaped("reason","");
	$reasonapproved=getvalescaped("reasonapproved","");
	
	
	# --------------------- User Assignment ------------------------
	# Has the assigned_to value changed?
	if ($currentrequest["assigned_to"]!=$assigned_to && checkperm("Ra"))
		{
		if ($assigned_to==0)
			{
			# Cancel assignment
			sql_query("update request set assigned_to=null where ref='$request'");
			}
		else
			{
			# Update and notify user
			sql_query("update request set assigned_to='$assigned_to' where ref='$request'");

			$message=$lang["requestassignedtoyoumail"] . "\n\n$baseurl/?q=" . $request . "\n";
			$assigned_to_user=get_user($assigned_to);
			send_mail($assigned_to_user["email"],$applicationname . ": " . $lang["requestassignedtoyou"],$message);
			$userconfirmmessage=str_replace("%",$assigned_to_user["fullname"] . " (" . $assigned_to_user["email"] . ")" ,$lang["requestassignedtouser"]);
			if ($request_senduserupdates){send_mail($currentrequest["email"],$applicationname . ": " . $lang["requestupdated"] . " - $request",$userconfirmmessage);}
			}
		}
	
	
	# Has either the status or the expiry date changed?
	if (($oldstatus!=$status || $expires!=$currentrequest["expires"]) && $status==1)
		{
		# --------------- APPROVED -------------
		# Send approval e-mail
		$message=$lang["requestapprovedmail"] . "\n\n" . $lang["approvalreason"]. ": " . $reasonapproved . "\n\n" ;
		$message.="$baseurl/?c=" . $currentrequest["collection"] . "\n";
		if ($expires!="")
			{
			# Add expiry time to message.
			$message.=$lang["requestapprovedexpires"] . " " . nicedate($expires) . "\n\n";
			}
		$reasonapproved=str_replace(array("\\r","\\n"),"\n",$reasonapproved);$reasonapproved=str_replace("\n\n","\n",$reasonapproved); # Fix line breaks.
		send_mail($currentrequest["email"],$applicationname . ": " . $lang["requestcollection"] . " - " . $lang["resourcerequeststatus1"],$message);
		
		# Mark resources as full access for this user
		foreach (get_collection_resources($currentrequest["collection"]) as $resource)
			{
			open_access_to_user($currentrequest["user"],$resource,$expires);
			}
		}

	if ($oldstatus!=$status && $status==2)	
		{
		# --------------- DECLINED -------------
		# Send declined e-mail

		$reason=str_replace(array("\\r","\\n"),"\n",$reason);$reason=str_replace("\n\n","\n",$reason); # Fix line breaks.
		$message=$lang["requestdeclinedmail"] . "\n\n" . $lang["declinereason"] . ": ". $reason . "\n\n$baseurl/?c=" . $currentrequest["collection"] . "\n";
		send_mail($currentrequest["email"],$applicationname . ": " . $lang["requestcollection"] . " - " . $lang["resourcerequeststatus2"],$message);

		# Remove access that my have been granted by an inadvertant 'approved' command.
		foreach (get_collection_resources($currentrequest["collection"]) as $resource)
			{
			remove_access_to_user($currentrequest["user"],$resource);
			}

		}

	if ($oldstatus!=$status && $status==0)
		{
		# --------------- PENDING -------------
		# Moved back to pending. Delete any permissions set by a previous 'approve'.
		foreach (get_collection_resources($currentrequest["collection"]) as $resource)
			{
			remove_access_to_user($currentrequest["user"],$resource);
			}
		}

	# Save status
	sql_query("update request set status='$status',expires=" . ($expires==""?"null":"'$expires'") . ",reason='$reason',reasonapproved='$reasonapproved' where ref='$request'");

	if (getval("delete","")!="")
		{
		# Delete the request - this is done AFTER any e-mails have been sent out so this can be used on approval.
		sql_query("delete from request where ref='$request'");
		return true;		
		}

	}
function email_collection($colrefs,$collectionname,$fromusername,$userlist,$message,$feedback,$access=-1,$expires="",$useremail="",$from_name="",$cc="",$themeshare=false,$themename="",$themeurlsuffix="")
	{
	# Attempt to resolve all users in the string $userlist to user references.
	# Add $collection to these user's 'My Collections' page
	# Send them an e-mail linking to this collection
	#  handle multiple collections (comma seperated list)
	global $baseurl,$email_from,$applicationname,$lang,$userref, $email_multi_collections ;
	
	if ($useremail==""){$useremail=$email_from;}
	
	if (trim($userlist)=="") {return ($lang["mustspecifyoneusername"]);}
	$userlist=resolve_userlist_groups($userlist);
	$ulist=trim_array(explode(",",$userlist));
	$emails=array();
	$key_required=array();
	if ($feedback) {$feedback=1;} else {$feedback=0;}
	$reflist=trim_array(explode(",",$colrefs));
	
	$emails_keys=resolve_user_emails($ulist);
	$emails=$emails_keys['emails'];
	$key_required=$emails_keys['key_required'];

	# Add the collection(s) to the user's My Collections page
	$urefs=sql_array("select ref value from user where username in ('" . join("','",$ulist) . "')");
	if (count($urefs)>0)
		{
		# Delete any existing collection entries
		sql_query("delete from user_collection where collection in ('" .join("','", $reflist) . "') and user in ('" . join("','",$urefs) . "')");
		
		# Insert new user_collection row(s)
		#loop through the collections
			for ($nx1=0;$nx1<count($reflist);$nx1++)
			{	#loop through the users
				for ($nx2=0;$nx2<count($urefs);$nx2++)
				{
		sql_query("insert into user_collection(collection,user,request_feedback) values ($reflist[$nx1], $urefs[$nx2], $feedback )");
		if ($access == 0) {
			foreach (get_collection_resources($reflist[$nx1]) as $resource)	{
				open_access_to_user($urefs[$nx2],$resource,$expires);
			}
		}
				
			#log this
		collection_log($reflist[$nx1],"S",0, sql_value ("select username as value from user where ref = $urefs[$nx2]",""));

				}
			}
		}
	
	# Send an e-mail to each resolved user
	
	# htmlbreak is for composing list
	$htmlbreak="\r\n";
	global $use_phpmailer;
	if ($use_phpmailer){$htmlbreak="<br><br>";$htmlbreaksingle="<br>";} 
	
	if ($fromusername==""){$fromusername=$applicationname;} // fromusername is used for describing the sender's name inside the email
	if ($from_name==""){$from_name=$applicationname;} // from_name is for the email headers, and needs to match the email address (app name or user name)
	
	$templatevars['message']=str_replace(array("\\n","\\r","\\"),array("\n","\r",""),$message);	
	if (trim($templatevars['message'])==""){$templatevars['message']=$lang['nomessage'];} 
	
	$templatevars['fromusername']=$fromusername;
	$templatevars['from_name']=$from_name;
	
	if(count($reflist)>1){$subject=$applicationname.": ".$lang['mycollections'];}
	else { $subject=$applicationname.": ".$collectionname;}
	
	if ($fromusername==""){$fromusername=$applicationname;}
	
	$externalmessage=$lang["emailcollectionmessageexternal"];
	$internalmessage=$lang["emailcollectionmessage"];
	$viewlinktext=$lang["clicklinkviewcollection"];
	if ($themeshare) // Change the text if sharing a theme category
		{
		$externalmessage=$lang["emailthemecollectionmessageexternal"];
		$internalmessage=$lang["emailthememessage"];
		$viewlinktext=$lang["clicklinkviewcollections"];
		}
		
	##  loop through recipients
	for ($nx1=0;$nx1<count($emails);$nx1++)
		{
		## loop through collections
		$list="";
		$list2="";
		$origviewlinktext=$viewlinktext; // Save this text as we may change it for internal theme shares for this user
		if ($themeshare && !$key_required[$nx1]) # don't send a whole list of collections if internal, just send the theme category URL
			{
			$url="";
			$subject=$applicationname.": " . $themename;
			$url=$baseurl . "/pages/themes.php" . $themeurlsuffix;			
			$viewlinktext=$lang["clicklinkviewthemes"];
			$emailcollectionmessageexternal=false;
			if ($use_phpmailer){
					$link="<a href=\"$url\">" . $themename . "</a>";	
					
					$list.= $htmlbreak.$link;	
					// alternate list style				
					$list2.=$htmlbreak.$themename.' -'.$htmlbreaksingle.$url;
					$templatevars['list2']=$list2;					
					}
				else
					{
					$list.= $htmlbreak.$url;
					}
			for ($nx2=0;$nx2<count($reflist);$nx2++)
				{				
				#log this
				collection_log($reflist[$nx2],"E",0, $emails[$nx1]);
				}
			
			}
		else
			{
			for ($nx2=0;$nx2<count($reflist);$nx2++)
				{
				$url="";
				$key="";
				$emailcollectionmessageexternal=false;
				# Do we need to add an external access key for this user (e-mail specified rather than username)?
				if ($key_required[$nx1])
					{
					$k=generate_collection_access_key($reflist[$nx2],$feedback,$emails[$nx1],$access,$expires);
					$key="&k=". $k;
					$emailcollectionmessageexternal=true;
					}
				$url=$baseurl . 	"/?c=" . $reflist[$nx2] . $key;		
				$collection = array();
				$collection = sql_query("select name,savedsearch from collection where ref='$reflist[$nx2]'");
				if ($collection[0]["name"]!="") {$collection_name = i18n_get_collection_name($collection[0]);}
				else {$collection_name = $reflist[$nx2];}
				if ($use_phpmailer){
					$link="<a href=\"$url\">$collection_name</a>";	
					$list.= $htmlbreak.$link;	
					// alternate list style				
					$list2.=$htmlbreak.$collection_name.' -'.$htmlbreaksingle.$url;
					$templatevars['list2']=$list2;					
					}
				else
					{
					$list.= $htmlbreak . $collection_name . $htmlbreak . $url . $htmlbreak;
					}
				#log this
				collection_log($reflist[$nx2],"E",0, $emails[$nx1]);
				}
			}
		//$list.=$htmlbreak;	
		$templatevars['list']=$list;
		$templatevars['from_name']=$from_name;
		if ($emailcollectionmessageexternal ){
			$template=($themeshare)?"emailthemeexternal":"emailcollectionexternal";
		}
		else {
			$template=($themeshare)?"emailtheme":"emailcollection";
		}
		$body=$templatevars['fromusername']." " . (($emailcollectionmessageexternal)?$externalmessage:$internalmessage) . "\n\n" . $templatevars['message']."\n\n" . $viewlinktext ."\n\n".$templatevars['list'];
		#exit ($body . "<br>" . $viewlinktext);	
		send_mail($emails[$nx1],$subject,$body,$fromusername,$useremail,$template,$templatevars,$from_name,$cc);
		$viewlinktext=$origviewlinktext;
		}
		
	# Return an empty string (all OK).
	return "";
	}
 function email_resource($resource, $resourcename, $fromusername, $userlist, $message, $access = -1, $expires = "", $useremail = "", $from_name = "", $cc = "", $list_recipients = false, $open_internal_access = false, $useraccess = 2, $group = "")
 {
     # Attempt to resolve all users in the string $userlist to user references.
     global $baseurl, $email_from, $applicationname, $lang, $userref, $usergroup;
     if ($useremail == "") {
         $useremail = $email_from;
     }
     if ($group == "") {
         $group = $usergroup;
     }
     # remove any line breaks that may have been entered
     $userlist = str_replace("\\r\\n", ",", $userlist);
     if (trim($userlist) == "") {
         return $lang["mustspecifyoneusername"];
     }
     $userlist = resolve_userlist_groups($userlist);
     $ulist = trim_array(explode(",", $userlist));
     $ulist = array_filter($ulist);
     $ulist = array_values($ulist);
     $emails = array();
     $key_required = array();
     $emails_keys = resolve_user_emails($ulist);
     $unames = $emails_keys['unames'];
     $emails = $emails_keys['emails'];
     $key_required = $emails_keys['key_required'];
     # Send an e-mail to each resolved user / e-mail address
     $subject = "{$applicationname}: {$resourcename}";
     if ($fromusername == "") {
         $fromusername = $applicationname;
     }
     // fromusername is used for describing the sender's name inside the email
     if ($from_name == "") {
         $from_name = $applicationname;
     }
     // from_name is for the email headers, and needs to match the email address (app name or user name)
     $message = str_replace(array("\\n", "\\r", "\\"), array("\n", "\r", ""), $message);
     #	Commented 'no message' line out as formatted oddly, and unnecessary.
     #	if ($message==""){$message=$lang['nomessage'];}
     for ($n = 0; $n < count($emails); $n++) {
         $key = "";
         # Do we need to add an external access key for this user (e-mail specified rather than username)?
         if ($key_required[$n]) {
             $k = generate_resource_access_key($resource, $userref, $access, $expires, $emails[$n], $group);
             $key = "&k=" . $k;
         } elseif ($useraccess == 0 && $open_internal_access) {
             $userid = sql_value("select ref value from user where email='{$emails[$n]}'", "");
             open_access_to_user($userid, $resource, $expires);
         }
         # make vars available to template
         global $watermark;
         $templatevars['thumbnail'] = get_resource_path($resource, true, "thm", false, "jpg", $scramble = -1, $page = 1, $watermark ? $access == 1 ? true : false : false);
         if (!file_exists($templatevars['thumbnail'])) {
             $resourcedata = get_resource_data($resource);
             $templatevars['thumbnail'] = "../gfx/" . get_nopreview_icon($resourcedata["resource_type"], $resourcedata["file_extension"], false);
         }
         $templatevars['url'] = $baseurl . "/?r=" . $resource . $key;
         $templatevars['fromusername'] = $fromusername;
         $templatevars['message'] = $message;
         $templatevars['resourcename'] = $resourcename;
         $templatevars['from_name'] = $from_name;
         if (isset($k)) {
             if ($expires == "") {
                 $templatevars['expires_date'] = $lang["email_link_expires_never"];
                 $templatevars['expires_days'] = $lang["email_link_expires_never"];
             } else {
                 $day_count = round((strtotime($expires) - strtotime('now')) / (60 * 60 * 24));
                 $templatevars['expires_date'] = $lang['email_link_expires_date'] . nicedate($expires);
                 $templatevars['expires_days'] = $lang['email_link_expires_days'] . $day_count;
                 if ($day_count > 1) {
                     $templatevars['expires_days'] .= " " . $lang['expire_days'] . ".";
                 } else {
                     $templatevars['expires_days'] .= " " . $lang['expire_day'] . ".";
                 }
             }
         } else {
             # Set empty expiration tempaltevars
             $templatevars['expires_date'] = '';
             $templatevars['expires_days'] = '';
         }
         # Build message and send.
         if (count($emails > 1) && $list_recipients === true) {
             $body = $lang["list-recipients"] . "\n" . implode("\n", $emails) . "\n\n";
             $templatevars['list-recipients'] = $lang["list-recipients"] . "\n" . implode("\n", $emails) . "\n\n";
         } else {
             $body = "";
         }
         $body .= $templatevars['fromusername'] . " " . $lang["hasemailedyouaresource"] . "\n\n" . $templatevars['message'] . "\n\n" . $lang["clicktoviewresource"] . "\n\n" . $templatevars['url'];
         send_mail($emails[$n], $subject, $body, $fromusername, $useremail, "emailresource", $templatevars, $from_name, $cc);
         # log this
         resource_log($resource, "E", "", $notes = $unames[$n]);
     }
     hook("additional_email_resource", "", array($resource, $resourcename, $fromusername, $userlist, $message, $access, $expires, $useremail, $from_name, $cc, $templatevars));
     # Return an empty string (all OK).
     return "";
 }