/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } ЛИБЕРАЛЬНЫЙ КАПКАН: Кто и зачем пытается затянуть в него Беларусь | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

ЛИБЕРАЛЬНЫЙ КАПКАН: Кто и зачем пытается затянуть в него Беларусь

Похоже, либерал-«реформаторы» решили зачистить постсоветское пространство от государственной экономики. Они занялись вплотную Беларусью - единственной из стран СНГ, не допустившей разгула частной собственности и свободного рынка. Но если раньше либеральный экономический курс республике навязывали извне - Запад и российское руководство, а внутри за него ратовали только немощные «демократические» партии, то сейчас ситуация изменилась. Предложения провести радикальную рыночную реформу, как сообщил в ноябре прошлого года, вступая в должность президента, Александр Лукашенко, звучат уже и из властных кабинетов. В общем-то, ничего неожиданного в этом нет.

С точностью до наоборот

В Минске помнят, как три года назад постоянный представитель Международного валютного фонда в Беларуси Наталья Колядина, отбывавшая за океан в штаб-квартиру МВФ, на вопрос журналиста: «Много ли в белорусском правительстве сторонников рыночных реформ?» - ответила: «Иногда я даже удивляюсь, насколько их много».

Либерально-рыночные настроения, а именно о них шла речь в том интервью, среди здешнего чиновничества, конечно же, не могли появиться по мановению волшебной палочки. Они вызревали исподволь - о процессе этом скажу позже - и крепли по мере того, как усложнялась ситуация в экономике. А тут было над чем задуматься. Триумфальный, иначе не назовёшь, взлёт - порой до 8-12 процентов ежегодной прибавки ВВП - сменился падением. После 2011 года, когда буйствовавший около трёх лет почти во всём мире кризис вполз в Беларусь не столько с Запада, сколько из России, производственно-экономическая сопряжённость с которой прежде всего сказывается на здешних делах, прирост её валового внутреннего продукта «спикировал» до 1,6-0,9 процента. Причём больше всего упало производство в промышленности, развивавшейся самыми высокими темпами. Вчетверо, до 35,5 процента, увеличилось количество убыточных предприятий.

Для хиреющей «демократической» оппозиции наступили именины сердца. «Крах государственного управления экономикой»… «Спасение - в свободном рынке», - не скрывала торжества её пресса. Провести либеральную реформу настоятельно требовали, увязывая с выделением кредитов, МВФ и Всемирный банк. И всё чаще о её необходимости и даже неизбежности стали говорить на республиканских экономических форумах и в государственных СМИ чиновники разных рангов. Предложения о радикальной реформе, по словам Лукашенко, зазвучали из властных кабинетов уже как предложения президенту. Оппозиционная пресса не преминула сообщить о разном подходе даже на уровне Совмина: первый заместитель премьера Василий Матюшевский - за либерализацию, заместитель премьера Владимир Семашко - за опору на государственные рычаги.

Но важнее, чем подсчёт «либералов» в госаппарате, была, конечно же, суть их предложений. Они сводились к известной формуле: «Меньше государства - больше рынка». Таким курсом движется, мол, всё цивилизованное человечество.

Когда утверждают это и отстаивают радикальные рыночники, оно понятно: не отступать же им от своей главной экономической идеи. Но обладатели властных кабинетов должны знать мировой опыт. Ведь уже с позапрошлого века «цивилизованное человечество» постоянно усиливает роль государства в экономике. По данным того же МВФ (и ООН), доля государственных расходов в ВВП тридцати самых развитых капиталистических стран мира с 1870 года выросла с 11 до 45 процентов, достигнув показателей от 33 процентов в США до 64,7 процента в Швеции. И уже более 60 лет назад «цивилизованное человечество» создало правительственные плановые органы: во Франции, например, - Генеральный секретариат по планированию, в Канаде - Экономический совет, в Японии - Экономический консультативный совет, в Нидерландах - Центральное плановое бюро. Экономика была подчинена плану: объёмы (квоты) производства, сбыта продукции и оптовые цены в Евросоюзе, допустим, диктуют даже не из национальных столиц, а из административного центра ЕС - Брюсселя.

