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 ""; }
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 ""; }