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

    +1

    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 actionNew($alias)
        {
            $model=Partners::model()->model()->findByAttributes(array('alias'=>$alias));
                   
                    if($model==null)
                throw new CHttpException(404,'The requested page does not exist.');
                           
                    $this->render('view',array(
                'model'=>$this->loadModel($model->id),
            ));
           
        }
     
    // правило в конфиге
    // '<module:\w+>/<controller:\w+>/<alias:\w+>' => '<module>/<controller>/new',

    https://vk.com/echo_php?w=wall-175_189930%2Fall

    Уи1

    Keeper, 07 Мая 2016

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

    0

    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
    <?php
    namespace DoctrineExtensions;
    use \Doctrine\ORM\Event\LoadClassMetadataEventArgs;
    /**
     * Расширение для Doctrine ORM
     * Позволяет отслеживать и работать не со всей базой, а только с таблицами с префиксом
     * Необходимо для уживания с битриксом
     *
     * Class TablePrefix
     * @package DoctrineExtensions
     */
    class TablePrefix
    {
        protected $prefix = '';
        public function __construct($prefix)
        {
            $this->prefix = (string) $prefix;
        }
        public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
        {
            $classMetadata = $eventArgs->getClassMetadata();
            $classMetadata->setTableName($this->prefix . $classMetadata->getTableName());
            foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
                if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY) {
                    $mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
                    $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
                }
            }
        }
    }

    Адепты битрикса добрались до Doctrine ORM. И вот что из этого получилось.
    Заставь дурака ORM подключать, он и events задрочит.

    Keeper, 06 Мая 2016

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    $DB->query("SELECT `id`, `fio`, `pos_id`, `phones` FROM `users` WHERE ...");
    if ($DB->errno()) return false;
    if (!$DB->num_rows()) return false;
    $uList = false;
    while (list($id, $fio, $pos, $tel) = $DB->fetch()) {
        $uList[] = array($id, $fio, $pos, $tel);
    }
    $DB->free();
    return $uList;

    FETCH_ASSOC to FETCH_NUM converting by ©senior shaurma developer

    pahhan, 06 Мая 2016

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

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $startDate = $dayCount != 7 ? ($_REQUEST["wDate"] ? $_REQUEST["wDate"] : date($dateFormat)) : ($_REQUEST["wDate"] ?
                    (date('w', strtotime($_REQUEST["wDate"])) == 1 ? $_REQUEST["wDate"] : (date('w',
                        strtotime($_REQUEST["wDate"])) ? date($dateFormat, strtotime($_REQUEST["wDate"]) -
                        (date('w', strtotime($_REQUEST["wDate"])) - 1) * 24 * 60 * 60) : date($dateFormat,
                        strtotime($_REQUEST["wDate"]) - 6 * 24 * 60 * 60))) : ($cDate == "Sun" ? date($dateFormat,
                        strtotime('Mon last week')) : date($dateFormat, strtotime('Mon this week'))));

    Хз что by ©senior shaurma developer

    pahhan, 06 Мая 2016

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

    −3

    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
    <?php
    global $human; //заселяем
    $inkey = $_GET['inkey'];
    
    //обучаем:
    $array['word']='kill_all_humans';
    $array['line']='drink_all_booze';
    //и далее...
    
    function drink_all_booze()
    {}
    function kill_all_humans()
    {//убить всех человеков
        //unset ($human);
        while($human[0]>0)
        {//пока в списке людей больше 0
            if(!$human[$human[0]]['name'] == 'Fray')
            {//кроме Фрая.
                unset($human[$human[0]]);
            }
        $human[0]--;
        }
    }
    
    //выбираем что делать:
    $${array}[$inkey]();
    ?>

    Говорят, что пишу не понятно. Насколько всё хреново?

    wano987, 05 Мая 2016

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

    +1

    1. 1
    2. 2
    3. 3
    // $r[2] = 1080;
    $timeStart = (strlen(floor($r[2] / 60)) == 1 ? "0" . floor($r[2] / 60) : floor($r[2] /
                                           60)) . ":" . (strlen($r[2] % 60) == 1 ? "0" . $r[2] % 60 : $r[2] % 60);

    Превращаем минуты во время в формате H:i by ©senior shaurma developer

    pahhan, 05 Мая 2016

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $sql = "SELECT COUNT(`user_id`) FROM `link_empl_tf` WHERE `sched_date` >= " . $DB->
        F(substr($startDate, 6, 4) . "-" . substr($startDate, 3, 2) . "-" . substr($startDate,
                0, 2)) . " AND `sched_date` <= " . $DB->F(substr($endDate, 6, 4) . "-" . substr
            ($endDate, 3, 2) . "-" . substr($endDate, 0, 2)) . " AND `user_id`=" . $DB->F($uParam[0]) .
        ";";

    Date formatting by ©senior shaurma developer

    pahhan, 05 Мая 2016

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

    +1

    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
    <?
    	/*
    		Bitrix Cleaner v2.2 - https://github.com/creadome/bitrixcleaner
    		Быстрая очистка 1С-Битрикс
    		(c) 2015 Станислав Васильев - http://creado.me
    		[email protected]
    	*/
    	require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php';
    	$trash = array(
    		'cache' => array(
    			'/bitrix/cache/' => 'Неуправляемый кеш',
    			'/bitrix/managed_cache/' => 'Управляемый кеш',
    			'/bitrix/html_pages/' => 'HTML кеш'
    		),
    		'files' => array(
    			'/upload/resize_cache/' => 'Кеш изображений'
    		)
    	);
    	if ($_GET['clean']) {
    		BXClearCache(true);
    		$GLOBALS['CACHE_MANAGER']->CleanAll();
    		$GLOBALS['stackCacheManager']->CleanAll();
    		$staticHtmlCache = \Bitrix\Main\Data\StaticHtmlCache::getInstance();
    		$staticHtmlCache->deleteAll();
    		foreach ($trash['files'] as $files => $name) DeleteDirFilesEx($files);
    	}
    	function countsize($directory) {
    		$count = array('file' => 0, 'size' => 0);
    		foreach (scandir($directory) as $file) {
    			if ($file != '.' && $file != '..') {
    				if (is_dir($directory.$file)) {
    					$inner = countsize($directory.$file.'/');
    					$count['file'] += $inner['file'];
    					$count['size'] += $inner['size'];
    				} else {
    					$count['file'] ++;
    					$count['size'] += filesize($directory.$file);
    				}
    			}
    		}
    		return $count;
    	}
    ?>
    
    <table>
    	<tr>
    		<th>Описание</th>
    		<th>Путь</th>
    		<th>Файлы</th>
    		<th>Размер</th>
    	</tr>
    
    	<?
    		foreach ($trash as $type) {
    			foreach ($type as $directory => $name) {
    				$count = countsize($_SERVER['DOCUMENT_ROOT'].$directory);
    	?>
    
    				<tr>
    					<td><?=$name?></td>
    					<td><a href="/bitrix/admin/fileman_admin.php?lang=ru&amp;path=<?=$directory?>"><?=$directory?></a></td>
    					<td><?=$count['file']?></td>
    					<td><?=round($count['size'] / 1048576, 2)?> Мб</td>
    				</tr>
    
    	<?
    			}
    		}
    	?>
    </table>
    
    <input type="button" value="Очистить" class="adm-btn-save" data-action="clean">

    Битрикс. порадовала строчка "'/bitrix/cache/' => 'Неуправляемый кеш'". Оказывается даже адептам битрикса не подвластно управление кешом самого битрикса :D

    https://github.com/creadome/bitrixcleaner/blob/master/cleaner/cleaner.php

    Keeper, 05 Мая 2016

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

    +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
    foreach ($userFilterList as $uParam)  { // массив юзеров ~300
        // ... говнокод
    
        $usenb = $DB->getField("SELECT `usenb` FROM `users` WHERE `id`=" . $DB->F($uParam[0]) . ";"); // дозапрашиваем поле
    
        // ... говнокод
    
        for ($i = 0; $i < $dayCount; $i++) { // $dayCount по дефолту 3
            $sql = "SELECT * FROM `link_empl` WHERE `user_id`=" . $DB->F($uParam[0]) .
                                    " AND `sched_date`=" . $DB->F(date("Y-m-d", strtotime($startDate) + $i * 24 * 60 *
                                        60)) . ";";
            $r = $DB->getRow($sql);
    
            // ... говнокод
    
            if ($r) {
                $wt = ($r[3] - $r[2]) / 30;
                $timeStart = (strlen(floor($r[2] / 60)) == 1 ? "0" . floor($r[2] / 60) : floor($r[2] /
                60)) . ":" . (strlen($r[2] % 60) == 1 ? "0" . $r[2] % 60 : $r[2] % 60);
                 $timeEnd = (strlen(floor($r[3] / 60)) == 1 ? "0" . floor($r[3] / 60) : floor($r[3] /
                60)) . ":" . (strlen($r[3] % 60) == 1 ? "0" . $r[3] % 60 : $r[3] % 60);
                $res = "<table cellpadding='0' cellspacing='0' class='sched seltf'><tr>";
                $sql = "SELECT тут_много_полей FROM `bfx` AS bfx 
                LEFT JOIN `tasks` AS tsk ON tsk.id=bfx .task_id  
                LEFT JOIN `tickets` AS ticket ON ticket.task_id=bfx .task_id  
                LEFT JOIN `task_types` AS ttype ON ttype.id=ticket.task_type  
                 LEFT JOIN `task_status` AS status ON status.id=tsk.status_id  
                LEFT JOIN `list_addr` AS addr ON addr.id=ticket.dom_id  
                WHERE bfx .em_id=" . $DB->F($uParam[0]) .
                " AND bfx .c_date=" . $DB->F(date("Y-m-d", strtotime($startDate) + $i * 24 * 60 *
                 60)) . ";";
                $DB->query($sql);
    
                // ... говнокод
            }
        }
    }

    график работ аля диаграмма ганта by ©senior shaurma developer

    pahhan, 05 Мая 2016

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

    −1

    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
    if (!function_exists('printr')) {
            function printr($array) {
                    GLOBAL $USER;
                    if (!$USER->IsAdmin()) return false;
                    $args = func_get_args();
                    if (count($args) > 1) {
                            foreach ($args as $values)
                                    printr($values);
                    } else {
                            if (is_array($array) || is_object($array)) {
                                    echo "<pre>";
                                    print_r($array);
                                    echo "</pre>";
                            } else {
                                    echo $array;
                            }
                    }
                    return true;
            }
    }
    printr($arr1,$arr2, $str, "string");

    Битрикс. Собственный уникальный print_r c Машанями и Медведем. Видио о существовании xdebug адепты bitrix не догадываются.

    http://b.pages.org.ua/php_interface/2011/03/03/universalnyy-print_r-dlya-bitriksa.html

    Keeper, 05 Мая 2016

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