00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00057 require_once(PATH_tslib.'class.tslib_pibase.php');
00065 class tx_tipafriend extends tslib_pibase {
00066
00067 var $cObj;
00068
00076 function main_tipafriend($content,$conf) {
00077 $this->conf = $conf;
00078 $this->config['code'] = $this->cObj->stdWrap($this->conf['code'],$this->conf['code.']);
00079
00080
00081 $this->templateCode = $this->cObj->fileResource($this->conf['templateFile']);
00082
00083
00084 $splitMark = md5(microtime());
00085 $globalMarkerArray=array();
00086 list($globalMarkerArray['###GW1B###'],$globalMarkerArray['###GW1E###']) = explode($splitMark,$this->cObj->stdWrap($splitMark,$conf['wrap1.']));
00087 list($globalMarkerArray['###GW2B###'],$globalMarkerArray['###GW2E###']) = explode($splitMark,$this->cObj->stdWrap($splitMark,$conf['wrap2.']));
00088 $globalMarkerArray['###GC1###'] = $this->cObj->stdWrap($conf['color1'],$conf['color1.']);
00089 $globalMarkerArray['###GC2###'] = $this->cObj->stdWrap($conf['color2'],$conf['color2.']);
00090 $globalMarkerArray['###GC3###'] = $this->cObj->stdWrap($conf['color3'],$conf['color3.']);
00091
00092
00093 $this->templateCode= $this->cObj->substituteMarkerArray($this->templateCode, $globalMarkerArray);
00094
00095
00096 $this->typolink_conf = $this->conf['typolink.'];
00097 $this->typolink_conf['additionalParams'] = $this->cObj->stdWrap($this->typolink_conf['additionalParams'],$this->typolink_conf['additionalParams.']);
00098 unset($this->typolink_conf['additionalParams.']);
00099
00100 $codes=t3lib_div::trimExplode(',', $this->config['code']?$this->config['code']:$this->conf['defaultCode'],1);
00101 if (!count($codes)) $codes=array('');
00102 while(list(,$theCode)=each($codes)) {
00103 $theCode = (string)strtoupper(trim($theCode));
00104 $this->theCode = $theCode;
00105 switch($theCode) {
00106 case 'TIPFORM':
00107 $content=$this->tipform();
00108 break;
00109 case 'TIPLINK':
00110 $content=$this->tiplink();
00111 break;
00112 default:
00113 $langKey = strtoupper($GLOBALS['TSFE']->config['config']['language']);
00114 $helpTemplate = $this->cObj->fileResource('EXT:tipafriend/pi/tipafriend_help.tmpl');
00115
00116
00117 $helpTemplate_lang='';
00118 if ($langKey) {$helpTemplate_lang = $this->cObj->getSubpart($helpTemplate,'###TEMPLATE_'.$langKey.'###');}
00119 $helpTemplate = $helpTemplate_lang ? $helpTemplate_lang : $this->cObj->getSubpart($helpTemplate,'###TEMPLATE_DEFAULT###');
00120
00121
00122 $markerArray['###CODE###'] = $this->theCode;
00123 $content.=$this->cObj->substituteMarkerArray($helpTemplate,$markerArray);
00124 break;
00125 }
00126 }
00127 return $content;
00128 }
00129
00135 function tipform() {
00136 $GLOBALS['TSFE']->set_no_cache();
00137
00138 $tipData = t3lib_div::_GP('TIPFORM');
00139 $tipData['recipient'] = $this->getRecipients($tipData['recipient']);
00140 list($tipData['email']) = explode(',',$this->getRecipients($tipData['email']));
00141 $url = t3lib_div::_GP('tipUrl');
00142
00143
00144 $wrappedSubpartArray=array();
00145 $subpartArray=array();
00146
00147 $markerArray=array();
00148 $markerArray['###FORM_URL###']=t3lib_div::getIndpEnv('REQUEST_URI');
00149 $markerArray['###URL###']=$url;
00150 $markerArray['###URL_ENCODED###']=rawurlencode($url);
00151 $markerArray['###URL_SPECIALCHARS###']=htmlspecialchars($url);
00152
00153 $wrappedSubpartArray['###LINK###']=array('<a href="'.htmlspecialchars($url).'">','</a>');
00154
00155
00156 $error=0;
00157 $sent=0;
00158 if (t3lib_div::_GP('sendTip')) {
00159 if ($this->validate($tipData)) {
00160 $this->sendTip($tipData,$url);
00161 $sent=1;
00162 } else {
00163 $error=1;
00164 }
00165 }
00166
00167
00168 if ($sent) {
00169 $subpart = $this->cObj->getSubpart($this->templateCode,'###TEMPLATE_TIPFORM_SENT###');
00170
00171 $markerArray['###RECIPIENT###']=htmlspecialchars($tipData['recipient']);
00172
00173 $content= $this->cObj->substituteMarkerArrayCached($subpart,$markerArray,$subpartArray,$wrappedSubpartArray);
00174 } else {
00175 $subpart = $this->cObj->getSubpart($this->templateCode,'###TEMPLATE_TIPFORM###');
00176
00177 $markerArray['###MESSAGE###']=htmlspecialchars($tipData['message']);
00178 $markerArray['###RECIPIENT###']=htmlspecialchars($tipData['recipient']);
00179 $markerArray['###YOUR_EMAIL###']=htmlspecialchars($tipData['email']);
00180 $markerArray['###YOUR_NAME###']=htmlspecialchars($tipData['name']);
00181 $markerArray['###HTML_MESSAGE###']=$tipData['html_message'] ? 'checked' : '';
00182
00183 if (!$error) {
00184 $subpartArray['###ERROR_MSG###']='';
00185 }
00186
00187
00188
00189
00190 $content= $this->cObj->substituteMarkerArrayCached($subpart,$markerArray,$subpartArray,$wrappedSubpartArray);
00191 }
00192 return $content;
00193 }
00194
00201 function validate($tipData) {
00202 if (
00203 trim($tipData['name']) &&
00204 $tipData['email'] &&
00205 $tipData['recipient']
00206 ) {
00207 return 1;
00208 }
00209 }
00210
00217 function getRecipients($emails) {
00218 $emailArr = split('[, ;]',$emails);
00219 reset($emailArr);
00220 $listArr=array();
00221 while(list(,$email)=each($emailArr)) {
00222 $email = trim($email);
00223 if ($email && t3lib_div::validEmail($email)) {
00224 $listArr[] = $email;
00225 }
00226 }
00227 return implode(',',$listArr);
00228 }
00229
00237 function sendTip($tipData,$url) {
00238
00239 $subpart = $this->cObj->getSubpart($this->templateCode,'###TEMPLATE_EMAIL###');
00240
00241
00242 $markerArray['###MESSAGE###']=htmlspecialchars($tipData['message']);
00243 $markerArray['###RECIPIENT###']=htmlspecialchars($tipData['recipient']);
00244 $markerArray['###YOUR_EMAIL###']=htmlspecialchars($tipData['email']);
00245 $markerArray['###YOUR_NAME###']=htmlspecialchars($tipData['name']);
00246 $markerArray['###URL###']=$url;
00247
00248
00249 $content= $this->cObj->substituteMarkerArrayCached($subpart,$markerArray,$subpartArray,$wrappedSubpartArray);
00250
00251
00252 $headers=array();
00253 $headers[]='FROM: '.$tipData['name'].' <'.$tipData['email'].'>';
00254 list($subject,$plain_message) = explode(chr(10),trim($content),2);
00255
00256
00257
00258 $cls=t3lib_div::makeInstanceClassName('t3lib_htmlmail');
00259
00260 if (class_exists($cls) && $this->conf['htmlmail'] && $tipData['html_message']) {
00261 $Typo3_htmlmail = t3lib_div::makeInstance('t3lib_htmlmail');
00262 $Typo3_htmlmail->start();
00263 $Typo3_htmlmail->useBase64();
00264
00265 $Typo3_htmlmail->subject = $subject;
00266 $Typo3_htmlmail->from_email = $tipData['email'];
00267 $Typo3_htmlmail->from_name = $tipData['name'];
00268 $Typo3_htmlmail->replyto_email = $tipData['email'];
00269 $Typo3_htmlmail->replyto_name = $tipData['name'];
00270 $Typo3_htmlmail->organisation = '';
00271 $Typo3_htmlmail->priority = 3;
00272
00273
00274
00275
00276 $Typo3_htmlmail->addHTML($url);
00277 $Typo3_htmlmail->addPlain($plain_message);
00278
00279 $Typo3_htmlmail->setHeaders();
00280 $Typo3_htmlmail->setContent();
00281 $Typo3_htmlmail->setRecipient($tipData['recipient']);
00282
00283
00284 $Typo3_htmlmail->sendtheMail();
00285 } else {
00286
00287 # $GLOBALS['TSFE']->plainMailEncoded(, $subject, , implode($headers,chr(10)));
00288 $this->cObj->sendNotifyEmail($plain_message, $tipData['recipient'], '', $tipData['email'], $tipData['name']);
00289 }
00290 }
00291
00297 function tiplink() {
00298 $url=t3lib_div::getIndpEnv('TYPO3_REQUEST_URL');
00299
00300 $subpart = $this->cObj->getSubpart($this->templateCode,'###TEMPLATE_TIPLINK###');
00301
00302 $wrappedSubpartArray=array();
00303 $tConf = $this->typolink_conf;
00304 $tConf['additionalParams'].= '&tipUrl='.rawurlencode($url);
00305
00306 $wrappedSubpartArray['###LINK###']= $this->cObj->typolinkWrap($tConf);
00307
00308 $markerArray=array();
00309 $markerArray['###URL###']=$url;
00310 $markerArray['###URL_ENCODED###']=rawurlencode($url);
00311 $markerArray['###URL_SPECIALCHARS###']=htmlspecialchars($url);
00312
00313
00314 $content= $this->cObj->substituteMarkerArrayCached($subpart,$markerArray,array(),$wrappedSubpartArray);
00315 return $content;
00316 }
00317 }
00318
00319
00320 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/tipafriend/pi/class.tx_tipafriend.php']) {
00321 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/tipafriend/pi/class.tx_tipafriend.php']);
00322 }
00323 ?>