public function get_company_kpis_values($term, $calc_type, $reportType, $period, $includePeer, $active_xaxes, $active_yaxes, $chat_type, $company, $companies, $kpis = array(), $segments = 'year')
 {
     $this->benchmark->mark('benchmark_model-get_company_kpis_values_benchmark_start');
     $all_periods = $this->rperiods->list_records();
     $quarters = array();
     $years = array();
     foreach ($all_periods as $k => $p) {
         if (strpos($p->reporting_period, 'Q') === false) {
             $years[] = $p->reporting_period;
         } else {
             $quarters[] = $p->reporting_period;
         }
     }
     if ($segments == 'quarter') {
         $periods = $quarters;
     } else {
         $periods = $years;
     }
     $entityID = sprintf("%06d", $company);
     $termID = array_to_string($kpis);
     $FYFQ = array_to_string($periods);
     $companies = array_to_string($companies);
     $result = $this->get_data($term, $calc_type, $reportType, $period, $includePeer, $active_xaxes, $active_yaxes, $chat_type, $entityID, $companies, $termID, $FYFQ, TRUE);
     $this->benchmark->mark('benchmark_model-get_company_kpis_values_benchmark_end');
     log_message('debug', 'get_company_kpis_values_benchmark: ' . $this->benchmark->elapsed_time('benchmark_model-get_company_kpis_values_benchmark_start', 'benchmark_model-get_company_kpis_values_benchmark_end'));
     return $result;
 }
Example #2
0
 protected function doFinalize($PAGE_CONTENT)
 {
     //Сначала выделим то, что не должно попасть под нормализацию
     $this->addReplaces($PAGE_CONTENT);
     /*
      * Далее:
      * 1. Заменяем контент на макросы
      * 2. Проводим нормализацию
      * 3. Заменяем обратно макросы на контент
      */
     $hasReplaces = !empty($this->REPLACES);
     $replaceMacroses = array_to_string($this->REPLACES);
     if ($hasReplaces) {
         foreach ($this->REPLACES as $content => $replace) {
             $PAGE_CONTENT = str_replace($content, $replace, $PAGE_CONTENT);
         }
     }
     if ($hasReplaces && $this->LOGGER->isEnabled()) {
         $this->LOGGER->infoBox('PAGE WITH REPLACES ' . $replaceMacroses, $PAGE_CONTENT);
     }
     $PAGE_CONTENT = normalize_string($PAGE_CONTENT);
     if ($hasReplaces && $this->LOGGER->isEnabled()) {
         $this->LOGGER->infoBox('NORMALIZED PAGE WITH REPLACES ' . $replaceMacroses, $PAGE_CONTENT);
     }
     if ($hasReplaces) {
         foreach ($this->REPLACES as $content => $replace) {
             $PAGE_CONTENT = str_replace($replace, $content, $PAGE_CONTENT);
         }
     }
     if ($hasReplaces && $this->LOGGER->isEnabled()) {
         $this->LOGGER->infoBox('PAGE AFTER BACKREPLACE ' . $replaceMacroses, $PAGE_CONTENT);
     }
     return $PAGE_CONTENT;
 }
Example #3
0
 /** @return ADORecordSet */
 private static function executeQuery($query, $params = false, &$queryFinal = null, array &$paramsFinal = null)
 {
     $queryFinal = $query instanceof Query ? $query->build($params) : $query;
     $queryFinal = normalize_string($queryFinal);
     $paramsFinal = to_array($params);
     $LOGGER = PsLogger::inst(__CLASS__);
     $PROFILER = PsProfiler::inst(__CLASS__);
     $PROFILER->start(strtolower($queryFinal));
     try {
         if ($LOGGER->isEnabled()) {
             $LOGGER->info("[{$queryFinal}]" . ($paramsFinal ? ', PARAMS: ' . array_to_string($paramsFinal) : ''));
         }
         $rs = PsConnectionPool::conn()->execute($queryFinal, $paramsFinal);
         if (is_object($rs)) {
             $PROFILER->stop();
             return $rs;
         }
         $error = PsConnectionPool::conn()->ErrorMsg();
         $LOGGER->info('ERROR: {}', $error);
         throw new DBException($error, DBException::ERROR_NOT_CLASSIFIED, $queryFinal, $paramsFinal);
     } catch (Exception $ex) {
         $PROFILER->stop(false);
         if ($ex instanceof DBException) {
             ExceptionHandler::dumpError($ex);
         }
         throw $ex;
     }
 }
Example #4
0
/**
*导出到CSV文件
*/
function export_csv($data = '', $filename = '')
{
    $filename = empty($filename) ? date('YmdHis') . ".csv" : $filename . ".csv";
    header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=" . $filename);
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');
    echo array_to_string($data);
}
Example #5
0
 /**
  * Вызов выполнения метода. Используется из ajax.
  */
 public static function execute($method, array $params)
 {
     check_condition(array_key_exists($method, self::getMethodsList()), "Method TestManager::{$method} cannot be called");
     PsUtil::startUnlimitedMode();
     PsLogger::inst('TestManager')->info("Method TestManager::{$method} called with params: " . array_to_string($params));
     $s = Secundomer::startedInst();
     call_user_func_array(array(TestManager::inst(), $method), $params);
     $s->stop();
     PsLogger::inst('TestManager')->info("Call done in {$s->getTotalTime()} seconds");
 }
