Сростить codeigniter и сапомопись

primehostnet

Мастер
Регистрация
28 Июн 2015
Сообщения
170
Реакции
33
Дорый день. Задача такая.
Есть сайт обычный лапшекод, используется шаблонизатор как в dle, обвязка для работы с бд от дле, принцип работы очень похож на старый дле. НА сайт постоянно вносятся правки, но обслуживать это колличество говнокода становится все сложнее и сложнее. Есть идея сростить его с codeigniter 3 и новый функционал разрабатывать уже на CI, да и старый переносить по немногу.
То есть что бы при обращении скажем по domen.ru/shop/ сначала шла проверка есть ли такой модуль в старой системе, а если нет, то смотрели есть ли такой контроллер в CI

Заранее спасибо
 
А смысл? Вермишели станет еще больше. Контент то вероятно в базе хранится и структура базы редко меняется
Сделать нормальный движок с чистого листа, протестировать, написать скрипт импорта и импортировать
 
естественно что весь контент в базе, ее структура более прямая чем логика этого самописа.
Смысл? смысл в том что новый функционал будет разрабатываться на CI, при этом старый будет работать на старом самописе.
Нет возможности остановить все работы по текущему скрипту пока будет идти разработка на ci
 
Мне непонятна цель поста, я её не улавливаю.
Дорый день. Задача такая.
Есть сайт обычный лапшекод, используется шаблонизатор как в dle, обвязка для работы с бд от дле, принцип работы очень похож на старый дле. НА сайт постоянно вносятся правки, но обслуживать это колличество говнокода становится все сложнее и сложнее. Есть идея сростить его с codeigniter 3 и новый функционал разрабатывать уже на CI, да и старый переносить по немногу.
То есть что бы при обращении скажем по domen.ru/shop/ сначала шла проверка есть ли такой модуль в старой системе, а если нет, то смотрели есть ли такой контроллер в CI

Заранее спасибо
И.. что?
Ищете исполнителей?
Или хотите, чтобы в Вашей «лапше» разобрались в теме и прям тут выложили код?
Или хотите узнать, возможно ли задуманное?
В любом из трёх случаев — нужно или видеть код, либо быть гуру экстрасенсорики вроде Кашпировского. Включая этот режим, предположу, что задуманное возможно. Потому что в принципе почти всегда возможно всё.
 
Последнее редактирование:
То есть что бы при обращении скажем по domen.ru/shop/ сначала шла проверка есть ли такой модуль в старой системе, а если нет, то смотрели есть ли такой контроллер в CI
Т.е. ещё больше головняка себе же.
Запускается новый сайт на локалке или поддомене и идут работы по переносу.
Я бы так делал.
 
нет, исполнителей не ищу, да и лапша не моя и не хочу что бы в ней кто то разбирался. В первую очередь интересно возможно ли такое, более чем уверен что возможно.
Вот содержимое index.php, через htaccess все заворачивается на него
PHP:
<?php


    session_start();
    include $_SERVER['DOCUMENT_ROOT'] . '/class/mysql.class.php';
    include $_SERVER['DOCUMENT_ROOT'] . '/class/template.class.php';
    include $_SERVER['DOCUMENT_ROOT'] . '/includes/function.php';
    include $_SERVER['DOCUMENT_ROOT'] . '/includes/photo.php';
    include $_SERVER['DOCUMENT_ROOT'] . '/includes/config.php';


    ###создаем уникальный идентифекатор юзверя
    $r_pad_class = 'right_pad'; //нужно для скрытия правой колонки

    $userkey = md5( rand( 1111111111, 9999999999999999999 ) . get_ip() . rand( 11111111111111111, 9999999999999999999999999999999999 ) );
    if ( $_SESSION['ukey'] == '' OR ! $_SESSION['ukey'] ) {
        $_SESSION['ukey'] = $userkey;
        session_commit();
    }

    $Timer = new microTimer ();
    $Timer->start();

    $tpl = new template ();

    define( 'ROOT_DIR', dirname( __FILE__ ) );
    $tpl->dir = ROOT_DIR . '/templates/default/';
    define( 'TEMPLATE_DIR', $tpl->dir );
    //echo ROOT_DIR;


    #инклудим управляющий файлик
    include 'engine/engine.php';


    include 'modules/currency_mod.php';
    include 'modules/mo_history_view.php';
    include 'modules/mod_seo_save.php';


    include 'modules/mod_compare.php';
    include 'modules/mod_sborka.php';


    include 'modules/menu_top.php';

    include 'modules/menu.php';
    include 'modules/menuleft.php';
    include 'modules/spo_list.php';
    include 'modules/auth.php';
    include 'modules/mod_orders.php';
    include 'modules/banner_mod.php';
    include 'modules/mod_goodprice.php';


    ######################смотрим данные сео
    $adres = $_SERVER[ REQUEST_URI ];

    $seo = $db->super_query( "SELECT * FROM seotext WHERE url LIKE '%" . $adres . "' LIMIT 1" );


    if ( $seo[ title ] != '' ) {
        $title = $seo[ title ];
    }
    if ( $seo[ keyword ] != '' ) {
        $key = $seo[ keyword ];
    }
    if ( $seo[ descr ] != '' ) {
        $descr = $seo[ descr ];
    } else {
        $descr = $meta_descr;
    }
    if ( $seo[ text ] != '' ) {
        $seotext = $seo[ text ];
    }


    //проверяем снег
    $sneg = $db->super_query( "SELECT * FROM etc WHERE id = 1" );
    //46.35.236.154
