Пример #1
0
 /**
  * Generate a password reset token and email a link to the user.
  *
  * @return string Standard JSON envelope
  */
 public function passwordRequest()
 {
     if (!isset($_POST['email'])) {
         return $this->error('No email address provided.', false);
     }
     $email = $_POST['email'];
     if ($email == $this->config->user->email) {
         $token = md5(rand(10000, 100000));
         $tokenUrl = sprintf('%s://%s/manage/password/reset/%s', $this->utility->getProtocol(false), $_SERVER['HTTP_HOST'], $token);
         $this->user->setAttribute('passwordToken', $token);
         $templateObj = getTemplate();
         $template = sprintf('%s/email/password-reset.php', $this->config->paths->templates);
         $body = $this->template->get($template, array('tokenUrl' => $tokenUrl));
         $emailer = new Emailer();
         $emailer->setRecipients(array($this->config->user->email));
         $emailer->setSubject('Trovebox password reset request');
         $emailer->setBody($body);
         $result = $emailer->send();
         if ($result > 0) {
             return $this->success('An email was sent to reset the password.', true);
         } else {
             $this->logger->info('Unable to send email. Confirm that your email settings are correct and the email addresses are valid.');
             return $this->error('We were unable to send a password reset email.', false);
         }
     }
     return $this->error('The email address provided does not match the registered email for this site.', false);
 }
 {
     $ret = $this->student->validate();
     if (!$ret) {
         $this->addErrors($this->student->getErrors());
     }
 }
 public function save()
 {
     //start a transaction
     $transaction = Yii::app()->db->beginTransaction();
     try {
         if ($this->user->isNewRecord) {
             $this->user->is_verified = 0;
             $verification = new UserVerification();
         }
         //try to save the data to db
         $ret = parent::save();
         if ($ret) {
             $ret = $this->student->save(true, null, $this->user);
             if (isset($verification)) {
                 Yii::log("Verification is set");
                 $verification->user_id = $this->user->user_id;
                 $this->hash = $verification->generateHash();
                 if (!$verification->save()) {
                     throw new Exception();
                 }
                 if (!Emailer::emailStudentActivation($this->user, $this->hash)) {
                     throw new Exception();
                 }
             }
         }
         $transaction->commit();
         //Yii::app()->user->setFlash('success',sprintf(Constants::SUCCESS_SURVEY_SUBMITTED,$model->getSurvey()->title));
         return $ret;
     } catch (Exception $e) {
Пример #3
0
 public function action_create()
 {
     if (Input::has('email') && Input::has('password') && Input::has('email2') && Input::has('password2')) {
         if (Input::get('email') == Input::get('email2') && Input::get('password') == Input::get('password2')) {
             $size = Account::where_email(Input::get('email'));
             if ($size->count() == 0) {
                 $email = Input::get('email');
                 $password = Hash::make(Input::get('password'));
                 $account = new Account();
                 $account->email = $email;
                 $account->password = $password;
                 $account->save();
                 Emailer::signUpConfirmation($email);
                 echo "Signup successful, please check your email for confirmation or login using the login bar";
                 // return Redirect::to('/');
             } else {
                 echo "That email is already registered.";
             }
         } else {
             if (Input::get('email') != Input::get('email2')) {
                 echo "Emails do not match.";
             }
             if (Input::get('password') != Input::get('password2')) {
                 echo "Passwords do not match.";
             }
         }
     } else {
         echo 'Error: Invalid input.';
     }
 }
Пример #4
0
 function sendEmail($send = true)
 {
     $emailer = new Emailer();
     $message = $this->getString();
     $emailer->setMessage($message);
     $emailer->setSubject($this->subject);
     $emailer->setSender("*****@*****.**");
     $emailer->addRecipients($this->recipient);
     $emailer->addRecipients($this->bccrecipients, 1, "bcc");
     $emailer->addRecipients($this->ccrecipients, 1, "cc");
     if ($send) {
         $emailer->send();
     } else {
         $emailString = $emailer->getString();
         print $emailString;
     }
 }
Пример #5
0
 /**
  * Default action.
  *
  * Will be called either by `yiic testmail index` or just by `yiic testmail`.
  */
 public function actionIndex()
 {
     $config = (require ROOT_DIR . '/common/config/main.php');
     $mail = Emailer::test(array('to' => '*****@*****.**', 'from' => Yii::app()->params['mbtx']['registrationEmail'], 'subject' => 'test subject', 'body' => 'test body', 'view' => 'test'));
     $mail->send();
     Yii::app()->language = 'es_mx';
     // default to spanish / mexico
     $mail = Emailer::test(array('to' => '*****@*****.**', 'from' => Yii::app()->params['mbtx']['registrationEmail'], 'subject' => 'test subject', 'body' => 'test body', 'view' => 'test'));
     $mail->send();
 }
Пример #6
0
 public function send($type, $data)
 {
     getAuthentication()->requireAuthentication();
     getAuthentication()->requireCrumb();
     $email = $this->session->get('email');
     if (empty($email) || empty($_POST['message']) || empty($_POST['recipients'])) {
         return $this->error('Not all parameters were passed in', false);
     }
     $emailer = new Emailer($email);
     $emailer->setRecipients(array_merge(array($email), (array) explode(',', $_POST['recipients'])));
     if ($type === 'photo') {
         $status = $this->sendPhotoEmail($data, $emailer);
     } else {
         $status = $this->sendAlbumEmail($data, $emailer);
     }
     if (!$status) {
         return $this->error('Could not complete request', false);
     }
     return $this->success('yes', array('data' => $data, 'post' => $_POST));
 }
Пример #7
0
 public function sendReminder(array $data, \DateTime $date, $occasion)
 {
     $recipients = $this->db->get('recipients');
     $emailer = new Emailer();
     $subject = ucfirst($data['occasion']) . ' Reminder';
     $templateName = $occasion === 'week' ? 'weekBeforeReminder' : 'todayReminder';
     $gmTemplateName = $occasion === 'week' ? 'gmWeekReminder' : 'gmTodayReminder';
     $data['date'] = $data['hebrew'] ? new HebrewDate($date) : $date->format('M d, Y');
     $data['hebrew'] = $data['hebrew'] ? 'hebrew' : 'english';
     try {
         $emailer->prepare($templateName, $data);
         foreach ($recipients as $recipient) {
             $emailer->send($recipient['email'], $subject);
         }
     } catch (Exception $e) {
         echo $e->getMessage();
     }
     try {
         $this->gm->prepareMessage($gmTemplateName)->sendMessage($data);
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
Пример #8
0
 static function perform()
 {
     $db = new Database();
     $rows = $db->executeQuery("SELECT * FROM MailQueue WHERE sent = 0");
     if (is_array($rows) && count($rows) > 0) {
         foreach ($rows as $data) {
             $result = Emailer::send([$data['senderEmail'] => $data['senderName']], [$data['receiverEmail']], $data['subject'], $data['body']);
             if ($result) {
                 $params = ['id' => $data['id'], 'sent' => 1, 'now' => date('Y-m-d H:i:s')];
                 $r = $db->executeUpdate("UPDATE MailQueue SET sentAt=:now, sent=:sent WHERE id = :id", $params);
                 if ($r) {
                     print "[{$data['subject']}] Email sent to: " . $data['receiverEmail'] . PHP_EOL;
                 } else {
                     print "[{$data['subject']}] Failed to send email for: " . $data['receiverEmail'] . PHP_EOL;
                 }
             }
         }
     }
 }
Пример #9
0
function send_reminder($person)
{
    global $ini;
    $toEmail = $person['email'];
    if (!empty($ini['OVERRIDE_RECIPIENT'])) {
        $toEmail = $ini['OVERRIDE_RECIPIENT'];
    }
    if (!strlen($person['email'])) {
        if (!empty($ini['VERBOSE'])) {
            echo $person['first_name'] . ' ' . $person['last_name'] . " has no email address - skipping \n";
        }
        return;
    }
    $content = replace_keywords($ini['EMAIL_BODY'], $person);
    $html = nl2br($content);
    $message = Emailer::newMessage()->setSubject(replace_keywords($ini['SUBJECT'], $person))->setFrom(array($ini['FROM_ADDRESS'] => $ini['FROM_NAME']))->setTo(array($toEmail => $person['first_name'] . ' ' . $person['last_name']))->setBody($content)->addPart($html, 'text/html');
    if (!empty($person['cc'])) {
        $cc_names = explode(';', $person['cc_name']);
        foreach (explode(';', $person['cc']) as $i => $cc) {
            if (!empty($ini['OVERRIDE_RECIPIENT'])) {
                $message->addCC($ini['OVERRIDE_RECIPIENT'], $cc_names[$i]);
            } else {
                $message->addCC($cc, $cc_names[$i]);
            }
        }
    }
    $res = Emailer::send($message);
    if (!$res) {
        echo "Failed to send to {$toEmail} \n";
    } else {
        if (!empty($ini['VERBOSE'])) {
            echo "Sent reminder to " . $person['first_name'] . ' ' . $person['last_name'];
            if (!empty($person['cc'])) {
                echo " CC to " . $person['cc'];
            }
            echo "\n";
        }
    }
}
Пример #10
0
define('SITE_ROOT', './');
require_once SITE_ROOT . 'includes/common.php';
securePage('none');
$tpl_main_file = 'login_framework.tpl';
$tpl =& new TemplateSystem();
if (isset($_POST['btnSubmit'])) {
    if ($_POST['email'] != '') {
        $method = 'email';
        $value = $_POST['email'];
    } elseif ($_POST['username'] != '') {
        $method = 'username';
        $value = $_POST['username'];
    }
    $client = $ISL->recoverPassword($method, $value);
    if (is_array($client)) {
        $e = new Emailer();
        $e->setMainFile('forms/email_forgotpass.tpl');
        $e->setFrom($SYSTEM['email']['from']);
        $e->setFromName($SYSTEM['email']['fromName']);
        $e->setSubject($lang['eml_subj_forgotpass']);
        $e->set('client', $client);
        $e->fetchMessage();
        $e->setRecipient($client['email']);
        $e->setPriority('High');
        $e->send();
        unset($e);
    } else {
        trigger_error($lang['no_client_found'], E_USER_WARNING);
        die;
    }
    $tpl->set('tbody', 'forgotpass_sent.tpl');
Пример #11
0
 /**
  * eventSendWelcomeEmail
  * Send a welcome email to the newly registered user and also send
  * an alert to the administrator.
  * Emails are created from templates stored in the emailtemplate table.
  */
 function eventSendWelcomeEmail(EventControler $eventControler)
 {
     $emailFieldName = $this->getEmailField();
     $fields = $eventControler->fields;
     $emailto = $fields[$emailFieldName];
     $email_admin = $eventControler->email_admin;
     if (strlen($eventControler->emailtemplate_registration_admin) > 0) {
         $emailtemplate_registration_admin = $eventControler->emailtemplate_registration_admin;
     } elseif (!empty($emailtemplate['registration_admin'])) {
         $emailtemplate_registration_admin = $emailtemplate['registration_admin'];
     }
     if (strlen($eventControler->emailtemplate_registration) > 0) {
         $emailtemplate_registration = $eventControler->emailtemplate_registration;
     } else {
         $emailtemplate_registration = $emailtemplate['registration'];
     }
     if ($eventControler->doSave == "yes") {
         $email = new Emailer();
         $email->loadEmailer($this->getDbCon(), $emailtemplate_registration);
         $email->mergeArray($fields);
         if ($email->hasHtml) {
             $email->sendMailHtml($emailto);
         } else {
             $email->sendMailStandard($emailto);
         }
         // send an alert email to the administrator
         if (strlen($emailtemplate_registration_admin) > 0 && !empty($email_admin)) {
             $emailadmin = new Emailer();
             $emailadmin->loadEmailer($this->getDbCon(), $emailtemplate_registration_admin);
             $emailadmin->mergeArray($fields);
             if ($emailadmin->hasHtml()) {
                 $emailadmin->sendMailHtml($email_admin);
             } else {
                 $emailadmin->sendMailStandard($email_admin);
             }
         }
     }
 }
Пример #12
0
 private function sendRegistrationEmail($user)
 {
     if (!isset($user->email)) {
         throw new CException(Yii::t('translations', 'Email is not set when trying to send Registration Email'));
     }
     $activation_url = $user->getActivationUrl();
     $mail = Emailer::activateUserEmail(array('to' => $user->email, 'from' => Yii::app()->params['mbtx']['registrationEmail'], 'subject' => Yii::t('translation', $this->textActivationSubject, array('{username}' => $user->email)), 'body' => Yii::t('translation', $this->textActivationBody, array('activation_url' => $activation_url)), 'activation_url' => $activation_url, 'view' => 'signup'));
     $sent = $mail->send();
     if ($sent['status']) {
         Yii::app()->user->setFlash('contact', Yii::t('translation', 'Confirmation email sent to {email}.', array('{email}' => $user->email)));
         $adminmail = Emailer::newSignupEmail();
         $sent = $adminmail->send();
     } else {
         Yii::app()->user->setFlash('error', Yii::t('translation', 'Error while sending email: ' . $sent['error']));
     }
 }
Пример #13
0
 public function tat_recover($check_email)
 {
     // Creates a random number between 0 and mt_getrandmax()
     $secure_token = mt_rand();
     echo $this->url . $this->reset_url . '?user='******'&token=' . $secure_token;
     try {
         $stmt = $this->db->prepare("SELECT * FROM tat_user WHERE Email=:email LIMIT 1");
         $stmt->execute(array(':email' => $check_email));
         $userRow = $stmt->fetch(PDO::FETCH_ASSOC);
         if ($stmt->rowCount() > 0) {
             // Add random token to user table
             $add_user_token = $this->db->prepare("UPDATE tat_user SET Token = {$secure_token} WHERE Email=:email");
             $add_user_token->execute(array(':email' => $check_email));
             // Generate temp password, create email, and send email message
             $length = 10;
             $tmp_pass = random_str($length);
             $import = new Emailer();
             $import->sendRecoverEmail($check_email, $tmp_pass);
             return true;
         }
     } catch (PDOException $e) {
         echo $e->getMessage();
     }
 }
Пример #14
0
/**
 * @param App $a
 * @param object $b
 */
function dav_cron(&$a, &$b)
{
    dav_include_files();
    $r = q("SELECT * FROM %s%snotifications WHERE `notified` = 0 AND `alert_date` <= NOW()", CALDAV_SQL_DB, CALDAV_SQL_PREFIX);
    if (is_array($r)) {
        foreach ($r as $not) {
            q("UPDATE %s%snotifications SET `notified` = 1 WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["id"]);
            $event = q("SELECT * FROM %s%sjqcalendar WHERE `calendarobject_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendarobject_id"]);
            $calendar = q("SELECT * FROM %s%scalendars WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendar_id"]);
            $users = array();
            if (count($calendar) != 1 || count($event) == 0) {
                continue;
            }
            switch ($calendar[0]["namespace"]) {
                case CALDAV_NAMESPACE_PRIVATE:
                    $user = q("SELECT * FROM user WHERE `uid` = %d AND `blocked` = 0", $calendar[0]["namespace_id"]);
                    if (count($user) != 1) {
                        continue;
                    }
                    $users[] = $user[0];
                    break;
            }
            switch ($not["action"]) {
                case "email":
                case "display":
                    // @TODO implement "Display"
                    foreach ($users as $user) {
                        $find = array("%to%", "%event%", "%url%");
                        $repl = array($user["username"], $event[0]["Summary"], $a->get_baseurl() . "/dav/wdcal/" . $calendar[0]["id"] . "/" . $not["calendarobject_id"] . "/");
                        $text_text = str_replace($find, $repl, "Hi %to%!\n\nThe event \"%event%\" is about to begin:\n%url%");
                        $text_html = str_replace($find, $repl, "Hi %to%!<br>\n<br>\nThe event \"%event%\" is about to begin:<br>\n<a href='" . "%url%" . "'>%url%</a>");
                        $params = array('fromName' => FRIENDICA_PLATFORM, 'fromEmail' => t('noreply') . '@' . $a->get_hostname(), 'replyTo' => t('noreply') . '@' . $a->get_hostname(), 'toEmail' => $user["email"], 'messageSubject' => t("Notification: " . $event[0]["Summary"]), 'htmlVersion' => $text_html, 'textVersion' => $text_text, 'additionalMailHeader' => "");
                        require_once 'include/Emailer.php';
                        Emailer::send($params);
                    }
                    break;
            }
        }
    }
}
Пример #15
0
 function actionLogin($params = '')
 {
     if (!empty($params['email']) && !empty($params['password'])) {
         if ($this->objAuthentication->login($params['email'], $params['password'])) {
             //no errors, continue to home
             /*$objDispatcher = new Dispatcher;
             		$objDispatcher->setController('Forum');
             		$objDispatcher->setAction('Index');
             		$objDispatcher->setParams($params);
             		$objDispatcher->dispatch();*/
             $this->actionIndex($params);
         } else {
             $this->view->assign('errorMsg', 'Unable to login, try again.');
             $this->view->assign('content', $this->view->fetch('tpl/community/login.tpl'));
             $this->finish();
         }
     } else {
         if (!empty($params['createAccount']) && $params['createAccount'] == 1) {
             $errorMessages = array();
             $objValidator = new Validator();
             $objValidator->reset();
             $objValidator->validateEmail($params['create_email']);
             $objValidator->validatePassword($params['create_password']);
             $objValidator->passwordsMatch($params['create_password'], $params['create_password2']);
             $objValidator->validateName($params['create_displayName']);
             if ($objValidator->hasError || empty($params['create_terms'])) {
                 $error = $objValidator->getError();
                 if (empty($params['create_terms'])) {
                     $error[] = 'You must agree to the Terms of Use to make an account';
                 }
                 $this->view->assign('errorMessages', $error);
                 $this->view->assign('created', false);
             } else {
                 $userData = array();
                 $userData['email'] = $params['create_email'];
                 $userData['password'] = $params['create_password'];
                 $userData['displayName'] = $params['create_displayName'];
                 $userModel = new UserModel();
                 $created = $userModel->createUser($userData);
                 if (!empty($created)) {
                     $this->view->assign('created', true);
                     $objEmail = new Emailer();
                     $objEmail->setFrom(CONTACT_EMAIL);
                     $objEmail->setSubject('Retail Roar Community account created');
                     $objEmail->addTO($userData['email']);
                     $objEmail->setBody($this->view->fetch('emails/communitysignup.tpl'), true);
                     $sent = $objEmail->sendMail();
                 } else {
                     $this->view->assign('created', false);
                     $this->view->assign('errorMessages', $userModel->errorMsg);
                 }
                 $this->view->assign('submitted', true);
             }
             $this->view->assign('content', $this->view->fetch('tpl/community/login.tpl'));
             $this->finish();
         } else {
             if ($this->objAuthentication->loggedIn()) {
                 $this->view->assign('content', 'Already logged in.');
                 $this->finish();
             } else {
                 $this->view->assign('content', $this->view->fetch('tpl/community/login.tpl'));
                 $this->finish();
             }
         }
     }
 }
Пример #16
0
    }
}
if (isset($_POST['field11'])) {
    $field11 = $_POST['field11'];
} else {
    if (isset($_GET['field11'])) {
        $field11 = $_GET['field11'];
    } else {
        $field11 = '';
    }
}
if (isset($_POST['field12'])) {
    $field12 = $_POST['field12'];
} else {
    if (isset($_GET['field12'])) {
        $field12 = $_GET['field12'];
    } else {
        $field12 = '';
    }
}
if (isset($_POST['field13'])) {
    $field13 = $_POST['field13'];
} else {
    if (isset($_GET['field13'])) {
        $field13 = $_GET['field13'];
    } else {
        $field13 = '';
    }
}
$obj = new Emailer(array($pagin, $state, $code, $id, $proid, $userid, $nonce, $blogid));
$obj->Initialize(array($field0, $field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9, $field10, $field11, $field12, $field13));
Пример #17
0
// custom url rewriting
$objUrls = new FriendlyurlModel();
$objUrls->parseRequest($params['_urlrequest']);
if (!empty($objUrls->requestParams)) {
    $params = array_merge($params, $objUrls->requestParams);
}
// start up
try {
    $objSettings->loadSettings();
    $objDispatcher->setDirectory('frontend');
    $objDispatcher->setController($objUrls->requestController);
    $objDispatcher->setAction($objUrls->requestAction);
    $objDispatcher->setParams($params);
    $objDispatcher->dispatch();
} catch (Exception $e) {
    $objEmail = new Emailer();
    $objEmail->addTO(ERROR_EMAIL);
    $objEmail->setFrom(ERROR_EMAIL);
    $objEmail->setSubject('FATAL ERROR | Exception thrown on ' . URL);
    $objEmail->setBody('Fatal Exception! ' . $e->getMessage() . print_r($params, true));
    //$objEmail->sendMail();
    die('Error<br/>' . $e->getMessage() . '<br/><a href="http://' . URL . '">' . PRODUCT_NAME . '</a>');
}
// time to clean up
$dbQueries = $objDatabase->getNumbQueries();
$objDatabase->disconnect();
//end timer
$endTime = microtime(true);
// calc render details
$totalSeconds = number_format($endTime - $startTime, 3);
$totalMemory = number_format(memory_get_peak_usage() / 1024, 2);
Пример #18
0
 $client = $ISL->FetchClientDetails($invoice['clientid']);
 $admin = $ISL->FetchAdminDetails($client['parentclientid']);
 $invoice['show_tax'] = $invoice['calc_tax'] > 0 ? true : false;
 $invoice['show_tax2'] = $invoice['calc_tax2'] > 0 ? true : false;
 $invoice['show_shipping'] = $invoice['shipping'] > 0 ? true : false;
 $invoice['terms'] = $invoice['terms'] ? $invoice['terms'] : ($client['def_terms'] ? $client['def_terms'] : ($admin['def_terms'] ? $admin['def_terms'] : $lang['terms']));
 $invoice['comments'] = $invoice['comments'] ? $invoice['comments'] : ($client['def_comments'] ? $client['def_comments'] : ($admin['def_comments'] ? $admin['def_comments'] : ''));
 $invoice['due_date'] = date($SYSTEM["regional"]["invoicedate"], $invoice['due_date']);
 $invoice['issue_date'] = date($SYSTEM["regional"]["invoicedate"], $invoice['issue_date']);
 $invoice['calc_tax'] = currency_format($invoice['calc_tax']);
 $invoice['calc_tax2'] = currency_format($invoice['calc_tax2']);
 $invoice['shipping'] = currency_format($invoice['shipping']);
 $invoice['cost'] = currency_format($invoice['cost']);
 $invoice['total'] = currency_format($invoice['total']);
 $emailSendID = $ISL->addEmailSend($invoice['clientid'], $invoiceID, $client['email'], 1);
 $e = new Emailer();
 $e->setMainFile('forms/email_invoice.tpl');
 $e->setFrom($SYSTEM['email']['from']);
 $e->setFromName($SYSTEM['email']['fromName']);
 $e->setSubject($lang['eml_subj_invoice']);
 $e->set('SYSTEM', $SYSTEM);
 $e->set('invoice', $invoice);
 $e->set('client', $client);
 $e->set('admin', $admin);
 $ispayed = strtolower($invoice['curr_status']) == 'fully paid' ? true : false;
 $e->set('ispayed', $ispayed);
 $e->fetchMessage();
 $e->appendMessage('<img src="' . HTTP_ROOT . 'isop.php?sid=' . $emailSendID . '" width="1" height="1">');
 $e->setRecipient($client['email']);
 $e->setPriority('High');
 $result = $e->send();
 public function __construct($sender)
 {
     parent::__construct($sender);
 }
Пример #20
0
//check if form is being submitted
if ((bool) $_POST["submitting"]) {
    $heading = $_POST["heading"];
    $text = $_POST["text"];
    $link = $_POST["link"];
    if (($result = validate($heading, "", 20)) !== true) {
        $errorText .= "<li>The heading is {$result}";
    }
    if (($result = validate($text, "", 50)) !== true) {
        $errorText .= "<li>The main text is {$result}";
    }
    if (($result = validate($link, "", 255)) !== true) {
        $errorText .= "<li>The URL link is {$result}";
    }
    if ($errorText == "") {
        $mail = new Emailer();
        $mail->setTo($configuration["adminEmail"]);
        $mail->setFrom("*****@*****.**");
        $mail->setSubject("Classified Advert");
        $mail->bodyAdd("NEW CLASSIFIED ADVERT");
        $mail->bodyAdd("");
        $mail->bodyAdd("User: "******"Heading: {$heading}");
        $mail->bodyAdd("Text: {$text}");
        $mail->bodyAdd("URL: {$link}");
        $mail->bodyAdd("");
        $mail->bodyAdd("END");
        $mail->send();
        header("Location: classified_success.php");
    } else {
        $errorText = "<ul>" . $errorText . "</ul>";
Пример #21
0
 function edit()
 {
     $id = WebApp::post('id') === NULL ? '' : intval(WebApp::post('id'));
     $this->parent->parent->debug($id);
     if (!is_int($id)) {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to edit user.<br />Error: <code>User ID must be an integer</code>', B_T_FAIL);
     }
     if ($id == $this->parent->parent->user->getUserID() && !$this->parent->inGroup(1)) {
         $this->parent->parent->logEvent($this::name_space, 'Attempted to edit themself');
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to edit user.<br />Error: <code>You cannot edit yourself</code>', B_T_FAIL);
     }
     $f_name = WebApp::post('f_name') === NULL ? '' : WebApp::post('f_name');
     $s_name = WebApp::post('s_name') === NULL ? '' : WebApp::post('s_name');
     $username = WebApp::post('username') === NULL ? '' : WebApp::post('username');
     $email = WebApp::post('email') === NULL ? '' : WebApp::post('email');
     $n_pwd = WebApp::post('n_pwd') === NULL ? '' : WebApp::post('n_pwd');
     $n_pwd_c = WebApp::post('c_pwd') === NULL ? '' : WebApp::post('c_pwd');
     $chgPwd = WebApp::post('chgPwd') === NULL ? '' : WebApp::post('chgPwd');
     $enabled = WebApp::post('enabled') === NULL ? false : WebApp::post('enabled');
     $p_group = WebApp::post('p_group') === NULL ? 3 : WebApp::post('p_group');
     $s_groups = WebApp::post('s_group') === NULL ? array() : strgetcsv(WebApp::post('s_group'));
     if ($f_name == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>First Name must not be blank</code>', B_T_FAIL);
     }
     if ($s_name == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Surname must not be blank</code>', B_T_FAIL);
     }
     if ($username == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Username must not be blank</code>', B_T_FAIL);
     }
     if ($email == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Email must not be blank</code>', B_T_FAIL);
     }
     if ($chgPwd == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Change Password must not be blank</code>', B_T_FAIL);
     }
     if ($enabled == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Enabled must not be blank</code>', B_T_FAIL);
     }
     if ($p_group == '') {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to add user.<br />Error: <code>Primary Group must not be blank</code>', B_T_FAIL);
     }
     if ($this->parent->inGroup(2, false) && $p_group == 1) {
         $this->parent->parent->logEvent($this::name_space, 'Tried to make "' . $username . '" a Super Admin');
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to edit user.<br />Error: <code>You cannot escalate privileges</code>', B_T_FAIL);
     }
     if ($this->parent->parent->user->getUserID() == $id && $enabled == false) {
         $this->parent->parent->logEvent($this::name_space, 'Tried to disable themself');
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to edit user.<br />Error: <code>You cannot disable yourself</code>', B_T_FAIL);
     }
     if ($n_pwd != $n_pwd_c) {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed to edit user.<br />Error: <code>New passwords must match, or both be empty</code>', B_T_FAIL);
     }
     $clear_sgroup = $this->mySQL_w->prepare("DELETE FROM `core_sgroup` WHERE `user`=?");
     $update_sgroup = $this->mySQL_w->prepare("INSERT INTO `core_sgroup` (`user`, `group`) VALUES (?, ?)");
     if ($clear_sgroup === false) {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed edit user!<br />Error: <code>Clear query failed</code>', B_T_FAIL);
     }
     if ($update_sgroup === false) {
         return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed edit user!<br />Error: <code>Update sgroup query failed</code>', B_T_FAIL);
     }
     if ($n_pwd != '') {
         $userCtrl = $this->parent->parent->user;
         $hash = $userCtrl->ranHash();
         $new_pwd = $userCtrl->pwd_hash($n_pwd, $hash) . ':' . $hash;
         $update = $this->mySQL_w->prepare("UPDATE `core_users` SET `f_name`=?,`s_name`=?,`email`=?,`en`=?,`chgPwd`=?,`p_group`=?,`pass`=?, `pwd_reset`=`pwd_reset`+1 WHERE `id`=? AND `username`=?");
         if ($update === false) {
             return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed edit user!<br />Error: <code>Update query failed</code>', B_T_FAIL);
         }
         $update->bind_param('sssiiisis', $f_name, $s_name, $email, $enabled, $chgPwd, $p_group, $new_pwd, $id, $username);
     } else {
         $update = $this->mySQL_w->prepare("UPDATE `core_users` SET `f_name`=?,`s_name`=?,`email`=?,`en`=?,`chgPwd`=?,`p_group`=? WHERE `id`=? AND `username`=?");
         if ($update === false) {
             return new ActionResult($this, '/admin/user/user_edit', 0, 'Failed edit user!<br />Error: <code>Update query failed</code>', B_T_FAIL);
         }
         $update->bind_param('sssiiiis', $f_name, $s_name, $email, $enabled, $chgPwd, $p_group, $id, $username);
     }
     $clear_sgroup->bind_param('i', $id);
     $update_sgroup->bind_param('ii', $id, $sgroup);
     $clear_sgroup->execute();
     if (count($s_groups) != 0) {
         foreach ($s_groups as $sgroup) {
             $this->parent->parent->debug($sgroup);
             $update_sgroup->bind_param('ii', $id, $sgroup);
             $update_sgroup->execute();
         }
     }
     if ($n_pwd != '') {
         $mail = new Emailer();
         $mail->Subject = 'Password Changed';
         $mail->msgHTML(UserEmail::adminPasswordChange($f_name)['html']);
         $mail->AltBody = UserEmail::adminPasswordChange($f_name)['text'];
         $mail->addAddress($email, $f_name . ' ' . $s_name);
         $mail->send();
     }
     $update->execute();
     $update->store_result();
     $this->parent->parent->logEvent($this::name_space, 'Edited user "' . $username . '"');
     return new ActionResult($this, '/admin/user/user_view', 1, 'User was edited.', B_T_SUCCESS, array('form' => array('n_pwd' => '', 'c_pwd' => '')));
 }
Пример #22
0
    <address>
      UV Paint & Coatings<br>
      509 Marin #125<br>
      Thousand Oaks, CA 91360
    </address>

    <address>(805) 390-1866</address>

    <h3>Email</h3>
    <?php 
$sendingEmail = (bool) $_POST['email'];
$sentEmail = false;
if ($sendingEmail) {
    require_once 'emailer.php';
    $emailer = new Emailer();
    $emailer->toEmail('*****@*****.**')->fromEmail($_POST['email'])->subject("uv-pc.com message from '" . $_POST['email'] . "'")->message($_POST['message']);
    $sentEmail = $emailer->send();
    if ($sentEmail) {
        ?>
        <div class="alert alert-success">You message has been sent.  Thank you.</div>
        <?php 
        // Send CC to the sender
        $emailer->toEmail($_POST['email'])->message("This is a copy of a message you sent to uv-pc.com - for your records.\n\n" . $_POST['message'])->send();
    } else {
        $errorOut = "<ul><li>" . implode($emailer->getErrors(), "</li><li>") . "</li></ul>";
        ?>
        <div class="alert alert-danger">
          We encountered a problem sending your message:<br>
          <?php 
        echo $errorOut;
Пример #23
0
 public function uploadNotify($token)
 {
     $shareTokenObj = new ShareToken();
     $tokenArr = $shareTokenObj->get($token);
     if (empty($tokenArr) || $tokenArr['type'] != 'upload') {
         return $this->forbidden('No permissions with the passed in token', false);
     }
     $albumId = $tokenArr['data'];
     $albumResp = $this->api->invoke(sprintf('/album/%s/view.json', $albumId), EpiRoute::httpGet, array('_GET' => array('token' => $token)));
     if ($albumResp['code'] !== 200) {
         return $this->error('Could not get album details', false);
     }
     $uploader = $count = null;
     if (isset($_POST['uploader'])) {
         $uploader = $_POST['uploader'];
     }
     if (isset($_POST['count'])) {
         $count = $_POST['count'];
     }
     $utilityObj = new Utility();
     $albumName = $albumResp['result']['name'];
     $albumUrl = sprintf('%s://%s/photos/album-%s/token-%s/list??sortBy=dateUploaded,desc', $utilityObj->getProtocol(false), $utilityObj->getHost(false), $albumId, $token);
     $tokenOwner = $tokenArr['actor'];
     $emailer = new Emailer();
     $emailer->setRecipients(array($tokenOwner));
     if (!empty($albumName)) {
         $emailer->setSubject(sprintf('Photos uploaded to %s', $albumName));
     } else {
         $emailer->setSubject('New photos were uploaded for you');
     }
     $markup = $this->theme->get('partials/upload-notify.php', array('albumId' => $albumId, 'albumName' => $albumName, 'albumUrl' => $albumUrl, 'uploader' => $uploader, 'count' => $count));
     $emailer->setBody($markup);
     $res = $emailer->send($markup);
     return $this->success('Email probably sent', true);
 }
Пример #24
0
         $survey_args['completed'] = 1;
         $survey_args['completed_date'] = date_i18n('d-M-Y G:i', time());
     }
     // response
     $survey_args['response_' . $relation_step] = json_encode($_POST);
     // save
     $survey_pod->save($survey_args);
     $posted_answers = $_POST;
     // release the session key
     $myJSONRPCClient->release_session_key($sessionKey);
     $durations = ['TM' => 5, 'OM' => 10, 'OP' => 20];
     $details = ['role' => $current_user->roles[0], 'company_or_agency' => get_user_meta($current_user->ID, 'company_or_agency', true), 'company' => $relation_pod->display('company'), 'agency' => $relation_pod->display('agency'), 'brand' => $relation_pod->display('brand'), 'country' => $relation_pod->display('country'), 'duration' => isset($durations[$current_user->roles[0]]) ? $durations[$current_user->roles[0]] : 20, 'expiration' => "11th September"];
     $details['source_company'] = $details['company_or_agency'] == 'company' ? $details['company'] : $details['agency'];
     $details['target_company'] = $details['company_or_agency'] == 'company' ? $details['agency'] : $details['company'];
     // send notification Email
     $email = new Emailer();
     $email->headers[] = 'Cc: Jasper Kums <*****@*****.**>' . "\r\n";
     $status_response = ['status' => 'OK', 'message' => json_encode($success_status)];
     try {
         $email->compose(['template' => 'surveycompleted', 'pre_header' => '', 'title' => 'Thank you for your input', 'name' => $current_user->display_name, 'date' => date_i18n('j M Y'), 'details' => $details]);
         $result = $email->send(['subject' => 'Thank you for your input ' . $current_user->display_name . ' ' . time(), 'to' => $current_user->user_email]);
         $survey_title = 'Survey submission - ' . $survey_post['ID'] . ' - ' . html_entity_decode(get_the_title((int) $survey_post['ID']));
         mail('*****@*****.**', $survey_title, json_encode($_POST));
     } catch (Exception $e) {
         // Something went wrong sending the e-mail, return error and error message
         header('Content-Type: application/json');
         print_r(json_encode(['error' => 'error', 'message' => $e->getMessage()]));
     }
 }
 // response output
 header("Content-Type: application/json");
 public function actionSendActivation($user_id)
 {
     /** @var $user User */
     /** @var $uv UserVerification */
     $user = User::model()->findByPk($user_id);
     switch ($user->user_group_id) {
         case Student::USER_GROUP_ID:
             $uv = UserVerification::model()->findByPk($user_id);
             if (!empty($uv)) {
                 $mailed = Emailer::emailStudentActivation($user, $uv->hash);
             }
             break;
         case Employer::USER_GROUP_ID:
             $mailed = Emailer::emailEmployerVerified($user);
             break;
         default:
             throw new CHttpException(404, 'Invalid user group.');
     }
     if (isset($mailed) && $mailed) {
         Yii::app()->user->setFlash('success', 'Activation Email sent to ' . CHtml::tag('strong', array(), $user->email));
     } else {
         Yii::app()->user->setFlash('error', 'Error occurred while sending email to ' . CHtml::tag('strong', array(), $user->email));
     }
     $this->redirect(array('admin'));
 }
Пример #26
0
/**
 * Function pay_get
 **/
function pay_get()
{
    global $gData, $gOptions;
    $Kaznachey = new Kaznachey();
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : file_get_contents('php://input');
    $hrpd = json_decode($HTTP_RAW_POST_DATA);
    $order_id = intval($hrpd->MerchantInternalPaymentId);
    if ($order_id == 0) {
        if (isset($_GET['show_result'])) {
            $html = file_get_contents('pay_mod/kaznachey/pay_ok.htm');
            print $html;
            exit;
        } else {
            $kaznachey->home_url();
            exit;
        }
    }
    if (isset($hrpd->MerchantInternalPaymentId)) {
        if ($hrpd->ErrorCode == 0) {
            $gData = data_connect();
            $command = "UPDATE " . DB_NICK . "_archive_order SET get_payment=2 WHERE order_id='" . addslashes($hrpd->MerchantInternalPaymentId) . "'";
            mysql_query($command);
            // Set order ok e-mail for admin
            $tplm = new FastTemplate('./pay_mod/Kaznachey');
            $tplm->DefineTemplate(array('mail_message' => 'pay_ok_mail.htm'));
            $tplm->Assign(array('ORDERCODE' => $hrpd->MerchantInternalPaymentId, 'SUMA' => number_format($arr['amt'] * 1, 2, '.', ''), 'CURR' => $arr['ccy'], 'SHOPNAMES' => $gOptions['attr_shop_name'], 'SHOPURL' => $gOptions['attr_shop_url'], 'DATE' => date('Y-m-d H:i:s', $arr['date'])));
            $tplm->Parse('MAIL', 'mail_message');
            $mailer = new Emailer(MAIL_SERVER);
            $mailer->SetCharset($gOptions['attr_admin_charset']);
            $mailer->SetTypeText();
            $all_message = iconv(SHOP_CHARSET, $gOptions['attr_admin_charset'], $tplm->Fetch('MAIL'));
            $subject = substr($all_message, strpos($all_message, 'Message_subject:') + 16, strpos($all_message, 'Message_content:') - 16);
            $message = substr($all_message, strpos($all_message, 'Message_content:') + 16);
            $mailer->AddMessage($message);
            $mailer->BuildMessage();
            $mailer->Send($gOptions['attr_admin_email'], $gOptions['attr_shop_email'], ltrim($subject, " "));
        }
    }
}
Пример #27
0
function item_post(&$a)
{
    if (!local_user() && !remote_user() && !x($_REQUEST, 'commenter')) {
        return;
    }
    require_once 'include/security.php';
    $uid = local_user();
    if (x($_REQUEST, 'dropitems')) {
        $arr_drop = explode(',', $_REQUEST['dropitems']);
        drop_items($arr_drop);
        $json = array('success' => 1);
        echo json_encode($json);
        killme();
    }
    call_hooks('post_local_start', $_REQUEST);
    //	logger('postinput ' . file_get_contents('php://input'));
    logger('postvars ' . print_r($_REQUEST, true), LOGGER_DATA);
    $api_source = x($_REQUEST, 'api_source') && $_REQUEST['api_source'] ? true : false;
    $message_id = x($_REQUEST, 'message_id') && $api_source ? strip_tags($_REQUEST['message_id']) : '';
    $return_path = x($_REQUEST, 'return') ? $_REQUEST['return'] : '';
    $preview = x($_REQUEST, 'preview') ? intval($_REQUEST['preview']) : 0;
    // Check for doubly-submitted posts, and reject duplicates
    // Note that we have to ignore previews, otherwise nothing will post
    // after it's been previewed
    if (!$preview && x($_REQUEST['post_id_random'])) {
        if (x($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
            logger("item post: duplicate post", LOGGER_DEBUG);
            item_post_return($a->get_baseurl(), $api_source, $return_path);
        } else {
            $_SESSION['post-random'] = $_REQUEST['post_id_random'];
        }
    }
    /**
     * Is this a reply to something?
     */
    $parent = x($_REQUEST, 'parent') ? intval($_REQUEST['parent']) : 0;
    $parent_uri = x($_REQUEST, 'parent_uri') ? trim($_REQUEST['parent_uri']) : '';
    $parent_item = null;
    $parent_contact = null;
    $thr_parent = '';
    $parid = 0;
    $r = false;
    $objecttype = null;
    if ($parent || $parent_uri) {
        $objecttype = ACTIVITY_OBJ_COMMENT;
        if (!x($_REQUEST, 'type')) {
            $_REQUEST['type'] = 'net-comment';
        }
        if ($parent) {
            $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", intval($parent));
        } elseif ($parent_uri && local_user()) {
            // This is coming from an API source, and we are logged in
            $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($parent_uri), intval(local_user()));
        }
        // if this isn't the real parent of the conversation, find it
        if ($r !== false && count($r)) {
            $parid = $r[0]['parent'];
            $parent_uri = $r[0]['uri'];
            if ($r[0]['id'] != $r[0]['parent']) {
                $r = q("SELECT * FROM `item` WHERE `id` = `parent` AND `parent` = %d LIMIT 1", intval($parid));
            }
        }
        if ($r === false || !count($r)) {
            notice(t('Unable to locate original post.') . EOL);
            if (x($_REQUEST, 'return')) {
                goaway($a->get_baseurl() . "/" . $return_path);
            }
            killme();
        }
        $parent_item = $r[0];
        $parent = $r[0]['id'];
        // multi-level threading - preserve the info but re-parent to our single level threading
        //if(($parid) && ($parid != $parent))
        $thr_parent = $parent_uri;
        if ($parent_item['contact-id'] && $uid) {
            $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($parent_item['contact-id']), intval($uid));
            if (count($r)) {
                $parent_contact = $r[0];
                // If the contact id doesn't fit with the contact, then set the contact to null
                $thrparent = q("SELECT `author-link`, `network` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($thr_parent));
                if (count($thrparent) and $thrparent[0]["network"] === NETWORK_OSTATUS and normalise_link($parent_contact["url"]) != normalise_link($thrparent[0]["author-link"])) {
                    $parent_contact = null;
                    require_once "include/Scrape.php";
                    $probed_contact = probe_url($thrparent[0]["author-link"]);
                    if ($probed_contact["network"] != NETWORK_FEED) {
                        $parent_contact = $probed_contact;
                        $parent_contact["nurl"] = normalise_link($probed_contact["url"]);
                        $parent_contact["thumb"] = $probed_contact["photo"];
                        $parent_contact["micro"] = $probed_contact["photo"];
                    }
                    logger('parent contact: ' . print_r($parent_contact, true), LOGGER_DEBUG);
                } else {
                    logger('no contact found: ' . print_r($thrparent, true), LOGGER_DEBUG);
                }
            }
        }
    }
    if ($parent) {
        logger('mod_item: item_post parent=' . $parent);
    }
    $profile_uid = x($_REQUEST, 'profile_uid') ? intval($_REQUEST['profile_uid']) : 0;
    $post_id = x($_REQUEST, 'post_id') ? intval($_REQUEST['post_id']) : 0;
    $app = x($_REQUEST, 'source') ? strip_tags($_REQUEST['source']) : '';
    $extid = x($_REQUEST, 'extid') ? strip_tags($_REQUEST['extid']) : '';
    $allow_moderated = false;
    // here is where we are going to check for permission to post a moderated comment.
    // First check that the parent exists and it is a wall item.
    if (x($_REQUEST, 'commenter') && (!$parent || !$parent_item['wall'])) {
        notice(t('Permission denied.') . EOL);
        if (x($_REQUEST, 'return')) {
            goaway($a->get_baseurl() . "/" . $return_path);
        }
        killme();
    }
    // Now check that it is a page_type of PAGE_BLOG, and that valid personal details
    // have been provided, and run any anti-spam plugins
    // TODO
    if (!can_write_wall($a, $profile_uid) && !$allow_moderated) {
        notice(t('Permission denied.') . EOL);
        if (x($_REQUEST, 'return')) {
            goaway($a->get_baseurl() . "/" . $return_path);
        }
        killme();
    }
    // is this an edited post?
    $orig_post = null;
    if ($post_id) {
        $i = q("SELECT * FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($profile_uid), intval($post_id));
        if (!count($i)) {
            killme();
        }
        $orig_post = $i[0];
    }
    $user = null;
    $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($profile_uid));
    if (count($r)) {
        $user = $r[0];
    }
    if ($orig_post) {
        $str_group_allow = $orig_post['allow_gid'];
        $str_contact_allow = $orig_post['allow_cid'];
        $str_group_deny = $orig_post['deny_gid'];
        $str_contact_deny = $orig_post['deny_cid'];
        $location = $orig_post['location'];
        $coord = $orig_post['coord'];
        $verb = $orig_post['verb'];
        $objecttype = $orig_post['object-type'];
        $emailcc = $orig_post['emailcc'];
        $app = $orig_post['app'];
        $categories = $orig_post['file'];
        $title = notags(trim($_REQUEST['title']));
        $body = escape_tags(trim($_REQUEST['body']));
        $private = $orig_post['private'];
        $pubmail_enable = $orig_post['pubmail'];
        $network = $orig_post['network'];
        $guid = $orig_post['guid'];
        $extid = $orig_post['extid'];
    } else {
        // if coming from the API and no privacy settings are set,
        // use the user default permissions - as they won't have
        // been supplied via a form.
        if ($api_source && !array_key_exists('contact_allow', $_REQUEST) && !array_key_exists('group_allow', $_REQUEST) && !array_key_exists('contact_deny', $_REQUEST) && !array_key_exists('group_deny', $_REQUEST)) {
            $str_group_allow = $user['allow_gid'];
            $str_contact_allow = $user['allow_cid'];
            $str_group_deny = $user['deny_gid'];
            $str_contact_deny = $user['deny_cid'];
        } else {
            // use the posted permissions
            $str_group_allow = perms2str($_REQUEST['group_allow']);
            $str_contact_allow = perms2str($_REQUEST['contact_allow']);
            $str_group_deny = perms2str($_REQUEST['group_deny']);
            $str_contact_deny = perms2str($_REQUEST['contact_deny']);
        }
        $title = notags(trim($_REQUEST['title']));
        $location = notags(trim($_REQUEST['location']));
        $coord = notags(trim($_REQUEST['coord']));
        $verb = notags(trim($_REQUEST['verb']));
        $emailcc = notags(trim($_REQUEST['emailcc']));
        $body = escape_tags(trim($_REQUEST['body']));
        $network = notags(trim($_REQUEST['network']));
        $guid = get_guid(32);
        $naked_body = preg_replace('/\\[(.+?)\\]/', '', $body);
        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
            $l = new Text_LanguageDetect();
            //$lng = $l->detectConfidence($naked_body);
            //$postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : '');
            $lng = $l->detect($naked_body, 3);
            if (sizeof($lng) > 0) {
                $postopts = "";
                foreach ($lng as $language => $score) {
                    if ($postopts == "") {
                        $postopts = "lang=";
                    } else {
                        $postopts .= ":";
                    }
                    $postopts .= $language . ";" . $score;
                }
            }
            logger('mod_item: detect language' . print_r($lng, true) . $naked_body, LOGGER_DATA);
        } else {
            $postopts = '';
        }
        $private = strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny) ? 1 : 0;
        if ($user['hidewall']) {
            $private = 2;
        }
        // If this is a comment, set the permissions from the parent.
        if ($parent_item) {
            $private = 0;
            // for non native networks use the network of the original post as network of the item
            if ($parent_item['network'] != NETWORK_DIASPORA and $parent_item['network'] != NETWORK_OSTATUS and $network == "") {
                $network = $parent_item['network'];
            }
            if ($parent_item['private'] || strlen($parent_item['allow_cid']) || strlen($parent_item['allow_gid']) || strlen($parent_item['deny_cid']) || strlen($parent_item['deny_gid'])) {
                $private = $parent_item['private'] ? $parent_item['private'] : 1;
            }
            $str_contact_allow = $parent_item['allow_cid'];
            $str_group_allow = $parent_item['allow_gid'];
            $str_contact_deny = $parent_item['deny_cid'];
            $str_group_deny = $parent_item['deny_gid'];
        }
        $pubmail_enable = x($_REQUEST, 'pubmail_enable') && intval($_REQUEST['pubmail_enable']) && !$private ? 1 : 0;
        // if using the API, we won't see pubmail_enable - figure out if it should be set
        if ($api_source && $profile_uid && $profile_uid == local_user() && !$private) {
            $mail_disabled = function_exists('imap_open') && !get_config('system', 'imap_disabled') ? 0 : 1;
            if (!$mail_disabled) {
                $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1", intval(local_user()));
                if (count($r) && intval($r[0]['pubmail'])) {
                    $pubmail_enabled = true;
                }
            }
        }
        if (!strlen($body)) {
            if ($preview) {
                killme();
            }
            info(t('Empty post discarded.') . EOL);
            if (x($_REQUEST, 'return')) {
                goaway($a->get_baseurl() . "/" . $return_path);
            }
            killme();
        }
    }
    if (strlen($categories)) {
        // get the "fileas" tags for this post
        $filedas = file_tag_file_to_list($categories, 'file');
    }
    // save old and new categories, so we can determine what needs to be deleted from pconfig
    $categories_old = $categories;
    $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category');
    $categories_new = $categories;
    if (strlen($filedas)) {
        // append the fileas stuff to the new categories list
        $categories .= file_tag_list_to_file($filedas, 'file');
    }
    // Work around doubled linefeeds in Tinymce 3.5b2
    // First figure out if it's a status post that would've been
    // created using tinymce. Otherwise leave it alone.
    /*	$plaintext = (local_user() ? intval(get_pconfig(local_user(),'system','plaintext')) || !feature_enabled($profile_uid,'richtext') : 0);
    	if((! $parent) && (! $api_source) && (! $plaintext)) {
    		$body = fix_mce_lf($body);
    	}*/
    $plaintext = local_user() ? !feature_enabled($profile_uid, 'richtext') : 0;
    if (!$parent && !$api_source && !$plaintext) {
        $body = fix_mce_lf($body);
    }
    // get contact info for poster
    $author = null;
    $self = false;
    $contact_id = 0;
    if (local_user() && local_user() == $profile_uid) {
        $self = true;
        $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($_SESSION['uid']));
    } elseif (remote_user()) {
        if (is_array($_SESSION['remote'])) {
            foreach ($_SESSION['remote'] as $v) {
                if ($v['uid'] == $profile_uid) {
                    $contact_id = $v['cid'];
                    break;
                }
            }
        }
        if ($contact_id) {
            $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($contact_id));
        }
    }
    if (count($r)) {
        $author = $r[0];
        $contact_id = $author['id'];
    }
    // get contact info for owner
    if ($profile_uid == local_user()) {
        $contact_record = $author;
    } else {
        $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($profile_uid));
        if (count($r)) {
            $contact_record = $r[0];
        }
    }
    $post_type = notags(trim($_REQUEST['type']));
    if ($post_type === 'net-comment') {
        if ($parent_item !== null) {
            if ($parent_item['wall'] == 1) {
                $post_type = 'wall-comment';
            } else {
                $post_type = 'remote-comment';
            }
        }
    }
    /**
     *
     * When a photo was uploaded into the message using the (profile wall) ajax
     * uploader, The permissions are initially set to disallow anybody but the
     * owner from seeing it. This is because the permissions may not yet have been
     * set for the post. If it's private, the photo permissions should be set
     * appropriately. But we didn't know the final permissions on the post until
     * now. So now we'll look for links of uploaded messages that are in the
     * post and set them to the same permissions as the post itself.
     *
     */
    $match = null;
    if (!$preview && preg_match_all("/\\[img([\\=0-9x]*?)\\](.*?)\\[\\/img\\]/", $body, $match)) {
        $images = $match[2];
        if (count($images)) {
            $objecttype = ACTIVITY_OBJ_IMAGE;
            foreach ($images as $image) {
                if (!stristr($image, $a->get_baseurl() . '/photo/')) {
                    continue;
                }
                $image_uri = substr($image, strrpos($image, '/') + 1);
                $image_uri = substr($image_uri, 0, strpos($image_uri, '-'));
                if (!strlen($image_uri)) {
                    continue;
                }
                $srch = '<' . intval($contact_id) . '>';
                $r = q("SELECT `id` FROM `photo` WHERE `allow_cid` = '%s' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = ''\n\t\t\t\t\tAND `resource-id` = '%s' AND `uid` = %d LIMIT 1", dbesc($srch), dbesc($image_uri), intval($profile_uid));
                if (!count($r)) {
                    continue;
                }
                $r = q("UPDATE `photo` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s'\n\t\t\t\t\tWHERE `resource-id` = '%s' AND `uid` = %d AND `album` = '%s' ", dbesc($str_contact_allow), dbesc($str_group_allow), dbesc($str_contact_deny), dbesc($str_group_deny), dbesc($image_uri), intval($profile_uid), dbesc(t('Wall Photos')));
            }
        }
    }
    /**
     * Next link in any attachment references we find in the post.
     */
    $match = false;
    if (!$preview && preg_match_all("/\\[attachment\\](.*?)\\[\\/attachment\\]/", $body, $match)) {
        $attaches = $match[1];
        if (count($attaches)) {
            foreach ($attaches as $attach) {
                $r = q("SELECT * FROM `attach` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($profile_uid), intval($attach));
                if (count($r)) {
                    $r = q("UPDATE `attach` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s'\n\t\t\t\t\t\tWHERE `uid` = %d AND `id` = %d", dbesc($str_contact_allow), dbesc($str_group_allow), dbesc($str_contact_deny), dbesc($str_group_deny), intval($profile_uid), intval($attach));
                }
            }
        }
    }
    // embedded bookmark in post? set bookmark flag
    $bookmark = 0;
    if (preg_match_all("/\\[bookmark\\=([^\\]]*)\\](.*?)\\[\\/bookmark\\]/ism", $body, $match, PREG_SET_ORDER)) {
        $objecttype = ACTIVITY_OBJ_BOOKMARK;
        $bookmark = 1;
    }
    $body = bb_translate_video($body);
    /**
     * Fold multi-line [code] sequences
     */
    $body = preg_replace('/\\[\\/code\\]\\s*\\[code\\]/ism', "\n", $body);
    $body = scale_external_images($body, false);
    // Setting the object type if not defined before
    if (!$objecttype) {
        $objecttype = ACTIVITY_OBJ_NOTE;
        // Default value
        require_once "include/plaintext.php";
        $objectdata = get_attached_data($body);
        if ($post["type"] == "link") {
            $objecttype = ACTIVITY_OBJ_BOOKMARK;
        } elseif ($post["type"] == "video") {
            $objecttype = ACTIVITY_OBJ_VIDEO;
        } elseif ($post["type"] == "photo") {
            $objecttype = ACTIVITY_OBJ_IMAGE;
        }
    }
    /**
     * Look for any tags and linkify them
     */
    $str_tags = '';
    $inform = '';
    $tags = get_tags($body);
    /**
     * add a statusnet style reply tag if the original post was from there
     * and we are replying, and there isn't one already
     */
    if ($parent_contact && $parent_contact['network'] === NETWORK_OSTATUS && $parent_contact['nick'] && !in_array('@' . $parent_contact['nick'], $tags)) {
        $body = '@' . $parent_contact['nick'] . ' ' . $body;
        $tags[] = '@' . $parent_contact['nick'];
    }
    $tagged = array();
    $private_forum = false;
    if (count($tags)) {
        foreach ($tags as $tag) {
            if (strpos($tag, '#') === 0) {
                continue;
            }
            // If we already tagged 'Robert Johnson', don't try and tag 'Robert'.
            // Robert Johnson should be first in the $tags array
            $fullnametagged = false;
            for ($x = 0; $x < count($tagged); $x++) {
                if (stristr($tagged[$x], $tag . ' ')) {
                    $fullnametagged = true;
                    break;
                }
            }
            if ($fullnametagged) {
                continue;
            }
            $success = handle_tag($a, $body, $inform, $str_tags, local_user() ? local_user() : $profile_uid, $tag, $network);
            if ($success['replaced']) {
                $tagged[] = $tag;
            }
            if (is_array($success['contact']) && intval($success['contact']['prv'])) {
                $private_forum = true;
                $private_id = $success['contact']['id'];
            }
        }
    }
    if ($private_forum && !$parent && !$private) {
        // we tagged a private forum in a top level post and the message was public.
        // Restrict it.
        $private = 1;
        $str_contact_allow = '<' . $private_id . '>';
    }
    $attachments = '';
    $match = false;
    if (preg_match_all('/(\\[attachment\\]([0-9]+)\\[\\/attachment\\])/', $body, $match)) {
        foreach ($match[2] as $mtch) {
            $r = q("SELECT `id`,`filename`,`filesize`,`filetype` FROM `attach` WHERE `uid` = %d AND `id` = %d LIMIT 1", intval($profile_uid), intval($mtch));
            if (count($r)) {
                if (strlen($attachments)) {
                    $attachments .= ',';
                }
                $attachments .= '[attach]href="' . $a->get_baseurl() . '/attach/' . $r[0]['id'] . '" length="' . $r[0]['filesize'] . '" type="' . $r[0]['filetype'] . '" title="' . ($r[0]['filename'] ? $r[0]['filename'] : '') . '"[/attach]';
            }
            $body = str_replace($match[1], '', $body);
        }
    }
    $wall = 0;
    if ($post_type === 'wall' || $post_type === 'wall-comment') {
        $wall = 1;
    }
    if (!strlen($verb)) {
        $verb = ACTIVITY_POST;
    }
    if ($network == "") {
        $network = NETWORK_DFRN;
    }
    $gravity = $parent ? 6 : 0;
    // even if the post arrived via API we are considering that it
    // originated on this site by default for determining relayability.
    $origin = x($_REQUEST, 'origin') ? intval($_REQUEST['origin']) : 1;
    $notify_type = $parent ? 'comment-new' : 'wall-new';
    $uri = $message_id ? $message_id : item_new_uri($a->get_hostname(), $profile_uid);
    // Fallback so that we alway have a thr-parent
    if (!$thr_parent) {
        $thr_parent = $uri;
    }
    $datarray = array();
    $datarray['uid'] = $profile_uid;
    $datarray['type'] = $post_type;
    $datarray['wall'] = $wall;
    $datarray['gravity'] = $gravity;
    $datarray['network'] = $network;
    $datarray['contact-id'] = $contact_id;
    $datarray['owner-name'] = $contact_record['name'];
    $datarray['owner-link'] = $contact_record['url'];
    $datarray['owner-avatar'] = $contact_record['thumb'];
    $datarray['author-name'] = $author['name'];
    $datarray['author-link'] = $author['url'];
    $datarray['author-avatar'] = $author['thumb'];
    $datarray['created'] = datetime_convert();
    $datarray['edited'] = datetime_convert();
    $datarray['commented'] = datetime_convert();
    $datarray['received'] = datetime_convert();
    $datarray['changed'] = datetime_convert();
    $datarray['extid'] = $extid;
    $datarray['guid'] = $guid;
    $datarray['uri'] = $uri;
    $datarray['title'] = $title;
    $datarray['body'] = $body;
    $datarray['app'] = $app;
    $datarray['location'] = $location;
    $datarray['coord'] = $coord;
    $datarray['tag'] = $str_tags;
    $datarray['file'] = $categories;
    $datarray['inform'] = $inform;
    $datarray['verb'] = $verb;
    $datarray['object-type'] = $objecttype;
    $datarray['allow_cid'] = $str_contact_allow;
    $datarray['allow_gid'] = $str_group_allow;
    $datarray['deny_cid'] = $str_contact_deny;
    $datarray['deny_gid'] = $str_group_deny;
    $datarray['private'] = $private;
    $datarray['pubmail'] = $pubmail_enable;
    $datarray['attach'] = $attachments;
    $datarray['bookmark'] = intval($bookmark);
    $datarray['thr-parent'] = $thr_parent;
    $datarray['postopts'] = $postopts;
    $datarray['origin'] = $origin;
    $datarray['moderated'] = $allow_moderated;
    /**
     * These fields are for the convenience of plugins...
     * 'self' if true indicates the owner is posting on their own wall
     * If parent is 0 it is a top-level post.
     */
    $datarray['parent'] = $parent;
    $datarray['self'] = $self;
    //	$datarray['prvnets']       = $user['prvnets'];
    if ($orig_post) {
        $datarray['edit'] = true;
    }
    // Search for hashtags
    item_body_set_hashtags($datarray);
    // preview mode - prepare the body for display and send it via json
    if ($preview) {
        require_once 'include/conversation.php';
        $o = conversation($a, array(array_merge($contact_record, $datarray)), 'search', false, true);
        logger('preview: ' . $o);
        echo json_encode(array('preview' => $o));
        killme();
    }
    call_hooks('post_local', $datarray);
    if (x($datarray, 'cancel')) {
        logger('mod_item: post cancelled by plugin.');
        if ($return_path) {
            goaway($a->get_baseurl() . "/" . $return_path);
        }
        $json = array('cancel' => 1);
        if (x($_REQUEST, 'jsreload') && strlen($_REQUEST['jsreload'])) {
            $json['reload'] = $a->get_baseurl() . '/' . $_REQUEST['jsreload'];
        }
        echo json_encode($json);
        killme();
    }
    // Fill the cache field
    put_item_in_cache($datarray);
    if ($orig_post) {
        $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s', `edited` = '%s', `changed` = '%s' WHERE `id` = %d AND `uid` = %d", dbesc($datarray['title']), dbesc($datarray['body']), dbesc($datarray['tag']), dbesc($datarray['attach']), dbesc($datarray['file']), dbesc($datarray['rendered-html']), dbesc($datarray['rendered-hash']), dbesc(datetime_convert()), dbesc(datetime_convert()), intval($post_id), intval($profile_uid));
        create_tags_from_item($post_id);
        create_files_from_item($post_id);
        update_thread($post_id);
        // update filetags in pconfig
        file_tag_update_pconfig($uid, $categories_old, $categories_new, 'category');
        proc_run('php', "include/notifier.php", 'edit_post', "{$post_id}");
        if (x($_REQUEST, 'return') && strlen($return_path)) {
            logger('return: ' . $return_path);
            goaway($a->get_baseurl() . "/" . $return_path);
        }
        killme();
    } else {
        $post_id = 0;
    }
    $r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`,`owner-name`,`owner-link`,`owner-avatar`, `author-name`, `author-link`, `author-avatar`,\n\t\t`created`, `edited`, `commented`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, `tag`, `inform`, `verb`, `object-type`, `postopts`,\n\t\t`allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`, `rendered-html`, `rendered-hash`)\n\t\tVALUES( '%s', '%s', %d, '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s', '%s', '%s')", dbesc($datarray['guid']), dbesc($datarray['extid']), intval($datarray['uid']), dbesc($datarray['type']), intval($datarray['wall']), intval($datarray['gravity']), dbesc($datarray['network']), intval($datarray['contact-id']), dbesc($datarray['owner-name']), dbesc($datarray['owner-link']), dbesc($datarray['owner-avatar']), dbesc($datarray['author-name']), dbesc($datarray['author-link']), dbesc($datarray['author-avatar']), dbesc($datarray['created']), dbesc($datarray['edited']), dbesc($datarray['commented']), dbesc($datarray['received']), dbesc($datarray['changed']), dbesc($datarray['uri']), dbesc($datarray['thr-parent']), dbesc($datarray['title']), dbesc($datarray['body']), dbesc($datarray['app']), dbesc($datarray['location']), dbesc($datarray['coord']), dbesc($datarray['tag']), dbesc($datarray['inform']), dbesc($datarray['verb']), dbesc($datarray['object-type']), dbesc($datarray['postopts']), dbesc($datarray['allow_cid']), dbesc($datarray['allow_gid']), dbesc($datarray['deny_cid']), dbesc($datarray['deny_gid']), intval($datarray['private']), intval($datarray['pubmail']), dbesc($datarray['attach']), intval($datarray['bookmark']), intval($datarray['origin']), intval($datarray['moderated']), dbesc($datarray['file']), dbesc($datarray['rendered-html']), dbesc($datarray['rendered-hash']));
    $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($datarray['uri']));
    if (!count($r)) {
        logger('mod_item: unable to retrieve post that was just stored.');
        notice(t('System error. Post not saved.') . EOL);
        goaway($a->get_baseurl() . "/" . $return_path);
        // NOTREACHED
    }
    $post_id = $r[0]['id'];
    logger('mod_item: saved item ' . $post_id);
    $datarray["id"] = $post_id;
    $datarray["plink"] = $a->get_baseurl() . '/display/' . urlencode($datarray["guid"]);
    // update filetags in pconfig
    file_tag_update_pconfig($uid, $categories_old, $categories_new, 'category');
    if ($parent) {
        // This item is the last leaf and gets the comment box, clear any ancestors
        $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent` = %d ", dbesc(datetime_convert()), intval($parent));
        update_thread($parent, true);
        // Inherit ACLs from the parent item.
        $r = q("UPDATE `item` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d\n\t\t\tWHERE `id` = %d", dbesc($parent_item['allow_cid']), dbesc($parent_item['allow_gid']), dbesc($parent_item['deny_cid']), dbesc($parent_item['deny_gid']), intval($parent_item['private']), intval($post_id));
        if ($contact_record != $author) {
            notification(array('type' => NOTIFY_COMMENT, 'notify_flags' => $user['notify-flags'], 'language' => $user['language'], 'to_name' => $user['username'], 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . urlencode($datarray['guid']), 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], 'verb' => ACTIVITY_POST, 'otype' => 'item', 'parent' => $parent, 'parent_uri' => $parent_item['uri']));
        }
        // Store the comment signature information in case we need to relay to Diaspora
        store_diaspora_comment_sig($datarray, $author, $self ? $a->user['prvkey'] : false, $parent_item, $post_id);
    } else {
        $parent = $post_id;
        if ($contact_record != $author) {
            notification(array('type' => NOTIFY_WALL, 'notify_flags' => $user['notify-flags'], 'language' => $user['language'], 'to_name' => $user['username'], 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . urlencode($datarray['guid']), 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], 'verb' => ACTIVITY_POST, 'otype' => 'item'));
        }
    }
    // fallback so that parent always gets set to non-zero.
    if (!$parent) {
        $parent = $post_id;
    }
    $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `plink` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1\n\t\tWHERE `id` = %d", intval($parent), dbesc($parent == $post_id ? $uri : $parent_item['uri']), dbesc($a->get_baseurl() . '/display/' . urlencode($datarray['guid'])), dbesc(datetime_convert()), intval($post_id));
    // photo comments turn the corresponding item visible to the profile wall
    // This way we don't see every picture in your new photo album posted to your wall at once.
    // They will show up as people comment on them.
    if (!$parent_item['visible']) {
        $r = q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d", intval($parent_item['id']));
        update_thread($parent_item['id']);
    }
    // update the commented timestamp on the parent
    q("UPDATE `item` set `commented` = '%s', `changed` = '%s' WHERE `id` = %d", dbesc(datetime_convert()), dbesc(datetime_convert()), intval($parent));
    if ($post_id != $parent) {
        update_thread($parent);
    }
    call_hooks('post_local_end', $datarray);
    if (strlen($emailcc) && $profile_uid == local_user()) {
        $erecips = explode(',', $emailcc);
        if (count($erecips)) {
            foreach ($erecips as $recip) {
                $addr = trim($recip);
                if (!strlen($addr)) {
                    continue;
                }
                $disclaimer = '<hr />' . sprintf(t('This message was sent to you by %s, a member of the Friendica social network.'), $a->user['username']) . '<br />';
                $disclaimer .= sprintf(t('You may visit them online at %s'), $a->get_baseurl() . '/profile/' . $a->user['nickname']) . EOL;
                $disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . EOL;
                if (!$datarray['title'] == '') {
                    $subject = email_header_encode($datarray['title'], 'UTF-8');
                } else {
                    $subject = email_header_encode('[Friendica]' . ' ' . sprintf(t('%s posted an update.'), $a->user['username']), 'UTF-8');
                }
                $link = '<a href="' . $a->get_baseurl() . '/profile/' . $a->user['nickname'] . '"><img src="' . $author['thumb'] . '" alt="' . $a->user['username'] . '" /></a><br /><br />';
                $html = prepare_body($datarray);
                $message = '<html><body>' . $link . $html . $disclaimer . '</body></html>';
                include_once 'include/html2plain.php';
                $params = array('fromName' => $a->user['username'], 'fromEmail' => $a->user['email'], 'toEmail' => $addr, 'replyTo' => $a->user['email'], 'messageSubject' => $subject, 'htmlVersion' => $message, 'textVersion' => html2plain($html . $disclaimer));
                Emailer::send($params);
            }
        }
    }
    create_tags_from_item($post_id);
    create_files_from_item($post_id);
    if ($post_id == $parent) {
        add_thread($post_id);
    }
    // This is a real juggling act on shared hosting services which kill your processes
    // e.g. dreamhost. We used to start delivery to our native delivery agents in the background
    // and then run our plugin delivery from the foreground. We're now doing plugin delivery first,
    // because as soon as you start loading up a bunch of remote delivey processes, *this* page is
    // likely to get killed off. If you end up looking at an /item URL and a blank page,
    // it's very likely the delivery got killed before all your friends could be notified.
    // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting,
    // or cut back on plugins which do remote deliveries.
    proc_run('php', "include/notifier.php", $notify_type, "{$post_id}");
    logger('post_complete');
    item_post_return($a->get_baseurl(), $api_source, $return_path);
    // NOTREACHED
}
Пример #28
0
<?php

