public function testCrazy4()
 {
     $this->assertEquals(explode(',', 'Ілліч,Ілліча,Іллічу,Ілліча,Іллічем,Іллічу,Іллічу'), $this->object->q('Ілліч'));
 }
Beispiel #2
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
/**
 * В цепочках может вызыватся любое количество методов
 */
echo $nc->fullReset()->setFirstName("Андрей")->setFatherName("Николаевич")->getFormatted(NCL::$RODITLN, "N F") . "\n";
/**
 * Заканчиваются методы вызовом метода getFormatted(), который возвращает искомую строку
 */
print_r($nc->fullReset()->setFullName("Афросинин", "Павел", "Илларионович")->getFormatted(null, "N F S"));
/**
 * Начинаются все цепочки с вызова метода fullReset();
 */
echo $nc->fullReset()->setSecondName("Романчук")->setGender(NCL::$MAN)->getFormatted(NCL::$DATELN);
 public function testGenDetect2021()
 {
     $this->object->setSecondName('Яшина');
     $this->assertEquals('2-Яшина', $this->object->genderAutoDetect() . '-Яшина');
 }
 public function testSplDetect2021()
 {
     $this->assertEquals('S-Яшина', trim($this->object->getFullNameFormat('Яшина')) . '-Яшина');
 }
