/** * Функция делает бекап БД * * @return bool */ static function backupDB() { // файл дампа $file = CONF_BACKUPS_PATH_TO_FILES . terms::currentDate() . '_database_revision_' . CONF_INFO_SCRIPT_REVISION . '.sql'; // создаем указатель на файл $fp = fopen($file, 'w'); // выбираем все таблицы $showTablesQuery = 'SHOW TABLES'; $showTablesId = db::dbQuery($showTablesQuery); // пробегаем по массиву всeх таблиц while ($showTablesRes = db::dbFetchRow($showTablesId)) { // запрос создания таблицы $showCreateTableQuery = 'SHOW CREATE TABLE `' . $showTablesRes[0] . '`'; $showCreateTableId = db::dbQuery($showCreateTableQuery); // пробегаем по массиву запроса создания таблиц while ($showCreateTableRes = db::dbFetchRow($showCreateTableId)) { // добавляем в дамп запрос удаления таблицы, если она уже существует $tableExistsQuery = 'DROP TABLE IF EXISTS `' . $showCreateTableRes[0] . '`;' . "\n\n"; $sqlCode = $showCreateTableRes[1]; // записываем запрос удаления таблицы fwrite($fp, $tableExistsQuery); // записываем запрос создания таблицы fwrite($fp, $sqlCode . ";\n\n"); $NumericColumn = array(); $field = 0; $showColumnsQuery = 'SHOW COLUMNS FROM `' . $showCreateTableRes[0] . '`'; $showColumnsRes = db::dbQuery($showColumnsQuery); while ($col = db::dbFetchRow($showColumnsRes)) { $NumericColumn[$field++] = preg_match("/^(\\w*int|year)/", $col[1]) ? 1 : 0; } $fields = $field; $i = 0; // запрос выбора всех данных из таблицы $dumpQuery = 'SELECT * FROM `' . $showCreateTableRes[0] . '`'; $dmpId = db::dbQuery($dumpQuery); // если есть данные для INSERT if (db::dbNumRows($dmpId) > 0) { $showInsertQuery = 'INSERT INTO `' . $showCreateTableRes[0] . '` VALUES'; // записваем запрос Insert fwrite($fp, $showInsertQuery); // проходим по результату и формируем строки для записи в файл while ($row = db::dbFetchRow($dmpId)) { $i++; for ($k = 0; $k < $fields; $k++) { $row[$k] = $NumericColumn[$k] ? isset($row[$k]) ? $row[$k] : 'NULL' : (isset($row[$k]) ? "'" . mysql_escape_string($row[$k]) . "'" : 'NULL'); } fwrite($fp, ($i == 1 ? '' : ',') . "\n(" . implode(', ', $row) . ')'); } fwrite($fp, ";\n\n"); } } } return fclose($fp); }
/** * get cats list used in specefic post in specefic table * @author Javad Evazzadeh * @param [type] $_post_id [description] * @param [type] $_return [description] * @param [type] $_foreign [description] * @param boolean $_seperator [description] * @return [type] [description] */ public static function usage($_post_id, $_return = null, $_foreign = null, $_seperator = false) { $result = terms::usage($_post_id, $_return, $_foreign, 'cat'); if ($_seperator && $result) { if ($_seperator === true) { $_seperator = ', '; } $result = implode($result, $_seperator); } return $result; }
/** * Функция логирует платежи * * @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; }
$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();
/** * private функция формирует RSS для резюме * * @param (string) $type - тип, может быть section или region (по умолчанию false) * @param (int) $id - id раздела или региона, резюме которого необходимо показать (по умолчанию false) * * @return string */ protected function rssResume($type = false, $id = false) { // получаем объект резюме global $resume; // получаем массив селекта "Раздел" global $arrDataSections; // получаем массив селекта "Регион" global $arrDataRegions; // формируем данные шапки $this->title[] = array('name' => MENU_RESUMES); $this->link = chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=rss&action=resume'); $this->description = MENU_RESUMES; // проверяем просмотр по разделу if ($type && $id) { $strWhere = "id_" . $type . " IN (" . secure::escQuoteData($id) . ")"; $arrType = $type === 'section' ? $arrType =& $arrDataSections : ($arrType =& $arrDataRegions); // Дописываем данные по разделу в шапку $this->title[] = array('name' => $arrType[$id]['name']); $this->description .= ' - ' . $arrType[$id]['name']; } else { $strWhere = false; } /***** Формируем XML-документ *****/ $data = '<?xml version="1.0" encoding="' . CONF_DEFAULT_CHARSET . '" ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <atom:link href="' . $this->link . '" rel="self" type="application/rss+xml" /> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> <description>' . $this->description . '</description> <language>ru</language> <pubDate>' . $this->pubDate . '</pubDate> <image> <url>' . $this->siteLogo . '</url> <title>' . strings::formTitle($this->title) . '</title> <link>' . $this->link . '</link> </image>'; // если есть активные объявления if ($arrResume = $resume->getActiveAnnounces(array('strLimit' => '0,' . CONF_RSS_RESUME_COUNT, 'calcRows' => false), $strWhere)) { foreach ($arrResume as $value) { $LFName = $value['visibility'] !== 'membershc' && $value['visibility'] !== 'visiblehc' ? ANNOUNCE_CONTACTS_LASTNAME . ' ' . ANNOUNCE_CONTACTS_FIRSTNAME . ': ' . $value['last_name'] . ' ' . $value['first_name'] . '<br>' : ''; $data .= '<item> <title>' . $value['title'] . ' - ' . $value['pay_from'] . ' ' . $value['currency'] . ' (' . $arrDataRegions[$value['id_region']]['name'] . ')</title> <link>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=view&id=' . $value['tId']) . '</link> <pubDate>' . terms::RFCDate($value['act_datetime']) . '</pubDate> <guid>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=view&id=' . $value['tId']) . '</guid> <category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=section&id=' . $arrDataSections[$value['id_section']]['tId']) . '">' . $arrDataSections[$value['id_section']]['name'] . '</category> <category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&action=region&id=' . $arrDataRegions[$value['id_region']]['tId']) . '">' . $arrDataRegions[$value['id_region']]['name'] . '</category> <description><![CDATA[' . '<b>' . $arrDataSections[$value['id_section']]['name'] . '</b><br><br>' . $LFName . ANNOUNCE_AGE . ': ' . $value['age'] . '<br>' . ANNOUNCE_SELECT_EXPIREWORK . ': ' . $value['expire_work'] . '<br>' . ANNOUNCE_SELECT_EDUCATION . ': ' . $value['education'] . ']]></description> </item>'; } } $data .= '</channel> </rss>'; return $data; }
/** * private функция рассылки почтовых сообщений * * @param string $typeAnnounce - тип объявления (должно соответствовать имени таблицы БД) * @param array $arrAnnounceData - массив данных объявления * @param bool $screenMessageOn [default = true] - завершение работы скрипта, выводом информационного сообщения * * @return bool */ private function sendEmails(&$typeAnnounce, &$arrAnnounceData, $screenMessageOn = true) { if (isset($_SESSION['referer'])) { unset($_SESSION['referer']); } $user_type = !empty($_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type']) ? 'ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&' : ''; switch ($arrAnnounceData['token']) { case 'new': /** * отправляем письмо пользователю */ $mailer = new mailer(); // дата удаления неактивированного объявления $deldate = date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::calcDateTimeOfTerm(constant('CONF_' . strtoupper($typeAnnounce) . '_ACTIVATE_THERM')))); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%CODE%' => $arrAnnounceData['unikey'], '%DELDATE%' => $deldate, '%ACTIVATE_PAGE%' => CONF_SCRIPT_URL . 'index.php?' . $user_type . 'do=' . $typeAnnounce . '&action=activate', '%ACTIVATE_LINK%' => CONF_SCRIPT_URL . 'index.php?' . $user_type . 'do=' . $typeAnnounce . '&action=activate&code=' . $arrAnnounceData['unikey'])); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_ACTIVATE_ANNOUNCE . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.activate.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } elseif (!empty($screenMessageOn)) { messages::messageChangeSaved(ANNOUNCE_ADD_ACTIVATE_TITLE, ANNOUNCE_ADD_ACTIVATE_MESSAGE, CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=' . $typeAnnounce . '&action=activate', 5000); } else { return $result; } case 'moderate': // массив для замены в шаблоне $arrAddReplace = array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title']); /** * отправляем письмо администратору */ $mailer = new mailer(); // передаем массив для замены в шаблоне $mailer->setAddReplace($arrAddReplace + array('%ADMIN_PANEL_LINK%' => CONF_SCRIPT_URL . CONF_ADMIN_FILE . '?m=announces&s=' . $typeAnnounce . 's&action=moderate')); $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, CONF_MAIL_ADMIN_EMAIL, false, MAIL_SUBJ_NEW_ANNOUNCE . $arrAnnounceData['title'], empty($arrAnnounceData['comments']) ? 'adm.moderate.announce.txt' : 'adm.edited.announce.txt'); unset($mailer); // уничтожаем объект /** * отправляем письмо пользователю */ $mailer = new mailer(); // передаем массив для замены в шаблоне $mailer->setAddReplace($arrAddReplace); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_MODERATE_ANNOUNCE . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.moderate.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } elseif (!empty($screenMessageOn)) { $link = !empty($arrAnnounceData['id_user']) ? CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.announces&action=' . $typeAnnounce . '&token=' . $arrAnnounceData['token'] : CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type']; messages::messageChangeSaved(ANNOUNCE_ADD_MODERATION_TITLE, ANNOUNCE_ADD_MODERATION_MESSAGE, chpu::createChpuUrl($link), 5000); } else { return $result; } case 'correction': /** * отправляем письмо пользователю */ $mailer = new mailer(); // дата удаления не исправленного объявления $deldate = date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::calcDateTimeOfTerm(constant('CONF_' . strtoupper($typeAnnounce) . '_CORRECTION_THERM')))); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%DELDATE%' => $deldate, '%USER_PANEL_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=user.announces&action=' . $typeAnnounce . '&token=' . $arrAnnounceData['token']), '%COMMENTS%' => CONF_MAIL_FORMAT_HTML ? nl2br($arrAnnounceData['comments']) : $arrAnnounceData['comments'])); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_NEW_ANNOUNCE_CORRECTION . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.correction.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } else { return $result; } case 'payment': /** * отправляем письмо пользователю */ $mailer = new mailer(); // дата удаления неоплаченого объявления $deldate = date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::calcDateTimeOfTerm(constant('CONF_' . strtoupper($typeAnnounce) . '_PAYMENT_THERM')))); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%CODE%' => $arrAnnounceData['unikey'], '%DELDATE%' => $deldate, '%PAYMENT_LINK%' => CONF_SCRIPT_URL . 'index.php?' . $user_type . 'do=' . $typeAnnounce . '&action=payment&id=' . $arrAnnounceData['id'])); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_NEW_ANNOUNCE_PAYMENT . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.payment.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } elseif (!empty($screenMessageOn)) { $_SESSION['payment'] = array('service' => 'add_' . $typeAnnounce, 'announce_type' => $typeAnnounce, 'id' => $arrAnnounceData['id'], 'tId' => $arrAnnounceData['tId'], 'announce_title' => $arrAnnounceData['title']); messages::messageChangeSaved(ANNOUNCE_ADD_PAYMENT_TITLE, ANNOUNCE_ADD_PAYMENT_MESSAGE, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=payments'), 5000); } else { return $result; } case 'active': // транслитерация ЧПУ chpu::chpuTranslit($arrAnnounceData); if (CONF_ANNOUNCE_ADD_SUCCESS_ADMIN_INFORM) { $mailer = new mailer(); // массив для замены в шаблоне $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%ANNOUNCE_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=' . $typeAnnounce . '&action=view&id=' . $arrAnnounceData['tId']), '%ADMIN_PANEL_LINK%' => CONF_SCRIPT_URL . CONF_ADMIN_FILE . '?m=announces&s=' . $typeAnnounce . 's')); // отправляем письмо администратору $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, CONF_MAIL_ADMIN_EMAIL, false, MAIL_SUBJ_NEW_ANNOUNCE . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'adm.add.announce.txt'); unset($mailer); // уничтожаем объект } if (CONF_ANNOUNCE_ADD_SUCCESS_USER_INFORM) { $mailer = new mailer(); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%ANNOUNCE_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=' . $typeAnnounce . '&action=view&id=' . $arrAnnounceData['tId']), '%USER_PANEL_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=user.announces&action=' . $typeAnnounce . '&token=' . $arrAnnounceData['token']))); // отправляем письмо пользователю $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_NEW_ANNOUNCE . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.added.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } } if (!empty($screenMessageOn)) { messages::messageChangeSaved(ANNOUNCE_ADD_SUCCESS_TITLE, ANNOUNCE_ADD_SUCCESS_MESSAGE, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=' . $typeAnnounce . '&action=view&id=' . $arrAnnounceData['tId']), 5000); } else { return true; } case 'deleted': case 'archived': /** * отправляем письмо пользователю */ $mailer = new mailer(); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%COMMENTS%' => $arrAnnounceData['comments'])); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_NEW_ANNOUNCE_DELETED . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.deleted.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } else { return $result; } case 'vip': case 'hot': /** * отправляем письмо пользователю */ $mailer = new mailer(); $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)), '%ANNOUNCE_TITLE%' => $arrAnnounceData['title'], '%STATUS%' => strtoupper($arrAnnounceData['token']))); $result = $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $arrAnnounceData['email'], $arrAnnounceData['email'], MAIL_SUBJ_NEW_ANNOUNCE_DELETED . constant('MAIL_ANNOUNCE_TYPE_' . strtoupper($typeAnnounce)) . ' - ' . $arrAnnounceData['title'], 'announce.user.' . $arrAnnounceData['token'] . '.reset.txt'); unset($mailer); // уничтожаем объект if (!$result && !empty($screenMessageOn)) { messages::printDie(ERROR_SEND_EMAIL); } else { return $result; } default: return false; } }
/** * public функция производит запись данных в таблицу БД * @return bool */ public function recRecord() { $this->arrServiceFields['datetime'] = terms::currentDateTime(); $this->arrServiceFields['token'] = 'active'; return $this->setRecordSubj() && $this->addEntry() ? $this->adminPaymentNotification() : false; }
static function saveLogData() { if (!empty(self::$logData)) { $logData = filesys::getSerializedData(CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_update.log'); if (is_array($logData)) { self::$logData = array_merge($logData, self::$logData); } filesys::putSerializedData(CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_update.log', self::$logData); self::clearLogData(); } }
/** * protected функция выполняет рассылку, в ссответствии с полученными параметрами * * @param (array) $arrData - массив данных, необходимых для рассылки * * @return bool */ protected function runSubscription($arrData) { // проверяем наличие необходимых данных if (!$this->validateSubscriptionData($arrData)) { return false; } // формируем данные для рассылки if ($data = $this->createSubscriptionData($arrData)) { $mailer = new mailer(); // массив для замены в шаблоне $mailer->setAddReplace(array('%ANNOUNCE_TYPE%' => 'vacancy' === $arrData['type_subscription'] ? SITE_VACANCY : SITE_RESUME, '%DATA%' => $data)); if ($mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, false, false, $arrData['email'], $arrData['email'], CONF_SITE_NAME . MAIL_SUBJ_SUBSCRIPTION_SEND, 'announce.subscription.txt')) { $this->editEntrys(secure::escQuoteData(array('date_lastsend' => terms::currentDate())), "email IN (" . secure::escQuoteData($arrData['email']) . ") AND type_subscription IN (" . secure::escQuoteData($arrData['type_subscription']) . ") AND id_profession IN (" . secure::escQuoteData($arrData['id_profession']) . ") AND id_region IN (" . secure::escQuoteData($arrData['id_region']) . ") AND id_city IN (" . secure::escQuoteData($arrData['id_city']) . ") AND period IN (" . secure::escQuoteData($arrData['period']) . ") AND token IN ('active')"); return true; } else { return false; } } else { return false; } }
/** * Функция отправляет пользователю сообщение о том, что его статья возвращена на редактирование * * @param (array) $arrData - массив данных статьи * * @return void */ public function sendUserCorrectionArticle(&$arrData) { /** Получаем данные пользователя **/ $user = new user(); if ($uData = $user->getUser("id IN (" . secure::escQuoteData($arrData['id']) . ")")) { $mailer = new mailer(); // массив для замены в шаблоне $mailer->setAddReplace(array('%ARTICLE_TITLE%' => $arrData['title'], '%PUBLICATION_DATE%' => date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime($arrData['datetime'])), '%COMMENTS%' => CONF_MAIL_FORMAT_HTML ? nl2br($arrData['comments']) : $arrData['comments'], '%DELDATE%' => date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::calcDateTimeOfTerm(CONF_ARTICLES_CORRECTION_THERM))), '%USER_PANEL_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=user.articles&action=correction'))); // отправляем письмо администратору $mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, CONF_SITE_NAME, false, $uData['email'], $uData['first_name'], MAIL_MODERATE_ARTICLES_CORRECTION . ': ' . $arrData['title'], 'user.article.correction.txt'); unset($mailer); // уничтожаем объект } unset($user); // уничтожаем объект }
/** * Функция получения шаблона письма и его конфигурирования в неоходимый формат, для последующей отправки * * @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; }
/** * get tags list used in specefic post in specefic table * @author Javad Evazzadeh * @param [type] $_post_id [description] * @param [type] $_return [description] * @param [type] $_foreign [description] * @param boolean $_seperator [description] * @return [type] [description] */ public static function usage($_post_id, $_return = null, $_foreign = null, $_seperator = false) { $result = terms::usage($_post_id, $_return, $_foreign, 'tag'); if ($_seperator) { if (is_array($result) && $result) { if ($_seperator === true) { $_seperator = ', '; } $result = implode($result, $_seperator); } else { $result = ""; } } return $result; }
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; }
$updData = array('token' => 'correction', 'token_datetime' => terms::calcDateTimeOfTerm(CONF_ARTICLES_CORRECTION_THERM)); !$articles->updateArticles($updData, array_keys($_POST['articles'])) ? $arrErrors[] = db::$message_error : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?' . $qString); } elseif ('delete' === $_POST['action'] && !empty($_POST['articles'])) { !$articles->deleteArticles(array_keys($_POST['articles'])) ? $arrErrors[] = db::$message_error : messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?' . $qString); } } elseif (!empty($_POST['arrData']['action']) && !empty($_POST['arrData']['id'])) { if ('active' === $_POST['arrData']['action'] && !empty($_POST['arrData']['title']) && !empty($_POST['arrData']['datetime']) && !empty($_POST['arrData']['id_user'])) { if ($articles->updateArticle(array('token' => 'active', 'token_datetime' => ''), $_POST['arrData']['id'])) { $articles->sendUserActiveArticle($_POST['arrData']); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?' . $qString); } else { $arrErrors[] = db::$message_error; } } elseif ('correction' === $_POST['arrData']['action'] && !empty($_POST['arrData']['comments']) && !empty($_POST['arrData']['title']) && !empty($_POST['arrData']['datetime']) && !empty($_POST['arrData']['id_user'])) { // данные для обновления в таблице $updData = array('comments' => $_POST['arrData']['comments'], 'token' => 'correction', 'token_datetime' => terms::calcDateTimeOfTerm(CONF_ARTICLES_CORRECTION_THERM)); if ($articles->updateArticle($updData, $_POST['arrData']['id'])) { $articles->sendUserCorrectionArticle($_POST['arrData']); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?' . $qString); } else { $arrErrors[] = db::$message_error; } } elseif ('deleted' === $_POST['arrData']['action'] && !empty($_POST['arrData']['comments']) && !empty($_POST['arrData']['title']) && !empty($_POST['arrData']['id_user'])) { if ($articles->deleteArticles(array($_POST['arrData']['id']))) { $articles->sendUserDeletedArticle($_POST['arrData']); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, CONF_ADMIN_FILE . '?' . $qString); } else { $arrErrors[] = db::$message_error; } } }
$page->apply_string("title", "Boyds Nest"); $page->apply_string("meta", ""); $page->apply_string("style", Html::CssInclude(BN_URL_CSS . "/terms.css")); $page->apply_string("javascript", ""); return $page; } public function default_request() { $master = $this->ready_master(); $master->apply_param( "main_content", $this->load_local_php_view("content")); $master->commit_applies(); return $master->get_page(); } } try { $this_page = new terms(); echo $this_page->init_request('default'); } catch(Exception $e) { FCore::ShowError(500, $e->getMessage()); } ?>
echo ajax::sdgJSONencode(array('error' => updates::$errorMessage)); } else { // Если сообщения не пустые, значит ошибки были if (!empty(updates::$errorMessage)) { echo ajax::sdgJSONencode(array('success' => MESSAGE_WARNING_UPDATE_SETUP_BUT_ERRORS_OCCURRED)); } else { echo ajax::sdgJSONencode(array('success' => updates::$message)); } // удаляем файлы кеша caching::dropCache(); // удаляем файл обновлений unlink(CONF_UPDATES_PATH_TO_FILES . $_POST['setupUpdate']); // Переименовываем файл логов, вкючая в его имя номер сборки $logFile = CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_update.log'; if (file_exists($logFile)) { rename($logFile, CONF_UPDATES_PATH_TO_LOG_FILES . terms::currentDate() . '_' . CONF_INFO_PRODUCT_ID . '_' . CONF_INFO_SCRIPT_REVISION . '_update.log'); } // отключаем техобслуживание сайта $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . 'define("CONF_SERVICE_ADMINISTRATION_MAINTENANCE", false);' . "\n"; tools::saveConfig('core/conf/const.config.service.php', $data, false); } } else { echo ajax::sdgJSONencode(array('error' => ERROR_UPDATES_REQUEST_UNDEFINED_ACTION)); } } elseif (!empty($_POST['maintenance'])) { $maintenance = $_POST['maintenance'] == 'on' ? 'true' : 'false'; $data = "<?php\n\n" . "(!defined('SDG')) ? die ('Triple protection!') : null;\n\n" . 'define("CONF_SERVICE_ADMINISTRATION_MAINTENANCE", ' . $maintenance . ');' . "\n"; echo !tools::saveConfig('core/conf/const.config.service.php', $data, false) ? 'false' : 'true'; } elseif (!empty($_POST['mailFile']) && !empty($_POST['mailText']) && !empty($_POST['pathMailTemplates'])) { $_POST['mailFile'] = $_POST['pathMailTemplates'] . str_replace('_', '.', $_POST['mailFile']) . '.txt'; // формируем имя файла
/** * Функция отправляет жалобу на комментарий * * @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'); }
/** * private функция рассылки почтовых сообщений пользователям при регистрации * Завершает работу скрипта, выводом информационного сообщения пользователю * * @return void */ private function sendEmails($arrData) { $mailer = new mailer(); // если включена активация пользователей if (CONF_USER_ACTIVATE) { // массив для замены в шаблоне $mailer->setAddReplace(array('%DELDATE%' => date(terms::dateFormatFromSmarty(CONF_DATE_FORMAT, CONF_TIME_FORMAT), strtotime(terms::calcDateTimeOfTerm(CONF_USER_ACTIVATE_DELETE))), '%CODE%' => md5($arrData['email']), '%ACTIVATE_PAGE%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.activate'), '%ACTIVATE_LINK%' => CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.activate&code=' . md5($arrData['email']))); // отправляем письмо пользователю if ($mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, false, false, $arrData['email'], $arrData['email'], MAIL_SUBJ_ACTIVATE_ACCOUNT . $arrData['email'], 'user.activate.txt')) { messages::messageChangeSaved(MESSAGE_REGISTER_SUCCESS, MESSAGE_REGISTER_SUCCESS_ACTIVATE_USER, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.activate'), 6000); } else { die(ERROR_SEND_EMAIL); } } else { if ($mailer->sendEmail(CONF_MAIL_ADMIN_EMAIL, false, false, $arrData['email'], $arrData['email'], MAIL_SUBJ_REGISTER . CONF_SITE_NAME, 'user.register.txt')) { // если включено уведомление админа о новых пользователях, отправляем админу ссобщение if (CONF_MAIL_ADMIN_USER_REGISTER) { $this->sendAdminEmail($arrData['email']); } messages::messageChangeSaved(MESSAGE_REGISTER_SUCCESS, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=authorize')); } else { die(ERROR_SEND_EMAIL); } } }