1. PHP / Говнокод #26566

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    function get_page() {
        $routes = Utility::get_routes('', 'admin/*', '[0-9a-z\.\/\-]*');
    
        $entities = [];
        foreach ($routes as $key => $value) {
            $entities[$value['entity_type']][$value['entity']][] = $value;
        }
    
        $map = [
            'core' => Utility::get_string('Ядро'),
            'base' => Utility::get_string('Базовое'),
            'custom' => Utility::get_string('Пользовательское')
        ];
    
        $menu = [];
        if ($entities) {
            $entities = [
                'core' => $entities['core'] ?? [],
                'base' => $entities['base'] ?? [],
                'custom' => $entities['custom'] ?? []
            ];
    
            foreach ($entities as $key => $value) {
                $count = 0;
                foreach ($value as $key2 => $value2) {
                    $index = $map[$key];
                    $entity = str_replace('_', ' ', $key2);
                    $entity_upper = ucfirst($key2);
                    $title = $route = '';
    
                    $on = false;
                    $items = [];
                    foreach ($value2 as $key3 => $value3) {
                        if ((!isset($value3['menu']) || $value3['menu']) && (!isset($value3['type']) || $value3['type'] == 'replace') && (!isset($value3['access']) || (new User)->get_access($value3['access']))) {
                            $first = count(explode('/', $value3['route'])) <= 2;
    
                            if (!$title && $first) {
                                $title = $value3['title'] ?? $entity_upper;
                                $route = $value3['route'];
                            }
    
                            $items[$value3['route']] = $value3['title'] ?? $entity_upper;
    
                            $on = true;
                        }
                    }
    
                    if ($on) {
                        $menu[$index][$key2] = [
                            'title' => $title ?: $entity_upper,
                            'title_link' => $route ?: 'admin/'.$entity,
                            'items' => $items,
                            'tr' => $count && $count % 3 === 0 ? '</tr><tr>' : '',
                        ];
    
                        $count++;
                    }
                }
            }
        }
    
        return $menu;
    }

    eqsash-2.0.zip/eqsash-2.0/core/admin/admin.php
    >>> Eqsash
    >>> Премиум технологии

    Запостил: gost, 09 Апреля 2020

    Комментарии (36) RSS

    • function admin() {
          $page = isset($_GET['page']) ? (int)($_GET['page']) : 1;
          $total = Database::select('content')->fetch('count');
          $pages_num = ceil($total / 50);
      
          $pager = '';
          for ($i = 1; $i <= $pages_num; $i++) {
              $active = $page === $i ? 'class="link-active"' : '';
              $pager .= '<a '.$active.'href="/admin/content?page='.$i.'">'.$i.'</a> ';
          }
      
          $page = is_numeric($page) ? ($page - 1) * 50 : 0;
      
          $content = Database::select('content')
              ->sort('created', 'DESC')
              ->limit(50, $page)
              ->fetch('assoc_all');
          // ...

      core/content/content.php

      Нихуя себе, макака написала код без(?) инъекций!
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Очень гибкий и расширяемый код! Вот, например, очень гибкая и расширяемая обёртка над БД:
          class Database {
              // [...]
          
              public $prefix = '';
              //public $settings = [];
          
          	static function get($new = false, $settings = []) {
          		if (!self::$instance || $new) {
          			$settings = $settings ?: Utility::get_settings()['database'];
          
          			self::$instance = new self;
          			//self::$instance->settings = $settings;
          			self::$instance->prefix = $settings['prefix'] ?? '';
          			self::$instance->driver = (new Mysql)->get($settings);
          		}
          
                  return self::$instance;
              }
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • Зачем? Любая пыхомакака мечтает стать не простым шаблонизаторщиком, а "настоящим программистом", потому обязательно хоть раз пытается написать свой шаблонизатор (на шаблонизаторе, лол), свою ORM (ну или хотя бы DBAL), а потом объединить всё это чудо в принципиально новый супериновационный фреймворк. Но потом вдруг оказыватся, что для этого всего необходимо думать, чего пыхомакака не умеет, и ничего из перечисленного не пишется за 15 минут, а пыхомакака хочет всё и сразу. В результате имеем:
              - пародию на шаблонизатор с XSS и эвалом
              - пародию на ORM с SQL инъекциями
              - нахуй никому не нужный очередной абсолютно неюзабельный недофреймворк
              Ответить
        • Инъекции то здесь нет ?
          Ответить
          • Нет. Здесь инфекция. Инъекция будет уже потом, когда ты будешь дергаться.
            Ответить
        • Тестировать пхп код ? Это шутка такая ?
          Ответить
    • показать все, что скрытоvanished
      Ответить
    • Жопой чую, что половина кода находится в классе "Utility"...
      Ответить
      • Втягивая воздух, ты засосал и меня. Мама мио, как тут неприбрано у тебя.
        Кому нужно это вазелиновое масло?, да?
        Ответить
    • static function build_mail($to, $subject, $text, $from, $files = []) {
      		$subject = "=?utf-8?B?".base64_encode($subject)."?=";
      
      		$header = 'From: '.$from."\r\n";
      		$header .= 'Mime-Version: 1.0'."\r\n";
      
      		if (!$files) {
      			$header .= 'Content-type: text/html; charset=UTF-8'."\r\n";
      			$header .= 'Content-Transfer-Encoding: 8bit'."\r\n";
      
      			$message = $text;
      		} else {
      			$boundary = strtoupper(uniqid(time()));
      
      			$header .= 'Content-Type: multipart/mixed;';
      			$header .= 'boundary="----------'.$boundary.'"'."\r\r\n\n";
      
      			$message = '------------'.$boundary."\r\n";
      			$message .= 'Content-Type: text/html; charset=UTF-8'."\r\n";
      			$message .= 'Content-Transfer-Encoding: 8bit'."\r\r\n\n";
      			$message .= $text."\r\r\n\n";
      
      			foreach ($files as $filename) {
      				$f = fopen($filename, 'rb');
      
      				$message .= '------------'.$boundary."\r\n";
      				$message .= 'Content-Type: application/octet-stream;';
      				$message .= 'name="'.basename($filename).'"'."\r\n";
      				$message .= 'Content-Transfer-Encoding: base64'."\r\n";
      				$message .= 'Content-Disposition: attachment;';
      				$message .= 'filename="'.basename($filename).'"'."\r\r\n\n";
      				$message .= chunk_split(base64_encode(fread($f, filesize($filename))))."\r\n";
      			}
      
      		}
      
      		mail($to, $subject, $message, $header);
      	}

      Неужели в "PHP" нет более простого способа отправить письмо, кроме как собирать его руками?
      Ответить

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