Index: branches/unlabeled/unlabeled-1.66.2/core/kernel/processors/main_processor.php =================================================================== diff -u -N -r7696 -r7750 --- branches/unlabeled/unlabeled-1.66.2/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 7696) +++ branches/unlabeled/unlabeled-1.66.2/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 7750) @@ -940,12 +940,19 @@ return $this->Application->Phrase($root_phrase); } + /** + * Allows to attach file directly from email event template + * + * @param Array $params + */ function AttachFile($params) { - $email_object =& $this->Application->recallObject('kEmailMessage'); + $esender =& $application->recallObject('EmailSender'.(isset($params['special']) ? '.'.$params['special'] : '')); + /* @var $esender kEmailSendingHelper */ + $path = FULL_PATH.'/'.$params['path']; if (file_exists($path)) { - $email_object->attachFile($path); + $esender->AddAttachment($path); } } Index: branches/unlabeled/unlabeled-1.59.2/kernel/include/emailmessage.php =================================================================== diff -u -N -r7734 -r7750 --- branches/unlabeled/unlabeled-1.59.2/kernel/include/emailmessage.php (.../emailmessage.php) (revision 7734) +++ branches/unlabeled/unlabeled-1.59.2/kernel/include/emailmessage.php (.../emailmessage.php) (revision 7750) @@ -903,107 +903,49 @@ function SendMail($From, $FromName, $ToAddr, $ToName, $Subject, $Text, $Html, $charset, $SendEvent,$FileName="",$FileLoc="",$QueueOnly=0,$extra_headers = array()) { - $charset = GetRegionalOption('Charset'); - - $HasFile = FALSE; - $HasFile = (strlen($FileName)>0); - $OB="----=_OuterBoundary_000".md5( uniqid (rand())); - $boundary = "-----=".md5( uniqid (rand())); - $f = "\"$FromName\" <".$From.">"; - $headers = "From: $f"."\n"; - $headers .= "MIME-Version: 1.0"."\n"; - - $conn = &GetADODBConnection(); - $time = adodb_mktime(); - - $sendTo = $ToName; - - if (strlen($sendTo) > 0) { - $sendTo .= "($ToAddr)"; - } - else { - $sendTo = $ToAddr; - } - $sendTo=addslashes($sendTo); - $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', ".$conn->qstr($FromName).", ".$conn->qstr($sendTo).", ".$conn->qstr( str_replace("Subject:", "", $Subject) ).", $time, '$SendEvent')"; - $conn->Execute($sql); - - if(is_array($extra_headers)) - { - foreach ($extra_headers as $h) - { - $headers .= $h."\n"; + // $QueueOnly - {true = put in queue, false = nd now} + + $application =& kApplication::Instance(); + + $esender =& $application->recallObject('EmailSender'); + /* @var $esender kEmailSendingHelper */ + + $esender->SetFrom($From, $FromName); + $esender->AddTo($ToAddr, $ToName); + $esender->SetSubject($Subject); + $esender->SetBody(stripslashes($Html), $Text); + + // set additional headers + if (is_array($extra_headers)) { + foreach ($extra_headers as $header) { + $header = explode(':', $header, 2); + $esender->SetEncodedHeader(trim($header[0]), trim($header[1])); } } - - $msg .="This is a multi-part message in MIME format."."\n"."\n"; - if($HasFile) - { - //Messages start with text/html alternatives in OB - $headers.="Content-Type: multipart/mixed;"."\n"."\tboundary=\"".$OB."\""."\n"."\n"; - $msg.="--".$OB."\n"; - $msg.="Content-Type: multipart/alternative; boundary=\"$boundary\""."\n"."\n"."\n"; - } - else { - $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\""."\n"; - } - - $application =& kApplication::Instance(); - $db =& $application->GetADODBConnection(); - - if (!$Text) { - $Text = strip_tags($Html); - } - else { - $Text = strip_tags($Text); - } - - $msg .= "--" . $boundary . "\n"; - $msg .= "Content-Type: text/plain; charset=\"$charset\""."\n"; - $msg .= "Content-Transfer-Encoding: 8bit"."\n"."\n"; - $msg .= stripslashes($Text); - $msg .= "\n"."\n"; - - if(strlen($Html)>0) - { - $msg .= "--" . $boundary . "\n"; - $msg .= "Content-Type: text/html; charset=\"".$charset."\""."\n"; - $msg .= "Content-Transfer-Encoding: 8bit"."\n"."\n"; - $msg .= stripslashes($Html); - $msg .= "\n"."\n"; - } - $msg .= "--" . $boundary . "--"."\n"; - if($HasFile) - { - if(!strlen($FileLoc)) { + + // add attachment if any + if (strlen($FileName) > 0) { + if(!strlen($FileLoc)) { $FileLoc = $FileName; } - $FileName = basename($FileName); - $msg .= "\n"."--".$OB."\n"; - $msg.="Content-Type: application/octetstream;"."\n"."\tname=\"".$FileName."\""."\n"; - $msg.="Content-Transfer-Encoding: base64"."\n"; - $msg.="Content-Disposition: attachment;"."\n"."\tfilename=\"".$FileName."\""."\n"."\n"; + $esender->AddAttachment($FileLoc, basename($FileName)); + } - //file goes here - $fd=fopen ($FileLoc, "r"); - if($fd) - { - $FileContent=fread($fd,filesize($FileLoc)); - fclose ($fd); - } - $FileContent=chunk_split(base64_encode($FileContent)); - $msg .= $FileContent."\n"; - $msg .= "--".$OB."--"."\n"; - } - - if($this->MessagesSent>$this->MessagesAtOnce || $QueueOnly==1) - { - $this->EnqueueMail($ToAddr,$From,$Subject,$msg,$headers); - } - else - { - $this->DeliverMail($ToAddr,$From,$Subject,$msg,$headers); - } + $status = $esender->Deliver(); + + if ($status) { + // write to log + $fields_hash = Array ( + 'fromuser' => $FromName, + 'addressto' => $ToName ? $ToName.' ('.$ToAddr.')' : $ToAddr, + 'subject' => str_replace('Subject:', '', $Subject), + 'timestamp' => adodb_mktime(), + 'event' => $SendEvent, + ); + + $db =& $application->GetADODBConnection(); + $db->doInsert($fields_hash, TABLE_PREFIX.'EmailLog'); + } } } Index: branches/unlabeled/unlabeled-1.15.2/admin/email/do_send.php =================================================================== diff -u -N -r6103 -r7750 --- branches/unlabeled/unlabeled-1.15.2/admin/email/do_send.php (.../do_send.php) (revision 6103) +++ branches/unlabeled/unlabeled-1.15.2/admin/email/do_send.php (.../do_send.php) (revision 7750) @@ -69,15 +69,16 @@ $footer_body =& $footer[$is_html ? 'html' : 'plain']; if (is_null($footer_body)) { $application =& kApplication::Instance(); - $email_object =& $application->recallObject('kEmailMessage'); - $email_object->Clear(); + + $esender =& $application->recallObject('EmailSender'); + /* @var $esender kEmailSendingHelper */ $sql = 'SELECT em.Template FROM '.TABLE_PREFIX.'EmailMessage em LEFT JOIN '.TABLE_PREFIX.'Events e ON e.EventId = em.EventId WHERE em.LanguageId = '.$application->GetVar('m_lang').' AND e.Event = "COMMON.FOOTER"'; $footer_body = explode("\n\n", $application->Conn->GetOne($sql)); - $footer_body = "\r\n".($is_html ? '
'.$footer_body[1] : $email_object->convertHTMLtoPlain($footer_body[1])); + $footer_body = "\r\n".($is_html ? '
'.$footer_body[1] : $esender->ConvertToText($footer_body[1])); } return $footer_body; } Index: branches/unlabeled/unlabeled-1.16.2/core/units/general/inp1_parser.php =================================================================== diff -u -N -r6106 -r7750 --- branches/unlabeled/unlabeled-1.16.2/core/units/general/inp1_parser.php (.../inp1_parser.php) (revision 6106) +++ branches/unlabeled/unlabeled-1.16.2/core/units/general/inp1_parser.php (.../inp1_parser.php) (revision 7750) @@ -54,7 +54,7 @@ global $objTemplate, $CurrentTheme, $objThemes, $objLanguageCache, $var_list; if ($this->InpParsetInited) return true; - $theme_id = $this->Application->GetVar('m_theme'); + $theme_id = $this->Application->IsAdmin() ? 1 : $this->Application->GetVar('m_theme'); if ($theme_id) { $CurrentTheme = $objThemes->GetItem($theme_id); @@ -97,10 +97,9 @@ $pathchar, $objTemplate, $objTopicList, $objArticleList, $objPostingList, $objCensorList, $objSmileys, $objPMList, $SubscribeAddress, $SubscribeError, $SubscribeResult, $application; - $pathtoroot = $this->Application->IsAdmin() ? '../' : './'; - $pathtoroot = realpath($pathtoroot)."/"; + $pathtoroot = FULL_PATH.'/'; - if (!file_exists($pathtoroot."config.php")) { + if (!file_exists(FULL_PATH.'/config.php')) { echo "In-Portal is probably not installed, or configuration file is missing.
"; echo "Please use the installation script to fix the problem.

"; echo "Go to installation script

"; @@ -109,7 +108,7 @@ } //ob_start(); - $FrontEnd=1; + $FrontEnd = 1; $indexURL="../../index.php"; //Set to relative URL from the theme directory @@ -130,7 +129,7 @@ $_local_t = $k4_referer; $this->Application->RemoveVar('K4_Template_Referer'); } - $objSession->SetVariable('Template_Referer', $_local_t); + $objSession->SetVariable('Template_Referer', isset($_local_t) ? $_local_t : ''); } // process referer in session: end Index: branches/unlabeled/unlabeled-1.103.2/kernel/parser.php =================================================================== diff -u -N -r7392 -r7750 --- branches/unlabeled/unlabeled-1.103.2/kernel/parser.php (.../parser.php) (revision 7392) +++ branches/unlabeled/unlabeled-1.103.2/kernel/parser.php (.../parser.php) (revision 7750) @@ -19,6 +19,7 @@ $m_var_list["lang"] = $pieces[2]; $m_var_list["theme"] = $pieces[3]; $m_var_list['opener']=$pieces[4]; + $m_var_list['wid']=$pieces[5]; } else { @@ -27,13 +28,14 @@ $m_var_list["lang"] = $objLanguages->GetPrimary(); $m_var_list["theme"]= $objThemes->GetPrimaryTheme(); $m_var_list['opener']='s'; + $m_var_list['wid']=''; } } function m_BuildEnv() { global $m_var_list, $m_var_list_update; - $module_vars = Array('cat','p','lang','theme','opener'); + $module_vars = Array('cat','p','lang','theme','opener','wid'); $ret = GenerateModuleEnv('m', $module_vars); if( isset($GLOBALS['m_var_list_update']['cat']) ) unset($GLOBALS['m_var_list_update']['cat']); return $ret; @@ -43,7 +45,7 @@ { global $m_var_list, $m_var_list_update; $module_vars = Array( 'cat' => 'm_cat_id', 'p' => 'm_cat_page', 'lang' => 'm_lang', - 'theme' => 'm_theme', 'opener' => 'm_opener'); + 'theme' => 'm_theme', 'opener' => 'm_opener','wid' => 'm_wid'); $pass_cat = 0; if (isset($m_var_list_update['cat'])) { $pass_cat = 1; Index: branches/unlabeled/unlabeled-1.1.96/kernel/admin/include/toolbar/sendmail.php =================================================================== diff -u -N -r14 -r7750 --- branches/unlabeled/unlabeled-1.1.96/kernel/admin/include/toolbar/sendmail.php (.../sendmail.php) (revision 14) +++ branches/unlabeled/unlabeled-1.1.96/kernel/admin/include/toolbar/sendmail.php (.../sendmail.php) (revision 7750) @@ -6,44 +6,45 @@ $addrs = array(); $id_count=0; -switch($_POST["idtype"]) -{ - case "user": - $recip_ids = $_POST["idlist"]; - $idlist = explode(",",$recip_ids); - foreach($idlist as $id) - { - $u = $objUsers->GetItemByField("ResourceId",$id); - $r .= $u->Get("FirstName")." ".$u->Get("LastName"); - $r .="<".$u->Get("Email").">"; - $addr_list[] = $u->Get("Email"); - $reciplist[] = $r; - $r = ""; - } - $recip_ids = implode(",",$idlist); - break; - - case "group": - $recip_ids = $_POST["idlist"]; - $idlist = explode(",",$recip_ids); - foreach($idlist as $id) - { - $g = $objGroups->GetItem($id); - if(is_object($g)) - { - $reciplist[] .= "<".$g->Get("Name").">"; - $ulist = $g->GetUserList(); - foreach($ulist as $uid) - { - $u = $objUsers->GetItem($uid); - $addr_list[] = $u->Get("Email"); - } - } - } - $recip_ids = implode(",",$idlist); - break; +if (isset($_POST['idtype'])) { + switch ($_POST['idtype']) { + case "user": + $recip_ids = $_POST["idlist"]; + $idlist = explode(",",$recip_ids); + $r = ''; + foreach($idlist as $id) + { + $u = $objUsers->GetItemByField("ResourceId",$id); + $r .= $u->Get("FirstName")." ".$u->Get("LastName"); + $r .="<".$u->Get("Email").">"; + $addr_list[] = $u->Get("Email"); + $reciplist[] = $r; + $r = ""; + } + $recip_ids = implode(",",$idlist); + break; + + case "group": + $recip_ids = $_POST["idlist"]; + $idlist = explode(",",$recip_ids); + foreach($idlist as $id) + { + $g = $objGroups->GetItem($id); + if(is_object($g)) + { + $reciplist[] .= "<".$g->Get("Name").">"; + $ulist = $g->GetUserList(); + foreach($ulist as $uid) + { + $u = $objUsers->GetItem($uid); + $addr_list[] = $u->Get("Email"); + } + } + } + $recip_ids = implode(",",$idlist); + break; + } } - print << Index: branches/unlabeled/unlabeled-1.1.4/core/kernel/utility/email_send.php =================================================================== diff -u -N -r7748 -r7750 --- branches/unlabeled/unlabeled-1.1.4/core/kernel/utility/email_send.php (.../email_send.php) (revision 7748) +++ branches/unlabeled/unlabeled-1.1.4/core/kernel/utility/email_send.php (.../email_send.php) (revision 7750) @@ -1114,7 +1114,12 @@ $this->headers = Array (); $this->bodyPartNumber = false; $this->parts = Array(); - $this->guessOptions = Array (); + $this->guessOptions = Array ( + 'attachments' => Array(), + 'inline_attachments' => Array (), + 'text_part' => false, + 'html_part' => false, + ); $this->SetCharset(null, true); } Index: branches/unlabeled/unlabeled-1.170.2/core/kernel/application.php =================================================================== diff -u -N -r7748 -r7750 --- branches/unlabeled/unlabeled-1.170.2/core/kernel/application.php (.../application.php) (revision 7748) +++ branches/unlabeled/unlabeled-1.170.2/core/kernel/application.php (.../application.php) (revision 7750) @@ -2191,7 +2191,8 @@ */ function &EmailEventAdmin($email_event_name, $to_user_id = -1, $send_params = false) { - return $this->EmailEvent($email_event_name, 1, $to_user_id, $send_params); + $event =& $this->EmailEvent($email_event_name, 1, $to_user_id, $send_params); + return $event; } /** @@ -2204,7 +2205,8 @@ */ function &EmailEventUser($email_event_name, $to_user_id = -1, $send_params = false) { - return $this->EmailEvent($email_event_name, 0, $to_user_id, $send_params); + $event =& $this->EmailEvent($email_event_name, 0, $to_user_id, $send_params); + return $event; } /** Index: branches/unlabeled/unlabeled-1.90.2/kernel/include/parseditem.php =================================================================== diff -u -N -r6149 -r7750 --- branches/unlabeled/unlabeled-1.90.2/kernel/include/parseditem.php (.../parseditem.php) (revision 6149) +++ branches/unlabeled/unlabeled-1.90.2/kernel/include/parseditem.php (.../parseditem.php) (revision 7750) @@ -606,42 +606,24 @@ return $html; } + /** + * Sends EmailEvent to user + * + * @param string $EventName email event name + * @param mixed $ToUserId recipient's user_id or email address + * @param int $LangId language_id (not in use) + * @param string $RecptName recipient's name (only when ID not passed) + * @return kEvent + */ function SendUserEventMail($EventName,$ToUserId,$LangId=NULL,$RecptName=NULL) { - global $objMessageList,$FrontEnd; - - $Event =& $objMessageList->GetEmailEventObject($EventName,0,$LangId); - - if(is_object($Event)) - { - if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd)) - { - $Event->Item = $this; - if(is_numeric($ToUserId)) - { - return $Event->SendToUser($ToUserId); - } - else - return $Event->SendToAddress($ToUserId,$RecptName); - } - } + $send_params = is_numeric($ToUserId) ? Array() : Array ('to_email' => $ToUserId, 'to_name' => $RecptName); + return $this->Application->EmailEventUser($EventName, $ToUserId, $send_params); } function SendAdminEventMail($EventName,$LangId=NULL) { - global $objMessageList,$FrontEnd; - - //echo "Firing Admin Event $EventName
\n"; - $Event =& $objMessageList->GetEmailEventObject($EventName,1,$LangId); - if(is_object($Event)) - { - if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd)) - { - $Event->Item = $this; - //echo "Admin Event $EventName Enabled
\n"; - return $Event->SendAdmin($ToUserId); - } - } + return $this->Application->EmailEventAdmin($EventName); } function parse_template($t)