Всё это - хрестоматийные истины. Как и то, что Япония разрабатывает 12 тысяч общегосударственных плановых балансов - в тридцать раз больше, чем разрабатывал Советский Союз. А образцом планирования в сельхозотрасли стала Швеция. Учёные там рассчитывают объёмы продовольствия, необходимые стране, и развёрстывают их по административным районам - ленам. Расчётные показатели согласовывают с фермерскими организациями и профсоюзами, затем их рассматривает правительство, и после всех уточнений и корректировок утверждает риксдаг (парламент).

Словом, цивилизованные, как их заискивающе называют либерал-«реформаторы», страны уже давно стремятся обуздать рыночную стихию, в 1930-е годы разрушившую и затем не раз подрывавшую их экономику. Они ведут борьбу против свободного рынка по всем направлениям, пытаясь надеть на него государственную смирительную рубашку. Насколько жёсткие формы принимает эта борьба, можно судить по выдержке из монографии крупнейших учёных ФРГ, уже приводившейся в «Правде» («Запланированный крах», 23.11.2013 г.). «Правительства разных (западноевропейских - О.С.) стран, - писали они, раскрывая механизм поразительного, с середины 1950-х годов, подъёма сельского хозяйства на Западе, - использовали один и тот же приём: они исключили аграрный сектор из рыночной экономики… новый способ ведения сельского хозяйства был взлелеян в искусственном мире государственных защитных пошлин, гарантированных цен и дотаций, ему не приходилось утверждать себя в конкуренции на свободном рынке».

Но для постсоветских стран Запад разработал курс, противоположный тому, которым движется сам. Именно эти разработки и положили либералы-рыночники в основу своих предложений о переходе на новую, как они называют, экономическую модель для Беларуси. В чём глубинная суть и цель их предложений, какую угрозу они представляют республике, показал в статье «Экономика и время», опубликованной в газете «Советская Белоруссия», кандидат экономических наук Сергей Ткачёв.

Идеальный рецепт деиндустриализации

«Эти новаторства, - отмечает учёный, - на самом деле стары, как и пресловутые «антисоветские реформы», вначале дезорганизовавшие, а затем разрушившие советскую экономику и народно-хозяйственный комплекс». Под видом новой экономической модели, уточняет он, копируется та, что внедрена по разработкам Запада в России. Она обеспечивает ускоренную деиндустриализацию.

Первым, определяющим рычагом её стало уменьшение роли государства в экономике. Следуя рекомендациям Запада, который сам, как видим, увеличил удельный вес госрасходов в ВВП, Россия сократила его до 25 процентов.

Вторым рычагом деиндустриализации стало сжатие денежной массы. Количество денег в развитых странах Запада близко к валовому внутреннему продукту или превышает его. А в государствах, демонстрирующих, как Китай, например, чудеса экономического роста, - превосходит ВВП в полтора-два раза. В России же, по либеральным рецептам Запада, объём национальной денежной массы сократили до того уровня, что и в Уругвае, Гондурасе, Ботсване: ниже пороговых 40 процентов. Деньги, как известно, - это кровь экономики. И нехватка их ведёт к малокровию хозяйственного организма, которое усиливается тем, что искусственно организованный денежный голод взвинчивает стоимость кредитов: она, как минимум, в десяток раз больше, чем в «цивилизованном мире». Естественно, кредиты становятся недоступными. А те предприятия, которые их берут, значительную часть выручки вынуждены отдавать за проценты. В итоге им не хватает средств не только на освоение нового производства, но и на элементарное выживание.

Свято место пусто не бывает. Взамен недостающих национальных денег в оборот входят доллары и евро. Это ведёт к потере управляемости отечественной кредитно-денежной системой, росту «теневой» экономики, высокой зависимости от внешних факторов, увеличивающих стоимость кредитных ресурсов, кризису неплатежей и ускоренному падению объёмов производства.

Но российские «реформаторы», следуя рекомендациям своих западных наставников, обосновывают сжатие денежной массы необходимостью сдержать рост цен и инфляцию. Жизнь показала, что это - обычный обман. Сжатие денежной массы России в 1990-е годы привело к дикой, в десятки тысяч процентов, инфляции. То же произошло во время активных рыночных реформ 1991-1994 годов в Беларуси. Денежную массу ужали с 71 до 7 процентов ВВП, а цены подскочили в 43 948 раз! Научные исследования, проведённые академиком С. Глазьевым, однозначно свидетельствуют, что по мере сжатия денежной массы во всех постсоветских странах, где создан её искусственный дефицит, инфляция не уменьшалась, а росла. И наоборот, увеличение денежной массы до оптимальной обеспеченности экономики вело к снижению инфляции. В Китае в пору его бурного экономического подъёма второй половины 1990-х годов денежная масса увеличивалась ежегодно на 17 процентов, а цены снижались.