Example #6
0
 /**
  * Метод ищет в строке подстроки, удовлетворяющие шаблону и заменяет их по очереди на подстановки,
  * переданные в виде массива.  Поиск идёт по регулярному выражению!
  * 
  * @param string $pattern - шаблон
  * @param string $text - текст
  * @param array $tokens - массив подстановок
  * @return string
  */
 public static function replace($pattern, $text, array $tokens)
 {
     self::$inst = self::$inst ? self::$inst : new PregReplaceCyclic();
     self::$inst->tokens = check_condition($tokens, 'Не переданы элементы для замены');
     if (is_assoc_array($tokens)) {
         raise_error('Недопустим ассоциативный массив подстановок. Передан: ' . array_to_string($tokens, true));
     }
     self::$inst->idx = 0;
     self::$inst->count = count($tokens);
     return preg_replace_callback($pattern, array(self::$inst, '_replace'), $text);
 }
Example #7
0
function array_to_string($array)
{
    $string = '';
    foreach ($array as &$el) {
        if (is_array($el)) {
            $el = array_to_string($el);
        }
        $string .= $el;
    }
    return $string;
}
Example #8
0
function session_save_messages()
{
    if (!isset($GLOBALS['wfpl_messages'])) {
        return;
    }
    if (!is_array($GLOBALS['wfpl_messages'])) {
        return;
    }
    init_session();
    session_set('wfpl_messages', array_to_string($GLOBALS['wfpl_messages']));
}
Example #9
0
 function export_csv()
 {
     $filename = date('YmdHis') . ".csv";
     //文件名
     header("Content-type:text/csv");
     header("Content-Disposition:attachment;filename=" . $filename);
     header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
     header('Expires:0');
     header('Pragma:public');
     echo array_to_string(get_export_data());
 }
Example #10
0
function visitor_info($extra_arr)
{
    $remote_ip = $_SERVER['REMOTE_ADDR'];
    $get_params = "[ " . array_to_string($_GET) . " ]";
    $remote_ua = $_SERVER['HTTP_USER_AGENT'];
    $extra_str = "[ " . array_to_string($extra_arr) . " ]";
    $time_str = date("Y-m-d H:i:s");
    $page_url = $_SERVER['REQUEST_URI'];
    $ret = "{$page_url};   \n" . "{$time_str};   \n" . "{$remote_ip};  \n" . "{$remote_ua};  \n" . "{$get_params}; \n" . "{$extra_str};  \n";
    return $ret;
}
Example #11
0
 function post($url, $post = null, $opts = null)
 {
     //post 传string
     if ($post) {
         $post = array_to_string($post);
     }
     $this->curl = Curl::post($url, $post);
     $options = array(CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_COOKIEFILE => $this->cookie, CURLOPT_COOKIEJAR => $this->cookie, CURLOPT_HTTPHEADER => $this->header, CURLOPT_CONNECTTIMEOUT => 100);
     if ($opts) {
         $options = array_merge($options, $opts);
     }
     $this->curl->option($options);
     $r = $this->curl->call();
     return $r->raw_body;
 }
Example #12
0
function testArr()
{
    //    $arr1 = array("1" => "111", "2" => "222");
    //    $arr2 = array("3" => "222", "4" => "333");
    //    $arr = $arr1 + $arr2;
    //    my_log($arr);
    $arr3 = array("aaaaa", "b" => "nullsss", "ccc", array("1", "2"));
    //$arr3 = "123";
    my_log($arr3);
    $str3 = array_to_string($arr3);
    my_log($str3);
    my_log(string_to_array($str3));
    my_log("======");
    my_log(explode("|", null));
}
Example #13
0
 /**
  * Основной метод, выполняющий обновление пользователя
  * 
  * @param type $userId
  * @param array $whatAssoc
  * @param array $whereAssoc
  * @return type
  */
 private function updateUser($userId, array $whatAssoc, array $whereAssoc = array())
 {
     //Сразу валидируем код пользователя
     $userId = AuthManager::validateUserId($userId);
     //В апдейте можно использовать только ассоциативные параметры
     Query::assertOnlyAssocParams($whatAssoc);
     //Получим список обновляемых колонок
     $columns = check_condition(array_keys($whatAssoc), 'Не переданы параметры обновления пользователя');
     //Проверим на наличие запрещённых полей
     $denyColumns = array_intersect(self::$UPDATE_DENY_FIELDS, $columns);
     if ($denyColumns) {
         raise_error('Cледующие параметры пользователя не могут быть обновлены: ' . array_to_string(array_values($denyColumns)));
     }
     //Проверим на наличие неизвестных полей
     $unknownColumns = array_diff($columns, self::getColumns());
     if ($unknownColumns) {
         raise_error('Попытка обновить недопустимые параметры пользователя: ' . array_to_string(array_values($unknownColumns)));
     }
     //Загружаем текущее состояние, на всякий случай предварительно сбросив кеш
     $OLD = $this->getUserDataById($this->reset($userId));
     //Сбрасываем кеш и выполняем обновление
     $whereAssoc[self::FIELD_ID] = $this->reset($userId);
     $updated = $this->update(Query::update('users', $whatAssoc, $whereAssoc));
     if ($updated <= 0) {
         return;
         //---
     }
     //Загружаем новое состояние
     $NEW = $this->getUserDataById($this->reset($userId));
     //Сравним и запишем аудит
     $DIF = array();
     foreach ($OLD as $column => $oldValue) {
         if (in_array($column, self::$SKIP_AUDIT_ON_UPDATE_FIELDS)) {
             continue;
             //---
         }
         $newValue = $NEW[$column];
         if (strcmp(trim($oldValue), trim($newValue)) != 0) {
             $DIF[$column] = $newValue;
         }
     }
     if (empty($DIF)) {
         return;
         //---
     }
     UserAudit::inst()->onUpdate($userId, $DIF);
 }
Example #14
0
 /**
  * Основной метод, который строит содержимое диалогового окна.
  */
 public final function getWindowContent()
 {
     //Логгер
     $LOGGER = $this->LOGGER();
     $CACHE = $this->cacheGroup();
     $CACHE = $CACHE instanceof PSCacheInst ? $CACHE : null;
     $CACHE_KEY = $this->foldedEntity->getUnique('DIALOG_WINDOW_CONTENT');
     /*
      * Проверим, можно ли работать с кешем и есть ли закешированная версия
      */
     $LOGGER->info("Loading dialog content.");
     if ($CACHE) {
         $LOGGER->info("Can use cache, key: {$CACHE_KEY}.");
         $CONTENT = $CACHE->getFromCache($CACHE_KEY);
         if ($CONTENT) {
             $LOGGER->info("Found in cache.");
             return $CONTENT;
         } else {
             $LOGGER->info("Not found in cache.");
         }
     } else {
         $LOGGER->info("Cannot use cache.");
     }
     $this->profilerStart(__FUNCTION__);
     try {
         //Получим параметры для шаблона smarty
         $smartyParams = to_array($this->getWindowTplSmartyParams());
         //Отлогируем параметры
         if ($LOGGER->isEnabled()) {
             $LOGGER->info("Tpl smarty params: {}", array_to_string($smartyParams, true));
         }
         //Произведём фетчинг шаблона
         $CONTENT = $this->foldedEntity->fetchTpl($smartyParams);
         //Останавливаем профилирование
         $this->profilerStop();
         //Сохраним в кеш
         if ($CACHE && $CONTENT) {
             $CACHE->saveToCache($CONTENT, $CACHE_KEY);
             $LOGGER->info("Data saved to cache.");
         }
         //Вернём результат
         return $CONTENT;
     } catch (Exception $ex) {
         $this->profilerStop(false);
         throw $ex;
     }
 }
Example #15
0
 public function __construct($message, $code, $query, array $params, $previous = null)
 {
     $this->query = $query;
     $this->params = $params;
     $code = PsUtil::assertClassHasConstVithValue(__CLASS__, 'ERROR_', $code);
     if ($code == self::ERROR_NOT_CLASSIFIED) {
         /*
          * Если ошибка не классифицирована, то мы попробуем её классифицировать
          */
         if (starts_with($message, 'Duplicate entry ')) {
             $code = self::ERROR_DUPLICATE_ENTRY;
         }
     }
     $message = $message ? $message : 'Unknown db error';
     $message = "{$message}. Query: [{$query}]" . ($params ? ', Params: ' . array_to_string($params) . '.' : '');
     parent::__construct($message, $code, $previous);
 }
Example #16
0
/**
 * Returns a string representation of a variable
 * 
 * @param  mixed  $var   Variable or object to be stringified
 * @param  bool   $html  Whether to prettify output with HTML and CSS
 * @return string        String representation of input variable or object
 */
function to_string($var, $html = false)
{
    $fn = formatter($html ? '<em>%s</em>' : '%s');
    switch (strtoupper(gettype($var))) {
        case 'ARRAY':
            return array_to_string($var, $html);
        case 'BOOLEAN':
            return $fn($var ? '(TRUE)' : '(FALSE)');
        case 'NULL':
            return $fn("(NULL)");
        case 'INTEGER':
            return sprintf('%d', $var);
        case 'DOUBLE':
            return str_replace('.', $fn("."), print_r($var, true));
        case 'STRING':
            return $fn('"') . $var . $fn('"');
        default:
            return $fn(ucfirst(gettype($var))) . ' ' . print_r($var, true);
    }
    return false;
}
Example #17
0
 public function toAttay()
 {
     $REQULT = array();
     if ($this->query && AuthManager::isAuthorizedAsAdmin()) {
         $REQULT['query'] = $this->query->build($params);
         $REQULT['params'] = array_to_string($params);
     }
     if (!$this->data) {
         return $REQULT;
     }
     //Добавим стандартные обработчики для колонок
     foreach ($this->columns as $column) {
         if (starts_with($column, 'dt_')) {
             $this->addSetting($column, self::COL_DATE);
             $this->addSetting($column, self::COL_NOWRAP);
         }
     }
     $REQULT['data'] = $this->data;
     $REQULT['columns'] = $this->columns;
     $REQULT['settings'] = $this->settings;
     return $REQULT;
 }
Example #18
0
 /**
  * Построение запроса для обращения к БД
  */
 private function makeQuery($prefix, array &$params, $asc = null)
 {
     check_condition($prefix, 'Не передан запрос');
     $queryString = array(trim($prefix) . ' where type=? and b_deleted=0');
     $queryParams = array(self::assertValidType(array_get_value_unset('type', $params)));
     //id_upload
     $id_upload = array_get_value_unset('id_upload', $params);
     if (is_inumeric($id_upload)) {
         $queryString[] = 'id_upload=?';
         $queryParams[] = $id_upload;
     }
     //id_user
     $id_user = array_get_value_unset('id_user', $params);
     if (is_inumeric($id_user)) {
         $queryString[] = 'id_user is not null and id_user=?';
         $queryParams[] = $id_user;
     }
     check_condition(empty($params), 'Неизвестные ключи переданы для запроса файла: ' . array_to_string($params, false));
     $order = $asc === true ? ' order by dt_event asc, id_upload asc' : '';
     $order = $asc === false ? ' order by dt_event desc, id_upload desc' : '';
     $params = $queryParams;
     return implode(' and ', $queryString) . $order;
 }
Example #19
0
/**
 * Процесс строит скрипты разворачивания БД
 * 
 * @param array $argv
 */
function executeProcess(array $argv)
{
    /*
     * СОЗДАЁМ SQL
     * 
     * Нам нужны настройки таблиц, которые неоткуда взять, кроме как из базы, поэтому для экспорта данных нужна БД.
     */
    $DB = DirManager::inst(__DIR__ . '/temp');
    $SDK = DirManager::inst(__DIR__ . '/temp/ps-sdk');
    //Почистим файлы, которые нам не интересны
    $cleanExt = array(PsConst::EXT_TXT, PsConst::EXT_SQL);
    dolog('Clearing not {} files from temp dir', array_to_string($cleanExt));
    /* @var $item DirItem */
    foreach ($DB->getDirContentFull(null, DirItemFilter::FILES) as $item) {
        if (!$item->checkExtension($cleanExt)) {
            dolog('[-] {}', $item->remove()->getRelPath());
        }
    }
    //Пробежимся по скоупам и выполним обработку
    /* @var $DIR DirManager */
    foreach (array(ENTITY_SCOPE_SDK => $SDK, ENTITY_SCOPE_PROJ => $DB) as $scope => $DM) {
        dolog();
        dolog('***************************** SCOPE [{}] *****************************', $scope);
        dolog('Working directory: [{}]', $DM->absDirPath());
        $SCHEMA = $DM->getDirItem(null, 'schema', PsConst::EXT_SQL);
        if (!$SCHEMA->isFile()) {
            dolog('schema.sql is not exists, skipping');
            continue;
            //---
        }
        //Директория с системными объектами
        $DM_SYSOBJECTS = DirManager::inst($DM->absDirPath(), 'sysobjects');
        //Директория, в которой будет содержимое для автосгенерированных файлов
        $DM_BUILD = DirManager::inst($DM->absDirPath(), 'build')->clearDir();
        //Создадим ссылку на файл с объектами
        $DM_BUILD_ALL_SQL = $DM_BUILD->getDirItem(null, 'all', PsConst::EXT_SQL)->getSqlFileBuilder();
        //Строим objects.sql
        dolog('Processing all.sql');
        /*
         * Получаем строки с включениями в objects.sql
         */
        $ALL_LINES = $DM_SYSOBJECTS->getDirItem(null, 'all', PsConst::EXT_TXT)->getFileLines(false);
        if (empty($ALL_LINES)) {
            dolog('No includes');
        } else {
            dolog('Adding {} includes from all.txt', count($ALL_LINES));
            foreach ($ALL_LINES as $include) {
                dolog('+ {}', $include);
                $DM_BUILD_ALL_SQL->appendFile($DM_SYSOBJECTS->getDirItem($include));
            }
        }
        // << Сохраняем objects.sql
        $DM_BUILD_ALL_SQL->save();
        /*
         * Создаём скрипты инициализации для схем
         */
        dolog('Processing default connection names: {}', array_to_string(array_values(PsConnectionParams::getDefaultConnectionNames())));
        foreach (PsConnectionParams::getDefaultConnectionNames() as $connection) {
            //На момент обработки скоупа мы не должны быть подключены никуда
            PsConnectionPool::assertDisconnectied();
            //Для данного скоупа не задан коннект? Пропускаем...
            if (PsConnectionParams::CONN_ROOT == $connection) {
                dolog('Skip {}', $connection);
                continue;
                //---
            }
            if (!PsConnectionParams::has($connection, $scope)) {
                dolog('No connection properties for {}', $connection);
                continue;
                //---
            }
            //Поработаем с настройками
            $props = PsConnectionParams::get($connection, $scope);
            $database = $props->database();
            if (empty($database)) {
                continue;
                //Не задана БД - пропускаем (для root)
            }
            dolog('Making schema script for {}', $props);
            $SCHEMA_DI = $DM_BUILD->getDirItem('schemas', $database, PsConst::EXT_SQL)->makePath();
            check_condition(!$SCHEMA_DI->isFile(), 'Schema file for database "{}" is already exists. Dublicate database names?', $database);
            $SCHEMA_SQL = $SCHEMA_DI->getSqlFileBuilder();
            //DROP+USE
            $SCHEMA_SQL->clean();
            $SCHEMA_SQL->appendLine("DROP DATABASE IF EXISTS {$database};");
            $SCHEMA_SQL->appendLine("CREATE DATABASE {$database} CHARACTER SET utf8 COLLATE utf8_general_ci;");
            $SCHEMA_SQL->appendLine("USE {$database};");
            //CREATE USER
            $grant = "grant all on {}.* to '{}'@'{}' identified by '{}';";
            $SCHEMA_SQL->appendMlComment('Create user with grants');
            $SCHEMA_SQL->appendLine(PsStrings::replaceWithBraced($grant, $database, $props->user(), $props->host(), $props->password()));
            if ($scope == ENTITY_SCOPE_PROJ) {
                dolog('+ SDK PART');
                //Добавим секцию в лог
                $SCHEMA_SQL->appendMlComment('>>> SDK');
                //CREATE CHEMA SCRIPT
                $SCHEMA_SQL->appendFile($SDK->getDirItem(null, 'schema', PsConst::EXT_SQL));
                //OBJECTS SCRIPT
                $SCHEMA_SQL->appendFile($SDK->getDirItem('build', 'all', PsConst::EXT_SQL));
                //Добавим секцию в лог
                $SCHEMA_SQL->appendMlComment('<<< SDK');
            }
            //CREATE CHEMA SCRIPT
            $SCHEMA_SQL->appendFile($SCHEMA);
            //OBJECTS SCRIPT
            $SCHEMA_SQL->appendFile($DM_BUILD_ALL_SQL->getDi());
            /*
             * Мы должны создать тестовую схему, чтобы убедиться, что всё хорошо и сконфигурировать db.ini
             */
            if ($connection != PsConnectionParams::CONN_TEST) {
                //Всё, сохраняем скрипт, работа закончена
                $SCHEMA_SQL->save();
                continue;
                //---
            }
            /*
             * На тестовой схеме прогоняем скрипт
             */
            dolog('Making physical schema {}', $props);
            $rootProps = PsConnectionParams::get(PsConnectionParams::CONN_ROOT);
            dolog('Root connection props: {}', $rootProps);
            $rootProps->execureShell($SCHEMA_SQL->getDi());
            dolog('Connecting to [{}]', $props);
            PsConnectionPool::configure($props);
            $tables = PsTable::all();
            /*
             * Нам нужно определить новый список таблиц SDK, чтобы по ним 
             * провести валидацию новых db.ini.
             * 
             * Если мы обрабатываем проект, то SDK-шный db.ini уже готов и 
             * можем положиться на него. Если мы подготавливаем SDK-шный db.ini,
             * но новый список таблиц возмём из развёрнутой тестовой БД.
             */
            $sdkTableNames = $scope == ENTITY_SCOPE_SDK ? array_keys($tables) : $SDK->getDirItem('build', 'tables', PsConst::EXT_TXT)->getFileLines();
            if ($scope == ENTITY_SCOPE_PROJ) {
                //Уберём из всех таблиц - SDK`шные
                array_remove_keys($tables, $sdkTableNames);
            }
            $scopeTableNames = array_keys($tables);
            sort($scopeTableNames);
            /*
             * Составим список таблиц.
             * Он нам особенно не нужен, но всёже будем его формировать для наглядности - какие таблицы добавились.
             */
            $TABLES_DI = $DM_BUILD->getDirItem(null, 'tables', PsConst::EXT_TXT)->touch()->putToFile(implode("\n", $scopeTableNames));
            dolog('Tables saved to {}: {}', $TABLES_DI->getRelPath(), print_r($scopeTableNames, true));
            /*
             * Выгрузим данные из таблиц в файл, чтобы убедиться, что всё корректно вставилось.
             */
            if ($scopeTableNames) {
                dolog("Exporting '{}' schema tables data to file", $database);
                $DATA_DI_SQL = $DM_BUILD->getDirItem(null, 'data', PsConst::EXT_SQL)->getSqlFileBuilder();
                $DATA_DI_SQL->clean();
                //Пробегаемся по таблицам
                foreach ($scopeTableNames as $tableName) {
                    $fileData = PsTable::inst($tableName)->exportAsSqlString();
                    if ($fileData) {
                        dolog(' + {} [not empty]', $tableName);
                        $DATA_DI_SQL->appendMlComment('+ table ' . $tableName);
                        $DATA_DI_SQL->appendLine($fileData);
                    } else {
                        dolog(' - {} [empty]', $tableName);
                    }
                }
                $DATA_DI_SQL->save();
            }
            /*
             * Теперь ещё создадим тестовые объекты.
             * Для каждого скоупа свои тестовые данные, так что таблицы можно называть одинаково.
             */
            dolog('Add test part');
            $SCHEMA_SQL->appendMlComment('Test part');
            /*
             if ($scope == ENTITY_SCOPE_PROJ) {
             dolog('+ SDK TEST PART');
            
             //Добавим секцию в лог
             $SCHEMA_SQL->appendMlComment('>>> SDK TEST PART');
            
             //CREATE CHEMA SCRIPT
             $SCHEMA_SQL->appendFile($SDK->getDirItem('sysobjects/test', 'schema', PsConst::EXT_SQL));
            
             //ADD TEST DATA
             $SCHEMA_SQL->appendFile($SDK->getDirItem('sysobjects/test', 'data', PsConst::EXT_SQL));
            
             //Добавим секцию в лог
             $SCHEMA_SQL->appendMlComment('<<< SDK TEST PART');
             }
            */
            $SCHEMA_SQL->appendFile($DM_SYSOBJECTS->getDirItem('test', 'schema', PsConst::EXT_SQL), false);
            $SCHEMA_SQL->appendFile($DM_SYSOBJECTS->getDirItem('test', 'data', PsConst::EXT_SQL), false);
            $SCHEMA_SQL->save();
            #end conn== TEST
            /*
             * Всё, сохраняем финальный скрипт
             */
            //SAVE .sql
            $SCHEMA_SQL->save();
            //Переразвернём тестовую схему с тестовыми таблицами
            dolog("Rebuilding checma '{}'", $database);
            $rootProps->execureShell($SCHEMA_SQL->getDi());
            //Отключимся от схемы
            PsConnectionPool::disconnect();
        }
    }
    dolog('Database schemas successfully exported');
}
Example #20
0
 protected function __construct()
 {
     $consts = self::getTypes();
     check_condition(count($consts) == count(array_unique($consts)), 'Класс ' . __CLASS__ . ' содержит повторяющиеся константы: ' . array_to_string($consts, false));
     parent::__construct();
 }
