Latest Posts

Анонимные функции в CGridView Yii1

Анонимные функции в CGridView Yii1

Использование анонимной функции позволяет легко работать с ячейками CGridView в Yii1:

Сначала присвоим $this в переменную $controller:

$controller = $this;

Теперь можно писать свою логику в виде анонимной функции прямо при объявлении ячейки в CGridView:

array(
            'name' => 'login',
            'type' => 'raw',
            'value' => function($data, $row) use ($controller) {
                return "Your some function";
            },
        ),

 

Read more

Функция IP to Сountry на PHP

Функция IP to Сountry на PHP

Достаточно часто требуется с входящего IP адреса клиента определить страну на лету.
Это требуется как для финансовых так и для простых новостных сервисов или порталов.

Самих сервисов IP2Country достаточно много, также в сети имеются базы данных стран и их диапазоны IP адресов.

Ниже представлена функция парсинга одного из сервисов. На вход поступает IP, на выходе английское наименование страны:

Read more

Форматирование денежной суммы PHP

Форматирование денежной суммы PHP

Удобная функция:

$amount = number_format($amount, 0, ',', ' ');

Вход: 100500

Выход: 100 500

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Портфолио. Система управления квартирами

Портфолио. Система управления квартирами

Задача: разработать систему учета проданных, построенных квартир в строящихся домах одной компании. Необходимо иметь возможность добавлять новые квартиры, подъезды, этажи и количество квартир. На каждую квартиру сделать возможность прописать ее характеристики и статус покупки, сделать вывод карты подъездов и дать управление домами менеджерами. Система должна работать в интранете компании.

Read more

CJuiAutoComplete пример использования в Yii

CJuiAutoComplete пример использования в Yii

Простой пример использования виджета автоподстановки выражения в зависимости от ввода:

$this->widget('zii.widgets.jui.CJuiAutoComplete',array(

                                    'model' => $model,
                                    'attribute'=>'login',
                                    'source'=>MyModel::getArray(),
                                    'options'=>array(
                                        'minLength'=>'1',
                                    ),
                                    'htmlOptions'=>array(
                                        'style'=>'width:300px;',
                                    ),
                                ));

В качестве модели нужно задать атрибут model, также указать название атрибута в attribute.
Массивом возможных значений нужно заполнить атрибут source — данный атрибут виджета может принимать как заранее подготовленный массив вида array() либо ajax подгрузку данных.

Read more

Функция перевода в рукописную сумму PHP

Функция перевода в рукописную сумму PHP

Еще очень давно нашел классную функцию для перевода суммы товара в пропись. Актуально для бухгалтерии и заключении договоров.

Как пример, на вход функции отдаете num2str(7.38), получаете: семь целых 38 сотых.

Код функции ниже:

function num2str($inn, $stripkop=false) {
        $nol = 'ноль';
        $str[100]= array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот', 'восемьсот','девятьсот');
        $str[11] = array('','десять','одиннадцать','двенадцать','тринадцать', 'четырнадцать','пятнадцать','шестнадцать','семнадцать', 'восемнадцать','девятнадцать','двадцать');
        $str[10] = array('','десять','двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто');
        $sex = array(
            array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),// m
            array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять') // f
        );
        $forms = array(
            //array('копейка',  'копейки',   'копеек',     1), // 10^-2
            array('сотых',  'сотых',   'сотых',     1), // 10^-2
            array('целых',    'целых',     'целых',     0), // 10^ 0
            //array('рубль',    'рубля',     'рублей',     0), // 10^ 0
            array('тысяча',   'тысячи',    'тысяч',      1), // 10^ 3
            array('миллион',  'миллиона',  'миллионов',  0), // 10^ 6
            array('миллиард', 'миллиарда', 'миллиардов', 0), // 10^ 9
            array('триллион', 'триллиона', 'триллионов', 0), // 10^12
        );
        $out = $tmp = array();
        // Поехали!
        $tmp = explode('.', str_replace(',','.', $inn));
        $rub = number_format($tmp[0],0,'','-');
        if ($rub==0) $out[] = $nol;
        // нормализация копеек
        $kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', STR_PAD_RIGHT),0,2) : '00';
        $segments = explode('-', $rub);
        $offset = sizeof($segments);
        if ((int)$rub==0) { // если 0 рублей
            $o[] = $nol;
            $o[] = morph(0, $forms[1][0],$forms[1][1],$forms[1][2]);
        }
        else {
            foreach ($segments as $k=>$lev) {
                $sexi= (int) $forms[$offset][3]; // определяем род
                $ri  = (int) $lev; // текущий сегмент
                if ($ri==0 && $offset>1) {// если сегмент==0 & не последний уровень(там Units)
                    $offset--;
                    continue;
                }
                // нормализация
                $ri = str_pad($ri, 3, '0', STR_PAD_LEFT);
                // получаем циферки для анализа
                $r1 = (int)substr($ri,0,1); //первая цифра
                $r2 = (int)substr($ri,1,1); //вторая
                $r3 = (int)substr($ri,2,1); //третья
                $r22= (int)$r2.$r3; //вторая и третья
                // разгребаем порядки
                if ($ri>99) $o[] = $str[100][$r1]; // Сотни
                if ($r22>20) {// >20
                    $o[] = $str[10][$r2];
                    $o[] = $sex[ $sexi ][$r3];
                }
                else { // <=20
                    if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20
                    elseif($r22>0)  $o[] = $sex[ $sexi ][$r3]; // 1-9
                }
                // Рубли
                $o[] = morph($ri, $forms[$offset][0],$forms[$offset][1],$forms[$offset][2]);
                $offset--;
            }
        }
        // Копейки
        if (!$stripkop) {
            $o[] = $kop;
            $o[] = morph($kop,$forms[0][0],$forms[0][1],$forms[0][2]);
        }
        return preg_replace("/\s{2,}/",' ',implode(' ',$o));
    }

    /**
     * Склоняем словоформу
     */
    function morph($n, $f1, $f2, $f5) {
        $n = abs($n) % 100;
        $n1= $n % 10;
        if ($n>10 && $n<20)	return $f5;
        if ($n1>1 && $n1<5)	return $f2;
        if ($n1==1)		return $f1;
        return $f5;
    }

 

Read more

AjaxLink и jQuery параметр

AjaxLink и jQuery параметр

Код ниже может поставить динамические параметры значения одного из элемента в ajax post,get через метод AjaxLink для последующей передачи обработчику:

echo CHtml::ajaxLink('Получить SMS',CController::createUrl('default/action'),
array(
  'type' => 'POST',
  'data'=> 'js:{ "data": $("#some_input_id").val() }',
  'update' => '#results',
));

Тем самым данные из #some_input_id.val() отправятся как имя data методом POST на обработчик default/action.

Read more

Портфолио. Каталог мебели Румаркет

Портфолио. Каталог мебели Румаркет

Задача:

Создать систему каталога для мебельных компаний г.Москвы и регионов России. В каталоге каждая компания может выгружать свою продукцию в разных категориях.

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

Администрирование, биллинг система для создания счетов юридическим лицам.

Read more

Скрипт магазина цифровых товаров

Скрипт магазина цифровых товаров

Данный скрипт поможет вам моментально создать свой мини магазин цифровых товаров, паролей и пин кодов на файлах и развернуть на любом хостинге за 5 минут.

Скрипт максимально упрощён при установке, вы ставите его на свой сервер, заходите в администрирование и загружаете цифровые товары. В качестве приёма оплаты встроены Qiwi, Webmoney, Яндекс.Деньги.

Read more

BTC-E мерчант &#8212; обновления

BTC-E мерчант — обновления

Биржа BTC-E.com обновила API автоматизации приёма-создания купонов биржи.

В связи с этим были обновлены классы работы мёрчанта BTC-E. Теперь для работы с купонами биржи требуется создание пары ключ-секрет с подключением прав Coupon у администрации бирже.

За подробностями обращайтесь через контакты.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more