Тенденцию эту подтверждают меры, принятые развитыми странами в последнее время. Центробанки их активно проводят денежно-кредитную политику «количественного смягчения» - масштабные эмиссии денег с одновременным снижением процентной ставки до минимального уровня. В январе 2015 года, напоминает Сергей Ткачёв, Европейский центральный банк объявил о запуске очередной программы «количественного смягчения» - покупок государственных облигаций еврозоны на новые выпущенные деньги. Ежемесячно ЕЦБ «печатает» по 60 миллиардов евро, масса которых к сентябрю нынешнего года увеличится почти на 1,1 триллиона. При столь масштабном наращивании денежного предложения инфляция в Евросоюзе не превышает одного процента. Это - один из самых низких показателей в мире. Потому что деньги, необходимые для оптимальной обеспеченности экономики, идут на совершенствование технологий и инновационное развитие реального сектора.

К сожалению, эта цель для либерал-«реформаторов» постсоветского разлива стала подчинённой, а фетишем номер один и в теории, и в планировании остаётся подрывающая реальный сектор монетаристская борьба с инфляцией. Джон Кейс писал: «Нет более точного и верного способа переворота существующих основ общества, нежели подрыв его денежной системы. Этот процесс пробуждает все разрушительные силы, скрытые в экономических законах». Реформы на постсоветском пространстве убедительно подтвердили вывод выдающегося английского экономиста. «Деньги в либеральной системе, - справедливо замечает в своей статье С. Ткачёв, - стремятся покончить со всем, что им может помешать, включая государство».

Два первых рычага деиндустриализации «реформаторы» дополнили ещё одним - борьбой за постиндустриальное общество, идея которого подброшена опять-таки с Запада. Главной чертой такого общества считается преобладание услуг по отношению к товарам. Это, мол, бесспорный признак прогрессивности экономики: ведь в непроизводственном секторе развитых стран занято около 60-70 процентов работающего населения. А в США, по статистике, в сфере услуг вместе с торговлей, транспортом, связью, коммунальным хозяйством, финансами и страхованием в три раза больше работников, чем в промышленности и строительстве, и производят они 80 процентов ВВП.

Однако американская статистика относит к промышленности и строительству только рабочих, тогда как административно-управленческий персонал и ИТР разносятся по «профессиональным услугам». Часть видов промышленной деятельности (резко возрастающая на современном этапе цифровой, технотронной, наукоёмкой индустриализации, которая требует высокоподготовленных управленцев и итээровцев) статистически «уводится» из промышленности. Но от этого промышленная сущность экономики никуда не исчезла. Наоборот, в США начали принимать меры к её усилению: там официально признано, что, теряя промышленность, страна теряет преемственность технологических процессов и в конце концов лишится лидерства в передовых отраслях. В послании к конгрессу Барак Обама заявил о необходимости вернуть в США промышленные рабочие места и поставил задачу: возродить американскую обрабатывающую промышленность, увеличить производство товаров.

А в январе 2014 года было опубликовано специальное коммюнике ЕС «За европейский промышленный ренессанс», в котором первостепенное внимание уделено необходимости обновить и усовершенствовать индустриальную базу, чтобы реальный сектор экономики стал лидером развития Европы. Таким образом, даже страны, которые выдаются апологетами «постиндустриальной» утопии за образец, взяли курс на расширение промышленной деятельности, дальнейшую индустриализацию. В рамках этого курса они реализуют стратегию решоринга - возврата выведенных за рубеж производств.

А беспрецедентный рывок Китая? Денежно-кредитная политика государства направлена там на обеспечение потребностей экономики и инвестиций в реальный сектор. Система крупнейших государственных банков канализировала денежное предложение на развитие производственного, прежде всего промышленного, потенциала. Если в 2005 году этими банками было выделено 352 миллиарда дешёвых промышленных кредитов, то в 2014-м - 1,4 триллиона. Благодаря этому удалось масштабно профинансировать впечатляющий технологический прорыв при снижающейся инфляции. Характерно, что за последние 25 лет, с 1990 года, удельный вес промышленности в валовой добавленной стоимости КНР не уменьшился, как это произошло в России, а наоборот, возрос. Итог? В 1990 году Российская Федерация (без остальных республик СССР) производила в три раза больше, чем Китай. Сейчас производит в пять раз меньше Китая.

