public function run() { foreach ($this->config['vendors'] as $vendorConfig) { $vendor = new Vendor($vendorConfig); $this->masterData->importData($vendor); //break;//only one vendor for now } $this->masterData->finish(); self::log('Sync Vendor Prices ended.'); self::log('Updating prices ...'); $updater = new PriceUpdater($this->config); $updater->updatePrices(); self::log('Finished updating prices.'); fn_stop_scroller(); }
/** * Creates database and imports dump there * @param string $db_name db name * @return boolean true on success, false - otherwise */ public static function createDb($db_name = '') { $snapshot_dir = Registry::get('config.dir.snapshots'); $dbdump_filename = empty($db_name) ? 'cmp_current.sql' : 'cmp_release.sql'; if (!fn_mkdir($snapshot_dir)) { fn_set_notification('E', __('error'), __('text_cannot_create_directory', array('[directory]' => fn_get_rel_dir($snapshot_dir)))); return false; } $dump_file = $snapshot_dir . $dbdump_filename; if (is_file($dump_file)) { if (!is_writable($dump_file)) { fn_set_notification('E', __('error'), __('dump_file_not_writable')); return false; } } $fd = @fopen($snapshot_dir . $dbdump_filename, 'w'); if (!$fd) { fn_set_notification('E', __('error'), __('dump_cant_create_file')); return false; } if (!empty($db_name)) { Database::changeDb($db_name); } // set export format db_query("SET @SQL_MODE = 'MYSQL323'"); fn_start_scroller(); $create_statements = array(); $insert_statements = array(); $status_data = db_get_array("SHOW TABLE STATUS"); $dbdump_tables = array(); foreach ($status_data as $k => $v) { $dbdump_tables[] = $v['Name']; } // get status data $t_status = db_get_hash_array("SHOW TABLE STATUS", 'Name'); foreach ($dbdump_tables as $k => $table) { fn_echo('<br />' . __('backupping_data') . ': <b>' . $table . '</b> '); $total_rows = db_get_field("SELECT COUNT(*) FROM {$table}"); $index = db_get_array("SHOW INDEX FROM {$table}"); $order_by = array(); foreach ($index as $kk => $vv) { if ($vv['Key_name'] == 'PRIMARY') { $order_by[] = '`' . $vv['Column_name'] . '`'; } } if (!empty($order_by)) { $order_by = 'ORDER BY ' . implode(',', $order_by); } else { $order_by = ''; } // Define iterator if (!empty($t_status[$table]) && $t_status[$table]['Avg_row_length'] < DB_MAX_ROW_SIZE) { $it = DB_ROWS_PER_PASS; } else { $it = 1; } for ($i = 0; $i < $total_rows; $i = $i + $it) { $table_data = db_get_array("SELECT * FROM {$table} {$order_by} LIMIT {$i}, {$it}"); foreach ($table_data as $_tdata) { $_tdata = fn_add_slashes($_tdata, true); $values = array(); foreach ($_tdata as $v) { $values[] = $v !== null ? "'{$v}'" : 'NULL'; } fwrite($fd, "INSERT INTO {$table} (`" . implode('`, `', array_keys($_tdata)) . "`) VALUES (" . implode(', ', $values) . ");\n"); } fn_echo(' .'); } } fn_stop_scroller(); if (!empty($db_name)) { Settings::instance()->reloadSections(); } if (fn_allowed_for('ULTIMATE')) { $companies = fn_get_short_companies(); asort($companies); $settings['company_root'] = Settings::instance()->getList(); foreach ($companies as $k => $v) { $settings['company_' . $k] = Settings::instance()->getList(0, 0, false, $k); } } else { $settings['company_root'] = Settings::instance()->getList(); } if (!empty($db_name)) { Database::changeDb(Registry::get('config.db_name')); } $settings = self::processSettings($settings, ''); $settings = self::formatSettings($settings['data']); ksort($settings); $data = print_r($settings, true); fwrite($fd, $data); fclose($fd); @chmod($snapshot_dir . $dbdump_filename, DEFAULT_FILE_PERMISSIONS); return true; }
function fn_export($pattern, $export_fields, $options) { if (!empty($pattern['pre_processing'])) { $func = $pattern['pre_processing']; $function = array_shift($func); $args = $func; foreach ($args as $k => $v) { if (strpos($v, '@') !== false) { $_opt = str_replace('@', '', $v); $args[$k] = isset($options[$_opt]) ? $options[$_opt] : ''; } } call_user_func_array($function, $args); } if (isset($options['fields_names'])) { if ($options['fields_names']) { $fields_names = $export_fields; $export_fields = array_keys($export_fields); } } $primary_key = $pattern['key']; array_walk($primary_key, 'fn_attach_value_helper', $pattern['table'] . '.'); $table_fields = $primary_key; $joins = array(); $processes = array(); $conditions = array(); // Build list of fields that should be retrieved from the database foreach ($pattern['export_fields'] as $field => $data) { if (!in_array($field, $export_fields)) { continue; } // Do no link this field if (isset($data['linked']) && $data['linked'] == false) { // do something? } elseif (empty($data['table']) || $data['table'] == $pattern['table']) { $table_fields[] = $pattern['table'] . '.' . (!empty($data['db_field']) ? $data['db_field'] . ' as "' . $field . '"' : $field); // Linked object tables } else { $table_fields[] = $data['table'] . '.' . (!empty($data['db_field']) ? $data['db_field'] . ' as "' . $field . '"' : $field); } if (!empty($data['process_get'])) { $processes[$field]['function'] = array_shift($data['process_get']); $processes[$field]['args'] = $data['process_get']; } } // Build the list of joins if (!empty($pattern['references'])) { foreach ($pattern['references'] as $table => $data) { $ref = array(); foreach ($data['reference_fields'] as $k => $v) { if (strval($v) == 'key' || strval($v) == '#key') { $_val = sizeof($primary_key) == 1 ? reset($primary_key) : ''; } elseif ($v[0] == '&') { $_val = $pattern['table'] . '.' . substr($v, 1); } elseif (strpos($v, '@') !== false) { $_opt = str_replace('@', '', $v); $_val = "'" . $options[$_opt] . "'"; } else { $_val = "'{$v}'"; } $ref[] = "{$table}.{$k} = {$_val}"; // fixme } $joins[] = $data['join_type'] . ' JOIN ?:' . $table . " as {$table} ON " . implode(' AND ', $ref); } } // Add retrieve conditions if (!empty($pattern['condition'])) { $_cond = array(); foreach ($pattern['condition'] as $field => $value) { if (is_array($value)) { $_val = implode("','", $value); } elseif (strpos($value, '@') !== false) { $_opt = str_replace('@', '', $value); $_val = $options[$_opt]; } else { $_val = $value; } $_cond[] = $pattern['table'] . ".{$field} IN ('{$_val}')"; } $conditions[] = implode(' AND ', $_cond); } // Limit scope to the current vendor's products only (if in vendor mode) $company_condition = fn_get_company_condition('products.company_id', false); if (!empty($company_condition)) { $conditions[] = $company_condition; } // Build main query $query = "SELECT " . implode(', ', $table_fields) . " FROM ?:" . $pattern['table'] . " as " . $pattern['table'] . ' ' . implode(' ', $joins) . (!empty($conditions) ? ' WHERE ' . implode(' AND ', $conditions) : ''); $step = 30; // define number of rows to get from database $iterator = 0; // start retrieving from $data_exported = false; fn_start_scroller(); fn_echo(fn_get_lang_var('exporting_data') . '<br />'); while ($data = db_get_array($query . " LIMIT {$iterator}, {$step}")) { $data_exported = true; $iterator += $step; $result = array(); foreach ($data as $k => $v) { $result[$k] = fn_array_key_intersect($v, $pattern['export_fields']); foreach ($processes as $field => $process_data) { $args = array(); foreach ($process_data['args'] as $ak => $av) { if ($av == '#this') { $args[$ak] = $v[$field]; } elseif ($av == '#key') { $args[$ak] = sizeof($pattern['key']) == 1 ? $v[reset($pattern['key'])] : ''; } elseif (strpos($av, '@') !== false) { $_opt = str_replace('@', '', $av); $args[$ak] = $options[$_opt]; } elseif ($av == '#field') { $args[$ak] = $field; } else { $args[$ak] = $av; } } $result[$k][$field] = call_user_func_array($process_data['function'], $args); } } // Sort result array $_result = array(); foreach ($result as $k => $v) { foreach ($export_fields as $field) { if (isset($fields_names[$field])) { $_result[$k][$fields_names[$field]] = $v[$field]; } else { $_result[$k][$field] = $v[$field]; } } } unset($result); // Put data $enclosure = isset($pattern['enclosure']) ? $pattern['enclosure'] : '"'; fn_echo(' .'); fn_put_csv($_result, $options, $enclosure); unset($_result); } fn_stop_scroller(); if (!empty($pattern['post_processing'])) { $func = $pattern['post_processing']; if (file_exists(DIR_EXIM . $options['filename'])) { $function = array_shift($func); $args = $func; foreach ($args as $k => $v) { if (strpos($v, '@') !== false) { $_opt = str_replace('@', '', $v); $args[$k] = $options[$_opt]; } } $data_exported = call_user_func_array($function, $args); } } echo '<br/>'; echo '<a href="/var/exim/' . $options['filename'] . '">' . $options['filename'] . '</a>'; return $data_exported; }
fn_install_addon('twigmo', false); $_SESSION['twigmo_upgrade'] = array('upgrade_dirs' => $upgrade_dirs, 'install_src_dir' => $install_src_dir); fn_stop_scroller(); echo '<br><br>'; fn_redirect('upgrade_center.upgrade_twigmo.step2'); } } if ($mode == 'upgrade_twigmo' and $action == 'step2' and isset($_SESSION['twigmo_upgrade']) && !fn_twg_is_on_saas()) { fn_start_scroller(); fn_echo(__('twgadmin_restore_settings') . '<br>'); fn_ftp_connect(Settings::instance()->getValues('Upgrade_center')); fn_echo('.'); $upgrade_dirs = $_SESSION['twigmo_upgrade']['upgrade_dirs']; fn_echo('.'); // Uninstal addon fn_uninstall_addon('twigmo', false); fn_echo('.'); // Install fn_install_addon('twigmo', false); fn_echo('.'); // Restore settings TwigmoUpgrade::restoreSettingsAndCSS($upgrade_dirs, $auth['user_id']); fn_echo('.'); // Clear template cache fn_rm(Registry::get('config.dir.cache_templates')); fn_echo('.'); fn_echo('<br><b>' . __('twgadmin_upgrade_completed') . '<b><br>'); unset($_SESSION['twigmo_upgrade']); fn_stop_scroller(); return array(CONTROLLER_STATUS_REDIRECT, 'addons.update?addon=twigmo'); }
function fn_delete_localization($localization_ids) { fn_start_scroller(); foreach ($localization_ids as $loc_id) { foreach (fn_get_localization_objects() as $table) { fn_echo('<br />' . str_replace('[table]', $table, fn_get_lang_var('converting_data_in_table')) . '...' . '<br />'); db_query("UPDATE ?:{$table} SET localization = ?p", fn_remove_from_set('localization', $loc_id)); } fn_stop_scroller(); db_query("DELETE FROM ?:localizations WHERE localization_id = ?i", $loc_id); db_query("DELETE FROM ?:localization_descriptions WHERE localization_id = ?i", $loc_id); db_query("DELETE FROM ?:localization_elements WHERE localization_id = ?i", $loc_id); } }