Архив метки: PHP

Leo slack

Написал небольшой сервис для слэка. Познакомился с API и способами интеграции.

Leo Slack — это серверное готовое решение, а также фреймворк для построения сервисов, интегрированных со slack-чатом вашей команды, для публикации больших смайлов (также известных как стикеры) в каналы, группы и личную переписку.

Исходный код и инструкции на английском доступны по адресу: https://github.com/obukhov/leoslack

Как это выглядит

В действии решение очень простое. Пользователь в одном из чатов (канале, группе, личной переписке) вводит так называемую слеш-команду с кодом стикера в качестве аргумента, а бот публикует от имени пользователя сообщение с прикрепленным стикером.

leoslackHowitlookslike

Читать далее 

Форматирование телефонных номеров на PHP

Форматирование телефонных номеров на PHP.

Интересная и полезная статья по форматированию телефонных номеров, с учетом региональных стандартов.

Библиотека для генерации QR-кодов на PHP

Нашел, что искал: phpqrcode библиотека для генерации QR-кодов. Лицензия LGPL — можно использовать даже в коммерческих продуктах.

UPD. Вот еще один генератор QR-кодов — подходит для php4, гораздо меньше кода, написан не в концепции ООП, заодно имеет имеет версию на perl: QRcode Perl CGI & PHP scripts

Как я искал где объявлен класс

Дело было на незнакомом проекте, инклюд 140 файлов, всего файлов несколько тысяч. Один и тот же класс определен в разных местах — чуть ли не в контексте использования, нужно было найти где объявлен в этот раз.

if ($_GET['A'] = 'T')
{
    $files = get_included_files();

    array_shift($files);
    echo '---TOTAL:'.COUNT($files).'---';
    $tst = time();
    if (!isset($_GET['loop']))
    {
        $start = 0;
        $length = count($files);
        $line = 1;
    }
    else
    {
        $start = intval($_GET['S']);
        $length = count($files);
        $line = intval($_GET['L']);
    }
    for($k = $start; $k < $length; $k++)
    {
        $f = $files[$k];
        $fh = @fopen($f, 'r+');
        if ($fh)
        {
            $L=1;
            if ($line > 1)
            {
                for($L=1; $L < $line; $L++) {$s = fgets($fh);};
            }

            while (!feof($fh))
            {
                $s = fgets($fh);
                if (strpos($s,'OrderUserWork')!== false)
                {
                    echo '-- Found in file '.$f.' line: '.$L;
                    echo ' --> Continue... <-- ';
                    die();
                    break 2;
                }
                if (time() - $tst > 10)
                {
                    echo "+++ [$k] $f - lines: $k";
                    echo '<meta http-equiv="refresh" content="2;url='.$APPLICATION->GetCurPageParam('loop=y&L='.$L.'&S='.$k, array('L','loop','S')).'" >';
                    die();
                    break 2;
                }
                $L++;
            }
            echo "*** not found in [$k] $f - lines: $L";
            fclose($fh);
        }
        else
        {
            echo "!!! Failed to open [$k] $f";
        }
    }
    echo '---FINISHED---';
    die();
}

Нашелся класс в файле, который лежал в той же папке, что и текущий.