- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Процедура Таймаут(ЧислоСекунд)
НачВремя = ТекущаяДата();
Пока 1 = 1 Цикл
Если ТекущаяДата() - НачВремя > ЧислоСекунд Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−96
Процедура Таймаут(ЧислоСекунд)
НачВремя = ТекущаяДата();
Пока 1 = 1 Цикл
Если ТекущаяДата() - НачВремя > ЧислоСекунд Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вот это я понимаю!!! Таймаут...
Это из той же конфигурации, что и прошлые мои кладки.
По прежнему коплю на патроны.
Открыт для любых конструктивных идей.
+2
$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
+1
<?
/*
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&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
+2
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
−1
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
0
class BHStorage extends BHProto {
private static $instance;
public static function _() {
if(isset(self::$instance)) return self::$instance;
self::$instance = new self();
return self::$instance;
}
private $db;
private function __construct() {
global $DB;
$this->db = $DB;
}
Недосинглтон. Скажите уже кто нибудь адептам битрикса, что на дворе уже 2016 год.
https://github.com/dbfun/bitrix-heretic/blob/master/lib/BHStorage.php
−4
// установлен ли модуль?
public static function isInstall($module) {
$data = COption::GetOptionString('main', 'heretic/'.$module, 'N');
return $data == 'Y';
}
И снова гитхаб радует битрикс шлаком. В этот раз, нас радует репозиторий с говорящим описание "Битрикс Еретик" https://github.com/dbfun/bitrix-heretic/blob/master/lib/BHProto.php
А установлен ли модуль? Таки да. Всегда- да!
+1
if(!strpos($amount,'.')) {
$amount = $amount . '.00';
} else {
$strlength = strlen(explode('.',$amount)[1]);
if($strlength != 2) {
if($strlength == 1) {
$amount = $amount . '0';
}
if($strlength > 2) {
$amount = round($amount,2);
}
}
}
Получение дробного до сотых числа
−1
<?php
/**
* Provides URL shortening functionality, like tinyurl.com, bit.ly, ow.ly and other popular services.
* (c) 2011, it-in, http://it-in.ru
* @author Sergey Kovalev <[email protected]>
* @version 1.0
*/
/**
* Basic URL path, to which short code will be added.
*/
define("BASE_SHORT_PATH", "http://it-in.ru/~");
/**
* ID of the infoblock which holds information about shortned URLs.
*/
define("TINYURL_IBLOCK_ID", 11);
Class TinyURL
{
/**
* Converts decimal number to any base
* @param integer $num Your decimal integer
* @param integer $base Base to which you wish to convert $num (leave it 0 if you are providing $index or omit if you're using default (62))
* @param string $index If you wish to use the default list of digits (0-1a-zA-Z), omit this option, otherwise provide a string (ex.: "zyxwvu")
* @return string
* @link http://www.php.net/manual/ru/function.base-convert.php#52450
*/
private static function dec2any( $num, $base=62, $index=false ) {
if (! $base ) {
$base = strlen( $index );
} else if (! $index ) {
$index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,$base );
}
$out = "";
for ( $t = floor( log10( $num ) / log10( $base ) ); $t >= 0; $t-- ) {
$a = floor( $num / pow( $base, $t ) );
$out = $out . substr( $index, $a, 1 );
$num = $num - ( $a * pow( $base, $t ) );
}
return $out;
}
/**
* Converts number in any base to decimal
* @param integer $num Your custom-based number (string) (ex.: "11011101")
* @param integer $base Base with which $num was encoded (leave it 0 if you are providing $index or omit if you're using default (62))
* @param string $index If you wish to use the default list of digits (0-1a-zA-Z), omit this option, otherwise provide a string (ex.: "abcdef")
* @return integer
* @link http://www.php.net/manual/ru/function.base-convert.php#52450
*/
private static function any2dec( $num, $base=62, $index=false ) {
if (! $base ) {
$base = strlen( $index );
} else if (! $index ) {
$index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base );
}
$out = 0;
$len = strlen( $num ) - 1;
for ( $t = 0; $t <= $len; $t++ ) {
$out = $out + strpos( $index, substr( $num, $t, 1 ) ) * pow( $base, $len - $t );
}
return $out;
}
/**
* Shortens URL.
* @param string $url Absolute URL to be shortened, like http://www.yandex.ru.
* @return string
*/
public static function shorten($url)
{
CModule::IncludeModule("iblock") || die("Couldn't load one of the required modules. Error fe51e037.");
// Check if there is already shortened version of the required URL.
$res = CIBlockElement::GetList(
array(),
array('IBLOCK_ID' => TINYURL_IBLOCK_ID, 'PREVIEW_TEXT' => $url),
false,
false,
array('ID')
);
if($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
return BASE_SHORT_PATH . self::dec2any($arFields['ID']);
}
// Shorten new URL and create a record in database.
$el = new CIBlockElement;
$ELEMENT_ID = $el->Add(array(
'IBLOCK_ID' => TINYURL_IBLOCK_ID,
'NAME' => $url,
'PREVIEW_TEXT' => $url,
'PREVIEW_TEXT_TYPE' => 'html',
));
if($ELEMENT_ID)
return BASE_SHORT_PATH . self::dec2any($ELEMENT_ID);
else
die($el->LAST_ERROR);
}
/**
* Converts short code to full URL, e.g. 8UdA -> http://yandex.ru.
* @param string $short_code
* @return string Full URL.
Продолжаем копаться в недрах гитхаба в поисках изумрудов от bitrix.
Данное творение некого адепта битрикса (из it-in, http://it-in.ru) для создания tinyurl
0
var routers = new (R(views))();
Чет по другому не придумал как в роутер view передать