require_once 'srvc_pay_api.php';
utils_init();
log_visitor_info();
function __verify_xml_SUCCESS($xml_arr)
{
    // only archive the xml with SUCCESS, check logs for the FAILs
    $isSUCCESS = $xml_arr["result_code"];
    $sign_from_wx = $xml_arr["sign"];
    unset($xml_arr["sign"]);
    $sign = wx_sign_array($xml_arr, TOO_WX_PAY_API_SIGN_KEY, true);
    if ($sign != "" && $sign == $sign_from_wx && $isSUCCESS == "SUCCESS") {
        return true;
    }
    return false;
}
function __pay_notify_by_email($ttoken, $xml_json)
{
    $subject = "[Too塗支付单] " . $ttoken;
    email_send_to_many(array(TOO_WX_MAIL_ADMIN_Y, TOO_WX_MAIL_ADMIN_W), $subject, $xml_json, notify_email(TOO_HOST_URL));
}
$post_raw = $GLOBALS["HTTP_RAW_POST_DATA"];
$xml = (array) simplexml_load_string($post_raw, null, LIBXML_NOCDATA);
log_pay_info(array_to_string($xml) . "\n" . array_to_string($_GET));
$xml_json = json_encode($xml);
if (__verify_xml_SUCCESS($xml)) {
    $ttoken = $xml["out_trade_no"];
    impl_srvc_pay_api_archive_notification($xml_json, $ttoken);
    __pay_notify_by_email($ttoken, $xml_json);
}
echo "<xml>\n      <return_code><![CDATA[SUCCESS]]></return_code>\n      <return_msg><![CDATA[OK]]></return_msg>\n      </xml>";
Example #22
0
 /**
  * @param int $sessionId
  * @param int $courseId
  * @return string
  */
 public static function getCoachesByCourseSessionToString($sessionId, $courseId)
 {
     $coaches = self::getCoachesByCourseSession($sessionId, $courseId);
     $list = array();
     if (!empty($coaches)) {
         foreach ($coaches as $coachId) {
             $userInfo = api_get_user_info($coachId);
             $list[] = api_get_person_name($userInfo['firstname'], $userInfo['lastname']);
         }
     }
     return array_to_string($list, CourseManager::USER_SEPARATOR);
 }