Beispiel #5
0
function neworder($core, $data, $file = false)
{
    $sid = (int) $data['site'];
    $spc = (int) $data['from'];
    $fid = (int) $data['flow'];
    $oid = (int) $data['offer'];
    $tgt = (int) $data['target'];
    $iptext = $data['ip'];
    $ip = ip2int($iptext);
    $name = $data['name'] ? $core->text->line($data['name']) : 'Без Воображения';
    $ind = (int) $data['index'];
    $area = $core->text->line($data['area']);
    $city = $core->text->line($data['city']);
    $street = $core->text->line($data['street']);
    $addr = $core->text->line($data['addr']);
    if ($addr == 'Уточнить по телефону') {
        $addr = '';
    }
    if ($addr == 'Адрес узнать по телефону') {
        $addr = '';
    }
    $comm = $core->text->line($data['comm']);
    $phone = (string) trim(preg_replace('#[^0-9]+#i', '', $data['phone']));
    $pres = $data['present'] > 0 ? (int) $data['present'] : 0;
    $cnt = $data['count'] > 0 ? (int) $data['count'] : 1;
    $more = $data['more'] > 0 ? (int) $data['more'] : 0;
    $dsc = $data['discount'] > 0 && $data['discount'] < 100 ? (int) $data['discount'] : 0;
    $cntr = $data['country'] ? strtolower(substr($core->text->link($data['country']), 0, 2)) : false;
    $dlvr = $data['delivery'] > 0 ? (int) $data['delivery'] : 1;
    $exti = (int) $data['exti'];
    $extu = $exti ? preg_replace('#[^0-9A-Za-z\\_\\-\\.]+#i', '', $data['extu']) : 0;
    $exts = $exti ? preg_replace('#[^0-9A-Za-z\\_\\-\\.]+#i', '', $data['exts']) : 0;
    $utmi = (int) $data['utmi'];
    $utmc = (int) $data['utmc'];
    $utms = (int) $data['utms'];
    $items = is_array($data['items']) ? serialize($data['items']) : '';
    $meta = $data['meta'] ? addslashes(serialize(unserialize(stripslashes($data['meta'])))) : '';
    $addr1 = $core->text->line($data['addr1']);
    $addr2 = $core->text->line($data['addr2']);
    $addr3 = $core->text->line($data['addr3']);
    if ($addr1) {
        $addr .= ', ' . $addr1;
    }
    if ($addr2) {
        $addr .= ', ' . $addr2;
    }
    if ($addr3) {
        $addr .= ', ' . $addr3;
    }
    if (!($oid && ($offer = $core->wmsale->get('offer', $oid)))) {
        return 'offer';
    }
    $site = $sid ? $core->wmsale->get('site', $sid) : false;
    $flow = $fid ? $core->wmsale->get('flow', $fid) : false;
    $ext = $exti ? $core->wmsale->get('ext', $exti) : false;
    $status = $data['status'] ? (int) $data['status'] : 1;
    if ($status == 1) {
        $status = $offer['offer_payment'] == 1 ? 0 : 1;
    }
    $userid = $flow ? $flow['user_id'] : ($ext ? $ext['user_id'] : false);
    if ($userid && $core->user->get($userid, 'user_ban')) {
        return 'security';
    }
    if ($phone) {
        // Name and address
        $name = mb_ucwords($name);
        if (!$ind) {
            if (preg_match('#^([0-9]+)#i', $addr, $ind)) {
                $ind = $ind[1];
                $ad = preg_split('#[\\s,\\.]+#i', $addr, 2);
                $addr = trim($ad[1], ' ,');
            } else {
                $ind = '';
            }
        }
        // Price, presents and discounts
        if ($data['items']) {
            $price = $cnt = 0;
            $vars = $core->wmsale->get('vars', $offer['offer_id']);
            foreach ($vars as &$v) {
                if ($data['items'][$v['var_id']]) {
                    $cnt += $data['items'][$v['var_id']];
                    $price += $data['items'][$v['var_id']] * $v['var_price'];
                }
            }
            unset($v, $vars);
        } else {
            $price = $cnt * $offer['offer_price'];
        }
        if ($dsc) {
            $price = ceil($price * ((100 - $dsc) / 100));
        }
        if ($pres) {
            $price += $core->lang['presentp'][$pres];
        }
        if ($more) {
            $price += $more;
        }
        if ($offer['offer_delivery']) {
            $price += $core->lang['deliverp'][$dlvr];
        } else {
            $dlvr = 0;
        }
        // GeoIP data
        $geoipdata = geoip($core, $iptext);
        if ($geoipdata) {
            $geoip = array('geoip_country' => $geoipdata['country'], 'geoip_city' => $geoipdata['city'], 'geoip_region' => $geoipdata['region'], 'geoip_district' => $geoipdata['district'], 'geoip_lat' => $geoipdata['lat'], 'geoip_lng' => $geoipdata['lng']);
            if (!$cntr) {
                $cntr = $geoip['geoip_country'];
            }
            if (!$addr && !$city) {
                $city = $geoip['geoip_city'];
            }
            if (!$addr && !$area) {
                $area = $geoip['geoip_region'];
            }
        } else {
            $geoip = false;
        }
        // Check IP and phone
        if ($phone[0] == '9' && strlen($phone) == 10) {
            $phone = '7' . $phone;
        }
        if (substr($phone, 0, 2) == '89') {
            $phone = '79' . substr($phone, 2);
        }
        if (substr($phone, 0, 2) == '99') {
            $phone = '79' . substr($phone, 2);
        }
        $pok = substr($phone, 0, 2) == '79' ? 1 : 0;
        // Check for bans
        $phs = $core->db->field("SELECT `status` FROM " . DB_BAN_PH . " WHERE `phone` = '{$phone}' LIMIT 1");
        $ips = $core->db->field("SELECT `status` FROM " . DB_BAN_IP . " WHERE `ip` = '{$ip}' LIMIT 1");
        if ($phs || $ips) {
            return 'ban';
        }
        // Guess gender automatically
        $nc = new NCLNameCaseRu();
        $gender = $nc->genderDetect($name) != NCL::$MAN ? 2 : 1;
        unset($nc);
        // Script based company guess
        $comp = 0;
        if ($offer['offer_script']) {
            $scr = explode("\n", $offer['offer_script']);
            foreach ($scr as $sc) {
                // Prepare script line to process
                $sc = trim($sc);
                if (!$sc) {
                    continue;
                }
                // Get company for the script line
                if (preg_match('/#([0-9]+)/si', $sc, $ms)) {
                    $cms = $ms[1];
                } else {
                    continue;
                }
                // Get type and ID to match
                if (preg_match('#([a-z]+)\\:([0-9]+)#si', $sc, $ms)) {
                    $iid = $ms[2];
                    $iit = $ms[1];
                    if (!($iid && $iit)) {
                        continue;
                    }
                } else {
                    continue;
                }
                // Match if it matches
                switch ($iit) {
                    case 'user':
                        if ($flow['user_id'] == $iid) {
                            $comp = $cms;
                        }
                        break;
                    case 'flow':
                        if ($fid == $iid) {
                            $comp = $cms;
                        }
                        break;
                    case 'site':
                        if ($sid == $iid) {
                            $comp = $cms;
                        }
                        break;
                    case 'space':
                        if ($spc == $iid) {
                            $comp = $cms;
                        }
                        break;
                    case 'ext':
                        if ($exti == $iid) {
                            $comp = $cms;
                        }
                        break;
                    case 'country':
                        if ($cntr == $iid) {
                            $comp = $cms;
                        }
                        break;
                }
                if ($comp) {
                    break;
                }
                // If script worked OK
            }
            unset($sc, $scr);
        }
        if (!$comp) {
            if ($offer['offer_mr'] && !$site['site_comp']) {
                $ct = $core->db->field("SELECT comp_id FROM " . DB_ORDER . " WHERE order_time > '" . (time() - 604800) . "' AND ( order_phone = '{$phone}' OR order_ip = '{$ip}' ) ORDER BY order_id DESC LIMIT 1");
                $mrt = unserialize($offer['offer_mrt']);
                if (!($ct && in_array($ct, $mrt))) {
                    if ($mrt && ($ct = wrand($mrt))) {
                        $comp = $ct;
                    } else {
                        $comp = $site['comp_id'];
                    }
                } else {
                    $comp = $ct;
                }
            } else {
                $comp = $site['comp_id'];
            }
        }
        $data = array('offer_id' => $oid, 'comp_id' => $comp, 'wm_id' => $userid, 'flow_id' => $fid, 'site_id' => $sid, 'space_id' => $spc, 'target_id' => $tgt, 'utm_id' => $utmi, 'utm_src' => $utms, 'utm_cn' => $utmc, 'ext_id' => $exti, 'ext_uid' => $extu, 'ext_src' => $exts, 'order_time' => time(), 'order_ip' => $ip, 'order_country' => $cntr, 'order_name' => $name, 'order_gender' => $gender, 'order_phone' => $phone, 'order_phone_ok' => $pok, 'order_index' => $ind, 'order_area' => $area, 'order_city' => $city, 'order_street' => $street, 'order_addr' => $addr, 'order_items' => $items, 'order_meta' => $meta, 'order_count' => $cnt, 'order_present' => $pres, 'order_discount' => $dsc, 'order_delivery' => $dlvr, 'order_more' => $more, 'order_price' => $price, 'order_comment' => $comm, 'order_status' => $status, 'order_webstat' => $status);
        if ($geoip) {
            $data += $geoip;
        }
        if ($core->db->add(DB_ORDER, $data)) {
            $id = $core->db->lastid();
            if ($file) {
                if (is_uploaded_file($file['tmp_name'])) {
                    $dot = strrpos($file['name'], '.');
                    $ext = strtolower(substr($file['name'], $dot + 1));
                    $name = $id . '-' . substr($core->text->link(substr($file['name'], 0, $dot)), 0, 90) . '.' . $ext;
                    $goodext = array('jpg', 'jpeg', 'gif', 'png', 'zip', 'rar', 'rar5', '7z', 'cdr', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx');
                    if (in_array($ext, $goodext)) {
                        move_uploaded_file($file['tmp_name'], sprintf(FILENAME, $name));
                        $core->db->edit(DB_ORDER, array('order_file' => $name), "order_id = '{$id}'");
                    }
                }
            }
            if ($exti && ($url = $core->wmsale->get('ext', $exti, 'url_new'))) {
                if (preg_match_all('#\\{eval:\\[(.*?)\\]\\}#si', $url, $ems)) {
                    foreach ($ems[0] as $k => $v) {
                        $url = str_replace($v, eval($ems[1][$k]), $url);
                    }
                }
                $url = str_replace('{id}', $id, $url);
                $url = str_replace('{uid}', $extu, $url);
                $url = str_replace('{src}', $exts, $url);
                $url = str_replace('{time}', time(), $url);
                $url = str_replace('{price}', $price, $url);
                $url = str_replace('{count}', $cnt, $url);
                foreach ($offer as $k => $v) {
                    $url = str_replace("{offer:{$k}}", $v, $url);
                }
                $odata = $offer['offer_pars'] ? unserialize($offer['offer_pars']) : false;
                if ($odata) {
                    foreach ($odata as $k => $v) {
                        $url = str_replace("{data:{$k}}", $v, $url);
                    }
                }
                curl($url);
            }
            // PostBack processing
            if ($userid && ($pbu = $core->wmsale->get('flow', $flw, 'flow_pbu'))) {
                $pbd = array('id' => $id, 'offer' => $oid, 'flow' => $flw, 'target' => $tgt, 'site' => $sid, 'space' => $spc, 'count' => $cnt, 'price' => $price, 'status' => ${$status});
                foreach ($pbd as $pbk => $pbv) {
                    $pbu = str_replace('{' . $pbk . '}', $pbv, $pbu);
                }
                curl($pbu, $pbd);
            }
            return (int) $id;
        } else {
            return 'db';
        }
    } else {
        return 'data';
    }
}
Beispiel #6
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
/**
 * Указываем падеж русской константой
 */
echo $nc->q('Андрей Николаевич', NCL::$RODITLN) . "\n";
/**
 * Указываем падеж украинской константой
 */
echo $nc->q('Андрей Николаевич', NCL::$UaRodovyi) . "\n";
/**
 * Явно не указываем пол
 */
print_r($nc->q('Иващук'));
/**
 * Указываем мужской пол
 */
print_r($nc->q('Иващук', null, NCL::$MAN));
Beispiel #7
0
<?php

header('Content-type: text/html; charset=utf-8');
/**
 * Подключаем необходимый язык
 */
require '../Library/NCL.NameCase.ru.php';
/**
 * Создаем обьект класса. 
 * Теперь библиотека готова к работе 
 */
$nc = new NCLNameCaseRu();
/**
 * Производим склонения и выводим результат на экран
 */
print_r($nc->q("Андрей Николаевич"));
/**
 * Подключаем другой язык
 */
require '../Library/NCL.NameCase.ua.php';
/**
 * Создаем объект класса. 
 * Теперь библиотека готова к работе 
 */
$nc = new NCLNameCaseUa();
/**
 * Производим склонения и выводим результат на экран
 */
print_r($nc->q("Андрій Миколайович"));
 public function testGenDetect397()
 {
     $this->object->setFirstName('Ярослава');
     $this->assertEquals('2-Ярослава', $this->object->genderAutoDetect() . '-Ярослава');
 }
Beispiel #9
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
$people = array("Андрей Николаевич", 'Ирина', 'Ефиопский Аркадий Василевич', 'Мария Николаевна', 'Розумовский Илья');
/**
 * Выбираем случайного человека из списка
 */
$person = $people[rand(0, count($people) - 1)];
/**
 * Определяем пол человека
 */
$gender = $nc->genderDetect($person);
/**
 * Выводим приветствие
 */
echo "Мы хотим предложить " . $nc->q($person, NCL::$DATELN) . " наши новые товары из категорий:\n    <ul>";
/**
 * В зависимости от пола предлагаем разные товары
 */
if ($gender == NCL::$MAN) {
    echo "<li>Рыбалка и охота</li>\n          <li>Электроника</li>\n          <li>Инструменты для дома</li>";
} else {
    echo "<li>Книги о кулинарии</li>\n          <li>Косметика</li>\n          <li>Дом и семья</li>";
}
echo "</ul>";
 public function testCrazy723()
 {
     $this->assertEquals(explode(',', 'Яшина,Яшиної,Яшиній,Яшину,Яшиною,Яшиній,Яшино'), $this->object->q('Яшина'));
 }
 public function testNameWoman984()
 {
     $this->object->setFirstName('Констанция');
     $this->object->setGender(2);
     $this->assertEquals(explode(',', 'Констанция,Констанции,Констанции,Констанцию,Констанцией,Констанции'), $this->object->getFirstNameCase());
 }
 public function testFatherMan1006()
 {
     $this->object->setFatherName('Филиппович');
     $this->object->setGender(1);
     $this->assertEquals(explode(',', 'Филиппович,Филипповича,Филипповичу,Филипповича,Филипповичем,Филипповиче'), $this->object->getFatherNameCase());
 }
 public function testFatherWoman2()
 {
     $this->object->setFatherName('Яківна');
     $this->object->setGender(2);
     $this->assertEquals(explode(',', 'Яківна,Яківни,Яківні,Яківну,Яківною,Яківні,Яківно'), $this->object->getFatherNameCase());
 }
Beispiel #14
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
echo $nc->q("АНДРЕЙ НИКОЛАЕВИЧ", NCL::$RODITLN) . "\n";
echo $nc->q("королёв Никита ПЕТРОВИЧ", NCL::$RODITLN) . "\n";
echo $nc->q("ПороСЁнОК ПёТР", NCL::$RODITLN) . "\n";
 public function testSplDetect836()
 {
     $this->assertEquals('N-Яснослава', trim($this->object->getFullNameFormat('Яснослава')) . '-Яснослава');
 }
Beispiel #16
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
/**
 * Пол можно не указывать
 */
echo $nc->qFatherName("Николаевич", NCL::$DATELN) . "\n";
/**
 * Если не указать падеж, получим массив со всеми падежами.
 */
print_r($nc->qFirstName("Андрей"));
/**
 * В ситувациях, когда не возможно определить пол, его полезно указать.
 */
echo $nc->qSecondName("Касюк", NCL::$DATELN, NCL::$MAN) . "\n";
 public function testNameMan508()
 {
     $this->object->setFirstName('Яснолик');
     $this->object->setGender(1);
     $this->assertEquals(explode(',', 'Яснолик,Яснолика,Ясноликові,Яснолика,Ясноликом,Ясноликові,Ясноличе'), $this->object->getFirstNameCase());
 }
Beispiel #18
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
$name = "Ефиопский Аркадий Василевич";
/**
 * Склоняем слово любыми методами
 */
$nc->q($name);
/**
 * Получаем массив объектов типа NCLNameCaseWord
 */
$words = $nc->getWordsArray();
foreach ($words as $word) {
    /**
     * Выводим тип каждого слова на экран
     */
    echo $word->getNamePart() . ' ' . $word->getNameCase(NCL::$TVORITELN) . "\n";
}
/**
 * Получаем:
 * S Ефиопским
 * N Аркадием
 * F Василевичем
 */
 public function testNameMan1006()
 {
     $this->object->setFirstName('Остап');
     $this->object->setGender(1);
     $this->assertEquals(explode(',', 'Остап,Остапа,Остапу,Остапа,Остапом,Остапе'), $this->object->getFirstNameCase());
 }
Beispiel #20
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
$people = array("Андрей Николаевич", 'Ирина', 'Ефиопский Аркадий Василевич', 'Мария Николаевна', 'Розумовский Илья');
foreach ($people as $person) {
    /**
     * Для каждого человека выводим формат ФИО
     */
    echo $nc->getFullNameFormat($person) . ' - ' . $person . "\n";
}
/**
 * Результат выполнения:
 * N F  - Андрей Николаевич
 * N  - Ирина
 * S N F  - Ефиопский Аркадий Василевич
 * N F  - Мария Николаевна
 * S N  - Розумовский Илья
 */
 public function test13()
 {
     $this->assertEquals('комментария', $this->object->qFirstName('комментарий', NCLNameCaseRu::$RODITLN, NCLNameCaseRu::$MAN));
 }
 public function testCrazy740()
 {
     $this->assertEquals(explode(',', 'Яшин,Яшина,Яшинові,Яшина,Яшином,Яшинові,Яшине'), $this->object->q('Яшин'));
 }
 public function testFatherMan4()
 {
     $this->object->setFatherName('Ілліч');
     $this->object->setGender(1);
     $this->assertEquals(explode(',', 'Ілліч,Ілліча,Іллічу,Ілліча,Іллічем,Іллічу,Іллічу'), $this->object->getFatherNameCase());
 }
 public function testWomanSirname984()
 {
     $this->object->setSecondName('Яшина');
     $this->object->setGender(2);
     $this->assertEquals(explode(',', 'Яшина,Яшиной,Яшиной,Яшину,Яшиной,Яшиной'), $this->object->getSecondNameCase());
 }
Beispiel #25
0
<?php

header('Content-type: text/html; charset=utf-8');
require '../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();
/**
 * Можно не указывать пол и формат
 */
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", null, NCL::$TVORITELN) . "\n";
//Ивановым Фёдором Ильичом
/**
 * В формате не обязательно использовать все слова
 */
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "N F") . "\n";
//Фёдором Ильичом
/**
 * Можно указать формат и не указывать пол человека
 */
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", null, NCL::$TVORITELN, "S N") . "\n";
//Ивановым Фёдором
/**
 * Можно указать все параметры
 */
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "S N F") . "\n";
//Ивановым Фёдором Ильичом
/**
 * В строке-формате могут присутствовать любые символы
 */
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "Фамилия: S, Имя: N, Отчество: F") . "\n";
//Фамилия: Ивановым, Имя: Фёдором, Отчество: Ильичом
 public function testCrazy508()
 {
     $this->assertEquals(explode(',', 'Яснолик,Яснолика,Ясноликові,Яснолика,Ясноликом,Ясноликові,Ясноличе'), $this->object->q('Яснолик'));
 }
 public function testSplDetect7()
 {
     $this->assertEquals('F-Яківна', trim($this->object->getFullNameFormat('Яківна')) . '-Яківна');
 }
 public function testFatherWoman984()
 {
     $this->object->setFatherName('Львовна');
     $this->object->setGender(2);
     $this->assertEquals(explode(',', 'Львовна,Львовны,Львовне,Львовну,Львовной,Львовне'), $this->object->getFatherNameCase());
 }
 public function testGenDetect1602()
 {
     $this->object->setFirstName('Златоуста');
     $this->object->setSecondName('Яшина');
     $this->assertEquals('2-Златоуста Яшина', $this->object->genderAutoDetect() . '-Златоуста Яшина');
 }
 public function testNameWoman327()
 {
     $this->object->setFirstName('Яснослава');
     $this->object->setGender(2);
     $this->assertEquals(explode(',', 'Яснослава,Яснослави,Яснославі,Яснославу,Яснославою,Яснославі,Яснославо'), $this->object->getFirstNameCase());
 }