/** * Функция логирует платежи * * @param (array) $arrData - массив данных, для записи в лог (array('field name' => field value)) * @param (string) $status - статус платежа. (SUCCESS - успешно, FAIL - ошибка, WRONG PARAMS - оплата прошла, но от сервера получены неверные параметры) * @param (string or false) $mod - название мода, которым производилась оплата. По умолчанию false * * @return string (сгенерированную лог-строку) */ static function logPaymentData($arrData, $status, $mod = false) { $mess = "\n" . '================== ' . strtoupper($status) . ' (' . terms::currentDateTime() . ') ==================' . "\n"; $mod ? $mess .= 'MOD: ' . $mod . "\n" : null; foreach ($arrData as $key => $value) { $mess .= strtoupper($key) . ': ' . $value . "\n"; } $mess .= "\n" . 'USER IP: ' . $_SERVER['REMOTE_ADDR'] . "\n" . '============================================================================' . "\n\n"; $file = $mod ? $mod . '_' . terms::currentDate() . '_payment.log' : terms::currentDate() . '_payment.log'; @error_log($mess, 3, 'core/data/log/' . $file); return $mess; }
public function rssVacancy($period = false) { // получаем объект вакансий global $vacancy; // получаем массив селекта "Раздел" global $arrDataSections; global $arrDataProfessions; // получаем массив селекта "Регион" global $arrDataRegions; global $arrDataCitys; $strWhere = $period ? "act_datetime>=DATE_ADD(CURRENT_TIMESTAMP, INTERVAL -" . $period . " DAY)" : false; $link = chpu::createChpuUrl($this->_host . 'index.php?do=yvl'); $arrLimit = array('strLimit' => '0,' . $this->_limit, 'calcRows' => false); $arrVacancy = $vacancy->getActiveAnnounces($arrLimit, $strWhere); /* * *** Формируем XML-документ **** */ $currDT = terms::currentDateTime(); $data = '<?xml version="1.0" encoding="' . $this->_charset . '"?>' . "\n" . '<source creation-time="' . terms::currentDateTime() . ' ' . $this->_timeZone . '" host="' . $this->_host . '">' . "\n" . ' <vacancies>' . "\n"; $defCurrency = 'USD'; if (!empty($arrVacancy)) { foreach ($arrVacancy as $value) { $date = strtotime($value['act_datetime']) ? strtotime($value['act_datetime']) : time(); // проверяем, если компания агентство, значит берем название агентства // если не агентство, смотрим, если не путое назв. комп, берем его // инчае ФИО if ($value['user_type'] === 'agent') { $agent = 'true'; $name = $value['agent_name']; } else { $agent = 'false'; if (!empty($value['company_name'])) { $name = $value['company_name']; } else { $name = $value['contacts_fio']; } } if (isset($arrDataCitys[$value['id_city']])) { $location = $arrDataRegions[$value['id_region']]['name'] . ', ' . $arrDataCitys[$value['id_city']]['name']; } else { $location = $arrDataRegions[$value['id_region']]['name']; } // Проверяем зарплату. Проверяем только ЗП до // если пустое, значит оговаривается при собеседовании //$value['pay_from'] . $value['pay_post'] $salary = !empty($value['pay_post']) ? $value['pay_post'] : 'оговаривается при собеседовании'; $data .= ' <vacancy>' . "\n" . ' <url>' . chpu::createChpuUrl($this->_host . 'index.php?do=vacancy&action=view&id=' . $value['tId']) . '</url>' . "\n" . ' <creation-date>' . date('Y-m-d H:i:s', $date) . ' ' . $this->_timeZone . '</creation-date>' . "\n" . ' <salary>' . $salary . '</salary>' . "\n" . ' <currency>' . (!empty($value['currency']) ? $value['currency'] : $defCurrency) . '</currency>' . "\n" . ' <category>' . "\n" . ' <industry>' . $arrDataSections[$value['id_section']]['name'] . '</industry>' . "\n" . ' <specialization>' . $arrDataProfessions[$value['id_profession']]['name'] . '</specialization>' . "\n" . ' </category>' . "\n" . ' <job-name>' . $value['title'] . '</job-name>' . "\n" . ' <addresses>' . "\n" . ' <address>' . "\n" . ' <location>' . $location . '</location>' . "\n" . ' </address>' . "\n" . ' </addresses>' . "\n" . ' <company>' . "\n" . ' <name>' . $name . '</name>' . "\n" . ' <hr-agency>' . $agent . '</hr-agency>' . "\n" . ' </company>' . "\n" . ' </vacancy>' . "\n"; } } $data .= ' </vacancies>' . "\n" . '</source>'; return $data; }
/** * Функция отправляет жалобу на комментарий * * @param array $arrComment - массив данных комментария * @param array $arrNews - массив данных новости * @param string $recipient - адрес получателя * * @return bool */ public function sendComplaintComment($arrComment, $arrNews, $recipient) { $mailer = new mailer(); // проверяем, кому уходит письмо if (CONF_MAIL_ADMIN_EMAIL == $recipient) { $newsLink = CONF_SCRIPT_URL . CONF_ADMIN_FILE . '?m=manager&s=news&do=filter&id=' . $arrNews['id'] . '&id_user=&author=&title=&sDate=&eDate=&records='; } else { $newsLink = chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=news&action=view&id=' . $arrNews['tId']); } // массив для замены в шаблоне $mailer->setAddReplace(array('%NEWS_TITLE%' => $arrNews['title'], '%NEWS_LINK%' => $newsLink, '%COMPLAINT_DATE%' => date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::currentDateTime())), '%COMMENT_DATE%' => date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime($arrComment['datetime'])), '%AUTHOR%' => $arrComment['name'], '%COMMENT_TEXT%' => CONF_MAIL_FORMAT_HTML ? nl2br($arrComment['text']) : $arrComment['text'])); // отправляем письмо администратору return $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $recipient, false, MAIL_SUBJ_NEWS_COMMENTS_COMPLAINT, 'news.comments.complaint.txt'); }
// проверяем существование новости $article = $articles->getArticle("token IN ('active','archived') AND id=" . secure::escQuoteData($id)); if (!empty($article) && is_array($article)) { $smarty->assignByRef('return_data', $article); // передаем новость в шаблон // сохраняем изменения if (isset($_POST['save'])) { // получаем из формы поля обязательные для заполнения $arrBindFields = $_POST['arrBindFields']; // получаем из формы поля не обязательные для заполнения $arrNoBindFields = $_POST['arrNoBindFields']; $arrNoBindFields['noComments'] = !empty($_POST['arrNoBindFields']['noComments']) ? 1 : 0; // устанавливаем состояние новости $arrBindFields['token'] = isset($arrBindFields['token']) ? 'active' : 'archived'; // устанавливаем дату новости $arrBindFields['datetime'] = !$_POST['date'] ? terms::currentDateTime() : $_POST['date'] . ' ' . $_POST['time']['Time_Hour'] . ':' . $_POST['time']['Time_Minute']; /////////////////////////////////////////////////////////////// // Проверка данных, полученных из формы /////////////////////////////////////////////////////////////// !$arrBindFields['id_section'] ? $arrErrors[] = ERROR_EMPTY_SECTION : null; !$arrBindFields['title'] ? $arrErrors[] = ERROR_EMPTY_TITLE : null; !$arrBindFields['small_text'] ? $arrErrors[] = ERROR_EMPTY_SMALL_TEXT : null; !$arrBindFields['text'] ? $arrErrors[] = ERROR_EMPTY_TEXT : null; /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// if (!$arrErrors) { // присваеваем полученные данные объекту $articles->arrBindFields = $arrBindFields; $articles->arrNoBindFields = $arrNoBindFields; // производим запись в таблицу БД if (!$articles->updateArticle($arrBindFields + $arrNoBindFields, $article['id'])) {
$path = CONF_SCRIPT_URL . 'index.php?do=news&action=archive&year=' . $year . '&page=offset&'; $strWhere = "token IN ('archived') AND YEAR(`datetime`)=" . secure::escQuoteData($year); $arrOrderBy = array('datetime' => 'DESC'); $arrLimit = array('strLimit' => $offset . ',' . CONF_NEWS_PERPAGE, 'calcRows' => true); $arrNews = $news->getNewses($strWhere, $arrOrderBy, $arrLimit, false); // формируем страницы // получаем общее количество новостей $allRecords = $news->cntNews(); // формируем странциы $strPages = strings::generatePage($allRecords, $offset, CONF_NEWS_PERPAGE, $path); //передаем в шаблон строку сформированных страниц $smarty->assignByRef('string_page', $strPages); // массив всех новостей $smarty->assignByRef('news', $arrNews); // для блока боковой части $currMonth = terms::currentDateTime('n'); $smarty->assignByRef('currMonth', $currMonth); //$smarty->assignByRef('arrMonth', $arrAddDict['Month']['values']); } else { $arrNamePage[] = array('name' => MENU_ACTION_ARCHIVED, 'link' => false); //смещение, всегда 0 (затем берется из $_GET) $offset = !empty($_GET['offset']) && validate::checkNaturalNumber($_GET['offset']) ? validate::checkNaturalNumber($_GET['offset']) : 0; //получаем массив, содержащий текущий обработанный URL $path = CONF_SCRIPT_URL . 'index.php?do=news&action=archive&page=offset&'; $strWhere = "token IN ('archived') AND datetime <=NOW()"; $arrOrderBy = array('datetime' => 'DESC'); $arrLimit = array('strLimit' => $offset . ',' . CONF_NEWS_PERPAGE, 'calcRows' => true); $arrNews = $news->getNewses($strWhere, $arrOrderBy, $arrLimit, false); // формируем страницы // получаем общее количество новостей $allRecords = $news->cntNews();
/** * Функция установки объявлению статуса Рейтинг * */ protected function setRate(&$id) { return $this->editEntrys(secure::escQuoteData(array('rate' => terms::currentDateTime())), "id IN (" . secure::escQuoteData($id) . ")"); }
/** * public функция производит запись данных в таблицу БД * @return bool */ public function recRecord() { $this->arrServiceFields['datetime'] = terms::currentDateTime(); $this->arrServiceFields['token'] = 'active'; return $this->setRecordSubj() && $this->addEntry() ? $this->adminPaymentNotification() : false; }
/** * Функция получения шаблона письма и его конфигурирования в неоходимый формат, для последующей отправки * * @param string $file_pattern - имя файла шаблона * * @return void */ private function confMessage($file_pattern) { // получаем текст шаблона $message = @file_get_contents('lang/' . CONF_LANGUAGE . '/mails/' . $file_pattern); // получаем текущую даты, в необходимом формате, для вставки в письмо $date = date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::currentDateTime())); $this->arrReplace += array('%DATE%' => $date); !($arrAddReplace = mailer::retAddReplace()) ? null : ($this->arrReplace += $arrAddReplace); // формируем сообщение пользователю $message = strtr($message, $this->arrReplace); // если включен формат HTML, заменяем перенос строки и вставляем дизайн в письмо if (CONF_MAIL_FORMAT_HTML) { $html = @file_get_contents('lang/' . CONF_LANGUAGE . '/mails/html.txt'); $message = str_replace('%BODY%', $message, $html); } $this->Body = $message; }
protected function pArcGenerateYears() { $arrYears = array(); $firstYear = $this->pArcGetDateFirstRecord(); if (!empty($firstYear)) { $currYear = terms::currentDateTime('Y'); $arrYears = array($firstYear); for ($i = ++$firstYear; $i <= $currYear; $i++) { $arrYears[] = $i; } rsort($arrYears); } return $arrYears; }
/** * private функция помечает подписки как "удаленные" * * @param (string) $strWhere - выражение для оператора WHERE (необязательный параметр) * * @return bool */ protected function delSubscriptions(&$strWhere) { $arrFields = array('token' => 'deleted', 'token_datetime' => terms::currentDateTime()); return $this->editEntrys(secure::escQuoteData($arrFields), $strWhere); }
/** * protected функция производит активацию пользователей * Если передан соответствующий параметр, отсылает пользователям сообщения об активации * * @param array $arrUsers - Массив с данными пользователей, которых необходимо активировать (формат: array(id => email, ....)) * @param bool $mail - признак уведомления пользователей об активации (TRUE | FALSE) * * @return bool */ protected function activateUsersAdmin(&$arrUsers, $mail) { $strWhere = "id IN (" . implode(',', secure::escQuoteData(array_keys($arrUsers))) . ")"; // обновляем данные пользователей if ($this->updateUser(array('reg_datetime' => terms::currentDateTime(), 'token' => 'active', 'token_datetime' => terms::calcDateTimeOfTerm(CONF_USER_NOT_TYPE_DELETE)), $strWhere)) { // если админ выбрал отправку уведомлений, рассылаем письма if ($mail) { $this->actionSendUsersEmails($arrUsers, 'activate'); } return true; } else { return false; } }