В общем, мировой опыт доказал, что главный стержень экономики, основа её развития - индустриальная база. А в стратегическом плане определяющим фактором стабильности потребительских цен является их стабилизация в секторах реального производства, развитие которого должно быть обеспечено необходимой денежной массой. И «отделение» государства от экономики неизменно приводит к тому, что экономика реагирует «отделением» от роста и эффективности.

Проведённый Сергеем Ткачёвым политэкономический анализ механизма деиндустриализации - механизма, который пытаются навязать Беларуси либеральные рыночники, вызвал у них приступ раздражения. «Оскал промышленного лобби… Буревестник госплановской Вандеи» - в откликах, заполонивших газетные страницы и Интернет, сторонники радикальных реформ прибегли к своей привычной терминологии и доводам, с помощью которых был устроен разгром народнохозяйственного комплекса на постсоветском пространстве.

Не менее болезненно восприняли они названные в статье доказательства того, что к спаду экономики в Беларуси привели не только внешние факторы, но и либерально-рыночные меры, принятые её руководством.

Знакомые грабли

Именно эти меры и стали главной причиной перехода республики в экономическое пике. «Правда» уже писала, как в непростой обстановке, когда Россия и Запад давили на Беларусь «за отказ от реформ», а здешний бизнес требовал свободы, Александр Лукашенко под гарантии правительства, что предприниматели выполнят обещание поддержать устойчивое развитие экономики и повысить жизненный уровень народа, пошёл им навстречу. 31 декабря 2010 года он подписал директиву, потребовавшую исключить вмешательство государственных органов в процесс ценообразования субъектов предпринимательской деятельности. Директива обязывала все органы власти принимать самые серьёзные меры по защите и развитию частной собственности. Наступавший 2011 год был объявлен Годом предприимчивости.

Получив свободу, предприниматели подняли цены своих товаров и услуг не на проценты, а на десятки процентов. Инфляция (при том, что в госсекторе цены изменились лишь незначительно) привела к девальвации белорусского рубля. А со следующего, 2012 года стали стремительно падать темпы развития экономики.

— Отбросив сложившуюся практику регулирования цен и других экономических процессов, мы получили негативные результаты и серьёзные проблемы, для решения которых теперь надо тратить дополнительные усилия и средства, - признал на совещании с высшим руководством республики Александр Лукашенко.

Но преодолеть спад оказалось не просто. По причине, которая, как точно подметил С. Ткачёв, «состоит в наших (властно-правительственных - О.С.) «раскорячках», когда соответствующие ведомства провозглашают приверженность государственной модели развития - однако это лишь по форме, а по сути, на практике, постоянно скатываются к абсурдному либеральному уклону».

Определяющим мероприятием они делают борьбу с инфляцией путём сжатия денежной массы. Такую монетарную политику в самой жёсткой форме проводит Нацбанк. К 2014 году обеспеченность белорусской экономики деньгами снизилась до 30 процентов. Острая их нехватка привела к удорожанию кредитов: стоимость их стала в десятки раз выше, чем в развитых странах. И соответственно ухудшились условия работы реального сектора, его конкурентоспособность.

Всё это - на фоне снижения роли государства в экономике. В том же 2014 году доля госрасходов в ВВП составила 28,8 процента - почти вдвое меньше, чем в Германии, Австрии, во Франции, в Бельгии, Италии, и в 2,2 раза меньше, чем в Швеции. А ведь, согласно экономическому закону Вагнера, рост госрасходов - неотъемлемое условие развития и перехода к инновационной экономике.

Ситуацию усугубил курс на приближение к мифическому «постиндустриальному обществу», лукаво навязанный Западом. Из всех сфер экономики стала расширяться и расти, причём быстрыми темпами, только одна - сфера обмена, услуг: финансы, торговля, аренда, операции с недвижимостью. Доля промышленности в ВВП начала падать. Особенно - в обрабатывающей: с 2011 года она снизилась с 28,1 до 22,95 процента.

Из-за уменьшения производства товаров, естественно, возросли объёмы импорта. По непродовольственной группе с 2012 года он увеличился на четверть. Усилилась не только зависимость от зарубежных поставок. В дискуссии, какие проводить реформы, развернувшейся в белорусских СМИ, доктор экономических наук Валерий Байнёв напомнил об ущербе, который наносит республике рост импорта. Основная часть его оплачивается долларами. По статистике МВФ и ООН, в 2014 году справедливый, определяемый паритетом покупательной способности средний обменный курс составил 4 520 белорусских рублей за доллар. Официальный же – 10 224 рубля. Рубль был искусственно недооценён более чем в 2 раза. Покупая ресурсы за искусственно переоценённые доллары, белорусские предприятия тратят вдвое больше рублей, чем это было бы при справедливом обменном курсе. В итоге слабый рубль съедает половину их оборотных средств, делая производство убыточным и неконкурентоспособным.

Так же искусственно, заметим, недооцениваются (примерно в два-три раза) денежные единицы всех постсоветских стран. В развитых же странах национальные деньги, напротив, искусственно переоценены на 10-50%, что помогает их компаниям делать дополнительную прибыль из воздуха. Точнее, за счёт грабежа стран СНГ.

Основной угрозой для Беларуси стал даже не спад темпов экономического роста. Была подорвана возможность развития, нормального перехода к инновационному типу воспроизводства, которая обеспечивается инвестициями. За последнее время они заметно уменьшились.

И что любопытно, доля иностранных инвестиций в текстильную и швейную промышленность, в производство кожи, кожаных изделий и обуви, например, составила 0,2 и 0,1% от общего объёма этих инвестиций, зато в деятельность, связанную с операциями с недвижимостью, соответственно в 33,2 и 66,3 раза больше. А в сферу торговли - больше, чем в производство машин и оборудования, в 16 раз и в 80 раз больше, чем в сельское хозяйство. Нельзя забывать, что построенные с участием инвесторов крупные торговые центры продают в основном зарубежную продукцию. Значит, иностранные инвестиции направлены на создание импортного потребления и превращения страны в рынок сбыта зарубежных товаров и кредитов.

Но, похоже, тем, кто жаждет либеральных реформ, всего этого недостаточно. Они нацелились на основу основ белорусской экономики.

Подкоп под фундамент

«Разделить, разрезать государственную народную собственность и раздать. На эти реформы, - предупредил, вступая осенью прошлого года в должность президента, А.Г. Лукашенко, - нас толкают, и за эти реформы кое-кто в мире готов много заплатить». Кто - всем известно. Уже два десятка лет, переходя от угроз к посулам, требуют провести приватизацию госсобственности в Беларуси власти США и их европейских союзников, Международный валютный фонд и другие финансовые центры Запада.

В поддержку этих требований эксперты Всемирного банка подготовили для руководства республики доклад о «бесспорных преимуществах свободного бизнеса». Частные компании, утверждают они, по эффективности и прежде всего по производительности труда намного опережают государственные. В подтверждение привели цифры: «Почти 70% объёма производства и две трети занятых работников приходятся на госпредприятия». Из чего следовало, что две трети занятых на госпредприятиях производят не две трети продукции, а больше и, значит, опережают по производительности труда частников.

Свой противоречащий фактам тезис они подкрепили ещё одной «козырной» картой: частные предприятия, в расчёте на работника, получают больше прибыли и платят больше налогов. А что за этим скрывается, умолчали. Дело в том, что государственные предприятия производят, а частники в основном продают. В итоге добавленная стоимость перекачивается из сферы производства в сферу обмена, а там преобразуется в прибыль, с которой поступают налоги. Создаётся иллюзия, будто частник больше, чем работник госпредприятия, и производит, и платит, и страну кормит.

Предлагая приватизировать, «разрезать государственную собственность», здешние либерально-рыночные «реформаторы», по рецептам Запада и примеру России, неуклонно следующей этим рецептам, требуют расширить сферу малого и среднего бизнеса.

Сам же Запад идёт противоположным путём. В США, например, с 1970 по 2005 год количество небольших компаний уменьшилось вчетверо, крупных, находящихся под контролем и управлением корпораций с капиталом более одного миллиарда долларов, увеличилось почти вдвое. А в Германии концентрация капитала привела к тому, что один процент крупных компаний производит сейчас более 30% ВВП.

Наши либерал-«реформаторы» мёртвой хваткой вцепились в идею развития мелкого и среднего бизнеса, опять-таки по рецептам западных доброхотов: он усилит, мол, конкуренцию, станет локомотивом экономического прорыва страны в будущее. Как действует этот «локомотив», видно на горьком опыте России. Никакого инновационного развития, модернизации и технологического прогресса он не обеспечил и никогда не обеспечит из-за своей «мелкоты». Основные его возможности и способности сводятся к изощрённому поиску, где и как полегче «срубить бабки».