Example #23
0
 /**
  * Метод проверяет тип переденной переменной
  * 
  * @param mixed $var
  * @param array $allowed - допустимые типы данных
  * @param array $denied - запрещённые типы данных
  * @return mixed
  */
 public static function phpType($type, array $allowed = null, array $denied = null)
 {
     if (!PsConst::hasPhpType($type)) {
         self::raise('Ожидается зарегистрированный тип данных php', $type);
     }
     if (!empty($allowed) && !in_array($type, $allowed)) {
         self::raise('Ожидается один из типов данных: ' . array_to_string($allowed), $type);
     }
     if (!empty($denied) && in_array($type, $denied)) {
         self::raise('Не ожидается один из типов данных: ' . array_to_string($denied), $type);
     }
     return $type;
 }
Example #24
0
    function build_field($field, $label = true, $settings = array())
    {
        //$default = array('name', 'type','settings','class','default','placeholder','id'=>'');
        $fiel = $this->parse_field($field);
        extract($fiel);
        $class = isset($class) && $class ? 'form-control ' . $class : 'form-control';
        if ($label && !$placeholder) {
            do_action('sh_form_before_label', $field);
            echo form_label($placeholder, $name);
            do_action('sh_form_after_label', $field);
        }
        if ($placeholder) {
            $settings['attrs']['placeholder'] = $placeholder;
        }
        $settings['attrs']['class'] = $class;
        $default = sh_set($settings, $name) ? sh_set($settings, $name) : $default;
        switch ($this->type) {
            case "input":
                $html['element'] = form_input(array_merge(array('name' => $name, 'type' => $type, 'value' => '', 'id' => $id), (array) $settings['attrs']));
                break;
            case "dropdown":
                $settings['attrs'] = _parse_form_attributes('', array_merge((array) $settings['attrs'], array('id' => $name)));
                $html['element'] = form_dropdown($name, $options, _WSH()->validation->set_value($name, $default), $settings['attrs']);
                break;
            case "multiselect":
                $size = count($settings['value']) < 10 ? count($settings['value']) * 20 : 220;
                $settings['attrs'] = array_to_string(array_merge((array) $settings['attrs'], array('id' => $field, 'style' => "height:" . $size . "px;")));
                $html['element'] = form_multiselect($field . '[]', $settings['value'], _WSH()->validation->set_value($name, $default_value), $settings['attrs']);
                break;
            case "textarea":
                $settingsvalue = empty($user_settings[$name]) ? sh_set($settings, 'value') : $user_settings[$name];
                $html['element'] = form_textarea(array_merge(array('name' => $name, 'value' => _WSH()->validation->set_value($name, $settingsvalue), 'id' => $name), (array) $settings['attrs']));
                break;
            case "switch":
                $html['element'] = '';
                $checked = sh_set($user_settings, $field) == 'on' ? 'checked="checked"' : '';
                $html['element'] = '<span class="form_style switch"><input type="checkbox" name="' . $field . '" ' . $checked . '></span>';
                break;
            case 'file':
                $html['element'] = '<span class="file_upload">';
                $html['element'] .= form_input(array_merge(array('name' => $field, 'value' => $default_value, 'id' => $field), (array) $settings['attrs'])) . '<input type="file" onchange="this.form.' . $field . '.value = this.value" class="fileUpload" name="' . $field . '_file" id="fileUpload">
									<em>' . __('UPLOAD', THEME_NAME) . '</em>';
                $html['element'] .= '</span>';
                $html['preview'] = '';
                if (sh_set($user_settings, $field)) {
                    $html['preview'] = sh_set($user_settings, $field);
                }
                break;
            case "checkbox":
            case "radio":
                $html['element'] = '<div class="clearfix">';
                foreach ($settings['value'] as $key => $val) {
                    $html['element'] .= form_radio($field, $key, $default_value == $key ? true : '', $settings['attrs']) . '<label class="' . $settings['type'] . ' cont-lable" for="' . $field . '"> ' . $val . '</label>' . '';
                }
                $html['element'] .= '</div>';
                break;
            case "colorbox":
                $html['element'] = form_input(array_merge(array('name' => $field, 'value' => $default_value, 'id' => $field, 'class' => 'nuke-color-field'), (array) $settings['attrs']));
                break;
            case "timepicker":
                $html['element'] = form_input(array_merge(array('name' => $field, 'value' => $default_value, 'id' => $field), (array) $settings['attrs']));
                break;
            case "hidden":
                $html['label'] = '';
                $html['element'] = form_input(array_merge(array('type' => 'hidden', 'name' => $field, 'value' => $default_value, 'id' => $field), sh_set($settings, 'attrs')));
                break;
        }
        do_action('sh_form_before_field', $fiel);
        echo $html['element'];
        do_action('sh_form_after_field', $fiel);
    }
