Ejemplo n.º 1
0
 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();
         }
     }
 }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
 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());
     }
 }