Получив свободу, в Беларуси малый и средний бизнес преуспел на ристалище «купи-продай». Особенно во внешнеторговых связях: 30% импорта и экспорта идёт через малые предприятия. Тут уж если о чём и говорить, то лишь о подрыве инновационного развития, модернизации и технологического прогресса в республике. Не потому только, что выводится из страны валюта, которую добывает и без которой задыхается реальный сектор, - в страну ввозятся товары, аналогичные тем, что производит собственная промышленность и при нормальном количестве денежной массы, той же валюты, могла бы повысить их качество и обеспечить потребности народа.

Не случайно на одном из диспутов белорусского телевидения представители малого и среднего бизнеса были названы пиратами экономики. Кто читал документальную книгу Герхарда Файкса «Полиция возвращается», помнит, что в послевоенную пору, когда надо было поднимать разрушенную экономику Германии, в некоторых её землях за спекуляцию и контрабанду ввели высшую меру наказания - расстрел. А чем, как не спекуляцией и контрабандой, только узаконенными, является такое «купи-продай», наносящее ущерб экономике страны?

Сегодня малый и средний бизнес на Западе в основном интегрирован с крупными корпорациями в контрактных, лизинговых, франчайзинговых (концессионных) и других формах. Но наши либералы-рыночники ничего этого не хотят признавать. Как не хотят признавать, что именно под лозунгом создания и развития малого и среднего бизнеса для появления конкуренции был разрушен единый народнохозяйственный комплекс СССР, расчленены на фрагменты и приватизированы вертикально интегрированные цепочки, создававшие добавленную стоимость, и тем самым была полностью подорвана возможность успешного развития экономики.

Они не хотят видеть, что Запад интегрирует и концентрирует производство и капиталы в сверхмощных корпорациях для обеспечения очередной, более высокой стадии индустриального развития, именуемой в научных кругах неоиндустриальной. И с этой целью отказался от устаревшей конкурентно-рыночной доктрины в пользу принципиально иной, интеграционной. Ибо частный интерес каждого отдельного предприятия и конкуренция не могут решить задачи модернизации, выступить её движущей силой. Модернизация не может быть стихийной, она должна проводиться по единому общегосударственному плану. Это важное обстоятельство вынуждает развитые страны ещё больше усиливать роль государства в экономике. Другого пути для её успешного развития нет, особенно в современном обществе.

«Частный бизнес движется сиюминутными спекулятивными целями, игнорирует финансовую производительность и производственную деятельность. Роль архитектора предлагается возложить не на абстрактный частный капитал, а на национальное правительство» - это выдержка из недавнего доклада органа Генеральной Ассамблеи ООН - Конференции ООН по торговле и развитию (ЮНКТАД).

Почему же «рыночники», несмотря на невиданный в мирное время разгром экономики на постсоветском пространстве, нанесённый с помощью их либеральной концепции, предлагают Беларуси курс, явно противоположный тому, которым движется «цивилизованное человечество»?

Ментальный сдвиг

Не знать того, что должен знать, - дикость. Забыть то, что знал, - одичание. Лет десять назад, помнится, «беловежец» Шушкевич, противник «лукашенковского режима», вынужден был похвалить экономическую политику руководства республики, двигавшейся вперёд семимильными шагами. «Белорусские чиновники, - сказал он, - не носят, как российские, костюмы «Бриони», но зато, в отличие от российских, куда лучше знают своё дело». Почему же часть белорусских чиновников, которую «демократы» называют самой продвинутой, впала, вслед за российскими, в экономическое одичание?

Процесс, в общем-то, сложный. Активное «просвещение» провёл Международный валютный фонд. Только за три года - с 2009 до 2012 года - в учебных центрах МВФ прошли подготовку около ста белорусских чиновников. Среди них - представители руководства Нацбанка, минфина и минэкономики. К тому же - разные исследовательские программы под гранты либерально-рыночного покроя. Вдобавок - требования российских «реформаторов». И ещё одно, пожалуй, самое существенное обстоятельство. Уже десяток лет назад, перед очередными выборами президента республики, российская пресса начала выдавать прогнозы о предстоящей замене Лукашенко. «У белорусских чиновников, - сообщали «АиФ», - появились те же приватизационные вожделения, что и у наших. И желание, чтобы бизнесмены делились с ними частью своего «пирога». Им нужна другая власть». Тут было над чем подумать. Чиновнику, действительно, материально выгоднее иметь тесную связь с бизнесом, чем с государством.

