Ejemplo n.º 1
0
/**
 * Gets all available patterns for the section
 *
 * @param string $section section to get patterns for
 * @param string $get_for get import or export patterns
 * @return array
 */
function fn_get_patterns($section, $get_for)
{
    // Get core patterns
    $files = fn_get_dir_contents(Registry::get('config.dir.schemas') . 'exim', false, true, '.php');
    foreach (Registry::get('addons') as $addon_name => $addon_data) {
        if ($addon_data['status'] != 'A') {
            continue;
        }
        $schema_dir = Registry::get('config.dir.addons') . $addon_name . '/schemas/exim';
        if (is_dir($schema_dir)) {
            $_files = fn_get_dir_contents($schema_dir, false, true, '.php');
            foreach ($_files as $key => $filename) {
                if (strpos($filename, '.post.php') !== false) {
                    unset($_files[$key]);
                }
            }
            if (!empty($_files)) {
                $files = fn_array_merge($files, $_files, false);
            }
        }
    }
    $patterns = array();
    $sections = array();
    foreach ($files as $schema_file) {
        if (strpos($schema_file, '.functions.') !== false) {
            // skip functions schema definition
            continue;
        }
        $pattern_id = str_replace('.php', '', $schema_file);
        $pattern = fn_get_pattern_definition($pattern_id, $get_for);
        if (empty($pattern) || !fn_check_pattern_permissions($pattern, $get_for, $_SESSION['auth']['user_id'])) {
            continue;
        }
        $sections[$pattern['section']] = array('title' => __($pattern['section']), 'href' => 'exim.' . Registry::get('runtime.mode') . '?section=' . $pattern['section']);
        if ($pattern['section'] == $section) {
            $patterns[$pattern_id] = $pattern;
        }
    }
    if (Registry::get('runtime.company_id')) {
        $schema = fn_get_permissions_schema('vendor');
        // Check if the selected section is available
        if (isset($schema[$get_for]['sections'][$section]['permission']) && !$schema[$get_for]['sections'][$section]['permission']) {
            return array('', '');
        }
        if (!empty($schema[$get_for]['sections'])) {
            foreach ($schema[$get_for]['sections'] as $section_id => $data) {
                if (isset($data['permission']) && !$data['permission']) {
                    unset($sections[$section_id]);
                }
            }
        }
        if (!empty($schema[$get_for]['patterns'])) {
            foreach ($schema[$get_for]['patterns'] as $pattern_id => $data) {
                if (isset($data['permission']) && !$data['permission']) {
                    unset($patterns[$pattern_id]);
                }
            }
        }
    }
    ksort($sections, SORT_STRING);
    uasort($patterns, 'fn_sort_patterns');
    return array($sections, $patterns);
}
Ejemplo n.º 2
0
function fn_get_patterns($section, $get_for)
{
    // Get core patterns
    $files = fn_get_dir_contents(DIR_SCHEMAS . 'exim', false, true, '.php');
    foreach (Registry::get('addons') as $k => $v) {
        if ($v['status'] != 'A') {
            continue;
        }
        if (is_dir(DIR_ADDONS . $k . '/schemas/exim')) {
            $_files = fn_get_dir_contents(DIR_ADDONS . $k . '/schemas/exim', false, true, '.php');
            foreach ($_files as $k => $v) {
                if (strpos($v, '.post.php') !== false) {
                    unset($_files[$k]);
                }
            }
            if (!empty($_files)) {
                $files = fn_array_merge($files, $_files, false);
            }
        }
    }
    $patterns = array();
    $sections = array();
    foreach ($files as $k => $v) {
        $pattern_id = str_replace('.php', '', $v);
        $pattern = fn_get_pattern_definition($pattern_id);
        if (!empty($pattern['export_only']) && $get_for == 'import' || !empty($pattern['import_only']) && $get_for == 'export') {
            continue;
        }
        $sections[$pattern['section']] = array('title' => fn_get_lang_var($pattern['section']), 'href' => 'exim.' . MODE . '?section=' . $pattern['section']);
        if ($pattern['section'] == $section) {
            $patterns[$pattern_id] = $pattern;
        }
    }
    ksort($sections, SORT_STRING);
    ksort($patterns, SORT_STRING);
    return array($sections, $patterns);
}
Ejemplo n.º 3
0
function fn_data_feeds_export($datafeed_id, $options = array(), $pattern = '')
{
    static $pattern;
    if (empty($pattern)) {
        $pattern = fn_get_pattern_definition('products');
    }
    $params['datafeed_id'] = $datafeed_id;
    $params['single'] = true;
    $params['available_fields'] = 'Y';
    $params = array_merge($params, $options);
    $datafeed_data = fn_data_feeds_get_data($params, DESCR_SL);
    if (empty($pattern) || empty($params['datafeed_id'])) {
        fn_set_notification('E', __('error'), __('error_exim_no_data_exported'));
        return false;
    }
    if ($datafeed_data['exclude_disabled_products'] == 'Y') {
        $params['status'] = 'A';
    }
    if (empty($datafeed_data['products']) && empty($datafeed_data['categories'])) {
        $params['cid'] = 0;
        $params['subcats'] = 'Y';
        $params['skip_view'] = 'Y';
        $params['extend'] = array('categories');
        list($products, $search) = fn_get_products($params);
        $pids = array_map(create_function('$product', '$pid = $product["product_id"]; return $pid;'), $products);
    } else {
        $pids = array();
        if (!empty($datafeed_data['products'])) {
            $pids = explode(',', $datafeed_data['products']);
        }
        if (!empty($datafeed_data['categories'])) {
            $params['cid'] = explode(',', $datafeed_data['categories']);
            $params['subcats'] = 'Y';
            $params['skip_view'] = 'Y';
            $params['extend'] = array('categories');
            list($products, $search) = fn_get_products($params);
            $_pids = array_map(create_function('$product', '$pid = $product["product_id"]; return $pid;'), $products);
            $pids = array_merge($pids, $_pids);
            unset($_pids);
        }
        $pids = array_unique($pids);
    }
    if (empty($pids)) {
        fn_set_notification('E', __('error'), __('error_exim_no_data_exported'));
        return false;
    }
    $pattern['condition']['conditions']['product_id'] = $pids;
    $fields = array();
    if (!empty($datafeed_data['fields'])) {
        foreach ($datafeed_data['fields'] as $field) {
            $fields[$field['field']] = $field['export_field_name'];
        }
    }
    $features = db_get_array('SELECT feature_id, description FROM ?:product_features_descriptions WHERE lang_code = ?s', DESCR_SL);
    $features_fields = array();
    if (!empty($features)) {
        foreach ($features as $feature) {
            $features_fields[$feature['description']] = array('process_get' => array('fn_data_feeds_get_product_features', '#key', '#field', '#lang_code'), 'linked' => false);
        }
    }
    $pattern['export_fields'] = array_merge($pattern['export_fields'], $features_fields);
    $options = $datafeed_data['export_options'];
    $options['delimiter'] = $datafeed_data['csv_delimiter'];
    $options['filename'] = $datafeed_data['file_name'];
    $options['fields_names'] = true;
    $options['force_header'] = true;
    $pattern['enclosure'] = !empty($datafeed_data['enclosure']) ? $datafeed_data['enclosure'] : '';
    if (!empty($fields)) {
        if (fn_export($pattern, $fields, $options) == true) {
            $errors = false;
            $export_location = empty($params['location']) ? $datafeed_data['export_location'] : $params['location'];
            if ($export_location == 'S') {
                if (file_exists(fn_get_files_dir_path() . $datafeed_data['file_name']) && is_dir($datafeed_data['save_dir'])) {
                    fn_rename(fn_get_files_dir_path() . $datafeed_data['file_name'], $datafeed_data['save_dir'] . '/' . $datafeed_data['file_name']);
                } else {
                    $errors = true;
                    fn_set_notification('E', __('error'), __('check_server_export_settings'));
                }
            } elseif ($export_location == 'F') {
                if (empty($datafeed_data['ftp_url'])) {
                    $errors = true;
                    fn_set_notification('E', __('error'), __('ftp_connection_problem'));
                } else {
                    preg_match("/[^\\/^\\^:]+/", $datafeed_data['ftp_url'], $matches);
                    $host = $matches[0];
                    preg_match("/.*:([0-9]+)/", $datafeed_data['ftp_url'], $matches);
                    $port = empty($matches[1]) ? 21 : $matches[1];
                    preg_match("/[^\\/]+(.*)/", $datafeed_data['ftp_url'], $matches);
                    $url = empty($matches[1]) ? '' : $matches[1];
                    $conn_id = @ftp_connect($host, $port);
                    $result = @ftp_login($conn_id, $datafeed_data['ftp_user'], $datafeed_data['ftp_pass']);
                    if (!empty($url)) {
                        @ftp_chdir($conn_id, $url);
                    }
                    $filename = fn_get_files_dir_path() . $datafeed_data['file_name'];
                    if ($result) {
                        if (@ftp_put($conn_id, $datafeed_data['file_name'], $filename, FTP_ASCII)) {
                            unlink($filename);
                        } else {
                            $errors = true;
                            fn_set_notification('E', __('error'), __('ftp_connection_problem'));
                        }
                    } else {
                        $errors = true;
                        fn_set_notification('E', __('error'), __('ftp_connection_problem'));
                    }
                    @ftp_close($conn_id);
                }
            }
            if (!$errors) {
                fn_set_notification('N', __('notice'), __('text_exim_data_exported'));
                return true;
            } else {
                unlink(fn_get_files_dir_path() . $datafeed_data['file_name']);
                return false;
            }
        } else {
            fn_set_notification('E', __('error'), __('error_exim_no_data_exported'));
            return false;
        }
    } else {
        fn_set_notification('E', __('error'), __('error_exim_fields_not_selected'));
        return false;
    }
}
Ejemplo n.º 4
0
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
// rus_build_mailru dbazhenov
use Tygh\Registry;
ini_set('auto_detect_line_endings', true);
set_time_limit(3600);
fn_define('DB_LIMIT_SELECT_ROW', 30);
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($mode == 'mailru_cron_export') {
    $addon_settings = Registry::get('addons.rus_tovary_mailru');
    $params = $_REQUEST;
    if ($params['cron_key'] != $addon_settings['cron_key']) {
        fn_set_notification('E', __('error'), __('yml_export_error_cron_key'));
        fn_echo(__('yml_export_error_cron_key'));
        exit;
    }
    $layout_data_cols = array('product_id', 'product_code', 'Language', 'product_name', 'category', 'category_descriptions', 'price', 'status', 'amount', 'shipping_freight', 'free_shipping', 'product', 'full_description', 'product_features', 'product_url', 'image_url', 'is_edp');
    $options = array('lang_code' => array(DEFAULT_LANGUAGE), 'price_dec_sign_delimiter' => '.', 'delimiter' => 'T', 'output' => 'S');
    $pattern = fn_get_pattern_definition('tovary_mailru', 'export');
    $options['filename'] = Registry::get('addons.rus_tovary_mailru.cron_filename');
    if (fn_export($pattern, $layout_data_cols, $options)) {
        fn_echo("<br/>Экспорт выполнен успешно");
    } else {
        fn_set_notification('E', __('error'), __('mailru_export_error_cron'));
    }
    exit;
}