1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #6376

    +158

    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
    case 'mass':
    $href = '<br><a href="' . $_SERVER['PHP_SELF'] . '?act=mass">Назад</a>';
    if ($_GET['step']) {
    if (($_POST['step']) && ($_POST['link'])) die ('Пожалуйста, введите только что-то одно - кол-во или ссылку'.$href);
    if ((!$_POST['step']) && (!$_POST['link']) && ($_GET['step'] == 1)) {
    if ($_POST['code']) regnloc();
    die ('Пожалуйста, введите что-нибудь - кол-во или ссылку'.$href);}
    if ($_POST['step']) $mode = 'steps';
    if ($_POST['link']) $mode = 'link';
    if ($_GET['mode']) $mode = $_GET['mode'];
    if (!$mode) die ('Привет юным хакерам!'.$href);
    check_value($_GET['step']);
    $step = $_GET['step'];
    if ($mode == 'steps') {
    if ($_POST['step']) {
    check_value($_POST['step']);
    $end = $_POST['step']; } 
    else {
    check_value($_GET['end']);
    $end = $_GET['end'];}
    parse_str(reg()); 
    $get = "$login - $pass\n".$_POST['get']; }
    if ($mode == 'link') {
    if (is_url($_POST['link'])) {
    $strings = file($_POST['link']);
    $end = count($strings);
    check_value($end);
    $arrstep = $step - 1;
    if (strlen(trim($strings[$arrstep])) <= 15) { parse_str(reg(trim($strings[$arrstep])));
    $get = "$login - $pass\n".$_POST['get']; }
    else { $error = 1; $get = $_POST['get']; }}
    else { die ('Ссылка неверна или указывает не на .txt файл'.$href);} }
    $step++;
    if ($step <= $end) {
    if ($error) echo '<div style="color:red;">Предыдущая учетка не была зарегана - ник более 15-ти символов</div><br>';
    echo "Учетка $step из $end<br>";
    view_form("?act=mass&mode=$mode&step=$step&end=$end"); }
    else { 
    echo '<b>Завершено!</b><br><a href="' . $_SERVER['PHP_SELF'] . '?act=mass">Повторить</a><br><br><form action="?act=file" method="post">Ваши учетки:<br><input type="submit" value="Скачать файлом">'; }
    echo '<br><textarea name="get" rows="10" cols="33">'.$get.'</textarea><input type="hidden" name="link" value="'.$_POST['link'].'"></form>';} 
    else {
    view_form("?act=mass&step=1");
    echo '<br><br><b>Опции массреги</b><br>Введите кол-во учеток: <input type="text" name="step" size="2" maxlength="2"><br>или ссылку на txt-файл с никами:<br><input type="text" name="link"><br><br><a href="' . $_SERVER['PHP_SELF'] . '">Обычная рега</a></form>'; }
    break;

    7ion. Начало.
    Написано примерно летом 2009 года.
    Помнится, я еще недоумевал - почему мой код называют страшным.

    7ion, 15 Апреля 2011

    Комментарии (12)
  3. JavaScript / Говнокод #6346

    +158

    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
    function ShowContent(divId, ajaxIndex, url) {
                if (AjaxObjects[ajaxIndex].response != "ok") 
                {
                    alert("Неверный пароль");
                    /*
                    document.getElementById(divId).innerHTML = AjaxObjects[ajaxIndex].response;
                    if (enableCache) {
                        jsCache[url] = AjaxObjects[ajaxIndex].response;
                    }*/
                    AjaxObjects[ajaxIndex] = false;
                }
                else
                    window.location.href= "Default.aspx";
            }

    дурацкая функция, ну кто так обозначает сообщение, надо более полно обозначивать в чем причина непереадресации на нужную мне страницу

    BlackMonolit, 14 Апреля 2011

    Комментарии (2)
  4. PHP / Говнокод #6338

    +158

    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
    <?php
    
    $camera=isset($_GET["camera"])?(int)$_GET["camera"]:0;
    
    if($camera == 0) { $curPage = "Tbilisi - Sameba Temple"; }
    elseif($camera == 1) { $curPage = "Tbilisi - Sameba"; }
    elseif($camera == 2) { $curPage = "Tbilisi - Rustaveli"; }
    elseif($camera == 3) { $curPage = "Mtskheta"; }
    elseif($camera == 4) { $curPage = "Mtskheta"; }
    elseif($camera == 5) { $curPage = "Telavi"; }
    elseif($camera == 6) { $curPage = "Tsinandali"; }
    elseif($camera == 7) { $curPage = "Signagi"; }
    elseif($camera == 8) { $curPage = "Kutaisi"; }
    elseif($camera == 9) { $curPage = "Bakuriani ski resort"; }
    // и так далее продолжается дальше...
    
    ... код поскипан
    
    <a href="?camera=0" class="cam0" style="margin-top:0px;"></a>
    <a href="?camera=1" class="cam1" ></a>
    <a href="?camera=2" class="cam2"></a>
    <a href="?camera=3" class="cam3"></a>
    <a href="?camera=4" class="cam4"></a>
    <a href="?camera=5" class="cam5"></a>
    <a href="?camera=6" class="cam6"></a>
    <a href="?camera=7" class="cam7"></a>
    <a href="?camera=8" class="cam8"></a>
    <a href="?camera=9" class="cam9"></a>
    // Так формируются ссылки (догадайтесь, что у нас в css?)
    
    ... код поскипан
    
    // И далее сто-питсот одинаковых блков, которые выводятся в зависимости от одной из ссылок выше
    // Эти блоки отличаются только URL-ом в одном из параметров
    
    if($camera==0) {
      $curPage = "Tbilisi - Sameba Temple";
      echo('
        <script type="text/javascript">
          playerFile = "http://www.livegeorgia.ge/media/mcmp_0.8.swf";
          streamingServerURL= "rtmp://ms2.livegeorgia.ge/live/";
          fpFileURL = "batumi/magnolia.sdp";
          fpAction = "play";
          cpVolumeStart = "35";
          playerBackgroundColor = "000000";
          fpPreviewImageURL = "http://www.livegeorgia.ge/media/img/cam_logo.gif";
          playerSize = "640x480";
          defaultEndAction = "repeat,pauseAtEnd,fpButton=off";
          cpHidePanel = "mouseout";
        </script>
        <script src="http://www.livegeorgia.ge/js/mcmp_0.8.js" type="text/javascript"></script>
        <object height="480" width="640" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
        ');
      }
    
    if($camera==1)
      {
    
    ... код поскипан
    
    ?>

    На этот раз отличились грузинские программисты! (коментарии добавлены копипастером)
    Контора: pixel.ge

    XPSystemServices, 13 Апреля 2011

    Комментарии (7)
  5. PHP / Говнокод #6310

    +158

    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
    <?php 
    
    
    if ($submit == 'Поcлать') 
    { 
        
        if ($name=='' or $theme=='' or $mail=='' or $message=='' or $pr!='5') 
            $tempu = file_get_contents("php/friend/nosentfr.html"); 
       
        else  
        { 
            $message = str_replace("<","&lt",$message); 
            $message = str_replace(">","&gt",$message); 
            $message = str_replace("\n","<br>",$message); 
            $message = str_replace("\r","",$message); 
        
       
           
     
            $message = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", 
                         "<a target=_blank href=\"\\0\">\\0</a>", $message); 
            $name = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", 
                         "<a target=_blank href=\"\\0\">\\0</a>", $name); 
          
            $data = date ("d m Y") ." г."; 
            
            $body = file_get_contents("php/friend/friend.html"); 
        
            $user = $mail; 
           
            $newm = $turl; 
            //перемещение данных в собщении 
            $body = str_replace ("%name%",$name,$body); 
            $body = str_replace ("2011",$data,$body); 
            $body = str_replace ("%message%",$message,$body); 
            $body = str_replace ("%mail%",$mail,$body); 
            $body = str_replace ("%newm%",$newm,$body); 
            $body = str_replace ("%theme%",$theme,$body); 
       
            $headers = "Content-Type: text/html; charset=UTF-8\n"; 
         
            @mail ($user,$newm,$body,$headers); 
            я  
            $tempu = file_get_contents("php/friend/sentfr.html"); 
            //перемещение участков строк в файле sentmail.html 
            $tempu  = str_replace("%mail%","$mail",$tempu ); 
            $tempu  = str_replace("%name%","$name",$tempu ); 
            $tempu  = str_replace("%theme%","$theme",$tempu ); 
            $tempu  = str_replace("2011","$data",$tempu ); 
            $tempu  = str_replace("%message%","$message",$tempu ); 
        } 
    } 
    else 
    { 
        $tempu = file_get_contents ("php/friend/formfriend.html"); 
        $tempu = str_replace ("%prurl%",$_SERVER['HTTP_REFERER'],$tempu); 
    } 
    
    ?>

    Отправь страничку другу

    BlackMonolit, 11 Апреля 2011

    Комментарии (8)
  6. C++ / Говнокод #6286

    +158

    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
    #ifndef _header_hpp_included_
    #define _header_hpp_included_
     
    #include <iostream>
    #include <cstdio>
    #include <boost/bind.hpp>
    #include <boost/asio.hpp>
    #include <boost/thread.hpp>
    #include <boost/lexical_cast.hpp>
     
    enum { recv_buffer_size = 13 };
    enum { send_buffer_size = 13 };
     
    volatile size_t counter = 0;
     
    void client_readed(
       boost::asio::ip::tcp::socket&,
       char*,
       FILE*,
       const boost::system::error_code&
    );
     
    void client_read(
       boost::asio::ip::tcp::socket& sock,
       FILE* out
    ) {
       char* buf = new char[recv_buffer_size];
       boost::asio::async_read(
          sock,
          boost::asio::buffer(buf, recv_buffer_size),
          boost::bind(
             &client_readed,
             boost::ref(sock),
             buf,
             out,
             boost::asio::placeholders::error));}
     
    void client_readed(
       boost::asio::ip::tcp::socket& sock,
       char* buf,
       FILE* out,
       const boost::system::error_code& e) {
       if ( e ) {
          if ( !counter ) return;
          std::cout << "read handler: " << e.message() << std::endl;
          return;
       }
        fwrite(buf, recv_buffer_size, 1, out);
        counter--;
     
    #ifdef _my_debug_
       printf("client_readed(): %s", buf);
       fflush(stdout);
    #endif
     
       static size_t idx = 0;
       size_t tmp = 0;
       char* p = strchr(buf, ':');
       if ( p ) {
          p++;
          sscanf(p, "%8d", &tmp);
       } else
          throw std::runtime_error("input data error!");
       delete[] buf;
       if ( idx != tmp ) {
          std::ostringstream os;
          os << "read error. expected " << idx << " get " << tmp;
          throw std::runtime_error(os.str());
       }
       idx++;
       client_read(sock, out);
    }
     
    void writen(
       char*,
       FILE*,
       const boost::system::error_code&
    );
     
    void start_write(
       boost::asio::ip::tcp::socket& sock,
       char* buf,
       FILE* out) {
       counter++;
       boost::asio::async_write(
          sock,
          boost::asio::buffer(buf, send_buffer_size),
          boost::bind(
             &writen,
             buf,
             out,
             boost::asio::placeholders::error) 
        ); 
    }

    qbasic, 08 Апреля 2011

    Комментарии (12)
  7. JavaScript / Говнокод #6163

    +158

    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
    { // more code...        
    	/**
             * Sets snapshot auto sharing on facebook
             * @param {Object} key
             * @param {Object} value
             */
            setAutoShare: function(key, value) {
                    if (value) {
                            this.api.askPermissions("publish_stream", function(list) {
                                    if (list == null || list.indexOf("publish_stream") < 0){
                                            this.vr.dom.round.setAutoShare(key, false);
                                    } else {
                                            this.vr.dom.round.setAutoShare(key, true);
                                            var request = new Request({
                                                    method:'post',
                                                    data: "env=facebook&"+ key + "=true&widgetSessionId=" + this.conf.pysid,
                                                    url: this.conf.baseUrl + "/set/auto-share",
                                                    onSuccess: function() {
                                                            this.vr.dom.round.setAutoShare(key, true);
                                                    }.bind(this)
                                            }).send();
                                    }
                            }.bind(this));
                    } else {
                            var request = new Request({
                                    method: "post",
                                    url: this.conf.baseUrl + "/set/auto-share",
                                    data: "env=facebook&"+ key + "=false&widgetSessionId=" + this.conf.pysid,
                                    onSuccess: function() {
                                            this.vr.dom.round.setAutoShare(key, false);
                                    }.bind(this),
                                    onFailure: function() {}
                            }).send();
                    }
            },
    // more code
    }

    Горе от ума. Хотя, на самом деле "от ума" тут спорно, человек дошел до того, чтобы научится пользоваться каким-то фреймворком, и даже пытался написать комментарий...

    wvxvw, 31 Марта 2011

    Комментарии (0)
  8. C++ / Говнокод #6147

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    std::string get(const std::string& name) {
          NamedPropertyMap::iterator it = properties.find(name);
          if (it == properties.end())
            return false;
    
          std::string ret;
          it->second->Get(ret);
          return ret;
        }

    return false; компилится на ура в VS2008

    Aleskey, 30 Марта 2011

    Комментарии (7)
  9. JavaScript / Говнокод #6141

    +158

    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
    function showOrders (tab, type, page) {
        $('#grid').load('../../citizen/'+type);
        switch (page) {
            case 'cmain':
                var activeTab_class = 'mainActiveTab';
                var unactiveTab_class = 'mainUnactiveTab';
            break;
            case 'corders':
                var activeTab_class = 'activeTab';
                var unactiveTab_class = 'unactiveTab';
            break;
        }
        var some_tab = document.getElementsByClassName(activeTab_class);
        var count = some_tab.length;
            for (var i = 0; i<= (count-1); i++) {
                some_tab[i].className = unactiveTab_class;
            }
        tab.className = activeTab_class;
    }

    у нас так WebUI программируется =)

    nur, 30 Марта 2011

    Комментарии (3)
  10. JavaScript / Говнокод #6131

    +158

    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
    if (location.href.split('/')[4] == '14-0-0' | location.href.split('/')[4] == '14') {
    	$('#u1').attr({
    		class: 'tabv'
    	})
    }
    else if (location.href.split('/')[4] == '14-0-1') {
    	$('#u2').attr({
    		class: 'tabv'
    	})
    }
    else if (location.href.split('/')[4] == '14-0-0-1' || $('#PMtoUser').val()) {
    	$('#bar').hide();
    	$('#mess').css({
    		backgroundColor: '#fafafa'
    	});;
    	$('#mess').html('<div style="padding-top:30px;padding-bottom:30px;"><div id="valError2"></div><div id="valSuccess2"></div><div id="bmess"><div id="bmess2"><table width="100%"><tr><td align="left" valign="top"><div class="avaogets" style="margin-top:2px;"><img src='+noavatar+'></div></td><td width="100%" style="padding-left:15px;" align="left" valign="top"><div id="hname">Получатель</div><input type="text" id="nameSend"><div style="padding-top:9px;" id="hname">Тема</div><input type="text" id="tSend"></td></tr></table><textarea style="margin-top:10px;" id="message2"></textarea><div id="idCap" style="overflow:hidden;margin-top:3px;margin-left:1px;"><div style="float:left;" id="abbbb"></div><div style="float:right;"><input id="capval" maxlength="4" type="text"></div></div><div id="new_b" class="Mbd" style="margin-top:6px;" onclick="$(\'#sbm\').click()"><div id="new_b2">Отправить</div></div><div class="spanload" style="display:inline-block;padding-left:5px;"></div></div> </div></div>');
    	$('#u4').attr({
    		class: 'tabv'
    	})
    }

    Это и многое другое на http://uweb.su/js/new_message.js!
    Смотрите в браузерах вашего компьютера!

    UnderShot, 30 Марта 2011

    Комментарии (8)
  11. PHP / Говнокод #6077

    +158

    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
    class Query {
      protected $baseTable;
      protected $baseTableAlias;
      protected $whereGroup;
    
      protected $joins = array();
      protected $fields = array();
    
      protected $executed = FALSE;
      protected $resource = NULL;
    
    
      function __construct($base_table = 'node', $alias = 'n') {
        $this->whereGroup = new QueryWhereGroup();
        $this->baseTable = $base_table;
        $this->baseTableAlias = empty($alias) ? $base_table : $alias;
      }
    
      function select($fields) {
        settype($fields, 'array');
        foreach ($fields as $alias => $field) {
          if (is_numeric($alias)) {
            $this->fields[] = $field;
          }
          else {
            $this->fields[$alias] = "$field as $alias";
          }
        }
    
        return $this;
      }
    
      /**
       * @param QueryWhereGroup $whereGroup
       * @return Query
       */
      function where($whereGroup) {
        call_user_func_array(array($this->whereGroup, 'cond'), func_get_args());
        return $this;
      }
    
      function createWhereGroup() {
        return new QueryWhereGroup();
      }
    
      function join($table, $alias = NULL, $condition, $join_type = 'INNER') {
        if (!$alias) {
          $alias = $table;
        }
    
        if (is_array($condition)) {
          $condition = 'USING ('. join(', ', $condition) .')';
        }
        if (!preg_match('/^ON|USING/i', $condition)) {
          $condition = 'ON '. $condition;
        }
    
        $this->joins[$alias] = "$join_type JOIN $table $alias $condition";
        return $this;
      }
    
      function compile() {
        $select_fields = join(', ', array_unique($this->fields));
        $joins_list = join("\n", $this->joins);
        $where_conditions = $this->whereGroup->compile();
    
        if (!empty($where_conditions)) {
          $where_conditions = 'WHERE '. $where_conditions;
        }
    
        return "SELECT $select_fields FROM {{$this->baseTable}} {$this->baseTableAlias} \n $joins_list $where_conditions";
      }
    
      function args() {
        return $this->whereGroup->args;
      }
    
      function execute() {
        return db_query($this->compile(), $this->args());
      }
    
      function fetchAll() {
        $res = $this->execute();
        while($row = db_fetch_object($res)) {
          $rows[] = $row;
        }
        return $rows;
      }
    }

    построитель запросов (drupal 6)
    wheregroup здесь http://govnokod.ru/6076

    vectoroc, 23 Марта 2011

    Комментарии (14)