Example #1
0
 /**
  * Функция логирует платежи
  * 
  * @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;
 }
Example #2
0
 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&amp;action=view&amp;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&amp;action=view&amp;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'])) {
Example #5
0
     $path = CONF_SCRIPT_URL . 'index.php?do=news&amp;action=archive&amp;year=' . $year . '&amp;page=offset&amp;';
     $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&amp;action=archive&amp;page=offset&amp;';
     $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) . ")");
 }
Example #7
0
 /**
  * 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;
 }
Example #9
0
 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;
 }
Example #10
0
 /**
  * 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);
 }
Example #11
0
 /**
  * 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;
     }
 }