//был 46.35.236.154


    $tpl->load_template( 'main.tpl' );

    //echo $main; exit();
    $tpl->set( '{sevcat}', $sevcat );
    $tpl->set( '{main}', $main );
    $tpl->set( '{menu_top}', $menu_top );
    $tpl->set( '{banners}', $banners );
    $tpl->set( '{sborka_list}', $sborka_list );
    if ( $page_title ) {
        $tpl->set( '{page_title}', '<div class="page-title"><h1>' . $page_title . '</h1></div>' );
    } else {
        $tpl->set( '{page_title}', '' );
    }

    $tpl->set( '{korzina}', $korzina );
    $tpl->set( '{menuleft}', $menuleft ); //левое меню
    $tpl->set( '{footer_profile}', $footer_profile ); //ссылки в ногах

    $tpl->set( '{menu_left}', $menu_l ); //левое меню
    $tpl->set( '{r_good}', $r_good );
    $tpl->set( '{mod_compare}', $compare );
    if ( $auth_links ) {
        $tpl->set( '{auth_links}', $auth_links );
    } else {
        $tpl->set( '{auth_links}', '' );
    }

    if ( $_SESSION[ b2b ] == 1 ) {
        $tpl->set( '{b2b_link}', '<a href="/btb/" style="margin-left: 100px;    font-weight: bold;    color: #fea801;">Оптовый портал B2B</a>' );
    } else {
        $tpl->set( '{b2b_link}', '' );
    }

    if ( $type_serch == 2 ) {
        $tpl->set( '{ts2}', "checked=\"checked\"" );
    } else {
        $tpl->set( '{ts1}', "checked=\"checked\"" );
    }
    $tpl->set( '{auth}', $auth );
    $tpl->set( '{history_mod}', $list_history );
    if ( $related_list ) {
        $tpl->set( '{related_list}', $related_list );
    } else {
        $tpl->set( '{related_list}', $related_list );
    }


    if ( $spo_list ) {
        $tpl->set( '{spo_list}', $spo_list );
    } else {
        $tpl->set( '{spo_list}', $spo_list );
    }

    $tpl->set( '{blok_page}', $blok_page );
    $tpl->set( '{menuauth}', $menuauth );
    if ( $speedbar ) {
        $tpl->set( '{speedbar}', '<div class="breadcrumbs"><ul>' . $speedbar . '</ul></div>' );
    } else {
        $tpl->set( '{speedbar}', '' );
    }




    $tpl->set( '{redhelp}', $redhelp );
    $tpl->set( '{header}', $header );
    $tpl->set( '{seotext}', '<div style=" border: 0 none;float: left;margin-top: 20px;width: 870px;text-align:left;">' . $seotext . '</div>' );
    $tpl->set( '{title}', $title );
    $tpl->set( '{keys}', $key );
    $tpl->set( '{descr}', $descr );


    $tpl->set( '{r_pad_class}', $r_pad_class );
    $tpl->set( '{popular}', $popular );
    $tpl->set( '{now_date}', date( "d.m.Y" ) );
    $tpl->set( '{geo_block}', $geo_block );


    $db->close();

    $tpl->set( '{speed}', $test );

    $tpl->compile( 'main' );
    $tpl->result['main'] = str_replace( '{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['main'] );
    $db->free();

    echo $tpl->result['main'];

PHP:
<?php

    $do = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['do'])))), ENT_QUOTES));
    $act = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['act'])))), ENT_QUOTES));
    $vendor = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['vendor'])))), ENT_QUOTES));
    $ID = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['ID'])))), ENT_QUOTES));
    $idd = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['idd'])))), ENT_QUOTES));
    $filter = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['filter'])))), ENT_QUOTES));
    $_FILTER = explode(";", $filter);
    $osn = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['osn'])))), ENT_QUOTES));
    $cat = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['cat'])))), ENT_QUOTES));
    $page = $db->safesql(htmlspecialchars(strip_tags(stripslashes(trim(urldecode($_GET['page'])))), ENT_QUOTES));



    switch ($do) {

        case "btb": #b2b портал
            include_once 'modules/b2b.php';
            $title = "Раздел b2b";
            $descr = "";
            $key = "";
           // $header .= '<style>.text-area1{display:none;}</style>';
            break;

        case "orderstmp": #orders
            include_once 'modules/orders_3.php';
            $header .= '<style>.text-area1{display:none;}</style>';

            break;

        default :

            include_once 'modules/default.php';
       
            $page_title = 'Главная';

     

            $main .= '';
    }