/* Permette di inviare newsletter a tutti gli utenti registrati */
// Includo le classi principali
include_once "../../core/class.Ocarina.php";
include_once "../../core/class.MySQL.php";
include_once "../../core/class.Functions.php";
include_once "../../etc/class.Email.php";
include_once "../../rendering/config.php";
// Istanzio le classi
$cms = new Ocarina();
$db = new MySQL();
$func = new Functions();
$email = new Emailer();
/* Invia la newsletter */
if (isset($_POST['invianewsletter'])) {
    // Prelevo l'oggetto
    $oggetto = $_POST['oggetto'];
    // Prelevo il contenuto
    $contenuto = $_POST['contenuto'];
    // Prelevo l'email del mittente
    $mittente = $cms->email();
    // Mi connetto al database
    $db->connettidb();
    // Prelevo tutti gli indirizzi email e spedisco
    $query = $db->query("SELECT email FROM utenti");
    while ($riga = $db->estrai($query)) {
        $destinatario = $func->rescape($riga->email);
        $email->email($mittente, $destinatario, $oggetto, $contenuto);
    }
    // Mi disconnetto dal databse
Пример #29
0
function notification($params)
{
    #logger('notification()', LOGGER_DEBUG);
    $a = get_app();
    // from here on everything is in the recipients language
    push_lang($params['language']);
    $banner = t('Friendica Notification');
    $product = FRIENDICA_PLATFORM;
    $siteurl = $a->get_baseurl(true);
    $thanks = t('Thank You,');
    $sitename = $a->config['sitename'];
    $site_admin = sprintf(t('%s Administrator'), $sitename);
    $nickname = "";
    $sender_name = $sitename;
    $hostname = $a->get_hostname();
    if (strpos($hostname, ':')) {
        $hostname = substr($hostname, 0, strpos($hostname, ':'));
    }
    $sender_email = $a->config['sender_email'];
    if (empty($sender_email)) {
        $sender_email = t('noreply') . '@' . $hostname;
    }
    $user = q("SELECT `nickname` FROM `user` WHERE `uid` = %d", intval($params['uid']));
    if ($user) {
        $nickname = $user[0]["nickname"];
    }
    // with $params['show_in_notification_page'] == false, the notification isn't inserted into
    // the database, and an email is sent if applicable.
    // default, if not specified: true
    $show_in_notification_page = x($params, 'show_in_notification_page') ? $params['show_in_notification_page'] : True;
    $additional_mail_header = "";
    $additional_mail_header .= "Precedence: list\n";
    $additional_mail_header .= "X-Friendica-Host: " . $hostname . "\n";
    $additional_mail_header .= "X-Friendica-Account: <" . $nickname . "@" . $hostname . ">\n";
    $additional_mail_header .= "X-Friendica-Platform: " . FRIENDICA_PLATFORM . "\n";
    $additional_mail_header .= "X-Friendica-Version: " . FRIENDICA_VERSION . "\n";
    $additional_mail_header .= "List-ID: <notification." . $hostname . ">\n";
    $additional_mail_header .= "List-Archive: <" . $a->get_baseurl() . "/notifications/system>\n";
    if (array_key_exists('item', $params)) {
        $title = $params['item']['title'];
        $body = $params['item']['body'];
    } else {
        $title = $body = '';
    }
    // e.g. "your post", "David's photo", etc.
    $possess_desc = t('%s <!item_type!>');
    if ($params['type'] == NOTIFY_MAIL) {
        $subject = sprintf(t('[Friendica:Notify] New mail received at %s'), $sitename);
        $preamble = sprintf(t('%1$s sent you a new private message at %2$s.'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s sent you %2$s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a private message') . '[/url]');
        $sitelink = t('Please visit %s to view and/or reply to your private messages.');
        $tsitelink = sprintf($sitelink, $siteurl . '/message/' . $params['item']['id']);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '/message/' . $params['item']['id'] . '">' . $sitename . '</a>');
        $itemlink = $siteurl . '/message/' . $params['item']['id'];
    }
    if ($params['type'] == NOTIFY_COMMENT) {
        //		logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
        $parent_id = $params['parent'];
        $p = q("SELECT `ignored` FROM `thread` WHERE `iid` = %d AND `uid` = %d LIMIT 1", intval($parent_id), intval($params['uid']));
        if ($p and count($p) and $p[0]["ignored"]) {
            logger("Thread " . $parent_id . " will be ignored", LOGGER_DEBUG);
            return;
        }
        // Check to see if there was already a tag notify or comment notify for this post.
        // If so don't create a second notification
        $p = null;
        $p = q("select id from notify where (type = %d or type = %d or type = %d) and link = '%s' and uid = %d limit 1", intval(NOTIFY_TAGSELF), intval(NOTIFY_COMMENT), intval(NOTIFY_SHARE), dbesc($params['link']), intval($params['uid']));
        if ($p and count($p)) {
            pop_lang();
            return;
        }
        // if it's a post figure out who's post it is.
        $p = null;
        if ($params['otype'] === 'item' && $parent_id) {
            $p = q("select * from item where id = %d and uid = %d limit 1", intval($parent_id), intval($params['uid']));
        }
        $item_post_type = item_post_type($p[0]);
        //$possess_desc = str_replace('<!item_type!>',$possess_desc);
        // "a post"
        $dest_str = sprintf(t('%1$s commented on [url=%2$s]a %3$s[/url]'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $itemlink, $item_post_type);
        // "George Bull's post"
        if ($p) {
            $dest_str = sprintf(t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $itemlink, $p[0]['author-name'], $item_post_type);
        }
        // "your post"
        if ($p[0]['owner-name'] == $p[0]['author-name'] && $p[0]['wall']) {
            $dest_str = sprintf(t('%1$s commented on [url=%2$s]your %3$s[/url]'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $itemlink, $item_post_type);
        }
        // Some mail softwares relies on subject field for threading.
        // So, we cannot have different subjects for notifications of the same thread.
        // Before this we have the name of the replier on the subject rendering
        // differents subjects for messages on the same thread.
        $subject = sprintf(t('[Friendica:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $params['source_name']);
        $preamble = sprintf(t('%s commented on an item/conversation you have been following.'), $params['source_name']);
        $epreamble = $dest_str;
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_WALL) {
        $subject = sprintf(t('[Friendica:Notify] %s posted to your profile wall'), $params['source_name']);
        $preamble = sprintf(t('%1$s posted to your profile wall at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s posted to [url=%2$s]your wall[/url]'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $params['link']);
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_TAGSELF) {
        $subject = sprintf(t('[Friendica:Notify] %s tagged you'), $params['source_name']);
        $preamble = sprintf(t('%1$s tagged you at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s [url=%2$s]tagged you[/url].'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $params['link']);
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_SHARE) {
        $subject = sprintf(t('[Friendica:Notify] %s shared a new post'), $params['source_name']);
        $preamble = sprintf(t('%1$s shared a new post at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s [url=%2$s]shared a post[/url].'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $params['link']);
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_POKE) {
        $subject = sprintf(t('[Friendica:Notify] %1$s poked you'), $params['source_name']);
        $preamble = sprintf(t('%1$s poked you at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s [url=%2$s]poked you[/url].'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $params['link']);
        $subject = str_replace('poked', t($params['activity']), $subject);
        $preamble = str_replace('poked', t($params['activity']), $preamble);
        $epreamble = str_replace('poked', t($params['activity']), $epreamble);
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_TAGSHARE) {
        $subject = sprintf(t('[Friendica:Notify] %s tagged your post'), $params['source_name']);
        $preamble = sprintf(t('%1$s tagged your post at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('%1$s tagged [url=%2$s]your post[/url]'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $itemlink);
        $sitelink = t('Please visit %s to view and/or reply to the conversation.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_INTRO) {
        $subject = sprintf(t('[Friendica:Notify] Introduction received'));
        $preamble = sprintf(t('You\'ve received an introduction from \'%1$s\' at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('You\'ve received [url=%1$s]an introduction[/url] from %2$s.'), $itemlink, '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
        $body = sprintf(t('You may visit their profile at %s'), $params['source_link']);
        $sitelink = t('Please visit %s to approve or reject the introduction.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
        switch ($params['verb']) {
            case ACTIVITY_FRIEND:
                // someone started to share with user (mostly OStatus)
                $subject = sprintf(t('[Friendica:Notify] A new person is sharing with you'));
                $preamble = sprintf(t('%1$s is sharing with you at %2$s'), $params['source_name'], $sitename);
                $epreamble = sprintf(t('%1$s is sharing with you at %2$s'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $sitename);
                break;
            case ACTIVITY_FOLLOW:
                // someone started to follow the user (mostly OStatus)
                $subject = sprintf(t('[Friendica:Notify] You have a new follower'));
                $preamble = sprintf(t('You have a new follower at %2$s : %1$s'), $params['source_name'], $sitename);
                $epreamble = sprintf(t('You have a new follower at %2$s : %1$s'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', $sitename);
                break;
            default:
                // ACTIVITY_REQ_FRIEND is default activity for notifications
                break;
        }
    }
    if ($params['type'] == NOTIFY_SUGGEST) {
        $subject = sprintf(t('[Friendica:Notify] Friend suggestion received'));
        $preamble = sprintf(t('You\'ve received a friend suggestion from \'%1$s\' at %2$s'), $params['source_name'], $sitename);
        $epreamble = sprintf(t('You\'ve received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s.'), $itemlink, '[url=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/url]', '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
        $body = t('Name:') . ' ' . $params['item']['name'] . "\n";
        $body .= t('Photo:') . ' ' . $params['item']['photo'] . "\n";
        $body .= sprintf(t('You may visit their profile at %s'), $params['item']['url']);
        $sitelink = t('Please visit %s to approve or reject the suggestion.');
        $tsitelink = sprintf($sitelink, $siteurl);
        $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
        $itemlink = $params['link'];
    }
    if ($params['type'] == NOTIFY_CONFIRM) {
        if ($params['verb'] == ACTIVITY_FRIEND) {
            // mutual connection
            $subject = sprintf(t('[Friendica:Notify] Connection accepted'));
            $preamble = sprintf(t('\'%1$s\' has acepted your connection request at %2$s'), $params['source_name'], $sitename);
            $epreamble = sprintf(t('%2$s has accepted your [url=%1$s]connection request[/url].'), $itemlink, '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
            $body = t('You are now mutual friends and may exchange status updates, photos, and email
	without restriction.');
            $sitelink = t('Please visit %s  if you wish to make any changes to this relationship.');
            $tsitelink = sprintf($sitelink, $siteurl);
            $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
            $itemlink = $params['link'];
        } else {
            // ACTIVITY_FOLLOW
            $subject = sprintf(t('[Friendica:Notify] Connection accepted'));
            $preamble = sprintf(t('\'%1$s\' has acepted your connection request at %2$s'), $params['source_name'], $sitename);
            $epreamble = sprintf(t('%2$s has accepted your [url=%1$s]connection request[/url].'), $itemlink, '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
            $body = sprintf(t('\'%1$s\' has chosen to accept you a "fan", which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically.'), $params['source_name']);
            $body .= "\n\n";
            $body .= sprintf(t('\'%1$s\' may choose to extend this into a two-way or more permissive relationship in the future. '), $params['source_name']);
            $sitelink = t('Please visit %s  if you wish to make any changes to this relationship.');
            $tsitelink = sprintf($sitelink, $siteurl);
            $hsitelink = sprintf($sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
            $itemlink = $params['link'];
        }
    }
    if ($params['type'] == NOTIFY_SYSTEM) {
        switch ($params['event']) {
            case "SYSTEM_REGISTER_REQUEST":
                $subject = sprintf(t('[Friendica System:Notify] registration request'));
                $preamble = sprintf(t('You\'ve received a registration request from \'%1$s\' at %2$s'), $params['source_name'], $sitename);
                $epreamble = sprintf(t('You\'ve received a [url=%1$s]registration request[/url] from %2$s.'), $itemlink, '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
                $body = sprintf(t('Full Name:	%1$s\\nSite Location:	%2$s\\nLogin Name:	%3$s (%4$s)'), $params['source_name'], $siteurl, $params['source_mail'], $params['source_nick']);
                $sitelink = t('Please visit %s to approve or reject the request.');
                $tsitelink = sprintf($sitelink, $params['link']);
                $hsitelink = sprintf($sitelink, '<a href="' . $params['link'] . '">' . $sitename . '</a><br><br>');
                $itemlink = $params['link'];
                break;
            case "SYSTEM_DB_UPDATE_FAIL":
                break;
        }
    }
    if ($params['type'] == "SYSTEM_EMAIL") {
        // not part of the notifications.
        // it just send a mail to the user.
        // It will be used by the system to send emails to users (like
        // password reset, invitations and so) using one look (but without
        // add a notification to the user, with could be inexistent)
        $subject = $params['subject'];
        $preamble = $params['preamble'];
        $body = $params['body'];
        $sitelink = "";
        $tsitelink = "";
        $hsitelink = "";
        $itemlink = "";
        $show_in_notification_page = false;
    }
    $subject .= " (" . $nickname . "@" . $hostname . ")";
    $h = array('params' => $params, 'subject' => $subject, 'preamble' => $preamble, 'epreamble' => $epreamble, 'body' => $body, 'sitelink' => $sitelink, 'tsitelink' => $tsitelink, 'hsitelink' => $hsitelink, 'itemlink' => $itemlink);
    call_hooks('enotify', $h);
    $subject = $h['subject'];
    $preamble = $h['preamble'];
    $epreamble = $h['epreamble'];
    $body = $h['body'];
    $sitelink = $h['sitelink'];
    $tsitelink = $h['tsitelink'];
    $hsitelink = $h['hsitelink'];
    $itemlink = $h['itemlink'];
    if ($show_in_notification_page) {
        logger("adding notification entry", LOGGER_DEBUG);
        do {
            $dups = false;
            $hash = random_string();
            $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1", dbesc($hash));
            if (count($r)) {
                $dups = true;
            }
        } while ($dups == true);
        $datarray = array();
        $datarray['hash'] = $hash;
        $datarray['name'] = $params['source_name'];
        $datarray['url'] = $params['source_link'];
        $datarray['photo'] = $params['source_photo'];
        $datarray['date'] = datetime_convert();
        $datarray['uid'] = $params['uid'];
        $datarray['link'] = $itemlink;
        $datarray['parent'] = $parent_id;
        $datarray['type'] = $params['type'];
        $datarray['verb'] = $params['verb'];
        $datarray['otype'] = $params['otype'];
        $datarray['abort'] = false;
        call_hooks('enotify_store', $datarray);
        if ($datarray['abort']) {
            pop_lang();
            return False;
        }
        // create notification entry in DB
        $r = q("insert into notify (hash,name,url,photo,date,uid,link,parent,type,verb,otype)\n\t\t\tvalues('%s','%s','%s','%s','%s',%d,'%s',%d,%d,'%s','%s')", dbesc($datarray['hash']), dbesc($datarray['name']), dbesc($datarray['url']), dbesc($datarray['photo']), dbesc($datarray['date']), intval($datarray['uid']), dbesc($datarray['link']), intval($datarray['parent']), intval($datarray['type']), dbesc($datarray['verb']), dbesc($datarray['otype']));
        $r = q("select id from notify where hash = '%s' and uid = %d limit 1", dbesc($hash), intval($params['uid']));
        if ($r) {
            $notify_id = $r[0]['id'];
        } else {
            pop_lang();
            return False;
        }
        // we seem to have a lot of duplicate comment notifications due to race conditions, mostly from forums
        // After we've stored everything, look again to see if there are any duplicates and if so remove them
        $p = null;
        $p = q("select id from notify where ( type = %d or type = %d ) and link = '%s' and uid = %d order by id", intval(NOTIFY_TAGSELF), intval(NOTIFY_COMMENT), dbesc($params['link']), intval($params['uid']));
        if ($p && count($p) > 1) {
            for ($d = 1; $d < count($p); $d++) {
                q("delete from notify where id = %d", intval($p[$d]['id']));
            }
            // only continue on if we stored the first one
            if ($notify_id != $p[0]['id']) {
                pop_lang();
                return False;
            }
        }
        $itemlink = $a->get_baseurl() . '/notify/view/' . $notify_id;
        $msg = replace_macros($epreamble, array('$itemlink' => $itemlink));
        $r = q("update notify set msg = '%s' where id = %d and uid = %d", dbesc($msg), intval($notify_id), intval($params['uid']));
    }
    // send email notification if notification preferences permit
    if (intval($params['notify_flags']) & intval($params['type']) || $params['type'] == NOTIFY_SYSTEM || $params['type'] == "SYSTEM_EMAIL") {
        logger('sending notification email');
        if (isset($params['parent']) and intval($params['parent']) != 0) {
            $id_for_parent = $params['parent'] . "@" . $hostname;
            // Is this the first email notification for this parent item and user?
            $r = q("select `id` from `notify-threads` where `master-parent-item` = %d and `receiver-uid` = %d limit 1", intval($params['parent']), intval($params['uid']));
            // If so, create the record of it and use a message-id smtp header.
            if (!$r) {
                logger("notify_id:" . intval($notify_id) . ", parent: " . intval($params['parent']) . "uid: " . intval($params['uid']), LOGGER_DEBUG);
                $r = q("insert into `notify-threads` (`notify-id`, `master-parent-item`, `receiver-uid`, `parent-item`)\n\t\t\t\t\tvalues(%d,%d,%d,%d)", intval($notify_id), intval($params['parent']), intval($params['uid']), 0);
                $additional_mail_header .= "Message-ID: <{$id_for_parent}>\n";
                $log_msg = "include/enotify: No previous notification found for this parent:\n" . "  parent: {$params['parent']}\n" . "  uid   : {$params['uid']}\n";
                logger($log_msg, LOGGER_DEBUG);
            } else {
                // If not, just "follow" the thread.
                $additional_mail_header .= "References: <{$id_for_parent}>\nIn-Reply-To: <{$id_for_parent}>\n";
                logger("There's already a notification for this parent:\n" . print_r($r, true), LOGGER_DEBUG);
            }
        }
        // textversion keeps linebreaks
        $textversion = strip_tags(str_replace("<br>", "\n", html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n"), "\n", $body))), ENT_QUOTES, 'UTF-8')));
        $htmlversion = html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n\\n", "\\n"), "<br />\n", $body))), ENT_QUOTES, 'UTF-8');
        $datarray = array();
        $datarray['banner'] = $banner;
        $datarray['product'] = $product;
        $datarray['preamble'] = $preamble;
        $datarray['sitename'] = $sitename;
        $datarray['siteurl'] = $siteurl;
        $datarray['type'] = $params['type'];
        $datarray['parent'] = $params['parent'];
        $datarray['source_name'] = $params['source_name'];
        $datarray['source_link'] = $params['source_link'];
        $datarray['source_photo'] = $params['source_photo'];
        $datarray['uid'] = $params['uid'];
        $datarray['username'] = $params['to_name'];
        $datarray['hsitelink'] = $hsitelink;
        $datarray['tsitelink'] = $tsitelink;
        $datarray['hitemlink'] = '<a href="' . $itemlink . '">' . $itemlink . '</a>';
        $datarray['titemlink'] = $itemlink;
        $datarray['thanks'] = $thanks;
        $datarray['site_admin'] = $site_admin;
        $datarray['title'] = stripslashes($title);
        $datarray['htmlversion'] = $htmlversion;
        $datarray['textversion'] = $textversion;
        $datarray['subject'] = $subject;
        $datarray['headers'] = $additional_mail_header;
        call_hooks('enotify_mail', $datarray);
        // check whether sending post content in email notifications is allowed
        // always true for "SYSTEM_EMAIL"
        $content_allowed = !get_config('system', 'enotify_no_content') || $params['type'] == "SYSTEM_EMAIL";
        // load the template for private message notifications
        $tpl = get_markup_template('email_notify_html.tpl');
        $email_html_body = replace_macros($tpl, array('$banner' => $datarray['banner'], '$product' => $datarray['product'], '$preamble' => str_replace("\n", "<br>\n", $datarray['preamble']), '$sitename' => $datarray['sitename'], '$siteurl' => $datarray['siteurl'], '$source_name' => $datarray['source_name'], '$source_link' => $datarray['source_link'], '$source_photo' => $datarray['source_photo'], '$username' => $datarray['to_name'], '$hsitelink' => $datarray['hsitelink'], '$hitemlink' => $datarray['hitemlink'], '$thanks' => $datarray['thanks'], '$site_admin' => $datarray['site_admin'], '$title' => $datarray['title'], '$htmlversion' => $datarray['htmlversion'], '$content_allowed' => $content_allowed));
        // load the template for private message notifications
        $tpl = get_markup_template('email_notify_text.tpl');
        $email_text_body = replace_macros($tpl, array('$banner' => $datarray['banner'], '$product' => $datarray['product'], '$preamble' => $datarray['preamble'], '$sitename' => $datarray['sitename'], '$siteurl' => $datarray['siteurl'], '$source_name' => $datarray['source_name'], '$source_link' => $datarray['source_link'], '$source_photo' => $datarray['source_photo'], '$username' => $datarray['to_name'], '$tsitelink' => $datarray['tsitelink'], '$titemlink' => $datarray['titemlink'], '$thanks' => $datarray['thanks'], '$site_admin' => $datarray['site_admin'], '$title' => $datarray['title'], '$textversion' => $datarray['textversion'], '$content_allowed' => $content_allowed));
        //		logger('text: ' . $email_text_body);
        // use the Emailer class to send the message
        return Emailer::send(array('uid' => $params['uid'], 'fromName' => $sender_name, 'fromEmail' => $sender_email, 'replyTo' => $sender_email, 'toEmail' => $params['to_email'], 'messageSubject' => $datarray['subject'], 'htmlVersion' => $email_html_body, 'textVersion' => $email_text_body, 'additionalMailHeader' => $datarray['headers']));
    }
    return False;
}
Пример #30
0
         $url = "http://www.fastfoodjobsuk.co.uk/register_activate.php?email={$email}&code={$created}";
         $mail->bodyAdd("Dear {$first_name} {$last_name}");
         $mail->bodyAdd("");
         $mail->bodyAdd("Thank you for registering with Fast Food Jobs but as we take your privacy seriously, we just wanted to check you did register with our site.");
         $mail->bodyAdd("In order to gain access to all of the web site functionality please click on here: {$url}");
         $mail->bodyAdd("");
         $mail->bodyAdd("If you should not have received this e-mail, please click on the e-mail link below and just put \"remove\" in the heading and we will remove your details from our system.");
         $mail->bodyAdd("");
         $mail->bodyAdd("Regards");
         $mail->bodyAdd("");
         $mail->bodyAdd("The Fast Food Jobs Team");
         $mail->bodyAdd("");
         $mail->bodyAdd("Tel: 0845 644 8252");
         $mail->bodyAdd("*****@*****.**");
         $mail->send();
         $adminMail = new Emailer();
         $adminMail->setTo($configuration["adminEmail"]);
         $adminMail->setFrom($configuration["fromEmail"]);
         $adminMail->setSubject("New Sign up");
         $adminMail->bodyAdd("Dear admin,");
         $adminMail->bodyAdd("Just to let you know that new member");
         $adminMail->bodyAdd("Name: " . $first_name . " " . $last_name);
         $adminMail->bodyAdd("Emai: {$email}");
         $adminMail->bodyAdd("Role: {$role}");
         $adminMail->bodyAdd("has just joined Fast Foods.");
         $adminMail->send();
         header("Location: register_thankyou.php");
         exit;
     }
 }
 $errorText = "<ul>" . $errorText . "</ul>";