Example #25
0
    /**
     * Set footer parameters
     */
    private function set_footer_parameters()
    {
        global $_configuration;

        //Show admin data
        //$this->assign('show_administrator_data', api_get_setting('show_administrator_data'));

        if (api_get_setting('show_administrator_data') == 'true') {
            //Administrator name
            $administrator_data = get_lang('Manager').' : '.Display::encrypted_mailto_link(
                    api_get_setting('emailAdministrator'),
                    api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))
                );
            $this->assign('administrator_name', $administrator_data);
        }

        //Loading footer extra content
        if (!api_is_platform_admin()) {
            $extra_footer = trim(api_get_setting('footer_extra_content'));
            if (!empty($extra_footer)) {
                $this->assign('footer_extra_content', $extra_footer);
            }
        }

        //Tutor name
        if (api_get_setting('show_tutor_data') == 'true') {
            // Course manager
            $id_course  = api_get_course_id();
            $id_session = api_get_session_id();
            if (isset($id_course) && $id_course != -1) {
                $tutor_data = '';
                if ($id_session != 0) {
                    $coachs_email = CourseManager::get_email_of_tutor_to_session($id_session, $id_course);
                    $email_link   = array();
                    foreach ($coachs_email as $coach) {
                        $email_link[] = Display::encrypted_mailto_link($coach['email'], $coach['complete_name']);
                    }
                    if (count($coachs_email) > 1) {
                        $tutor_data .= get_lang('Coachs').' : ';
                        $tutor_data .= array_to_string($email_link, CourseManager::USER_SEPARATOR);
                    } elseif (count($coachs_email) == 1) {
                        $tutor_data .= get_lang('Coach').' : ';
                        $tutor_data .= array_to_string($email_link, CourseManager::USER_SEPARATOR);
                    } elseif (count($coachs_email) == 0) {
                        $tutor_data .= '';
                    }
                }
                $this->assign('session_teachers', $tutor_data);
            }
        }

        if (api_get_setting('show_teacher_data') == 'true') {
            // course manager
            $id_course = api_get_course_id();
            if (isset($id_course) && $id_course != -1) {
                $teacher_data = '';
                $mail         = CourseManager::get_emails_of_tutors_to_course($id_course);
                if (!empty($mail)) {
                    $teachers_parsed = array();
                    foreach ($mail as $value) {
                        foreach ($value as $email => $name) {
                            $teachers_parsed[] = Display::encrypted_mailto_link($email, $name);
                        }
                    }
                    $label = get_lang('Teacher');
                    if (count($mail) > 1) {
                        $label = get_lang('Teachers');
                    }
                    $teacher_data .= $label.' : '.array_to_string($teachers_parsed, CourseManager::USER_SEPARATOR);
                }
                $this->assign('teachers', $teacher_data);
            }
        }
        /* $stats = '';
          $this->assign('execution_stats', $stats); */
    }
