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

    +153

    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
    //поменяет src картинки на cid и вернет массив с дополнительными секциями тела письма
    function convert_image_src($text, &$new_section_arr){
    	global $_SERVER;
    	
    	//расчленяем текст на куски по img
    	$new_src_arr=array();//массив путей к картинкам
    	$arrTmp=explode("<img", $text);
    	$explode_str=array("\\\"", "\"", "'");
    	
    	for($i=1; $i<sizeof($arrTmp); $i++){
    		$arrTmp2=explode("src=", $arrTmp[$i]);
    		
    		for($j=1; $j<sizeof($arrTmp2); $j++){
    			for($k=0; $k<sizeof($explode_str); $k++){
    				if(substr($arrTmp2[$j], 0, strlen($explode_str[$k]))==$explode_str[$k]){
    					$arrTmp3=explode($explode_str[$k], $arrTmp2[$j]);
    					
    					//считать можем только картинки с того же сервера  - остальные побоку
    					if(ref_is_server($arrTmp3[1])){
    						$old_src_arr[]=$arrTmp3[1];
    						$new_src_arr[]=convert_url_2_full_server($arrTmp3[1]);
    					}
    				}
    			}
    		}
    	}
    	
    	//теперь формируем новые секции
    	for($i=0; $i<sizeof($new_src_arr); $i++){
    		$file_arr=get_file_content($new_src_arr[$i], true);
    		if(strlen($file_arr[0])>0){
    			//запоминаем секцию
    			$new_section_arr[]=$file_arr[0];
    			//заменяем ссылку на cid
    			$text=str_replace($old_src_arr[$i], "cid:".$file_arr[1], $text);
    		}
    	}
    	
    	return $text;
    }

    Супер функция, которая парсит картинки в тексте и заменяет на, как я понял, новые ссылки уже на собственном сервере.
    Пока пытался разобраться, наступил когнитивный диссонанс.

    oooZinka, 20 Ноября 2013

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

    +154

    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
    class Icon extends IconBuilder
    {
    	public static function create($type, $white = false)
    	{
    		$class = __CLASS__;
    		return new $class($type, $white);
    	}
    
    	public function getType()
    	{
    		return $this->_type;
    	}
    
    	public function getWhite()
    	{
    		return $this->_white;
    	}
    }

    Код выдернут из Bootstrap.PHP http://allking.ru/bootstrap.php/
    Особое внимание уделить функции create и константе __CLASS__
    Вопрос: почему не обойтись просто self? В чем магия?

    З.Ы.: Пока писал, нашел в доках, что "волшебная" константа содержит так же пространство имен.
    Извиняюсь, что не узнал об этом раньше.
    Но я все же наложу сюда, с вопросом, даже учитывая всю эту информацию, почему мы не можем обойтись способами, исключающими использование константы?
    (все равно получается говнокод, хоть и работающий)

    oooZinka, 18 Ноября 2013

    Комментарии (3)
  3. PHP / Говнокод #14104

    +159

    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
    $st=$_GET['st'];
    
    // проверяем допустимый номер категории
    if ((((((($st != "1")&($st != "2"))&($st != "3"))&($st != "4"))&($st != "5"))&($st != "6")&($st != "7")&($st != "8")&($st != "0"))) {$st="0";};
    
    // Гениальная реализация отношения многие-ко-многим - по флагу на каждый номер категории, проверяем какой флаг установлен
    $zapros = "
    	SELECT
    		product.cod,
    		product.`name`,
    		sector.s0,
    		sector.s1,
    		sector.s2,
    		sector.s3,
    		sector.s4,
    		sector.s5,
    		sector.s6,
    		sector.s7,
    		sector.s8
    	FROM
    		product ,
    		sector
    	WHERE
    		product.cod = sector.cod AND sector.s".$st."=1
    	ORDER BY
    		product.id ASC
    	";

    Вот такой код мне попался в самописном магазине, который заказали доработать (

    mkramer, 16 Ноября 2013

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

    +165

    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
    // comparison arrays - quadruple nesting
        public function comparisonArrays(array $newOptions, array $prevOptions) {
            $diffOptions = array();
            foreach ($newOptions as $key=>$op) {
                if (isset($prevOptions[$key])) {
                    if (is_array($op)) {
                        foreach ($op as $kkk=>$ooo) {
                            if (isset($prevOptions[$key][$kkk])) {
                                if (is_array($ooo)) {
                                    foreach ($ooo as $kk=>$oo) {
                                        if (isset($prevOptions[$key][$kkk][$kk])) {
                                            if (is_array($oo)) {
                                                foreach ($oo as $k=>$o) {
                                                    if (isset($prevOptions[$key][$kkk][$kk][$k])) {
                                                        if ($prevOptions[$key][$kkk][$kk][$k]!=$o) $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    } else {
                                                        $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    }
                                                }
                                            } else {
                                                if ($prevOptions[$key][$kkk][$kk]!=$oo) $diffOptions[$key][$kkk][$kk] = $oo;
                                            }    
                                        } else {
                                            $diffOptions[$key][$kkk][$kk] = $oo;
                                        }
                                    }
                                } else {
                                    if ($prevOptions[$key][$kkk]!=$ooo) $diffOptions[$key][$kkk] = $ooo;
                                }
                            } else {
                                $diffOptions[$key][$kkk] = $ooo;
                            }
                        }
                    } else {
                        if ($prevOptions[$key]!=$op) $diffOptions[$key] = $op;
                    }
                } else {                    
                    $diffOptions[$key] = $op;
                }    
            }        
            return $diffOptions;        
        }

    crook, 11 Ноября 2013

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

    +153

    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
    // Высота шрифта
    
    	$lenHdr = mb_strlen( strip_tags($header), 'UTF-8');
    
    	$maxDefaultStrLen = 38;	// максимальное количество символов при заданном размере шрифта
    	$maxFontSize = 22;		// заданный размер шрифта
    
    	$fontSize = $maxFontSize;
    
    	if ( $lenHdr > $maxDefaultStrLen ) {
    
    		$k = ceil(sqrt(($lenHdr - $maxDefaultStrLen) + 0.25) - 0.5) + 2 ;
    
    		$k = ($k<3)? 3:$k;
    
    		$fontSize = $maxFontSize - ($k - 2)*2;
    
    		$fontSize = ($fontSize<12)? 12:$fontSize;
    	}

    Вот. Откопалось

    bot, 08 Ноября 2013

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

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    /*
         * Calculates date for $count_days before today
         * 
         * @param int $count_days - how much days before today
         * @return date - date for $count_days before today
         */
        function DaysBeforeToday($count_days) {
            $date = date('Y-m-d');
            $pos = strrpos($date, '-');
            $date = substr($date, 0, $pos + 1) . (substr($date, $pos + 1, 2) - $count_days);
            return $date;
        }

    ня! ^^

    ragnar, 22 Октября 2013

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

    +156

    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
    function date_to_text($date){
    	
    
    	
    	$now=time();
    	if ($s=strtotime($date)) //the function returns false is $date is not a string (as already in numeric unix date format)
    		$date = $s;
    	$d=round(($now-$date)); //s
    
    	//echo $d;
    	if($d>60){
    		$d=$d/60;//m	
    		if($d>60){
    			$d=$d/60;//h
    			if($d>24){
    				$d=$d/24;//d
    				if($d>7){
    					$d=$d/7;//w						
    					if($d>(52/12)){
    						$d=$d/52*12;//m
    						if($d>12){
    							$d=$d/12;//y
    							$d=floor($d);			
    							$str=$d.' year'.(($d>1)?'s':'');								
    						}else{
    							$d=floor($d);			
    							$str=$d.' month'.(($d>1)?'s':'');		
    						}
    					}else{
    						$d=floor($d);			
    						$str=$d.' wk'.($d>1?'s':'');									
    					}
    				}else{					
    					$d=floor($d);
    					$str=$d.' day'.($d>1?'s':'');											
    				}
    			}else{			
    				$d=floor($d);			
    				$str=$d.' hr'.(($d>1)?'s':'');		
    			}
    		}else{
    			$d=floor($d);			
    			$str=$d.' min'.(($d>1)?'s':'');			
    		}
    	}elseif ($d>0) {
    		$d=floor($d);			
    		$str=$d.' sec'.(($d>1)?'s':'');		
    	}
    	if ($d>0){
    		$str.=' ago';
    	} else {
    		$str = '';
    	}
    	return $str;
    }

    неопiсуемо

    rombik, 22 Октября 2013

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

    +140

    1. 1
    Никому не двигаться! Мы реквизировали, реквизировали этот сайт, смекаешь?

    PragramistOtBoga, 22 Октября 2013

    Комментарии (3)
  9. PHP / Говнокод #13993

    +130

    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
    public 	function actionSelect_model(){
    		
    	 
    		
    	$data = Yii::app()->db->createCommand()
    			->select('*')
    			->from('moto')
    			->where(' wmotoid = '.$_GET[id] )
    			->queryAll();
    			
    		foreach($data as $F=>$L){
    			echo '<option value="'.$L[moto_id].'">'.$L[moto_text].'</option>';
    			}
    		
    		
    	}

    Инет магазин на Yii. Контроллер.

    flashbag, 21 Октября 2013

    Комментарии (27)
  10. PHP / Говнокод #13985

    +152

    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
    public function getId($model=0){
        	
        	if($model->catalog_id){
    
        		return $model->catalog_id;
    
        	}else{
    
        		$L=Yii::app()->db->createCommand()
        		->select($this->tableName().'_id')
        		->from($this->tableName())
        		->order($this->tableName().'_id DESC')
        		->limit(1)
        		->queryRow();
    
        		return  ($L[$this->tableName().'_id']+1);
        	}
        }

    Контроллер админки инет магазина на Yii

    flashbag, 21 Октября 2013

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