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
 /**
  * Функция логирует платежи
  * 
  * @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;
 }
 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 #4
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';
    // формируем имя файла
 /**
  * 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;
     }
 }