Example #26
0
 public function __toString()
 {
     return __CLASS__ . ' ' . array_to_string($this->params->getData(), false);
 }
Example #27
0
function array_to_string(array $array, $assoc = false)
{
    $assoc = $assoc || is_assoc_array($array);
    $result = array();
    foreach ($array as $key => $value) {
        $result[] = ($assoc ? "{$key}=>" : '') . (is_array($value) ? array_to_string($value, false) : var_export($value, true));
    }
    return '[' . implode(', ', $result) . ']';
}
Example #28
0
/**
 * Convierte un array en un string (método análogao a string_to_array)
 * @param array $array
 */
function array_to_string($array)
{
    $retval = '';
    $null_value = "^^^";
    foreach ($array as $index => $val) {
        if (gettype($val) == 'array') {
            $value = '^^array^' . array_to_string($val);
        } else {
            $value = $val;
        }
        if (!$value) {
            $value = $null_value;
        }
        $retval .= urlencode(base64_encode($index)) . '|' . urlencode(base64_encode($value)) . '||';
    }
    return urlencode(substr($retval, 0, -2));
}
// 	$data['provinceMap'][$key] = $value['name'];
// }
$data['provinceString'] = '"' . implode('","', $proName) . '"';
$data['provinceString2'] = '"' . implode('","', $comName) . '"';
// }
$data['province'] = Info::getProvince(false);
$data['complaintType'] = Info::getComplaintType('complaint_type', false);
$data['questionType'][1] = Info::getQuestionType(1, 'question_type', true);
$data['questionType'][2] = Info::getQuestionType(2, 'question_type', true);
$data['questionType'][3] = Info::getQuestionType(3, 'question_type', true);
$data['complaintLevel'] = Info::getComplaintLevel('complaint_level', false);
$data['bussLine'] = Info::getBussLine('buss_type', false);
// var_dump($data['bussLine']);
//导出excel下载
if ($_GET['download'] == 1) {
    $downloadStr = array_to_string($data);
    //var_dump($data);exit;
    Common::exportExcel($downloadStr, 'black_list');
    exit;
}
$page_html = Pagination::showPager("custom_analyze.php?class_name={$class_name}&user_name={$user_name}&start_date={$start_date}&end_date={$end_date}", $page_no, PAGE_SIZE, $row_count);
$export_excel = "custom_analyze.php?download=1&class_name={$class_name}&user_name={$user_name}&start_date={$start_date}&end_date={$end_date}";
Template::assign("error", $error);
Template::assign("_POST", $_POST);
Template::assign('_GET', $_GET);
Template::assign("data", $data);
Template::assign("param", $param);
Template::assign('page_html', $page_html);
Template::assign('export_excel', $export_excel);
// Template::assign("output" ,$output);
Template::display('complaint/complaints_analyze.tpl');
Example #30
0
 public function dataToString($assoc = true)
 {
     return array_to_string($this->data, $assoc);
 }