Example #1
0
 /**
  * @param string $text
  * @param int $requiredLength
  * @param bool $addDots [optional]
  * @return string
  */
 public function chop($text, $requiredLength, $addDots = true)
 {
     df_param_string($text, 0);
     df_param_integer($requiredLength, 1);
     df_param_between($requiredLength, 1, 0);
     df_param_boolean($addDots, 2);
     return mb_strlen($text) <= $requiredLength ? $text : df_ccc('', $this->trim(mb_substr($text, 0, $requiredLength - ($addDots ? 3 : 0))), $addDots ? '...' : null);
 }
Example #2
0
/**
 * 2015-11-28
 * @param AE|E $e
 * @param string $class [optional]
 * @param string|string[] $css [optional]
 * @param array(string => string) $params [optional]
 * @param string|null $path [optional]
 * @return void
 */
function df_fe_init(AE $e, $class = '', $css = [], $params = [], $path = null)
{
    $class = $class ?: get_class($e);
    /** @var string $moduleName */
    $moduleName = df_module_name($class);
    // 2015-12-29
    // Мы различаем ситуации, когда $path равно null и пустой строке.
    // *) null означает, что имя ресурса должно определяться по имени класса.
    // *) пустая строка означает, что ресурс не имеет префикса, т.е. его имя просто «main».
    if (is_null($path)) {
        /** @var string[] $classA */
        $classA = df_explode_class_lc($class);
        $classLast = array_pop($classA);
        switch ($classLast) {
            // Если имя класса заканчивается на FormElement,
            // то это окончание в пути к ресурсу отбрасываем.
            case 'formElement':
                // $path будет равно null
                break;
                // Если имя класса заканчивается на Element,
                // то в качестве пути к ресурсу используем предыдущую часть класса.
                // Пример: «Dfe\SalesSequence\Config\Matrix\Element» => «matrix»
            // Если имя класса заканчивается на Element,
            // то в качестве пути к ресурсу используем предыдущую часть класса.
            // Пример: «Dfe\SalesSequence\Config\Matrix\Element» => «matrix»
            case 'element':
                $path = array_pop($classA);
                break;
            default:
                $path = $classLast;
        }
    }
    // 2015-12-29
    // Используем df_ccc, чтобы отбросить $path, равный пустой строке.
    // Если имя класса заканчивается на FormElement, то это окончание в пути к ресурсу отбрасываем.
    $path = df_ccc('/', 'formElement', $path, 'main');
    /**
     * 2015-12-29
     * На практике заметил, что основной файл CSS используется почти всегда,
     * и его имя имеет формат: Df_Framework::formElement/color/main.css.
     * Добавляем его обязательно в конец массива,
     * чтобы правила основного файла CSS элемента
     * имели приоритет над правилами библиотечных файлов CSS,
     * которые элемент мог включать в массив $css.
     * Обратите внимание, что мы даже не проверяем,
     * присутствует ли уже $mainCss в массиве $css,
     * потому что @uses df_link_inline делает это сама.
     */
    $css = df_array($css);
    /**
     * 2015-12-30
     * Раньше я думал, что основной файл CSS используется всегда, однако нашлось исключение:
     * @see \Dfe\CurrencyFormat\FormElement обходится в настоящее время без CSS.
     */
    if (df_asset_exists($path, $moduleName, 'less')) {
        $css[] = df_asset_name($path, $moduleName, 'css');
    }
    /**
     * 2016-03-08
     * Отныне getBeforeElementHtml() будет гарантированно вызываться благодаря
     * @used-by \Df\Framework\Plugin\Data\Form\Element\AbstractElement::afterGetElementHtml()
     */
    $e['before_element_html'] .= df_cc_n(!df_asset_exists($path, $moduleName, 'js') ? null : df_x_magento_init($moduleName, $path, ['id' => $e->getHtmlId()] + df_clean($params)), df_link_inline($css));
}
Example #3
0
 /**
  * 2016-07-10
  * @param string $key
  * @param string $value
  * @return string
  */
 private function formatKV($key, $value)
 {
     return df_ccc(': ', in_array($key, $this->keysToSuppress()) ? null : $key, $value);
 }
