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

    +33.6

    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
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    <?
     function ShowImage($strImage, $iMaxW=0, $iMaxH=0, $sParams=null, $strImageUrl="", $bPopup=false, $sPopupTitle=false, $iSizeWHTTP=0, $iSizeHHTTP=0)
     {
      global $DOCUMENT_ROOT, $DB;
    
      if(!($arImgParams = CFile::_GetImgParams($strImage, $iSizeWHTTP, $iSizeHHTTP)))
       return "";
    
      if($sParams === null || $sParams === false)
       $sParams = ' border="0" ';
    
      $iMaxW = intval($iMaxW);
      $iMaxH = intval($iMaxH);
    
      $strImage = htmlspecialchars($arImgParams["SRC"]);
      $intWidth = $arImgParams["WIDTH"];
      $intHeight = $arImgParams["HEIGHT"];
      $strAlt = $arImgParams["ALT"];
    
      if($sPopupTitle===false)
       $sPopupTitle=GetMessage("FILE_ENLARGE");
    
      $file_type = GetFileType($strImage);
      switch($file_type):
       case "FLASH":
        $iWidth = $intWidth;
        $iHeight = $intHeight;
        if($iMaxW>0 && $iMaxH>0 && ($intWidth > $iMaxW || $intHeight > $iMaxH))
        {
         $coeff = ($intWidth/$iMaxW > $intHeight/$iMaxH? $intWidth/$iMaxW : $intHeight/$iMaxH);
         $iWidth = intval(roundEx($intHeight/$coeff));
         $iHeight = intval(roundEx($intWidth/$coeff));
        }
        $strReturn = '
         <object
          classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000"
          codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
          id="banner"
          WIDTH="'.$iWidth.'"
          HEIGHT="'.$iHeight.'"
          ALIGN="">
           <PARAM NAME="movie" VALUE="'.$strImage.'" />
           <PARAM NAME="quality" VALUE="high" />
           <PARAM NAME="bgcolor" VALUE="#FFFFFF" />
           <embed
            src="'.$strImage.'"
            quality="high"
            bgcolor="#FFFFFF"
            WIDTH="'.$iWidth.'"
            HEIGHT="'.$iHeight.'"
            NAME="banner"
            ALIGN=""
            TYPE="application/x-shockwave-flash"
            PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
           </embed>
         </object>
         ';
        return $bPopup? $strReturn : print_url($strImageUrl, $strReturn);
    
       default:
        $strReturn = "<img src=\"".$strImage."\" ".$sParams." width=\"".$intWidth."\" height=\"".$intHeight."\" alt=\"".htmlspecialchars($strAlt)."\" />";
        if($iMaxW > 0 && $iMaxH > 0) //need to check scale, maybe show actual size in the popup window
        {
         //check for max dimensions exceeding
         if($intWidth > $iMaxW || $intHeight > $iMaxH)
         {
          $coeff = ($intWidth/$iMaxW > $intHeight/$iMaxH? $intWidth/$iMaxW : $intHeight/$iMaxH);
          $strReturn = "<img src=\"".$strImage."\" ".$sParams." width=\"".intval(roundEx($intWidth/$coeff))."\" height=\"".intval(roundEx($intHeight/$coeff))."\" alt=\"".htmlspecialchars($strAlt)."\" />";
    
          if($bPopup) //show in JS window
          {
           if(strlen($strImageUrl)>0)
           {
            $strReturn =
             '<a href="'.$strImageUrl.'" title="'.$sPopupTitle.'" target="_blank">'.
             '<img src="'.$strImage.'" '.$sParams.' width="'.intval(roundEx($intWidth/$coeff)).'" height="'.intval(roundEx($intHeight/$coeff)).' alt="'.htmlspecialchars($sPopupTitle).'" />'.
             '</a>';
           }
           else
           {
            CFile::OutputJSImgShw();
    
            $strReturn =
             "<a title=\"".$sPopupTitle."\" onClick=\"ImgShw('".AddSlashes($strImage)."','".$intWidth."','".$intHeight."', '".AddSlashes(htmlspecialcharsex(htmlspecialcharsex($strAlt)))."'); return false;\" href=\"".$strImage."\" target=\"_blank\">".
             "<img src=\"".$strImage."\" ".$sParams." width=\"".intval(roundEx($intWidth/$coeff))."\" height=\"".intval(roundEx($intHeight/$coeff))."\" /></a>";
           }
          }
         }
        }
        return $bPopup? $strReturn : print_url($strImageUrl, $strReturn);
    
      endswitch;
    
      return $bPopup? $strReturn : print_url($strImageUrl, $strReturn);
     }
    ?>

    Уникальный фрагмент кода из CMS Bitrix 7.x.
    Судя по всему его писал индус который не проверял его работы.
    Некотором будет непонятен тонкий юмор автора этого кода, но когда пытаешься решить с его помощью конкретную задачу становится совсем не смешно а наоборот обидно, за себя и толпы тысяч людей полагающих что Bitrix решение всех его проблем логика работы в котором напрочь отсутствует так же как и здравый смысл.
    Сделаю небольшой намёк. Весь фокус во взаимной зависимости параметров
    $iMaxW=0, $iMaxH=0, $strImageUrl="", $bPopup=false

    Запостил: guest, 22 Января 2009

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

    • gosha:
      Как вообще битрикс может как-то говорить о шаблонности своего говно-продукта, если чуть ли не в каждом куске кода идет нубское перемешивание пхп и хтмл. Жалко мне наивных юзверей этого уродского продукта. Еще более жалко авторов если они действительно думают то о чем красочно излагают.
      Ответить
      • Тебе еще немало такого говна предстоит увидеть, юный падаван.
        Ответить
    • Как я понял, этот метод возник из необходимости в одну строчку выводить картинку в шаблоне. А так как инфа о картинке запрятана глубоко в недрах БД и извлечь ее шустро и красиво не представляется возможным, то юные джедаи делают шашки наголо и налетают с гиканьем на тупых индусов из битрикса, не подозревая, что голой жопой пугают окружающих ежей.
      Ответить

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