/** * 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); } Добавить комментарий | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

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

ПОЧЁТНЫЙ ГРАЖДАНИН КРАСНОПОЛЬЯ

В эти дни отмечает свое 80-летие Председатель Совета Коммунистической партии Беларуси Алексей Степанович Камай. Незадолго до юбилея власти Краснопольского района Могилёвской области присвоили ему звание «Почётный гражданин Краснополья». Это малая толика того, что соответствует огромным заслугам Алексея Степановича перед своим Отечеством и Коммунистиеской партией. С таким же основанием можно было бы присвоить ему звание почётного гражданина и некоторых других городов, где он оставил яркий след своей плодотворной деятельностью. Кстати, юбиляр является также Почётным гражданином Быхова и Быховского района, но Краснополье в его судьбе занимает особенное место.

В те памятные годы в Советском Союзе популярным было начинание Валентины Гагановой, которая перешла с возглавляемого ею образцового коллектива коммунистического труда на прядильной фабрике Вышневолоцкого хлопчатобумажного комбината в отстающую бригаду и вывела её в короткие сроки в передовые. Что-то похожее произошло и в биографии Алексея Степановича. С 1965 года он в возрасте 29 лет возглавил одно из крупнейших в республике Бобруйское районное управление сельского хозяйства и преуспел в организации его деятельности. Достижения работников сельского хозяйства Бобруйщины были на слуху в Белоруссии своими успехами в производстве картофеля, зерновых, овощных и других сельскохозяйственных культур. Короче говоря, человек был на своём месте и достойно исполнял своё предназначение.

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

Знакомство с районом не обрадовало. Во многих колхозах и совхозах встретил удручающую картину. В одном из своих интервью он так охарактеризовал ситуацию на Краснопольщине тех дней: «Ни дорог, ни специалистов, ни кормов для животных. Урожайность зерновых не дотягивала даже до 6 центнеров с гектара, картофель — ниже 50.
Самое страшное для меня было то, что на дворе зима, малочисленный скот голоден настолько, что, когда корова телилась, ее поддерживали на веревках, чтобы бедняга не упала. Понятно, местные на меня посмотрели как на пацана: что можно сделать в той ситуации? Учитывая опыт работы в Бобруйском районе, легкие земли Краснопольщины, посоветовался с учеными-аграриями. До сих пор кланяюсь Корнею Ивановичу Довбану, который очень помог мне. В конце концов решил, что ставку надо делать на картофель. И получилось! Через два года Краснополье с 56 центнеров с гектара вышло почти на 200 центнеров. На второй год приехал Петр Миронович Машеров, где-то в июле. Поле — чудеснейший ковер картофлянища. Посмотрел и сказал: «Если будут эти показатели — герои будут!» Звеньевой Юлий Жлоба, который непосредственно занимался этим картофелем, через год получил уже 278 центнеров с гектара и… стал Героем Социалистического Труда». Добавим, что в период работы Алекcея Степановича в районе за достигнутые успехи двое были удостоены звания Героя Социалистического Труда, а 57 тружеников награждены орденами и медалями.

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

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

Высокие деловые и политические качества у него формировались ещё с раннего детства. Родился Алексей 1 апреля в 1936 года в поселке Барсуки Кировского района Могилевской области, в котором располагалось крупное овцеводческое хозяйство - колхоз имени Куйбышева. Здесь мальчик приучался к труду, помогал родителям по дому. В свободное от школы время пас колхозных овец. Рано у него проявилась тяга к технике. В колхозе была молотилка, двигатель которой нередко выходил из строя. Вместе с дружками он постоянно пропадал возле этого агрегата, стремясь хоть чем-то помочь колхозному механику. Скорей всего, тогда и возникло желание в совершенстве овладеть техническими знаниями, чтобы быть с машинами на ты.

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

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

Пока же он творчески применял на практике свой талант комсомольского вожака. В 1962-м году становится комсоргом Могилевского обкома комсомола при Бобруйском производственном колхозно-совхозном управлении. Вскоре его выдвигают на должность главного инженера Бобруйского производственного колхозно-совхозного управления, а в 29 лет он становится начальником Бобруйского районного производственного управления сельского хозяйства. Отсюда и перешел на партийную работу в Краснополье, о чем шла речь выше.

Знакомство с дальнейшим продвижением Алексея Степановича по карьерной лестнице свидетельствует о незаурядных качествах крупного партийного и государственного деятеля. Достаточно перечислить его послужной список после Краснополья.
В 1974 году с отличием оканчивает Высшую партийную школу при ЦК КПСС, уже вовремя учёбы возглавил Бобруйский райком КПБ, затем около пяти лет работает секретарём Могилёвского обкома партии по сельскому хозяйству. Его опыт партийной работы и доскональное знание вопросов сельскохозяйственного производства оказались востребованы в Минске, где он почти три года организует деятельность сельско-хозяйственного отдела Центрального Комитета Компартии Белоруссии. Пришлось ему вкусить хлеба и на ниве советской работы, проработав три года председателем Гомельского областного Совета депутатов трудящихся.

Самым сложным и ответственным периодом в жизни Алексея Степановича стала работа Первым секретарем Гомельского обкома партии с 1985 по 1989 год. Это было время, когда на его плечи свалились проблемы, связанные с аварией на Чернобыльской атомной электростанции. Обстановка напоминала фронтовую. С одной стороны расплывчатая позиция Москвы, неясность со степенью угрозы для граждан. С другой – необходимость самостоятельных решений по защите населения и отселению людей с зараженной территории. Пришлось действовать без оглядки на верха. Наши оппоненты в конце 80-х и позднее пытались безосновательно обвинить обком и А.С. Камая в непринятии должных мер, особенно за проведение, не считаясь с радиацией, первомайской демонстрации. Но ведь сам он, его жена и дочь были среди демонстрантов. О каком умысле можно говорить? А его роль в это время чётко обозначена в личном деле: «Значителен его вклад в решение вопросов связанных с ликвидацией последствий аварии на Чернобыльской АЭС. Он является инициатором и одним из создателей первой Республиканской государственной программы по ликвидации последствий аварии на ЧАЭС и Закона о социальной защите населения, пострадавшего вследствие аварии на Чернобыльской АЭС».

Где бы ни трудился юбиляр, проявлял высокие деловые, политические и человеческие качества, почему и пользовался уважением всех, с кем работал и общался. В его характеристике значится: «На всех участках, которые ему поручались, зарекомендовал себя как компетентный, принципиальный руководитель, хороший организатор. Он настойчив в достижении поставленных целей, способен без внешнего побуждения выдвигать и претворять на практике важные решения в экономическом и социальном развитии. Умеет работать продуктивно, самокритичен, на первое место ставит интересы дела. Демократичен, доступен людям». Многолетние трудовые достижения Алексея Степановича получили высокую оценку. Его выбирают депутатом Верховного Совета БССР, членом бюро ЦК КПБ. В 1989 году становится секретарем, а в 1990 году вторым секретарем Центрального Комитета Коммунистической партии Белоруссии. В эти же годы он избирается вначале кандидатом в члены ( 1986- 1990), а затем и членом Центрального Комитета КПСС (1990-1991) и Депутатом Верховного Совета СССР 11-го созыва.

Работа на самом верху республиканской партийной иерархии совпала с крайне сложными, трагическими событиями в судьбе Коммунистической партии и Советского государства. Беспринципная, предательская политика М.С. Горбачева и его единомышленников вела к ослаблению партии и развалу государства, чем в полной мере воспользовались клика Б.Н. Ельцина и ее забугорные радетели. В Белоруссии тоже усилилось недовольство граждан негативными результатами горбачёвской перестройки, отразившейся на ухудшении жизни людей и моральной атмосфере в обществе. В этих условиях последовательные сторонники социализма и Советской власти, среди которых был и А.С. Камай, пытались, как могли, нормализовать ситуацию, чему сопротивлялись поднявшие голову антисоветские силы. Правые в Верховном Совете организовывали травлю и запугивание коммунистов. Многие дрогнули, смалодушничали, но Алексей Степанович мужественно противостоял нажиму антикоммунистов, в числе пяти членов партии голосовал против приостановления деятельности КПБ, позже не поддержал решение о денонсации Договора об образовании СССР.

После контрреволюции августа 1991 года А.С. Камай, не сломился, остался верен своим коммунистическим убеждениям, принимает активное участие в работе образованной Партии коммунистов Белорусской, ведёт активную агитационно-пропагандистскую работу в массах. Припоминаю, как Алексей Степанович вскоре после референдума 1995 года выступал перед коммунистами Центрального района столицы. Его обстоятельный рассказ о положении в стране, о работе коммунистов--депутатов Верховного Совета и четко выраженная позиция поддержки отвечающей интересам трудового народа политики первого Президента Республики Беларусь А.Г. Лукашенко помогла присутствующим разобраться и определиться в складывающейся обстановке. Позднее он трудится в структурах Минсельхозпрода Республики Беларусь и избирается депутатом Палаты представителей Национального собрания Республики Беларусь первого созыва.

После вступления Первого секретаря ЦК ПКБ С.И. Калякина и его единомышленников в антипрезидентский сговор с правыми партиями А.С. Камай в 1996 году явился одним из инициаторов восстановления деятельности Коммунистической партии Беларуси. Первый (XXXIII) съезд КПБ избрал Алексея Степановича членом Совета партии, а в начале двухтысячных он стал его председателем. В течение многих лет он отдает свои силы, знания, богатый опыт и авторитет делу Коммунистической партии, усилению ее влияния в массах, много сделал для повышения ее роли в белорусском обществе. Вносит свой весомый вклад в развитие сотрудничества партийных комитетов с государственными управленческими структурами.

Он решительно выступает против фальсификации истории, шельмования советского прошлого, даёт отпор перевёртышам и клеветникам. Коммунисты хорошо помнят его острое и аргументированное открытое письмо академику А.Н. Рубинову, допустившему нападки на Великую Октябрьскую социалистическую революцию, партию большевиков и коммунистическую идеологию. Как истинный патриот своего Отечества, он последовательно поддерживает политику Президента страны по социально-экономическому развитию Беларуси. На недавно состоявшемся XII (XLIV) съезде КПБ А.С. Камай осудил попытки некоторых высокопоставленных чиновников свернуть страну на рыночные реформы в ущерб принципам социальной справедливости. На съезде ему вновь оказано доверие коммунистов. 19 марта он в очередной раз избран Председателем Совета партии.

Партийную работу Алексей Степанович совмещает с активной общественной деятельностью в других сферах. Он входит в состав совета старейшин при Минском областном исполнительном комитете, посещает сельскохозяйственные предприятия, щедро делится богатым опытом организации работы на земле. Его хорошо знают не только в столичной области. Многие работники органов управления республики, областей и районов пользуются его советами и подсказками в практической деятельности.
Заслуги Алексея Степановича перед Коммунистической партией и Советским государством отмечены орденом Ленина, тремя орденами Трудового Красного Знамени, орденом «Знак почёта», рядом других государственных наград. За активную деятельность в коммунистическом движении Президиум ЦК КПРФ наградил его своим орденом. Власти Республики Беларусь тоже внесли свою лепту в поощрение ветерана. В1996 году ему назначена пенсия «За особые заслуги перед Республикой Беларусь».
В свои 80 он полон сил, энергии и намерений сделать все, что в его возможностях, для повышения роли и авторитета Коммунистической партии в обществе и процветания своей родной Беларуси. Вместе с искренними поздравлениями пожелаем же юбиляру крепкого здоровья, бодрости, оптимизма и активного долголетия на благо Отечества и нашей партии.

Андрей Коваль

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