public static function send(WT_Tree $tree, $to_email, $to_name, $replyto_email, $replyto_name, $subject, $message) { try { $mail = new Zend_Mail('UTF-8'); $mail->setSubject($subject)->setBodyHtml($message)->setBodyText(WT_Filter::unescapeHtml($message))->setFrom(WT_Site::getPreference('SMTP_FROM_NAME'), $tree->preference('title'))->addTo($to_email, $to_name)->setReplyTo($replyto_email, $replyto_name)->send(WT_Mail::transport()); } catch (Exception $ex) { Log::addErrorLog('Mail: ' . $ex->getMessage()); return false; } return true; }
$fmt_msg .= "{$i} called from "; $log_msg .= "\n{$i} called from "; } if (isset($backtrace[$i]["line"]) && isset($backtrace[$i]["file"])) { $fmt_msg .= "line <b>{$backtrace[$i]['line']}</b> of file <b>" . basename($backtrace[$i]['file']) . "</b>"; $log_msg .= "line {$backtrace[$i]['line']} of file " . basename($backtrace[$i]['file']); } if ($i < $num - 1) { $fmt_msg .= " in function <b>" . $backtrace[$i + 1]['function'] . "</b>"; $log_msg .= " in function " . $backtrace[$i + 1]['function']; } $fmt_msg .= "<br>"; } } echo $fmt_msg; Log::addErrorLog($log_msg); if ($errno == 1) { die; } } return false; }); // Load our configuration file, so we can connect to the database if (file_exists(WT_ROOT . 'data/config.ini.php')) { $dbconfig = parse_ini_file(WT_ROOT . 'data/config.ini.php'); // Invalid/unreadable config file? if (!is_array($dbconfig)) { header('Location: ' . WT_SERVER_NAME . WT_SCRIPT_PATH . 'site-unavailable.php'); exit; } // Down for maintenance?
/** * If the Facebook username or email is associated with an account, login to it. Otherwise, register a new account. * * @param object $facebookUser Facebook user * @param string $url (optional) URL to redirect to afterwards. */ private function login_or_register(&$facebookUser, $url = '') { $REQUIRE_ADMIN_AUTH_REGISTRATION = WT_Site::getPreference('REQUIRE_ADMIN_AUTH_REGISTRATION'); if ($this->getSetting('require_verified', 1) && empty($facebookUser->verified)) { $this->error_page(WT_I18N::translate('Only verified Facebook accounts are authorized. Please verify your account on Facebook and then try again')); } if (empty($facebookUser->username)) { $facebookUser->username = $facebookUser->id; } $user_id = $this->get_user_id_from_facebook_username($facebookUser->username); if (!$user_id) { if (!isset($facebookUser->email)) { $this->error_page(WT_I18N::translate('You must grant access to your email address via Facebook in order to use this website. Please uninstall the application on Facebook and try again.')); } $user = User::findByIdentifier($facebookUser->email); if ($user) { $user_id = $user->getUserId(); } } if ($user_id) { // This is an existing user so log them in if they are approved $login_result = $this->login($user_id); $message = ''; switch ($login_result) { case -1: // not validated $message = WT_I18N::translate('This account has not been verified. Please check your email for a verification message.'); break; case -2: // not approved $message = WT_I18N::translate('This account has not been approved. Please wait for an administrator to approve it.'); break; default: $user = User::find($user_id); $user->setPreference(self::user_setting_facebook_username, $this->cleanseFacebookUsername($facebookUser->username)); // redirect to the homepage/$url header('Location: ' . WT_SCRIPT_PATH . $url); return; } $this->error_page($message); } else { // This is a new Facebook user who may or may not already have a manual account if (!WT_Site::getPreference('USE_REGISTRATION_MODULE')) { $this->error_page('<p>' . WT_I18N::translate('The administrator has disabled registrations.') . '</p>'); } // check if the username is already in use $username = $this->cleanseFacebookUsername($facebookUser->username); $wt_username = substr($username, 0, 32); // Truncate the username to 32 characters to match the DB. if (User::findByIdentifier($wt_username)) { // fallback to email as username since we checked above that a user with the email didn't exist. $wt_username = $facebookUser->email; $wt_username = substr($wt_username, 0, 32); // Truncate the username to 32 characters to match the DB. } // Generate a random password since the user shouldn't need it and can always reset it. $password = md5(uniqid(rand(), TRUE)); $hashcode = md5(uniqid(rand(), true)); $preApproved = unserialize($this->getSetting('preapproved')); // From login.php: Log::addAuthenticationLog('User registration requested for: ' . $wt_username); if ($user = User::create($wt_username, $facebookUser->name, $facebookUser->email, $password)) { $verifiedByAdmin = !$REQUIRE_ADMIN_AUTH_REGISTRATION || isset($preApproved[$username]); $user->setPreference(self::user_setting_facebook_username, $this->cleanseFacebookUsername($facebookUser->username))->setPreference('language', WT_LOCALE)->setPreference('verified', '1')->setPreference('verified_by_admin', $verifiedByAdmin ? '1' : '0')->setPreference('reg_timestamp', date('U'))->setPreference('reg_hashcode', $hashcode)->setPreference('contactmethod', 'messaging2')->setPreference('visibleonline', '1')->setPreference('editaccount', '1')->setPreference('auto_accept', '0')->setPreference('canadmin', '0')->setPreference('sessiontime', $verifiedByAdmin ? WT_TIMESTAMP : '0')->setPreference('comment', @$facebookUser->birthday . "\n " . "https://www.facebook.com/" . $this->cleanseFacebookUsername($facebookUser->username)); // Apply pre-approval settings if (isset($preApproved[$username])) { $userSettings = $preApproved[$username]; foreach ($userSettings as $gedcom => $userGedcomSettings) { foreach (array('gedcomid', 'rootid', 'canedit') as $userPref) { if (empty($userGedcomSettings[$userPref])) { continue; } // Use a direct DB query instead of $tree->setUserPreference since we // can't get a reference to the WT_Tree since it checks permissions but // we are trying to give the permissions. WT_DB::prepare("REPLACE INTO `##user_gedcom_setting` (user_id, gedcom_id, setting_name, setting_value) VALUES (?, ?, ?, LEFT(?, 255))")->execute(array($user->getUserId(), $gedcom, $userPref, $userGedcomSettings[$userPref])); } } // Remove the pre-approval record unset($preApproved[$username]); $this->setSetting('preapproved', serialize($preApproved)); } // We need jQuery below global $controller; $controller = new WT_Controller_Page(); $controller->setPageTitle($this->getTitle())->pageHeader(); echo '<form id="verify-form" name="verify-form" method="post" action="', WT_LOGIN_URL, '" class="ui-autocomplete-loading" style="width:16px;height:16px;padding:0">'; echo $this->hidden_input("action", "verify_hash"); echo $this->hidden_input("user_name", $wt_username); echo $this->hidden_input("user_password", $password); echo $this->hidden_input("user_hashcode", $hashcode); echo WT_Filter::getCsrf(); echo '</form>'; if ($verifiedByAdmin) { $controller->addInlineJavaScript(' function verify_hash_success() { // now the account is approved but not logged in. Now actually login for the user. window.location = "' . $this->getConnectURL($url) . '"; } function verify_hash_failure() { alert("' . WT_I18N::translate("There was an error verifying your account. Contact the site administrator if you are unable to access the site.") . '"); window.location = "' . WT_SCRIPT_PATH . '"; } $(document).ready(function() { $.post("' . WT_LOGIN_URL . '", $("#verify-form").serialize(), verify_hash_success).fail(verify_hash_failure); }); '); } else { echo '<script>document.getElementById("verify-form").submit()</script>'; } } else { Log::addErrorLog("Facebook: Couldn't create the user account"); $this->error_page('<p>' . WT_I18N::translate('Unable to create your account. Please try again.') . '</p>' . '<div class="back"><a href="javascript:history.back()">' . WT_I18N::translate('Back') . '</a></div>'); } } }
function imagettftextErrorHandler($errno, $errstr, $errfile, $errline) { global $useTTF, $serverFilename; // log the error Log::addErrorLog("Media Firewall error: >" . $errstr . "< in file >" . $serverFilename . "<"); // change value of useTTF to false so the fallback watermarking can be used. $useTTF = false; return true; }
} } } $i = 0; foreach ($toarray as $indexval => $to) { $message = array(); $message['to'] = $to; $message['from'] = $from; if (!empty($from_name)) { $message['from_name'] = $from_name; $message['from_email'] = $from_email; } $message['subject'] = $subject; $message['body'] = $body; $message['created'] = WT_TIMESTAMP; $message['method'] = $method; $message['url'] = $url; if ($i > 0) { $message['no_from'] = true; } if (addMessage($message)) { WT_FlashMessages::addMessage(WT_I18N::translate('Message successfully sent to %s', WT_Filter::escapeHtml($to))); } else { WT_FlashMessages::addMessage(WT_I18N::translate('Message was not sent')); Log::addErrorLog('Unable to send message. FROM:' . $from . ' TO:' . $to . ' (failed to send)'); } $i++; } $controller->pageHeader()->addInlineJavascript('window.opener.location.reload(); window.close();'); break; }