Example #4
0
/**
 * 2015-12-29
 * @param string $name
 * Обратите внимание, что в качестве $name можно передавать:
 * 1) Короткое имя.
 * 2) Уже собранное посредством @see df_asset_name() полное имя ассета.
 * В этом случае функция возвращает аргумент $name без изменения.
 * @param string|null $moduleName [optional]
 * @param string|null $extension [optional]
 * @return string
 */
function df_asset_name($name, $moduleName = null, $extension = null)
{
    return df_ccc('.', df_ccc('::', $moduleName, $name), $extension);
}
Example #5
0
/**
 * 2016-03-09
 * @param O $order
 *
 * 2016-03-24
 * Если товар является настраиваемым, то @uses \Magento\Sales\Model\Order::getItems()
 * будет содержать как настраиваемый товар, так и его простой вариант.
 * Простые варианты игнорируем (у них имена типа «New Very Prive-36-Almond»,
 * а нам удобнее видеть имена простыми, как у настраиваемого товара: «New Very Prive»).
 *
 * 2016-07-04
 * Добавил этот параметр для модуля AllPay, где разделителем должен быть символ #.
 * @param string $separator [optional]
 * @return string
 */
function df_oi_s(O $order, $separator = ', ')
{
    return df_ccc($separator, df_oi_roots_m($order, function (OI $i) {
        /** @var int $qty */
        $qty = $i->getQtyOrdered();
        return df_cc_s($i->getName(), 1 >= $qty ? null : "({$qty})");
    }));
}
Example #6
0
 /**
  * 2016-07-12
  * @used-by \Df\Payment\R\Response::ic()
  * @param string|null $case [optional]
  * @return array(string => string)
  */
 private function testData($case = null)
 {
     /** @var string $classSuffix */
     $classSuffix = df_class_last($this);
     /**
      * 2016-08-28
      * Если у класса Response нет подклассов,
      * то не используем суффикс Response в именах файлах тестовых данных,
      * а случай confirm делаем случаем по умолчанию.
      * /dfe-allpay/confirm/?class=BankCard => AllPay/BankCard.json
      * /dfe-allpay/confirm/?class=BankCard&case=failure => AllPay/BankCard-failure.json
      * /dfe-securepay/confirm/?dfTest=1 => SecurePay/confirm.json
      */
     if ($classSuffix === df_class_last(__CLASS__)) {
         $classSuffix = null;
         $case = $case ?: 'confirm';
     }
     /** @var string $basename */
     $basename = df_ccc('-', $classSuffix, $case);
     /** @var string $module */
     $module = df_module_name_short($this);
     return df_json_decode(file_get_contents(BP . "/_my/test/{$module}/{$basename}.json"));
 }
Example #7
0
/**
 * 2016-09-08
 * @param string|object $caller
 * @param string|mixed[] $data
 * @param string|null $suffix [optional]
 * @return void
 */
function dfp_report($caller, $data, $suffix = null)
{
    df_report(df_ccc('--', 'mage2.pro/' . dfp_method_code($caller) . '-{date}--{time}', $suffix) . '.log', !is_array($data) ? $data : df_json_encode_pretty($data));
}
Example #8
0
/**
 * 2016-08-10
 * @param string[] ...$args
 * @return string
 */
function df_cc_s(...$args)
{
    return df_ccc(' ', dfa_flatten($args));
}
Example #9
0
/**
 * 2016-08-10
 * Если класс не указан, то вернёт название функции.
 * Поэтому в качестве $a1 можно передавать null.
 * @param string|object|null|array(object|string)|array(string = string) $a1
 * @param string|null $a2 [optional]
 * @return string
 */
function df_cc_method($a1, $a2 = null)
{
    return df_ccc('::', $a2 ? [df_cts($a1), $a2] : (!isset($a1['function']) ? $a1 : [dfa($a1, 'class'), $a1['function']]));
}
Example #10
0
 /**
  * 2016-08-20
  * @used-by \Df\Qa\Message::log()
  * @return string
  */
 protected function reportName()
 {
     return 'mage2.pro/' . df_ccc('-', $this->reportNamePrefix(), '{date}--{time}.log');
 }