Но кто действительно одичал, а кто сымитировал одичание ради выгоды, не столь уж важно. Важнее другое.

«У людей, принимающих решения, нет понимания необходимости реформ… Кто в правительстве имеет опыт работы в рыночных условиях? Надо отличать западный костюм от западных мозгов… У нас есть много грамотных финансистов, экономистов, инженеров, которые способны провести реформы. Но как они будут уживаться с силовиками старой школы или хозяйственниками?» Кто, вы думаете, сказал это? Помощник президента Беларуси по экономике Кирилл Рудый в своём выступлении перед участниками экономического форума. И всё же, с удовлетворением констатировал он, «появился поколенческий сдвиг в правительстве, в экономических министерствах, в Нацбанке. Причём не только поколенческий, но и ментальный».

И это, заметьте, после однозначных, бескомпромиссных заявлений Александра Лукашенко о том, что в республике не будет допущено разрушительных либеральных реформ, которые «вкусили россияне и украинцы». Реформ, которые создадут «кучку богатых, когда пять-семь процентов населения будет обладать богатством страны, а остальные будут крохи со стола собирать».

Более того, Рудый широко проанонсировал в прессе книгу «Финансовая диета: реформы государственных финансов Белоруссии», научным редактором, соавтором и составителем которой он является. Тот же либеральный пакет: уменьшить роль государства в экономике, финансово её обескровить, расширить и укрепить частный сектор. В числе авторов книги, изданной на зарубежные средства, - сотрудники Аризонского университета (США), Национального института экономических и социальных исследований (Великобритания), Немецкой экономической группы. Особо сообщается, что рукопись получила рецензии зарубежных экономистов, учёных-практиков, международных организаций. Вот так же когда-то, проталкивая геростратовскую программу «500 дней», ссылался на четыре международные экспертизы Борис Ельцин.

Увы! Ментальный сдвиг среди части чиновничества и научной среды тревожит многих. «Самое страшное, что наша образовательная система продолжает масштабно готовить малокомпетентных специалистов, убеждённых, что либеральный рынок - лучший способ решения любых проблем. Именно здесь зреет поколенческий ментальный сдвиг, угрожающий Беларуси», - пишет Валерий Байнёв.

Многие задают вопрос: не пора ли глубже осмыслить, почему Запад пытается как можно скорее устранить на постсоветском пространстве остатки нормальной государственной экономики? И всё чаще приходят к выводу: капитализм уже может выжить только за счёт ограбления других стран. Частичные вынужденные меры государственного регулирования, концентрации капиталов не спасают его от тяжелейших кризисных потрясений. В своей сути - это мертвец, оживляемый чужой кровью от грабежа и войн по всему миру. Этот вывод почти полтора десятилетия назад подтвердила Конференция ООН в Рио-де-Жанейро, в которой приняли участие руководители и учёные из более чем 170 стран. Она приняла резолюцию, признающую капиталистическую систему неприемлемой для человечества.

Угрозу, исходящую от рыночного фундаментализма, который составляет основу капиталистической системы, видят и представители её высших кругов. «Я задаю себе вопрос: сумеем ли мы предотвратить превращение мира во всеохватывающий рынок, где господствует закон сильного, где главной целью является получение максимальной прибыли в кратчайшие сроки, где спекуляция за несколько часов сводит на нет плоды труда миллионов людей? - говорил в 1995 году, выступая на Всемирном форуме в Копенгагене, президент Франции Франсуа Миттеран. - Я спрашиваю себя: не отдаём ли мы будущие поколения игре этих слепых сил? Сумеем ли мы создать международный порядок, основанный на прогрессе, и прежде всего на социальном прогрессе?»

Попытка затянуть Белоруссию в либеральный капкан - лишь очередной эпизод глобальной политики Запада. Как справедливо пишет в своей статье Сергей Ткачёв, курок разрушительных реформ уже взведён и меры по устранению причин, которые частично помешали и могут ещё больше помешать развитию народнохозяйственного комплекса республики, надо принимать срочно. Не случайно статья названа «Экономика и время».

Олег СТЕПАНЕНКО
г. Минск

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.