Метка: Битрикс

Быстрое восстановление пароля root на сервер

Как быстро восстановить пароль на root пользователя для mysql.
Для этого выполните пошаговую инструкцию приведенную ниже.

1) Сначала остановите mysql.
 service mysqld stop
 2) И запустите mysql командой:
 /usr/bin/mysqld_safe --skip-grant-tables --user=root &
 3) После чего запустите клиент mysql
 mysql -u root
 4) Сделайте запрос sql
 UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
 где newpwd - новый пароль.
 5) Примените изменения
 FLUSH PRIVILEGES;
 6) Выходим из клиента mysql с помощью команды exit
 7) Прописываем команду
 killall mysqld
 Перезагрузите mysql сервер командой:
 service mysqld restart

Количество выбранных элементов в битриксе c SelectedRowsCount

Как оказывается не многие программисты, с чьим кодом мне приходится работать, не знают что не нужно обходить все полученные элементы в цикле, что бы посчитать их. Для этого битрикс уже сделал необходимый инструмент:

$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
$res->SelectedRowsCount()

Товарищи!!! Не ленитесь читать документацию. В ней даже поиск есть. Удачи Вам.

Если файл в битриксе не вызывается на прямую

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

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

Файл для запуска через крон в битриксе

Вот шаблон файла для запуска через крон в битриксе:

#!/usr/bin/php
<?php
$_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/www";
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(0);
define("LANG", "ru");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// мой код...

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

Быстро отправить электронное письмо через почтовые шаблоны в битриксе

Как же быстро отправить электронное письмо в битриксе?

Заходим в админку -> Настройки -> Типы почтовых событий. И там создаем новый, назовем его например «Отправка электронной газеты» и тип задаем такой SUBSCRIBE_GAZETA.

Далее заходим в админку -> Настройки -> Почтовые шаблоны. И в этом разделе создаем новый шаблон с указание «Тип почтового события» нашего нового события «Отправка электронной газеты[SUBSCRIBE_GAZETA]», а в сообщение ставим например такое #TEXT#. И в итоге у нас код будут выглядеть вот так:

$arFields = Array(
    "TEXT"    =>    "Это сообщение которое откправим в письме",
);
CEvent::SendImmediate('SUBSCRIBE_GAZETA', SITE_ID, $arFields,'N');

В $arFields можно указывать любое количество ключей массива и все они будут доступны в почтовом шаблоне, во всех его полях.

Обрезать текст в битриксе

Для обрезания текста в битриксе есть функция TruncateText, которая отрезает от строки все символы свыше указанной длины и длбавляет в окнчании три точки.
Привер:

$str = "Строка";
echo TruncateText($str, 3);

Так же довольно таки часто встают задачи, обрезать текст с учетом html тегов. Для этого есть функция html_cut класса CTextParser, которая отрезает HTML/text до указанной длины с корректным закрытием тегов.
Привер:

$obParser = new CTextParser;
if($arParams["PREVIEW_TRUNCATE_LEN"] > 0)
$arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);

Есть задачи немного и посложнее.=) Необходимо обрезать текст по словам, а не по символам. К нам придет напомощь такая вот функция:

// $str - исходная строка
// $word_limit - количество символов, которое нам нужно
function anouncetext($str, $word_limit) {
	preg_match("/.{".$word_limit."}[^.!;?]*[.!;?]/si", $str.". ", $matches);
	$str=$matches[0];
	echo $str;
}

Наложение водяного знака средствами битрикс

В Битрике есть возможность реализовать наложение водяного знака на изображения. Можно наносить как изображения, так и текст. Чтобы нанести водяной знак на фотографию достаточно передать параметры фильтра:

$arFilter_watermark = Array(Array('name' => 'watermark',   'position' => 'br', 'size'=>'real',   'type'=>'image',   'alpha_level'=>'10',   'file'=>$_SERVER['DOCUMENT_ROOT'].'/img/watermark.png',    ),);

Возможные значения параметров:
position — указание расположения водяного знака на изображении возможно в двух нотациях:
tl | tc | tr | ml | mc | mr | bl | bc | br
или
topleft | topcenter | topright | centerleft | center | centerright | bottomleft | bottomcenter | bottomright

size — big | medium | small | real, для произвольного изменения масштаба возможно указание коэффициента через параметр ‘coefficient’, параметр ‘real’ применим только для изображений (‘type’=>’image’)
type — text | image
alpha_level — прозрачность от 0 до 100, где 0 = прозрачно, 100 = непрозрачно
text — текст водяного знака
font — путь к файлу с TTF-шрифтом
color — цвет в HEX-формате

Пример реализации:

$arFilters = Array(array("name" => "watermark", "position" => "right", "size"=>"real", 'type'=>'image', "file"=>$_SERVER['DOCUMENT_ROOT']."/images/watermark.png"));

Вместо /images/watermark.png подставляете свой путь к изображению водяного знака.

Далее при ресайзе изображения добавляете вывод фильтра $arFilters

$PICTURE = CFile::ResizeImageGet($arResult["PREVIEW_PICTURE"], Array('width'=>455, 'height'=>315), BX_RESIZE_IMAGE_EXACT, true, $arFilters);

Далее следует разместить код вывода нашего изображения с водяным знаком:

<img src="<?=$PICTURE["src"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />

Битрикс капча — bitrix CAPTCHA

Как подключить капчу в битриксе к своим скриптам? Да очень просто. Все расписано в документации. И так подключаем капчу битрикс в свой скрипт.

Сначала генерируем капчу:

include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionString("main", "captcha_password", "");
if(strlen($captchaPass) <= 0){
	$captchaPass = randString(10);
	COption::SetOptionString("main", "captcha_password", $captchaPass);
}
$cpt->SetCodeCrypt($captchaPass);

Легким движением выводим капчу:

<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">
<input id="captcha_word" name="captcha_word" type="text">

Проверяем капчу на вшивость:

if($APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"])){
    echo 'капча валидная';
}