public function cronUnpublishPage($oEvent) { $object_type = umiObjectTypesCollection::getInstance()->getTypeByGUID('root-pages-type'); $field_id = $object_type->getFieldId("expiration_date"); $sel = new umiSelection(); $sel->addPropertyFilterLess($field_id, time()); $sel->addPropertyFilterNotEqual($field_id, 0); $sel->addActiveFilter(true); $sel->forceHierarchyTable(true); $result = umiSelectionsParser::runSelection($sel); $res = array(); foreach ($result as $key => $page_id) { $ePage = umiHierarchy::getInstance()->getElement($page_id, true); $ePage->setIsActive(false); $pageObject = $ePage->getObject(); $pageObject->setValue("publish_status", $this->getPageStatusIdByStatusSid("page_status_unpublish")); $pageObject->commit(); $ePage->commit(); if (!($publishComments = $ePage->getValue("publish_comments"))) { $publishComments = "Отсутствуют."; } $user_id = $ePage->getObject()->getOwnerId(); $oUser = umiObjectsCollection::getInstance()->getObject($user_id); if ($oUser instanceof umiObject && ($user_email = $oUser->getValue("e-mail"))) { //Составляем и посылаем сообщение пользователю $mail_message = new umiMail(); $from = regedit::getInstance()->getVal("//settings/email_from"); $mail_message->setFrom($from); $mail_message->setPriorityLevel("high"); $mail_message->setSubject(getLabel('label-notification-expired-mail-header')); list($body) = def_module::loadTemplatesForMail("mail/expired", "body"); $block['notify_header'] = getLabel('label-notification-expired-mail-header'); $block['page_header'] = $ePage->getName(); $block['publish_comments'] = $publishComments; $domain = domainsCollection::getInstance()->getDomain($ePage->getDomainId()); $page_host = "http://" . $domain->getHost() . umiHierarchy::getInstance()->getPathById($page_id); $block['page_link'] = $page_host; $mail_html = def_module::parseTemplateForMail($body, $block, $page_id); $mail_message->addRecipient($user_email); $mail_message->setContent($mail_html); $mail_message->commit(); $mail_message->send(); } } }
public function forget_do($template = "default") { static $macrosResult; if ($macrosResult) { return $macrosResult; } $forget_login = (string) getRequest('forget_login'); $forget_email = (string) getRequest('forget_email'); $hasLogin = strlen($forget_login) != 0; $hasEmail = strlen($forget_email) != 0; $user_id = false; list($template_wrong_login_block, $template_forget_sended) = def_module::loadTemplates("users/forget/" . $template, "wrong_login_block", "forget_sended"); list($template_mail_verification, $template_mail_verification_subject) = def_module::loadTemplatesForMail("users/forget/" . $template, "mail_verification", "mail_verification_subject"); if ($hasLogin || $hasEmail) { $sel = new selector('objects'); $sel->types('object-type')->name('users', 'user'); if ($hasLogin) { $sel->where('login')->equals($forget_login); } if ($hasEmail) { $sel->where('e-mail')->equals($forget_email); } $sel->limit(0, 1); $user_id = $sel->first ? $sel->first->id : false; } else { $user_id = false; } if ($user_id) { $activate_code = md5(self::getRandomPassword()); $object = umiObjectsCollection::getInstance()->getObject($user_id); $regedit = regedit::getInstance(); $without_act = (bool) $regedit->getVal("//modules/users/without_act"); if ($without_act || intval($object->getValue('is_activated'))) { $object->setValue("activate_code", $activate_code); $object->commit(); $email = $object->getValue("e-mail"); $fio = $object->getValue("lname") . " " . $object->getValue("fname") . " " . $object->getValue("father_name"); $email_from = regedit::getInstance()->getVal("//settings/email_from"); $fio_from = regedit::getInstance()->getVal("//settings/fio_from"); $mail_arr = array(); $mail_arr['domain'] = $domain = $_SERVER['HTTP_HOST']; $mail_arr['restore_link'] = "http://" . $domain . $this->pre_lang . "/users/restore/" . $activate_code . "/"; $mail_arr['login'] = $object->getValue('login'); $mail_arr['email'] = $object->getValue('e-mail'); $mail_subject = def_module::parseTemplateForMail($template_mail_verification_subject, $mail_arr, false, $user_id); $mail_content = def_module::parseTemplateForMail($template_mail_verification, $mail_arr, false, $user_id); $someMail = new umiMail(); $someMail->addRecipient($email, $fio); $someMail->setFrom($email_from, $fio_from); $someMail->setSubject($mail_subject); $someMail->setPriorityLevel("highest"); $someMail->setContent($mail_content); $someMail->commit(); $someMail->send(); $oEventPoint = new umiEventPoint("users_restore_password"); $oEventPoint->setParam("user_id", $user_id); $this->setEventPoint($oEventPoint); $block_arr = array(); $block_arr['attribute:status'] = "success"; return $macrosResult = def_module::parseTemplate($template_forget_sended, $block_arr); } else { $referer_url = getServer('HTTP_REFERER'); if (!strlen($referer_url)) { $referer_url = $this->pre_lang . "/users/forget/"; } $this->errorRegisterFailPage($referer_url); $this->errorNewMessage("%errors_forget_nonactivated_login%"); $this->errorPanic(); $block_arr = array(); $block_arr['attribute:status'] = "fail"; $block_arr['forget_login'] = $forget_login; $block_arr['forget_email'] = $forget_email; return $macrosResult = def_module::parseTemplate($template_wrong_login_block, $block_arr); } } else { $referer_url = getServer('HTTP_REFERER'); if (!strlen($referer_url)) { $referer_url = $this->pre_lang . "/users/forget/"; } $this->errorRegisterFailPage($referer_url); if ($hasLogin && !$hasEmail) { $this->errorNewMessage("%errors_forget_wrong_login%"); } if ($hasEmail && !$hasLogin) { $this->errorNewMessage("%errors_forget_wrong_email%"); } if ($hasEmail && $hasLogin || !$hasEmail && !$hasLogin) { $this->errorNewMessage("%errors_forget_wrong_person%"); } $this->errorPanic(); $block_arr = array(); $block_arr['attribute:status'] = "fail"; $block_arr['forget_login'] = $forget_login; $block_arr['forget_email'] = $forget_email; return $macrosResult = def_module::parseTemplate($template_wrong_login_block, $block_arr); } }
protected function sendNotification() { $daysLeft = regedit::getInstance()->getVal("//modules/banners/days-before-notification"); $daysLeft = $daysLeft * 24 * 3600; $viewsLeft = regedit::getInstance()->getVal("//modules/banners/clicks-before-notification"); $items = array(); $sel = new selector('objects'); $sel->types('object-type')->name('banners', 'banner'); foreach ($sel->result() as $banner) { $tillDate = toTimeStamp($banner->getValue('show_till_date')); $viewsCount = $banner->getValue('views_count'); $maxViews = $banner->getValue('max_views'); $days = false; $views = false; if ((int) $tillDate && time() + $daysLeft >= $tillDate) { $days = true; } if ((int) $maxViews && $viewsCount + $viewsLeft >= $maxViews) { $views = true; } if ($days || $views) { $bannerId = $banner->id; $bannerName = $banner->getName(); $domain = domainsCollection::getInstance()->getDefaultDomain(); $link = "http://" . $domain->getHost() . '/admin/banners/edit/' . $bannerId; list($templateLine) = def_module::loadTemplatesForMail("mail/banner_notification", "item"); $itemArr['link'] = $link; $itemArr['bannerName'] = $bannerName; if ($days) { $itemArr['tillDate'] = ' - срок показа истекает ' . $banner->getValue('show_till_date')->getFormattedDate() . '.'; } elseif ($views) { $itemArr['tillDate'] = ' - оставшееся количество показов: ' . ($maxViews - $viewsCount) . '.'; } else { $itemArr['tillDate'] = ''; } $items[] = def_module::parseTemplateForMail($templateLine, $itemArr, false, $bannerId); } } if (count($items)) { $blockArr = array(); list($subject, $template) = def_module::loadTemplatesForMail("mail/banner_notification", "subject", "body"); $mailMessage = new umiMail(); $from = regedit::getInstance()->getVal("//settings/email_from"); $mailMessage->setFrom($from); $emailTo = regedit::getInstance()->getVal("//settings/admin_email"); $mailMessage->addRecipient($emailTo); $mailMessage->setPriorityLevel("high"); $subject = def_module::parseTemplateForMail($subject, $blockArr); $mailMessage->setSubject($subject); $blockArr['header'] = $subject; $blockArr['+items'] = $items; $content = def_module::parseTemplateForMail($template, $blockArr); $mailMessage->setContent($content); $mailMessage->commit(); $mailMessage->send(); regedit::getInstance()->setVal("//modules/banners/last-check-date", time()); } }