Думаю логика работы понятна. Как думаете, если я соберу все возможные $do в массив и при обращении буду проверять есть ли такой $do в массиве, то отрабатывать по старому, если нет, то травить на CI

Т.е. ещё больше головняка себе же.
Запускается новый сайт на локалке или поддомене и идут работы по переносу.
Я бы так делал.

Если бы перебирались на коробочну cms то так бы и уопступили, но перебираться на коробку нет желания, есть желание перенести это все в более прямой код
 
Технически это просто сделать в htaccess
- без проверки на существование модуля. Прописать точки в входа для разных разделов сайта - по частям url
- можно и проверку наличия папки с модулем добавить, как то так
RewriteCond %{DOCUMENT_ROOT}/myNewCMS/myModule -d
 
to @primehostnet
Во первых codeigniter и любой другой фреймворк, не избавит от говнокода - таки придётся осваивать шаблоны SOLID, GRASP, GOF.
to @alex_me, @primehostnet, @invader
Во вторых, если система хоть сколько нибудь сложная нельзя просто разнестипростым условием - это выполняется CI, а это старым кодом. Ибо придётся дублировать логику. А это чревато двумя системами с разной логикой, программистам тупо лень будет вносить изменение и там и там или забудут.

Сделать нормальный движок с чистого листа, протестировать, написать скрипт импорта и импортировать
Совет подходит только для очень простых систем. Для сложных еле успевают пилить новые фичи и вторая система будет разрабатываться очень-очень долго вплоть до бесконечности. А так же вторая система почти всегда выйдет заметно хуже.
Вот тут классно сказано про феномен второй системы -
Код:
https://youtu.be/oG3yzrOjWB8?t=1694

Видео о том почему вас не спасёт фреймворк -
Код:
https://youtu.be/oG3yzrOjWB8

Одна из лучших статей про общий план движения - Для просмотра ссылки Войди или Зарегистрируйся
Более детально:
теория видео - Для просмотра ссылки Войди или Зарегистрируйся
теория книжка - Мэтт Зандстра _PHP. Объекты, шаблоны и методики программирования.
на практике - Для просмотра ссылки Войди или Зарегистрируйся
 
Сам лично работаю уже долгое время с CodeIgniter. Когда вижу говнокод самописный у заказчика сразу предлагаю пересаживать, выглядит это так:

1. Смотрим что есть сейчас.
2. Начинаем разработку на CI в тестовом домене ( в это время сайт как работал так и работает ).
3. Скорее всего переписываем структуру БД и оптимизируем ее ( обычно какой код - такая и БД ).
4. Тестируем готовый проект на CI.
5. Пишем скрипт переноса данных со старой БД на новую.
6. Тестируем работу CI на тестовом.
7. Выключаем основной сайт ночью на часа 3.
8. Снова переливаем данные из старой в новую БД.
9. Выливаем проект на CI в основной.

Избавляет от гемороя на всю жизнь! А придумывать и сращивать проекты - это просто ужасно
 
Вообще остались ли спецы по CodeIgniter?
все смотрю на laravel перешли
нужно подшаманить добавить оплату кроме paypal
 
Назад
Сверху