%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/activities/bitrix/randomstringactivity/ |
| Current File : /home/bitrix/www/bitrix/activities/bitrix/randomstringactivity/randomstringactivity.php |
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
use Bitrix\Main;
class CBPRandomStringActivity
extends CBPActivity
{
public function __construct($name)
{
parent::__construct($name);
$this->arProperties = array(
"Title" => "",
"StringLength" => 5,
"Alphabet" => [],
//return
'ResultString' => ''
);
$this->SetPropertiesTypes([
'ResultString' => ['Type' => 'string']
]);
}
protected function ReInitialize()
{
parent::ReInitialize();
$this->ResultString = '';
}
public function Execute()
{
$size = (int)$this->StringLength;
if (!$size)
{
$size = 5;
}
$alphabet = 0;
foreach ((array) $this->Alphabet as $alp)
{
$alphabet |= (int)$alp;
}
if (!$alphabet)
{
$alphabet = Main\Security\Random::ALPHABET_NUM;
}
$this->ResultString = Main\Security\Random::getStringByAlphabet($size, $alphabet);
return CBPActivityExecutionStatus::Closed;
}
public static function ValidateProperties($arTestProperties = array(), CBPWorkflowTemplateUser $user = null)
{
$arErrors = array();
if (empty($arTestProperties["StringLength"]))
{
$arErrors[] = array(
"code" => "StringLength",
"message" => GetMessage("BPRNDSA_EMPTY_SIZE"),
);
}
if (empty($arTestProperties["Alphabet"]))
{
$arErrors[] = array(
"code" => "Alphabet",
"message" => GetMessage("BPRNDSA_EMPTY_ALPHABET"),
);
}
return array_merge($arErrors, parent::ValidateProperties($arTestProperties, $user));
}
public static function GetPropertiesDialog($documentType, $activityName, $arWorkflowTemplate, $arWorkflowParameters, $arWorkflowVariables, $arCurrentValues = null, $formName = "", $popupWindow = null, $siteId = '')
{
$dialog = new \Bitrix\Bizproc\Activity\PropertiesDialog(__FILE__, array(
'documentType' => $documentType,
'activityName' => $activityName,
'workflowTemplate' => $arWorkflowTemplate,
'workflowParameters' => $arWorkflowParameters,
'workflowVariables' => $arWorkflowVariables,
'currentValues' => $arCurrentValues,
'formName' => $formName,
'siteId' => $siteId
));
$dialog->setMap(array(
'StringLength' => array(
'Name' => GetMessage('BPRNDSA_SIZE_NAME'),
'FieldName' => 'string_length',
'Type' => 'int',
'Required' => true,
'Default' => 5,
),
'Alphabet' => array(
'Name' => GetMessage('BPRNDSA_ALPHABET_NAME'),
'FieldName' => 'alphabet',
'Type' => 'select',
'Required' => true,
'Options' => [
Main\Security\Random::ALPHABET_NUM => GetMessage('BPRNDSA_ALPHABET_NUM'),
Main\Security\Random::ALPHABET_ALPHALOWER => GetMessage('BPRNDSA_ALPHABET_ALPHALOWER'),
Main\Security\Random::ALPHABET_ALPHAUPPER => GetMessage('BPRNDSA_ALPHABET_ALPHAUPPER'),
Main\Security\Random::ALPHABET_SPECIAL => GetMessage('BPRNDSA_ALPHABET_SPECIAL'),
],
'Default' => Main\Security\Random::ALPHABET_NUM,
'Settings' => ['display' => 'checkboxes'],
'Multiple' => true
),
));
return $dialog;
}
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$errors)
{
$properties = array(
"StringLength" => (int) $arCurrentValues["string_length"],
"Alphabet" => (array) $arCurrentValues["alphabet"],
);
$errors = self::ValidateProperties($properties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser));
if (count($errors) > 0)
{
return false;
}
$currentActivity = &CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName);
$currentActivity["Properties"] = $properties;
return true;
}
}