Example #1
0
 /**
  * Функция делает бекап БД
  * 
  * @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);
 }
Example #2
0
 /**
  * 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;
 }
Example #3
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 #4
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;
 }
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();
Example #6
0
    /**
     * 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&amp;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&amp;action=view&amp;id=' . $value['tId']) . '</link>
							<pubDate>' . terms::RFCDate($value['act_datetime']) . '</pubDate>
							<guid>' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&amp;action=view&amp;id=' . $value['tId']) . '</guid>
							<category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&amp;action=section&amp;id=' . $arrDataSections[$value['id_section']]['tId']) . '">' . $arrDataSections[$value['id_section']]['name'] . '</category>
							<category domain="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=resume&amp;action=region&amp;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'] . '&amp;' : '';
     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 . '&amp;action=activate', '%ACTIVATE_LINK%' => CONF_SCRIPT_URL . 'index.php?' . $user_type . 'do=' . $typeAnnounce . '&amp;action=activate&amp;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&amp;s=' . $typeAnnounce . 's&amp;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&amp;action=' . $typeAnnounce . '&amp;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 . '&amp;action=payment&amp;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 . '&amp;action=view&amp;id=' . $arrAnnounceData['tId']), '%ADMIN_PANEL_LINK%' => CONF_SCRIPT_URL . CONF_ADMIN_FILE . '?m=announces&amp;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 . '&amp;action=view&amp;id=' . $arrAnnounceData['tId']), '%USER_PANEL_LINK%' => chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?do=user.announces&amp;action=' . $typeAnnounce . '&amp;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'] . '&amp;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;
     }
 }
Example #8
0
 /**
  * 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();
     }
 }
Example #10
0
 /**
  * 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&amp;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);
     // уничтожаем объект
 }
Example #12
0
 /**
  * Функция получения шаблона письма и его конфигурирования в неоходимый формат, для последующей отправки
  * 
  * @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 #13
0
 /**
  * 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;
 }
Example #14
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;
 }
         $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;
         }
     }
 }
Example #16
0
        $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());
}

?>
Example #17
0
            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&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');
 }
Example #19
0
 /**
  * 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'] . '&amp;do=user.activate'), '%ACTIVATE_LINK%' => CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&amp;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'] . '&amp;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'] . '&amp;do=authorize'));
         } else {
             die(ERROR_SEND_EMAIL);
         }
     }
 }