Анонимные функции в 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";
},
),
Функция IP to Сountry на PHP
Функция IP to Сountry на PHP
Достаточно часто требуется с входящего IP адреса клиента определить страну на лету.
Это требуется как для финансовых так и для простых новостных сервисов или порталов.
Самих сервисов IP2Country достаточно много, также в сети имеются базы данных стран и их диапазоны IP адресов.
Ниже представлена функция парсинга одного из сервисов. На вход поступает IP, на выходе английское наименование страны:
Форматирование денежной суммы PHP
Форматирование денежной суммы PHP
Удобная функция:
$amount = number_format($amount, 0, ',', ' ');
Вход: 100500
Выход: 100 500
Портфолио. Система управления квартирами
Портфолио. Система управления квартирами
Задача: разработать систему учета проданных, построенных квартир в строящихся домах одной компании. Необходимо иметь возможность добавлять новые квартиры, подъезды, этажи и количество квартир. На каждую квартиру сделать возможность прописать ее характеристики и статус покупки, сделать вывод карты подъездов и дать управление домами менеджерами. Система должна работать в интранете компании.
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 подгрузку данных.
Функция перевода в рукописную сумму 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;
}
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.
Портфолио. Каталог мебели Румаркет
Портфолио. Каталог мебели Румаркет
Задача:
Создать систему каталога для мебельных компаний г.Москвы и регионов России. В каталоге каждая компания может выгружать свою продукцию в разных категориях.
Система должна иметь личный кабинет компании, где вёлся бы контроль за продукцией, была бы статистика переходов на сайт компании.
Администрирование, биллинг система для создания счетов юридическим лицам.
Скрипт магазина цифровых товаров
Скрипт магазина цифровых товаров
Данный скрипт поможет вам моментально создать свой мини магазин цифровых товаров, паролей и пин кодов на файлах и развернуть на любом хостинге за 5 минут.
Скрипт максимально упрощён при установке, вы ставите его на свой сервер, заходите в администрирование и загружаете цифровые товары. В качестве приёма оплаты встроены Qiwi, Webmoney, Яндекс.Деньги.
BTC-E мерчант — обновления
BTC-E мерчант — обновления
Биржа BTC-E.com обновила API автоматизации приёма-создания купонов биржи.
В связи с этим были обновлены классы работы мёрчанта BTC-E. Теперь для работы с купонами биржи требуется создание пары ключ-секрет с подключением прав Coupon у администрации бирже.
За подробностями обращайтесь через контакты.