Advertisement
Arris

Untitled

Aug 1st, 2023
1,332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.69 KB | None | 0 0
  1.         $rules = [
  2.             'title' =>  [
  3.                 'default'   =>  '',
  4.                 'processor' =>  static function($v) {
  5.                     $v = str_replace(' ', ' ', $v);
  6.                     $v = trim($v);
  7.                     $v = Common::removeEmoji($v);
  8.                     $v = mb_substr($v, 0, 240);
  9.                     return $v;
  10.                 }
  11.             ],
  12.             'title_ceo' =>  [
  13.                 'default'   =>  '',
  14.                 'processor' =>  static function($v) {
  15.                     $v = str_replace(' ', ' ', $v);
  16.                     $v = trim($v);
  17.                     $v = Common::removeEmoji($v);
  18.                     $v = mb_substr($v, 0, 240);
  19.                     return $v;
  20.                 }
  21.             ],
  22.             'short' =>  [
  23.                 'default'   =>  '',
  24.                 'processor' =>  static function($v) {
  25.                     $v = str_replace(' ', ' ', $v);
  26.                     $v = trim($v);
  27.                     $v = Common::removeEmoji($v);
  28.                     return $v;
  29.                 }
  30.             ],
  31.             'html'  =>  [
  32.                 'comment'   =>  'Обработка HTML-вставок. Это правило должно стоять перед text_bb если мы хотим модифицировать исходный датасет',
  33.                 'default'   =>  Core::serialize([]),
  34.                 'processor' =>  static function($entity, $source_dataset) {
  35.                     // $entity          == $_REQUEST['html']
  36.                     // $source_dataset  == $_REQUEST;
  37.                     $html_keys = array_keys($entity);
  38.                     preg_match_all("/\[html\sid=([0-9]+)\]/i", $source_dataset['text_bb'], $m);
  39.  
  40.                     foreach ($html_keys as $v) {
  41.                         if (!in_array($v, $m[1])) {
  42.                             unset($entity[$v]);
  43.                         } else {
  44.                             $entity[$v] = Common::removeEmoji($entity[$v]);
  45.                         }
  46.                     }
  47.  
  48.                     return Core::serialize($entity);
  49.                 }
  50.             ],
  51.             'text_bb' => [
  52.                 'default'   =>    '',
  53.                 'processor' =>  static function($v) {
  54.                     $v = str_replace("\r\n", "\n", $v);
  55.  
  56.                     if (_env('FEATURE.SAVE_ARTICLE.REPLACE_QUOTES', 1) == 1) {
  57.                         $replacement = array_fill(0, count(Articles::quotes_replacement), """);
  58.                     } else {
  59.                         $replacement = array_values(Articles::quotes_replacement);
  60.                     }
  61.                     $v = str_replace(array_keys(Articles::quotes_replacement), $replacement, $v);
  62.                     $v = str_replace('…', "…", $v);
  63.                     $v = str_replace(['—', '–'], ['—', '–'], $v);
  64.  
  65.                     if (_env('FEATURE.SAVE_ARTICLE.REMOVE_EMOJI', 1) == 1) {
  66.                         $v = Common::removeEmoji($v);
  67.                     }
  68.                     return $v;
  69.                 }
  70.             ],
  71.             'external'  =>  [
  72.                 'default'   =>  '',
  73.                 'processor' =>  static function($s) {
  74.                     $s = trim($s);
  75.                     return (!filter_var($s, FILTER_VALIDATE_URL)) ? "https://{$s}" : $s;
  76.                 }
  77.             ],
  78.             // предположительно это будет работать...
  79.             'cdate' =>  [
  80.                 'default'   =>  '',
  81.                 'processor' =>  static function($v) {
  82.                     // в шаблоне поля день/месяц/год час/минуты задаются как name="cdate[0][2]" , name="cdate[0][1]", name="cdate[0][0]", name="cdate[1][0]", name="cdate[1][1]"
  83.                     // это кошмарное легаси! Конечно, нужно перерабывать в cdate_day, cdate_month итд
  84.                     $d = implode('-', array_reverse($v[0]));
  85.                     $t = implode(':', $v[1]);
  86.                     return implode(' ', [ $d, $t ]);
  87.                 }
  88.             ],
  89.             's_draft'   =>  [
  90.                 'default'   =>  0,
  91.                 'type'      =>  'int'
  92.             ],
  93.             's_hidden'  =>  [
  94.                 'default'   =>  0,
  95.                 'type'      =>  'int'
  96.             ],
  97.             's_rss_yandex'  =>  [
  98.                 'default'   =>  0,
  99.                 'type'      =>  'int'
  100.             ],
  101.             's_rss_social'  =>  [
  102.                 'default'   =>  0,
  103.                 'type'      =>  'int'
  104.             ],
  105.             's_rss_yandex_zen'  =>  [
  106.                 'default'   =>  0,
  107.                 'type'      =>  'int'
  108.             ],
  109.             's_rss_telegram'  =>  [
  110.                 'default'   =>  0,
  111.                 'type'      =>  'int'
  112.             ],
  113.             's_is_article'  =>  [
  114.                 'default'   =>  0,
  115.                 'type'      =>  'int'
  116.             ],
  117.             's_nopub'  =>  [
  118.                 'default'   =>  0,
  119.                 'type'      =>  'int'
  120.             ],
  121.             //
  122.             's_photorep'  =>  [
  123.                 'comment'   =>  'галочка фото (ставит иконку фото к материалу) @todo: может ли быть материал с вставкой репортажа, но без этой галочки?',
  124.                 'default'   =>  0,
  125.                 'type'      =>  'int'
  126.             ],
  127.             's_videorep'  =>  [
  128.                 'comment'   =>  'галочка видео (ставит иконку видео к материалу) @todo: может ли быть материал с видео-вставкой, но без этой галочки?',
  129.                 'default'   =>  0,
  130.                 'type'      =>  'int'
  131.             ],
  132.  
  133.             's_advert'  =>  [
  134.                 'default'   =>  0,
  135.                 'type'      =>  'int'
  136.             ],
  137.             'advert_hint'  =>  [
  138.                 'default'   =>  '',
  139.                 'processor' => static function($v) {
  140.                     $v = str_replace(' ', ' ', $v);
  141.                     $v = trim($v);
  142.                     $v = Common::removeEmoji($v);
  143.                     return $v;
  144.                 },
  145.                 'type'      =>  'string'
  146.             ],
  147.             's_advert_techosphere'  =>  [
  148.                 'comment'   =>  'рекламные свойства: техносфера',
  149.                 'default'   =>  0,
  150.             ],
  151.  
  152.             's_bold'  =>  [
  153.                 'default'   =>  0,
  154.                 'type'      =>  'int'
  155.             ],
  156.  
  157.             'author'  =>  [
  158.                 'default'   =>  '',
  159.                 'type'      =>  'string',
  160.                 'processor' => static function($v) {
  161.                     $v = str_replace(' ', ' ', $v);
  162.                     $v = trim($v);
  163.                     $v = Common::removeEmoji($v);
  164.                     return $v;
  165.                 },
  166.             ],
  167.  
  168.             'author_id'  =>  [
  169.                 'default'   =>  0,
  170.                 'type'      =>  'int'
  171.             ],
  172.             's_is_oped'  =>  [
  173.                 'comment'   =>  'op-ed - авторская колонка, буквально',
  174.                 'default'   =>  0,
  175.                 'type'      =>  'int'
  176.             ],
  177.             's_inread'  =>  [
  178.                 'comment'   =>  'вставлять ли инрид-баннеры?',
  179.                 'default'   =>  0,
  180.                 'type'      =>  'int'
  181.             ],
  182.             's_cdn'  =>  [
  183.                 'default'   =>  0,
  184.                 'type'      =>  'int'
  185.             ],
  186.             'translit_title'    =>  []
  187.         ];
  188.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement