SlideShare a Scribd company logo
1 of 35
Download to read offline
Profesionālās tālākizglītības programma

               Programmēšana
                   30T 481 03




               Dzintars Aprubis

CODEIGNITER FRAMEWORK UN MAXISITE CMS
  INTERAKTĪVAIS INFORMĀCIJAS PORTĀLS
             KVALIFIKĀCIJAS DARBS




                   Rīga 2011
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Saturs:
Ievads                                                                                                     3.lpp

Problēmas, mūsdienu stāvokļa pārskats                                                                      4.lpp

Prasības darbam                                                                                            12.lpp

Izvēlēto izstrādāšanas tehnoloģiju apraksts                                                                15.lpp

Projekta izstrāde                                                                                          25.lpp

Dokumentācija                                                                                              34.lpp

Nobeigums un kopējie secinājumi                                                                            35.lpp




                                                           2
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Ievads.
      Kvalifikācijas darba galvenais uzdevums ir atrast universālu
programmu kompleksa risinājumu interneta mājas lapu izveidei
uzņēmīgiem cilvēkiem un nelieliem uzņēmumiem.

       Galvenās prasības programmu kompleksam ir līdzsvars starp
efektivitāti, kvalitāti un cenu, kā arī demonstrācijas mājas lapas izveide
par doto produktu, tā sniegto iespēju novērtēšanai praksē un
popularizēšanai.

      Svarīgs faktors ir arī jaunu programmētāju un līdzīgi domājošu,
aktīvu cilvēku piesaiste projekta atbalstam un informācijas apmaiņai.

      Jaunizveidotajai interneta mājas lapai, jābūt interaktīvai.

      Dotajam programmu kompleksam, par ko tiks veidota mājas lapa,
jābūt pēc iespējas universālākam, vienkāršākam un ar daudzveidīgām
paplašināšanas iespējām.

     Svarīgi lai mājas lapā aprakstītajam programmu risinājumam ir
daudznacionāls atbalsts un UTF-8 pilns kodējums.

       Vēl pie mājas lapas izveides un konkrētā programmu produkta
izvēles svarīgi ir, lai dotā informācija būtu interesanta gan pilnīgam
iesācējam, gan jau strādājošam programmētājam.

       Izvērtējot esošās programmēšanas metodes un līdzekļus
nospraustā mērķa sasniegšanai tika izvēlēts CodeIgniter frameworks un
uz tā bāzētās MaxSite CMS apvienojums.

     Dotā mājas lapa ir veidota izmantojot CodeIgniter frameworku un
MaxSite CMS, kā arī tās galvenais saturs ir par šo divu lielisko produktu
izmantošanas iespējām un visu, kas ap tiem saistīts.

     Iespējams, tā būs viena no pirmajām mājas lapām par šiem diviem
produktiem un to latviskošanu latviešu valodā.




                                                         3
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Problēmas, mūsdienu stāvokļa pārskats.
       Mūsdienu ekonomiskajā situācijā arvien vairāk veidojas mikro
uzņēmumi , ģimenes uzņēmumi nelielas SIA, kā arī daudzi uzsāk biznesu
kā individuālā darba veicēji. Šiem uzņēmīgajiem cilvēkiem arvien biežāk
nepieciešamas vienkāršas, kvalitatīvas mājas lapas un lēti interneta
risinājumi, kas lielām IT kompānijām un programmētājiem ar stāžu nav
interesanti zemās peļņas dēļ. Šeit parādās brīva biznesa niša jaunajiem
programmētājiem, kā arī vajadzība pēc vienkārša, bet tai pašā laikā
paplašināma un kvalitatīva programmēšanas produkta un vienkāršiem
programmēšanas rīkiem. Uz šodienu eksistē 3 pieejas interneta
aplikāciju izveidei un katrai no tām ir savi plusi un mīnusi:

                             Tīrs kods                            CMS                           Framework
Plusi:                   Elastīgākais,                    Var iztikt bez                    Gatavas
                         Funkcionālākais,                 programmēšanas,                   biblotēkas,
                         Ātrākais darbībā,                Daudz                             Nosaka konkrētu
                         „Tīrākais”,                      paplašinājumu,                    pārdomātu
                         Var rakstīt kodu                 Ātrs ja ir tam                    arhitektūru,
                         bez nekādiem                     uzdevumam                         Programmas var
                         ierobežojumiem                   paredzēts,                        veidot no
                         un arhitektūras,                 Daudz gatavu                      gataviem
                         Nav nekā lieka                   risinājumu,                       „ķieģeļiem”,
                         kodā.                            Praktiski jebkurš                 Diezgan elastīgs,
                                                          var labot.                        Citiem viegli
                                                                                            saprotams kods,
                                                                                            Laba
                                                                                            dokumentācija.

Mīnusi:                  Daudz jātestē,                   Paredzēts                         Elastības ziņā
                         Jāoptimizē,                      konkrētiem                        mazāk elastīgs
                         Darbietilpīgs,                   uzdevumiem,                       nekā tīrs kods,
                         Ļoti labi jāzina                 Vismazāk                          Nevar iztikt bez
                         programmēšana,                   paplašināms                       programmēšanas,
                         Nav noteiktas                    nestandarta                       Citiem viegli
                         arhitektūras,                    lietām,                           saprotams.
                         Citiem gūti                      Visvairāk atkarīgs
                         saprast kodu.                    no izstrādātājiem.


                                                           4
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




      Ņemot vērā augstāk minēto tabulu, lai izveidotu profesionālu lapu
un pamatu tālākām izstrādnēm, izvēle tika pieņemta par labu framework
arhitektūrai. Pēc interneta mājaslapas http://www.phpframeworks.com

statistikas tika apskatīti pieci populārākie frameworki:

   1. http://codeigniter.com/
   2. http://www.yiiframework.com/
   3. http://cakephp.org/
   4. http://framework.zend.com/
   5. http://www.symfony-project.org/
      Pēc aprakstiem framework mājas lapās un citos interneta
resursos par pamatu projektam tika izvēlēts ņemt CodeIgniter
framework (CI)




šādu īpašību dēļ:

   1.   Lietotājam draudzīgs, viegli apgūstams;
   2.   Salīdzinoši mazs pēc izmēra;
   3.   Labi dokumentēts (arī krievu valodā);
   4.   Ātrs;
   5.   Ar pietiekošu funkcionalitāti un viegli paplašināms.

       CodeIgniter ieguvis plašu atzinību par savu nelielo, kompakto
izmēru, un ātrumu, un ir kļuvis par iecienītāko daudzu izstrādātāju vidū.
Tam pastāv plaša dokumentācija un liels lietotāju skaits, ar labu atbalstu
to vidū.




                                                          5
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




       Augstāk minētās īpašības pilnībā atbilst projekta filozofijai –
vienkāršiem, efektīviem un saprotamiem interneta aplikāciju
risinājumiemiem uz profesionālas labi dokumentētas viegli apgūstamas
programmatūras bāzes.

       Gadījumā, ja ar laiku pietrūktu funkcionalitāte kā nākošie varētu
tikt izmantoti:
    1. Symfony framework, kura iespējas pietiek gandrīz jebkādas
       sarežģītības pakāpes WEB projektu izstrādei;




   2. Zend framework, kurš izstrādāts tajā pašā kompānijā kur PHP
      programmēšanas valoda, dziļi integrējas tajā un līdz ar to, tas
      kļuvis par tādu kā rūpniecisko standartu.




      Ņemot vērā to, ka pamata programmēšanas principi pielietojot
frameworkus ir līdzīgi, tad ar laiku pāriet uz Symfony vai Zend framework
nebūtu pārāk sarežģīts process, pie nosacījuma, ka labi būs apgūta
CodeIgniter frameworka lietošana un tā darbības principi.

       Šī projekta mērķis tomēr ir izmantot pēc iespējas vieglāk
apgūstamu programmēšanas vidi. Šajā ziņā CodeIgniter frameworks ir
vispār atzīts līderis pasaulē, jauno programmētāju un izstrādātāju vidū.




                                                        6
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




      Uz CodeIgniter frameworka bāzes ir izveidotas arī daudzas satura
pārvaldības sistēmas, angliski - content management system, turpmāk
tekstā CMS.

       Satura pārvaldības sistēma (CMS) ir programmatūra, kura ļauj
vienlaikus vairākiem lietotājiem dažādus teksta vai cita veida
dokumentus izveidot, apstrādāt un organizēt. Visbiežāk CMS tiek saistīts
ar internetu. Autori var šo programmu izmantot arī bez jebkādām
programmēšanas valodu zināšanām un nereti tieši internetā izveidot
jaunus tekstus, papildināt tos ar bildēm, video vai skaņām un publicēt.
Šajā sakarā par Contentu sauc visu to informāciju, kas būs redzama. Šīs
sistēmas parasti sastāv no divām daļām :

   1. Contenta – jeb internetā vai intranetā redzamās daļas, kas domāta
      parastajiem lietotājiem un kuri var pat nenojaust, ka tiek lietota
      CMS.
   2. Vadības paneļa – kas pieejams tikai administratoram un caur kuru
      reģistrējoties sistēmā iespējams veikt izmaiņas contenta, jeb
      mājas lapas redzamajā daļā.

      Galvenais ieguvums no CMS ir tas, ka mājas lapas administrators
var nebūt programmētājs.

      Mājas lapas administrators var būt arī pats klients, kam šī lapa
veidota. Tas ir milzīgs plus par labu izvēlēties arī kādu no CMS.

      Šī iemesla dēļ tika apkopoti un izanalizēti tie CMS, kas izmanto
CodeIgniter frameworku (dati ņemti no oficiālās CI mājaslapas, to īss
apraksts netiek tulkots):

EgyptCMS
An easy to use base for designers with a default auth system, database
and more.

PyroCMS
Lightweight, themeable and dynamic, PyroCMS is perfect for CodeIgniter
developers to kickstart your projects.


                                                        7
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




IonizeCMS
Lonize is a Content Management System base on CodeIgniter. Easy,
powerful and modular, Ionize is build by webdesigners for
webdesigners.

MaxSiteCMS
WordPress-like blog CMS. In heavy development. Documentation is in
Russian only for now.

FUELCMS
An easy, flexible, empowering Content Management System for rapid
development that transforms your CodeIgniter projects into client
manageable brilliance.

CODEFIGHTCMS
Simple multiple website manager.

      Kā labāko CMS uz CodeIgniter bāzes varētu minēt
expressionengine CMS no saita http://expressionengine.com , kuru
izstādā tā pati komanda, kas izstrādā pašu framework. CMS ir ļoti labi
nostrādāts, funkcionāls un ar 100% CodeIgniter savienojamību. Tā
vienīgais trūkums – tā ir pa maksu (100-300$) un tādēļ neder šim
projektam, bet varētu tikt izmantota nākotnē. Šī framework devīze ir:

               Commercial Product + Open Source = Perfection

                  A SIMPLE MODEL WHERE EVERYBODY WINS!




                                                        8
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Šajā projektā izmantotajai CMS bija izvirzīti vairāki nosacījumi:

   1. Bezmaksas;
   2. Iespēja izmantot vienlaicīgi gan CMS gan CI funkcionalitāti;
   3. Pilns UTF-8 atbalsts un iespēja viegli izmantot dažādas valodas;
   4. Mazs apjoms un liela ātrdarbība;
   5. Viegla pāreja no vienas versijas uz otru;
   6. Vienkārša administrācija admin panelī;
   7. Paplašināšanas iespējas ar moduļiem un tēmām;
   8. Plašs lietotāju un izstrādātāju loks;
   9. Laba dokumentācija gan, krievu gan angļu valodās;
   10.Iespēja viegli pievienot citu izstrādātāju PHP skriptus;
   11.Loģiska, viegli apgūstama un saprotama arhitektūra;
   12.Iespēja izveidot jebkura izskata ādiņas.

     Izvērtējot un notestējot vairākus populārākos CMS, izvēle krita uz
MaxSite CMS, kurš praktiski vienīgais atbilda visām izvirzītajām prasībām.

      Otrs nemazāk nozīmīgs faktors bija tas, ka izstrādātājiem ir ļoti
veiksmīgi veidots un pārdomāts saits, ar ļoti plašu informācijas klāstu:

http://max-3000.com/




     Šeit var izlasīt pilnu MaxSite CMS iespēju aprakstu, kas
pārpublicēts no oficiālās mājas lapas autora interpretācijā:
      Простая установка. Следуя несложной инструкции нужно указать параметры
      базы данных. Дальше инсталляция пройдет автоматически.




                                                         9
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Скорость работы. За счет продуманной архитектуры системы, MaxSite CMS
работает очень быстро. По некоторым оценкам WordPress работает примерно в
5-10 раз медленнее.
Небольшой размер системы. В распакованном виде это примерно 5Мб. Это с
учетом того, что в комплекте 84 плагина.
Небольшая ресурсоемкость. В среднем MaxSite CMS потребляет (php) около 1-
6Мб (см. для примера статистику потребления в подвале этого сайта). И это при
всех включенных плагинах. Это даже не стоит сравнивать с WordPress, который
обычно требует от 9 (ранних версий) до 32Мб (последних версий, а в wp-
админке и все 256Мб).
MaxSite CMS использует фреймворк CodeIgniter. Поэтому разработчику
автоматически доступны богатые средства CodeIgniter: библиотеки, хелперы,
API для работы с базой данных и т.д. Стоит также отметить, что CodeIgniter
считается одним из самых быстрых и удобных фреймворков.
Развитая система кэширования. Кэширование - часть системы и механизм
кэширования очень простой. Поэтому у него высокая скорость и легкость
использования в произвольных частях кода.
Гибкая система типов данных. На MaxSite CMS можно забыть про ограничения
WordPress на типы данных и страниц. Вы можете придумывать свои типы
данных, свою систему навигации и т.д.
MaxSite CMS не выполняет лишнего кода. При инициализации системы
выполняется только «ядро» и подключаются активированные плагины. После
этого управление передается шаблону. Поэтому система будет выполнять ровно
тот код, который вы ей укажете. Это принципиально отличается от WordPress, в
котором выполняется весь код, получаются все данные, а уже потом у
разработчика есть возможность что-то с ним делать. С MaxSite CMS у вас
полный контроль.
Шаблоны для MaxSite CMS не сложнее вордпрессовских. Последние версии
шаблона default позволяют другим шаблонам использовать его
функциональность для вывода разных типов данных. Таким образом, создание
шаблона для MaxSite CMS по сути сводится к обычной верстке.
SEO-friendly. В MaxSite CMS можно указывать title, keywords, descriptions для
каждой страницы. Можно указать дефолтные значения, а также различные
комбинации. Есть возможность указывания canonical, адреса rss, а также
запретить использование «лишних» адресов (исключение дублирования
контента). Поддерживаются noindex и nofollow для ссылок. Есть плагины для
перелинковки (автоматической по заголовкам) и внутренними ссылками.
Мета-данные страниц имеют структуру ini-файла. За счет этого добавить
метаполе (дополнительную информацию к странице) можно вообще без
программирования.
Опции, настройки также могут быть выполнены в виде ini-файла. Это
значительно упрощает их добавление/редактирование.
Система разрешений авторов работает по принципу групп. Вы можете создавать
разные группы и отмечать нужные для них действия.
Система комментирования позволяет оставлять комментарии анонимам, а
также т.н. комюзерам - зарегистрированным. Причем регистрация происходит
автоматически в момент комментирования. Данные комюзеров хранятся в
отдельной базе и позволяют на её основе выполнять любые манипуляции.
Главный плюс такого деления в том, что у комюзеров нет доступа в админ-
панель.


                                                  10
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




      Полная поддержка виджетов. В MaxSite CMS создать виджет очень просто за
      счет продуманного API. В отличие от WordPress'а, который позволяет
      устанвливать только один виджет для одного плагина, в MaxSite CMS любой
      виджет может использоваться сколько угодно раз.
      MaxSite CMS расширяется за счет плагинов. В отличие от бардака WordPress, в
      MaxSite CMS используется строгое именование и за счет вспомогательных
      функций плагины получаются небольшими. Для примера, плагин антиспама,
      который имеет свою страницу настроек имеет размер всего 13кб. Плагины в
      которых только виджеты - еще меньше - 2-5Кб.
      Шаблоны для админ-панели очень просты. Например дефолтный шаблон - это
      9Кб. В шаблоне используется нормальный html и css, в которых разберется даже
      школьник.      Поэтому, если потребуется сделать свой «фирменный» стиль
      админки, проблем не будет.
      Функциональность админ-панели определяется точно такими же плагинами.
      Разница только в том, что эти плагины прописаны в коде и автоматически
      активируются при входе в админ-панель. Таким образом любой плагин может
      добавить себя в админ-панель. При этом все они используют единый
      несложный API.
      В админ-панели существует возможность настраивать шаблон. В отличие от
      WordPress, где данная возможность реализуется очень сложно, в MaxSite CMS
      для этого достаточно разместить в каталоге шаблона один файл options.ini.
      Таким образом шаблон можно сделать полностью настраиваемым.
      Для создания плагинов в комплекте поставки присутствуют файлы template-...
      для разных вариантов: только виджет, просто плагин, плагин с настройкой в
      админ-панели, полный вариант.
      На данный момент в комплекте следующие плагины: Блокировка по IP,
      Антиспам, BBCode, Календарь, Капча антиспам, Облако рубрик, Вывод рубрик,
      Кнопки для комментирования, Счетчик переходов по ссылке, Виджет событий,
      Виджет Избранное, Последние комментарии, Последние записи, LightBox с
      галереей (картинки загружаются и автоматически подготавливаются для
      галереи, код галереи генерируется автоматически), Виджет для ссылок, Виджет
      для формы логина, Самое комментируемое, Самое читаемое, Пагинация
      (листание страниц), Плагин перелинковки страниц, Преобразование PRE в
      список OL, Псевдокод, Случайные страницы, Цитаты или случайный текст,
      Рейтинг страниц в виде звездочек, Форма поиска, Карта сайта (архив),
      Смайлики, Облако меток, Текстовый блок (html/php), Twitter (rss-агрегатор) и
      другие.
      Плагины постоянно добавляются, поэтому их количество будет только
      увеличиваться.
      В комплекте поставки входят magpierss и jquery (+UI).
      Бесплатность и открытость. Лицензия GNU GENERAL PUBLIC LICENSE - 2.

Kā papildus var minēt to, ka:

   1. iespējams izmantot standarta CI funkcionalitāti,
   2. lapās ievietot iepriekš sagatavotu HTML kodu,
   3. lapās ievietot iepriekš sagatavotu PHP kodu.



                                                        11
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Prasības darbam.
       Pirms instalācijas ieteicams nokopēt un uzstādīt Notepad++ no
saita http://notepad-plus-plus.org/. Šo teksta redaktoru ieteicams lietot,
jo viss kodējums ir UTF-8.




       Lai izveidotu projekta mājas lapu, izveidojiet Linux serveri
(ieteicams debian) no saita http://www.debian.org/.




Uzstādiet Apache web serveri un failā httpd.conf atļaujiet :

LoadModule rewrite_module modules/mod_rewrite.so.




Uzstādiet MySQL ar UTF8 un MyISAM.




Uzstādiet PHP ar bibliotēku mbstring.




CodeIgniter frameworks ir jau iekļauts MaxSite CMS instalācijā.




                                                        12
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




      Līdz ar to sagatavošanās darbi ir veikti un varat pāriet pie MaxSite
CMS instalācijas, nokopējot tā pēdējo versiju no saita:

http://max-3000.com.

Atarhivējiet nokopēto failu un visas mapes pārkopējiet uz serveri. Tālāk
veiciet nepieciešamās izmaiņas un configurāciju:

atvērt application/config/database.php-distr

uzstādīt db pieejas parametrus

priekš cache uzstādīt

$db['default']['cache_on'] = TRUE;

$db['default']['cachedir'] = "/application/cache/db";

pārsaukt par database.php.

atvērt application/maxsite/mso_config.php-distr

ierakstīt frāzi šifrēšanai ja to izmaina paroles nav derīgas

pārsaukt mso_config.php

uzstādīt

/application/cache/

/application/cache/db

/application/cache/html

/application/cache/rss

tiesības 777

uzstādīt

/sitemap.xml tiesības 666 (izmanto google indeksācijai)




                                                        13
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




uzstādīt

/uploads/

/uploads/_mso_float

/uploads/_mso_i

/uploads/mini

tiesības 777

failā robots.txt-distr

ierakstīt

      Host: site.com

saglabāt kā robots.txt

pārsaukt /.htaccess-distr par .htaccess

pievienot failā .htaccess pēc «RewriteEngine on»:

RewriteCond %{HTTP_HOST} ^www.site.com

RewriteRule ^(.*)$ http://site.com/$1 [R=permanent,L]

palaizt http://jūsusaits/ un izpildām prasīto

atvērt /application/maxsite/mso_config.php

izmainīt

$mso_install = true;




                                                        14
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Izvēlēto izstrādāšanas tehnoloģiju apraksts.
  1. No sākuma apskatīsim CodeIgniter struktūru:

     (šī ir mājas direktorija piemēram WWW)

     /System (paša framework sistēmas faili)

     /Application ( visa Jūsu izstrāde jāveic šeit!!!)

              /Config

              /Controllers

              /Models

              /Views

              /Helpers

              / ...

     /User_guide (šo mapi var dzēst ārā, tie ir help faili)

     index.php (pats galvenais fails)


  2. Konfigurācija:

     Visa konfigurācija ir mapē /application/config/

     Config.php

              base_url (norāda saita adresi)

     Routes.php

              default_controller (norāda,kurš kontrolieris atveras)

     Database.php

              hostname, username, password, database (db parametri)




                                                      15
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




3. Controllers:

   Katra kontroliera klasē rakstītā metode ir pieejama kā www lapa,
   bet viss teksts, ko metode izdrukā, tiek nogādāts
   pārlūkprogrammai:

   kontrolieris.php

   class Kontrolieris extends Controller {

   function laiks() {

   $data["laiks"]=mktime();

   $this->load->view("skats",$data);

                       }

   }

4. Views:

   Lai kontrolierī nebūtu jāizmanto “echo”, izvades līmeņa
   sagatavošanai lieto skatus. Ielādējot skatu, kontrolieris padod līdzi
   masīvu $data ar parādāmajiem datiem. Skati satur daudz HTML un
   mazliet PHP, kas lasa informāciju no $data un iekļauj, kur
   nepieciešams.

   skats.php

   <html>

   <head></head>

   <body>

   <div id="time">

   <?php echo $time ?>

   </body></html>




                                                    16
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




    5. Skata izsaukšana kontrolierī:

       $data["laiks"]=mktime();

       $this->load->view("skats",$data);


    6. Adrešu uzbūve:

       http://www.codeigniter.lv/{klase}/{funkcija}/{parametri}

    7. Models:

       Models ir CodeIgniter papildus slānis.

    8. Helpers:

       Helper ir dažādu veidu palīdzētāji, kas atvieglo koda rakstīšanu.

Tāds ir īss pārskats par CodeIgniter darbību.

Atšķirība starp CI 1.x versiju un 2.x versiju:

VERSION 1.7.2

CONTROLLERS

class Contact extends Controller {

function Contact()

{

parent::Controller();

}

}




                                                        17
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




MODELS

class Contact_model extends Model {

function Contact_model()

{

parent::Model();

}

}

VERSION 2.0.0

CONTROLLERS

class Contact extendsCI_Controller {

function__construct()

{

parent::__construct();

}

}

Models

class Contact_model extendsCI_Model {

function__construct()

{

parent::__contruct();

}

}



                                                       18
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Vēl jāpiemin šādas mapes:

/Application /errors/ – kļūdu paziņojumi;

/Application /libraries/ – bibliotēkas, kas attiecas tikai priekš jūsu
aplikācijas;

/Application /hooks/ – huki atļauj izmainīt paša CI kodola darbību.

       CodeIgnitor frameworks būvēts pēc MVC arhitektūras. MVC
(Model-View-Controller) sadala sistēmu trijās daļas - datu ievade, datu
apstrāde, datu attēlojums, kur katra daļa risina atsevišķu uzdevumu.
Loģiskā komponente Modelis iekapsulē datu kodolu un pamata
funkcionalitāti, kas nav atkarīga no attēlojuma. Loģiskā komponente
Skats ir atbildīga par Modeļa datu attēlošanu, atbilstoši lietotāja
definētai datu prezentācijas formai. Loģiskā komponente Kontrolleris
saņem un nolemj kā apstrādāt ziņojumus, kurus saņem no lietotāja, un
translē signālus komandās, kas tiek sūtītas Modelim vai Skatam.




                                                        19
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




CodeIgniter frameworkā Model-View-Controller ir realizēts šādi:




                                                       20
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




MaxSite CMS uzbūves shēmas:




                                                       21
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




                                                 22
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




MaxSite CMS darbības princips (autora raksts):
1. Входящий адрес принимает CodeIgniter. Он сам определяет что с ним делать. Но
настраиваем его мы так, чтобы все запросы автоматом передавались нашему
контролеру.

2. Наш контролер, благодаря CodeIgniter, сразу вполняет функции типа. Например если
в адресе указывается «archive», значит будет выполняться функция «archive» (с таким
же названием). При этом у нас в конструкторе сразу подключается библиотека
основных функций CMS, а также считываются основные настройки. (Пока они сделаны
в виде файла, но должны храниться в БД.) Здесь же происходит интересная вещь: если
указывается несуществующая функция (тип), то стандартно CodeIgniter выдает
сообщение об ошибке (404). Нас это не устраивает, поэтому я немного изменил
CodeIgniter и теперь управление передается не на страницу ошибки, а на функцию
контролера page_404(). И если этой функции нет, то уже на стандартную 404-страницу.
Таким образом мы можем подключить свой обработчик несуществующих типов.

Но это еще не все. Если нам нужно подключить свой тип страницы, то не обязательно
переписывать контролер. Вместо этого контролер сам проверяет существование php-
файла с именем входящего типа. И если есть, то подключаем как обычно через
require(). Если же нет, то передаем управление на главную страницу (функция home()).

Таким образом, если возникнет необходимость расширить типы данных, то делается
это очень просто: создается php-файл с именем типа и в нем несколько строк, где
указывается тип и вьвер - все данные автоматом передадутся по цепочке в файл
шаблона.

3. В контролере заполняется специальная структура-массив, где указывается тип
страницы. Так же здесь передается входящий url и его сегменты. В общем эта
информация нам нужна для того, чтобы в самом шаблоне можно было бы сразу
получить файл типа страницы.

4. После контролера управление передается на вьювер (view). Поскольку у нас уже есть
своя структура с нужными для шаблона данными, то мы используем один-
единственный вьювер. В нем мы передаем наши переменные и смотрим текущий
шаблон. Шаблон указывается в конфигурации и совпадает с каталогом. По-умолчанию
используется шаблон «default».

Правда здесь стоит сделать отдельное замечание. Поскольку мы сразу же
предполагаем, что у нас будет использваться RSS, то мы будем анализировать
входящий адрес на наличие «feed» в конце. И если таково имеется, то управление
будем передавать на другой вьювер - «feed».

5. В наш шаблон всегда передается в файл index.php. Всегда. В нем выполняется
селектор типа страницы (тот который мы получили в начале). Выглядит это так:

if ( is_type('archive') ) require('archive.php');

                                                          23
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




elseif ( is_type('author') ) require('author.php');

        elseif ( is_type('category') ) require('category.php');

        elseif ( is_type('home') ) require('home.php');

        elseif ( is_type('link') ) require('link.php');

        elseif ( is_type('page') ) require('page.php');

        elseif ( is_type('page_404') ) require('page_404.php');

        elseif ( is_type('search') ) require('search.php');

        elseif ( is_type('tag') ) require('tag.php');

        else require('page_404.php');

В зависимости от типа мы подключаем нужные нам файлы .

6. Уже в этом подключаемом файле мы и будем выполнять запросы к БД (точнее это
будет набор готовых функций), заполнять начальные сведения для header страницы и
после этого выполняем нужный нам вывод (типа TheLoop).

Вот пример home.php:

<?php

# подготовка данных

$MSO->title = 'Главная страница сайта';

$MSO->keywords = 'Ключевики';

$MSO->description = 'Описание сайта для этой страницы';

# получение данных ...

# начало вывода

# подключается header и начало html-дизайна

require('main-start.php');

?>

Home - все что угодно - сам вывод данных

<?php

# завершение html, footer и т.п.

require('main-end.php'); ?>

                                                          24
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Projekta izstrāde.
Projekta izstrāde sastāv no vairākām daļām:

   1. Uzstādīt un nokonfigurēt MaxSite CMS (To jūs jau izdarījāt).

   2. Lai samazinātu SQL-pieprasījumus, ieslēgt CodeIgniter kešošanu.
      Lai to izdarītu failā database.php ierakstam:
      $db['default']['cache_on'] = TRUE;
      $db['default']['cachedir'] = "system/cache/db";.
   3. Šablona izveide. (Ja gribam, ņemam kādu no gatavajiem).
      Izveidojam katalogu /templates/mini/.
      Tajā izveidojam failus (vai varam pārkopēt no /default mapes):
      info.php – informācija par šablonu
      index.php – failu tipu dispičers
      functions.php – sidebar funkcionalitāte
      footer.php - kājene
      header.php - galvene
      sidebar1.php – sidebar( 1 sānu panelis).
      Šos failus varēsim izmantot arī turpmākajos projektos.
      struct.css – šis fails būs struktūras (karkasa) dizaina apraksts.
      style.css – pārējais noformējums.
      Tiem jābūt ierakstītiem failā header.php.
      Saita mainīgā daļa tiks izvadīta no pašas sistēmas.
      Nemainīgā daļa - no main-start.php , main-end.php failiem.




      Šablona struktūra var būt jebkāda, vienīgais nosacījums jābūt
      failam - index.php.
      Ko izvadīt tajā – atkarīgs no jūsu vajadzībām.
      Tālāk jāizveido faili main-start.php un main-end.php ar vajadzīgo
      html kodu. Tagad ieslēdzam šablonu admin panelī un skatamies
      rezultātu. Pārējais darbs saistīts ar CSS stiliem un noformēšanu.



                                                       25
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Piemēri:
main-start.php
#pieslēdzam header
require_once(getinfo('template_dir') . 'header.php');

<div id="container"> #container

         <div id="headers">
                <div id="headers-wrap"> #papildus priekš IE
                       <div id="header1">...</div>
                       <div id="header2">...</div>
                       <div id="header3">...</div>
                </div><!-- div id="headers-wrap" -->
         </div><!-- div id="headers" -->

         <div id="sub-container"> #bloks saturam

                    <div id="wrapper">
                           <div id="content"> #bloks tekstam
                                  <div class="content-all">

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Šeit būs mainīgā daļa ko izdos sistēma
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




                                                 26
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




main-end.php
                                  </div><!--div class="content-all"-->
                          </div><!-- div id="content" -->
                    </div> <!-- div id="wrapper" -->

             #saidbar
             <div id="sidebars">
                    <div id="sidebar1">
                           <div class="wrap">
                           <?php require(getinfo('template_dir') .
'sidebar-1.php'); ?>
                           </div><!-- div class=wrap -->
                    </div><!-- div id="sidebar-1" -->
             </div><!-- div id="sidebars" -->

         </div><!-- div id="sub-container" -->

         <?php require(getinfo('template_dir') . 'footer.php'); ?>

</div><!-- div id="container" -->
</body>
</html>




                                                 27
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




   Stili:

   struct.css
   * {padding: 0; margin: 0;}
   html, body {margin: 0; padding: 0;}
   body {font: 9pt/1.3em Verdana;}

   #container {width: 900px; margin: 0 auto;}

   #header1 {background: #DDD; height: 100px;}
   #header2 {background: #EEE; height: 50px;}

   #sub-container {float: left;}
   #wrapper {float: left; width: 100%;}

   #content {margin: 0 0 0 300px;} #sidebar kreisa pusē
   #sidebars {float: left; width: 300px; margin-left: -100%;}
   vai
   #content {margin: 0 300px 0 0;} #sidebar labā pusē
   #sidebars {float: left; width: 300px; margin-left: -300px;}

   style.css - šo failu variet veidot pēc vajadzības.

4. CodeIgniter funkciju pieslēgšana.
   Lai pieslēgtu Codeigniter standarta controlieri uz adresi
   example.lv/ci/.....
   failā routes.php rakstam:
   $route['default_controller'] = "maxsite";
   $route['my:any'] = "welcome";
   Tagad Codeigniter standarta controlieris piejams pēc adreses:
   example.lv/ci/.....




                                                    28
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




5. Valodu maiņa.

   Tulkošanai padodas visas frāzes, kas tiek rādītas ar
   ar funkciju t('фраза', __FILE__);.
   Tulkošanas fails atrodas tajā pašā katalogā /language/, kur
   tulkojamais:
   /common/language/ sistēmas failiem,
   /admin/language/ admin paneļa failiem,

   /common/language/plugins/ plugin failiem,

   /common/language/templates/ template failiem.

   Faila nosaukums sakrīt ar valodas nosaukumu:
   en.php - angļu
   lv.php - latviešu

   Valodu nosaka failā:
   mso_config.php
   <
   $MSO->language = 'lv'; //latviešu.
   >
   Tulkojamā lv.php faila struktūra:
   < if (!defined('BASEPATH')) exit('No direct script access allowed');
   # ceļš/xxx.php
   $lang['фраза1'] = 'tulkojums1';
   $lang['фраза2'] = 'tulkojums2';
   >

6. Citi paplašināšanas veidi:
   MaxSite CMS iespējams paplašināt arī izmantojot parastus HTML
   vai PHP failus, kā arī citu valodu failus. Šim nolūkam tiek izmantoti
   speciāli tegi, starp kuriem var ievietot savu kodu. Var arī ielikt savu
   kodu bet neizpildot to, tā lai parādās koda piemērs ar sintakses
   izgaismojumu.




                                                     29
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




7. Databāze.
   Databāze tiek izveidota automātiski pie sākotnējās saita
   instalācijas. Šajā projektā aprubis_ ar sekojošām tabulām, kuras
   var redzēt no SQL faila datubāzes izveidei:
   CREATE DATABASE IF NOT EXISTS `vdstvr2q_max` /*DEFAULT CHARACTER SET utf8 */;
   USE `vdstvr2q_max`;

   CREATE TABLE IF NOT EXISTS `mso_cat2obj` (
     `cat2obj_id` bigint(20) NOT NULL AUTO_INCREMENT,
     `page_id` bigint(20) NOT NULL DEFAULT '0',
     `category_id` bigint(20) NOT NULL DEFAULT '0',
     `links_id` bigint(20) NOT NULL DEFAULT '0',
     PRIMARY KEY (`cat2obj_id`),
     KEY `category_id` (`category_id`),
     KEY `page_id` (`page_id`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

   CREATE TABLE IF NOT EXISTS `mso_category` (
     `category_id` bigint(20) NOT NULL AUTO_INCREMENT,
     `category_id_parent` bigint(20) NOT NULL DEFAULT '0',
     `category_type` enum('page','links') NOT NULL DEFAULT 'page',
     `category_name` varchar(255) DEFAULT '',
     `category_desc` longtext,
     `category_slug` varchar(255) DEFAULT '',
     `category_menu_order` bigint(20) NOT NULL DEFAULT '0',
     PRIMARY KEY (`category_id`),
     KEY `category_slug` (`category_slug`),
     KEY `category_id_parent` (`category_id_parent`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

   CREATE TABLE IF NOT EXISTS `mso_comments` (
     `comments_id` bigint(20) NOT NULL AUTO_INCREMENT,
     `comments_page_id` bigint(20) NOT NULL DEFAULT '0',
     `comments_parent_id` bigint(20) NOT NULL DEFAULT '0',
     `comments_users_id` bigint(20) NOT NULL DEFAULT '0',
     `comments_comusers_id` bigint(20) NOT NULL DEFAULT '0',
     `comments_author_name` varchar(255) NOT NULL,
     `comments_author_ip` varchar(100) NOT NULL DEFAULT '',
     `comments_date` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
     `comments_content` longtext,
     `comments_rating` bigint(20) NOT NULL DEFAULT '0',
     `comments_approved` bigint(20) NOT NULL DEFAULT '0',
     `comments_type` varchar(50) NOT NULL DEFAULT '',
     PRIMARY KEY (`comments_id`),
     KEY `comments_page_id` (`comments_page_id`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

   CREATE TABLE IF NOT EXISTS `mso_comusers` (
    `comusers_id` bigint(20) NOT NULL AUTO_INCREMENT,
    `comusers_email` varchar(255) DEFAULT '',
    `comusers_password` varchar(255) DEFAULT '',
    `comusers_nik` varchar(255) DEFAULT '',
    `comusers_allow_publish` enum('0','1') NOT NULL DEFAULT '0',
    `comusers_count_comments` bigint(20) NOT NULL DEFAULT '0',
    `comusers_icq` varchar(255) DEFAULT '',
    `comusers_url` varchar(255) DEFAULT '',
    `comusers_msn` varchar(255) DEFAULT '',
    `comusers_jaber` varchar(255) DEFAULT '',


                                                     30
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




  `comusers_skype` varchar(255) DEFAULT '',
  `comusers_date_registr` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
  `comusers_last_visit` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
  `comusers_date_birth` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
  `comusers_avatar_url` varchar(255) DEFAULT '',
  `comusers_description` longtext,
  `comusers_ip_register` varchar(50) DEFAULT '',
  `comusers_language` varchar(5) DEFAULT 'ru',
  `comusers_skins` varchar(255) DEFAULT '',
  `comusers_notify` enum('0','1') NOT NULL DEFAULT '1',
  `comusers_admin_note` longtext,
  `comusers_activate_string` varchar(255) DEFAULT '',
  `comusers_activate_key` varchar(255) DEFAULT '',
  PRIMARY KEY (`comusers_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_groups` (
  `groups_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `groups_name` varchar(255) NOT NULL DEFAULT 'groups',
  `groups_rules` longtext,
  PRIMARY KEY (`groups_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_links` (
  `links_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `links_url` varchar(255) DEFAULT '',
  `links_name` varchar(255) DEFAULT '',
  `links_desc` longtext,
  `links_rel` varchar(255) DEFAULT '',
  `links_target` varchar(255) DEFAULT '',
  `links_menu_order` bigint(20) NOT NULL DEFAULT '0',
  `links_visible` bigint(20) NOT NULL DEFAULT '1',
  `links_rating` bigint(20) NOT NULL DEFAULT '0',
  `links_image` varchar(255) DEFAULT '',
  `links_rss` varchar(255) DEFAULT '',
  PRIMARY KEY (`links_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_meta` (
  `meta_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_id_obj` bigint(20) NOT NULL DEFAULT '0',
  `meta_table` varchar(255) DEFAULT '',
  `meta_value` longtext,
  `meta_desc` longtext,
  `meta_menu_order` bigint(20) NOT NULL DEFAULT '0',
  `meta_slug` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`meta_id`),
  KEY `meta_key` (`meta_key`),
  KEY `meta_table` (`meta_table`),
  KEY `meta_id_obj` (`meta_id_obj`),
  KEY `meta_value` (`meta_value`(256))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_options` (
 `options_id` bigint(20) NOT NULL AUTO_INCREMENT,
 `options_key` varchar(255) NOT NULL DEFAULT '',
 `options_value` longtext,
 `options_type` varchar(255) DEFAULT 'general',
 PRIMARY KEY (`options_id`),
 KEY `options_key` (`options_key`),


                                                  31
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




  KEY `options_type` (`options_type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_page` (
  `page_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `page_type_id` bigint(20) NOT NULL DEFAULT '1',
  `page_id_parent` bigint(20) NOT NULL DEFAULT '0',
  `page_id_autor` bigint(20) NOT NULL DEFAULT '1',
  `page_title` varchar(255) DEFAULT 'no-title',
  `page_content` longtext,
  `page_content2` longtext,
  `page_date_publish` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
  `page_date_dead` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `page_last_modified` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
  `page_status` enum('publish','draft','private') NOT NULL DEFAULT 'publish',
  `page_menu_order` bigint(20) NOT NULL DEFAULT '0',
  `page_slug` varchar(255) DEFAULT '',
  `page_view_count` bigint(20) NOT NULL DEFAULT '0',
  `page_rating` bigint(20) NOT NULL DEFAULT '0',
  `page_rating_count` bigint(20) NOT NULL DEFAULT '0',
  `page_password` varchar(255) DEFAULT '',
  `page_comment_allow` bigint(20) NOT NULL DEFAULT '1',
  `page_ping_allow` bigint(20) NOT NULL DEFAULT '1',
  `page_feed_allow` bigint(20) NOT NULL DEFAULT '1',
  `page_min_user_level` bigint(20) NOT NULL DEFAULT '0',
  `page_allow_group` bigint(20) NOT NULL DEFAULT '0',
  `page_lang` varchar(255) DEFAULT '',
  PRIMARY KEY (`page_id`),
  KEY `page_type_id` (`page_type_id`),
  KEY `page_date_publish` (`page_date_publish`),
  KEY `page_menu_order` (`page_menu_order`),
  KEY `page_rating` (`page_rating`),
  KEY `page_view_count` (`page_view_count`),
  KEY `page_id_autor` (`page_id_autor`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_page_type` (
  `page_type_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `page_type_name` varchar(255) NOT NULL,
  `page_type_desc` longtext,
  PRIMARY KEY (`page_type_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_sp_answers` (
  `a_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `a_qid` int(10) unsigned NOT NULL DEFAULT '0',
  `a_answer` varchar(200) NOT NULL,
  `a_votes` int(11) NOT NULL DEFAULT '0',
  `a_order` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`a_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `mso_sp_logs` (
 `l_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `l_qid` int(10) unsigned NOT NULL DEFAULT '0',
 `l_aid` int(10) unsigned NOT NULL DEFAULT '0',
 `l_ip` int(11) NOT NULL,
 `l_host` varchar(64) NOT NULL,
 `l_timestamp` int(11) NOT NULL DEFAULT '0',
 `l_user` varchar(64) NOT NULL DEFAULT '0',
 `l_userid` int(10) NOT NULL DEFAULT '0',


                                                   32
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




        PRIMARY KEY (`l_id`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

      CREATE TABLE IF NOT EXISTS `mso_sp_questions` (
        `q_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
        `q_question` varchar(200) NOT NULL,
        `q_timestamp` int(10) NOT NULL,
        `q_totalvotes` int(11) NOT NULL DEFAULT '0',
        `q_active` tinyint(4) NOT NULL DEFAULT '1',
        `q_expiry` int(10) NOT NULL DEFAULT '0',
        `q_multiple` tinyint(4) NOT NULL DEFAULT '0',
        `q_totalvoters` int(11) NOT NULL DEFAULT '0',
        `q_protection` tinyint(4) NOT NULL DEFAULT '1',
        PRIMARY KEY (`q_id`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

      CREATE TABLE IF NOT EXISTS `mso_users` (
        `users_id` bigint(20) NOT NULL AUTO_INCREMENT,
        `users_login` varchar(255) DEFAULT '',
        `users_password` varchar(255) DEFAULT '',
        `users_levels_id` bigint(20) NOT NULL DEFAULT '1',
        `users_groups_id` bigint(20) NOT NULL DEFAULT '2',
        `users_first_name` varchar(255) DEFAULT '',
        `users_last_name` varchar(255) DEFAULT '',
        `users_nik` varchar(255) DEFAULT '',
        `users_count_comments` bigint(20) NOT NULL DEFAULT '0',
        `users_icq` varchar(255) DEFAULT '',
        `users_email` varchar(255) DEFAULT '',
        `users_url` varchar(255) DEFAULT '',
        `users_msn` varchar(255) DEFAULT '',
        `users_jaber` varchar(255) DEFAULT '',
        `users_skype` varchar(255) DEFAULT '',
        `users_date_registr` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
        `users_date_birth` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
        `users_last_visit` datetime NOT NULL DEFAULT '2008-01-01 00:00:00',
        `users_avatar_url` varchar(255) DEFAULT '',
        `users_description` longtext,
        `users_ip_register` varchar(50) DEFAULT '',
        `users_show_smiles` enum('0','1') NOT NULL DEFAULT '1',
        `users_show_wis_editor` enum('0','1') NOT NULL DEFAULT '1',
        `users_time_zone` bigint(20) NOT NULL DEFAULT '7200',
        `users_language` varchar(5) DEFAULT 'ru',
        `users_skins` varchar(255) DEFAULT '',
        `users_notify` enum('0','1') NOT NULL DEFAULT '0',
        `users_admin_note` longtext,
        `users_activate_string` varchar(255) DEFAULT '',
        `users_activate_key` varchar(255) DEFAULT '',
        `users_rules` longtext,
        PRIMARY KEY (`users_id`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Datubāzi iespējams viegli pārnest ar šāda faila palīdzību no viena servera
uz otru, ko arī izdarīju ar programmas HeidiSQL palīdzību. Atlika tikai
pārkopēt www mapi un saits tika veiksmīgi iedarbināts uz cita servera.




                                                        33
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Dokumentācija
Pieejas dati glabājas 2 failos:

/application/config/config.php

      $config['encryption_key'] = 'encryption key';

/application/config/database.php

      $db['default']['hostname'] = 'localhost';

      $db['default']['username'] = 'dzintars';

      $db['default']['password'] = 'kasalots';

      $db['default']['database'] = 'aprubis_';

Saita admin paneļa pieeja:

                                       username: nikita (admin tiesības).

                                       password: webskola

,kas glabājas datu bāzē.




                                                        34
CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis




Nobeigums un kopējie secinājumi.
       MaxiSite CMS uz CodeIgniter bāzes manuprāt ir viens no
vislabākajiem risinājumiem jauniesācējam programmistam, lai pilnvērtīgi
varētu sākt izstrādāt vienkāršus, profesionāla līmeņa saitus ar saprotamu
uzbūvi, kas balstīta uz Model-View-Controller arhitektūras.

       Projekta spēks slēpjas tur, ka var izmantot gan CodeIgniter
programmēšanas iespējas, gan HTML, PHP, gan vienkārši lietot CMS
iespējas, tādējādi kombinējot dažādus programmēšanas veidus un
elastīgi pielāgojoties klienta prasībām.

      Pats grūtākais ir izprast MaxiSite CMS un CodeIgniter darbību un
konfigurācijas failus – tam vajadzīgs diezgan ilgs laiks.

      Šādai sistēmai ir liels potenciāls un tā strauji turpina attīstīties.

     Šobrīd esmu tikai ceļa sākumā, bet ceru, ka diezgan ātri gūšu labus
panākumus, jo šeit redzu sava biznesa iespējas.




                                                       35

More Related Content

Similar to MaxCMS

Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
ebuc
 
Serveru un darbstaciju APP risinājumi skolā
Serveru un darbstaciju APP risinājumi skolāServeru un darbstaciju APP risinājumi skolā
Serveru un darbstaciju APP risinājumi skolā
kalvis
 
Windows 8
Windows 8Windows 8
Windows 8
ebuc
 
Mobilas platformas
Mobilas platformasMobilas platformas
Mobilas platformas
ebuc
 
Agile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-publicAgile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-public
Linda Vituma
 
Mākoņskaitļošana. Gatis Gailis
Mākoņskaitļošana. Gatis GailisMākoņskaitļošana. Gatis Gailis
Mākoņskaitļošana. Gatis Gailis
ebuc
 
Mākoņskaitļošana
MākoņskaitļošanaMākoņskaitļošana
Mākoņskaitļošana
ebuc
 

Similar to MaxCMS (20)

Digitalizācijas un tehnoloģiju loma uzņēmuma ilgtspējā
Digitalizācijas un tehnoloģiju loma uzņēmuma ilgtspējāDigitalizācijas un tehnoloģiju loma uzņēmuma ilgtspējā
Digitalizācijas un tehnoloģiju loma uzņēmuma ilgtspējā
 
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
Kas ir HPC? Augstas veiktspējas skaitļošana. Leo Trukšāns. DPA Konference 2014.
 
Dell Wyse Cloud Connect
Dell Wyse Cloud ConnectDell Wyse Cloud Connect
Dell Wyse Cloud Connect
 
VDI
VDIVDI
VDI
 
LDP lecture 4
LDP lecture 4LDP lecture 4
LDP lecture 4
 
Serveru un darbstaciju APP risinājumi skolā
Serveru un darbstaciju APP risinājumi skolāServeru un darbstaciju APP risinājumi skolā
Serveru un darbstaciju APP risinājumi skolā
 
Digitālo prasmju apmācību iespējas 1. vebinārs
Digitālo prasmju apmācību iespējas 1. vebinārsDigitālo prasmju apmācību iespējas 1. vebinārs
Digitālo prasmju apmācību iespējas 1. vebinārs
 
Building X - mērogainā digitālās ēkas platforma
Building X - mērogainā digitālās ēkas platformaBuilding X - mērogainā digitālās ēkas platforma
Building X - mērogainā digitālās ēkas platforma
 
Digitālo prasmju apmācību iespējas 3. vebinārs
Digitālo prasmju apmācību iespējas 3. vebinārsDigitālo prasmju apmācību iespējas 3. vebinārs
Digitālo prasmju apmācību iespējas 3. vebinārs
 
Windows 8
Windows 8Windows 8
Windows 8
 
Mobilas platformas
Mobilas platformasMobilas platformas
Mobilas platformas
 
Java RTU
Java RTUJava RTU
Java RTU
 
Projektu vadība
Projektu vadībaProjektu vadība
Projektu vadība
 
Kā pieiet WEB dizainam mobilajā ērā? Rihards Gromuls. Digitālā Fabrika 2016
Kā pieiet WEB dizainam mobilajā ērā? Rihards Gromuls. Digitālā Fabrika 2016Kā pieiet WEB dizainam mobilajā ērā? Rihards Gromuls. Digitālā Fabrika 2016
Kā pieiet WEB dizainam mobilajā ērā? Rihards Gromuls. Digitālā Fabrika 2016
 
Agile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-publicAgile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-public
 
Mākoņskaitļošana. Gatis Gailis
Mākoņskaitļošana. Gatis GailisMākoņskaitļošana. Gatis Gailis
Mākoņskaitļošana. Gatis Gailis
 
Mākoņskaitļošana
MākoņskaitļošanaMākoņskaitļošana
Mākoņskaitļošana
 
Video tiesraides interneta xpress hd
Video tiesraides interneta xpress hdVideo tiesraides interneta xpress hd
Video tiesraides interneta xpress hd
 
Kā attīstīt savu biznesu, izmantojot Magento platformu e-komercijai?
Kā attīstīt savu biznesu, izmantojot Magento platformu e-komercijai?Kā attīstīt savu biznesu, izmantojot Magento platformu e-komercijai?
Kā attīstīt savu biznesu, izmantojot Magento platformu e-komercijai?
 
Universālas metodes twitter datu analīzei
Universālas metodes twitter datu analīzeiUniversālas metodes twitter datu analīzei
Universālas metodes twitter datu analīzei
 

MaxCMS

  • 1. Profesionālās tālākizglītības programma Programmēšana 30T 481 03 Dzintars Aprubis CODEIGNITER FRAMEWORK UN MAXISITE CMS INTERAKTĪVAIS INFORMĀCIJAS PORTĀLS KVALIFIKĀCIJAS DARBS Rīga 2011
  • 2. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Saturs: Ievads 3.lpp Problēmas, mūsdienu stāvokļa pārskats 4.lpp Prasības darbam 12.lpp Izvēlēto izstrādāšanas tehnoloģiju apraksts 15.lpp Projekta izstrāde 25.lpp Dokumentācija 34.lpp Nobeigums un kopējie secinājumi 35.lpp 2
  • 3. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Ievads. Kvalifikācijas darba galvenais uzdevums ir atrast universālu programmu kompleksa risinājumu interneta mājas lapu izveidei uzņēmīgiem cilvēkiem un nelieliem uzņēmumiem. Galvenās prasības programmu kompleksam ir līdzsvars starp efektivitāti, kvalitāti un cenu, kā arī demonstrācijas mājas lapas izveide par doto produktu, tā sniegto iespēju novērtēšanai praksē un popularizēšanai. Svarīgs faktors ir arī jaunu programmētāju un līdzīgi domājošu, aktīvu cilvēku piesaiste projekta atbalstam un informācijas apmaiņai. Jaunizveidotajai interneta mājas lapai, jābūt interaktīvai. Dotajam programmu kompleksam, par ko tiks veidota mājas lapa, jābūt pēc iespējas universālākam, vienkāršākam un ar daudzveidīgām paplašināšanas iespējām. Svarīgi lai mājas lapā aprakstītajam programmu risinājumam ir daudznacionāls atbalsts un UTF-8 pilns kodējums. Vēl pie mājas lapas izveides un konkrētā programmu produkta izvēles svarīgi ir, lai dotā informācija būtu interesanta gan pilnīgam iesācējam, gan jau strādājošam programmētājam. Izvērtējot esošās programmēšanas metodes un līdzekļus nospraustā mērķa sasniegšanai tika izvēlēts CodeIgniter frameworks un uz tā bāzētās MaxSite CMS apvienojums. Dotā mājas lapa ir veidota izmantojot CodeIgniter frameworku un MaxSite CMS, kā arī tās galvenais saturs ir par šo divu lielisko produktu izmantošanas iespējām un visu, kas ap tiem saistīts. Iespējams, tā būs viena no pirmajām mājas lapām par šiem diviem produktiem un to latviskošanu latviešu valodā. 3
  • 4. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Problēmas, mūsdienu stāvokļa pārskats. Mūsdienu ekonomiskajā situācijā arvien vairāk veidojas mikro uzņēmumi , ģimenes uzņēmumi nelielas SIA, kā arī daudzi uzsāk biznesu kā individuālā darba veicēji. Šiem uzņēmīgajiem cilvēkiem arvien biežāk nepieciešamas vienkāršas, kvalitatīvas mājas lapas un lēti interneta risinājumi, kas lielām IT kompānijām un programmētājiem ar stāžu nav interesanti zemās peļņas dēļ. Šeit parādās brīva biznesa niša jaunajiem programmētājiem, kā arī vajadzība pēc vienkārša, bet tai pašā laikā paplašināma un kvalitatīva programmēšanas produkta un vienkāršiem programmēšanas rīkiem. Uz šodienu eksistē 3 pieejas interneta aplikāciju izveidei un katrai no tām ir savi plusi un mīnusi: Tīrs kods CMS Framework Plusi: Elastīgākais, Var iztikt bez Gatavas Funkcionālākais, programmēšanas, biblotēkas, Ātrākais darbībā, Daudz Nosaka konkrētu „Tīrākais”, paplašinājumu, pārdomātu Var rakstīt kodu Ātrs ja ir tam arhitektūru, bez nekādiem uzdevumam Programmas var ierobežojumiem paredzēts, veidot no un arhitektūras, Daudz gatavu gataviem Nav nekā lieka risinājumu, „ķieģeļiem”, kodā. Praktiski jebkurš Diezgan elastīgs, var labot. Citiem viegli saprotams kods, Laba dokumentācija. Mīnusi: Daudz jātestē, Paredzēts Elastības ziņā Jāoptimizē, konkrētiem mazāk elastīgs Darbietilpīgs, uzdevumiem, nekā tīrs kods, Ļoti labi jāzina Vismazāk Nevar iztikt bez programmēšana, paplašināms programmēšanas, Nav noteiktas nestandarta Citiem viegli arhitektūras, lietām, saprotams. Citiem gūti Visvairāk atkarīgs saprast kodu. no izstrādātājiem. 4
  • 5. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Ņemot vērā augstāk minēto tabulu, lai izveidotu profesionālu lapu un pamatu tālākām izstrādnēm, izvēle tika pieņemta par labu framework arhitektūrai. Pēc interneta mājaslapas http://www.phpframeworks.com statistikas tika apskatīti pieci populārākie frameworki: 1. http://codeigniter.com/ 2. http://www.yiiframework.com/ 3. http://cakephp.org/ 4. http://framework.zend.com/ 5. http://www.symfony-project.org/ Pēc aprakstiem framework mājas lapās un citos interneta resursos par pamatu projektam tika izvēlēts ņemt CodeIgniter framework (CI) šādu īpašību dēļ: 1. Lietotājam draudzīgs, viegli apgūstams; 2. Salīdzinoši mazs pēc izmēra; 3. Labi dokumentēts (arī krievu valodā); 4. Ātrs; 5. Ar pietiekošu funkcionalitāti un viegli paplašināms. CodeIgniter ieguvis plašu atzinību par savu nelielo, kompakto izmēru, un ātrumu, un ir kļuvis par iecienītāko daudzu izstrādātāju vidū. Tam pastāv plaša dokumentācija un liels lietotāju skaits, ar labu atbalstu to vidū. 5
  • 6. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Augstāk minētās īpašības pilnībā atbilst projekta filozofijai – vienkāršiem, efektīviem un saprotamiem interneta aplikāciju risinājumiemiem uz profesionālas labi dokumentētas viegli apgūstamas programmatūras bāzes. Gadījumā, ja ar laiku pietrūktu funkcionalitāte kā nākošie varētu tikt izmantoti: 1. Symfony framework, kura iespējas pietiek gandrīz jebkādas sarežģītības pakāpes WEB projektu izstrādei; 2. Zend framework, kurš izstrādāts tajā pašā kompānijā kur PHP programmēšanas valoda, dziļi integrējas tajā un līdz ar to, tas kļuvis par tādu kā rūpniecisko standartu. Ņemot vērā to, ka pamata programmēšanas principi pielietojot frameworkus ir līdzīgi, tad ar laiku pāriet uz Symfony vai Zend framework nebūtu pārāk sarežģīts process, pie nosacījuma, ka labi būs apgūta CodeIgniter frameworka lietošana un tā darbības principi. Šī projekta mērķis tomēr ir izmantot pēc iespējas vieglāk apgūstamu programmēšanas vidi. Šajā ziņā CodeIgniter frameworks ir vispār atzīts līderis pasaulē, jauno programmētāju un izstrādātāju vidū. 6
  • 7. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Uz CodeIgniter frameworka bāzes ir izveidotas arī daudzas satura pārvaldības sistēmas, angliski - content management system, turpmāk tekstā CMS. Satura pārvaldības sistēma (CMS) ir programmatūra, kura ļauj vienlaikus vairākiem lietotājiem dažādus teksta vai cita veida dokumentus izveidot, apstrādāt un organizēt. Visbiežāk CMS tiek saistīts ar internetu. Autori var šo programmu izmantot arī bez jebkādām programmēšanas valodu zināšanām un nereti tieši internetā izveidot jaunus tekstus, papildināt tos ar bildēm, video vai skaņām un publicēt. Šajā sakarā par Contentu sauc visu to informāciju, kas būs redzama. Šīs sistēmas parasti sastāv no divām daļām : 1. Contenta – jeb internetā vai intranetā redzamās daļas, kas domāta parastajiem lietotājiem un kuri var pat nenojaust, ka tiek lietota CMS. 2. Vadības paneļa – kas pieejams tikai administratoram un caur kuru reģistrējoties sistēmā iespējams veikt izmaiņas contenta, jeb mājas lapas redzamajā daļā. Galvenais ieguvums no CMS ir tas, ka mājas lapas administrators var nebūt programmētājs. Mājas lapas administrators var būt arī pats klients, kam šī lapa veidota. Tas ir milzīgs plus par labu izvēlēties arī kādu no CMS. Šī iemesla dēļ tika apkopoti un izanalizēti tie CMS, kas izmanto CodeIgniter frameworku (dati ņemti no oficiālās CI mājaslapas, to īss apraksts netiek tulkots): EgyptCMS An easy to use base for designers with a default auth system, database and more. PyroCMS Lightweight, themeable and dynamic, PyroCMS is perfect for CodeIgniter developers to kickstart your projects. 7
  • 8. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis IonizeCMS Lonize is a Content Management System base on CodeIgniter. Easy, powerful and modular, Ionize is build by webdesigners for webdesigners. MaxSiteCMS WordPress-like blog CMS. In heavy development. Documentation is in Russian only for now. FUELCMS An easy, flexible, empowering Content Management System for rapid development that transforms your CodeIgniter projects into client manageable brilliance. CODEFIGHTCMS Simple multiple website manager. Kā labāko CMS uz CodeIgniter bāzes varētu minēt expressionengine CMS no saita http://expressionengine.com , kuru izstādā tā pati komanda, kas izstrādā pašu framework. CMS ir ļoti labi nostrādāts, funkcionāls un ar 100% CodeIgniter savienojamību. Tā vienīgais trūkums – tā ir pa maksu (100-300$) un tādēļ neder šim projektam, bet varētu tikt izmantota nākotnē. Šī framework devīze ir: Commercial Product + Open Source = Perfection A SIMPLE MODEL WHERE EVERYBODY WINS! 8
  • 9. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Šajā projektā izmantotajai CMS bija izvirzīti vairāki nosacījumi: 1. Bezmaksas; 2. Iespēja izmantot vienlaicīgi gan CMS gan CI funkcionalitāti; 3. Pilns UTF-8 atbalsts un iespēja viegli izmantot dažādas valodas; 4. Mazs apjoms un liela ātrdarbība; 5. Viegla pāreja no vienas versijas uz otru; 6. Vienkārša administrācija admin panelī; 7. Paplašināšanas iespējas ar moduļiem un tēmām; 8. Plašs lietotāju un izstrādātāju loks; 9. Laba dokumentācija gan, krievu gan angļu valodās; 10.Iespēja viegli pievienot citu izstrādātāju PHP skriptus; 11.Loģiska, viegli apgūstama un saprotama arhitektūra; 12.Iespēja izveidot jebkura izskata ādiņas. Izvērtējot un notestējot vairākus populārākos CMS, izvēle krita uz MaxSite CMS, kurš praktiski vienīgais atbilda visām izvirzītajām prasībām. Otrs nemazāk nozīmīgs faktors bija tas, ka izstrādātājiem ir ļoti veiksmīgi veidots un pārdomāts saits, ar ļoti plašu informācijas klāstu: http://max-3000.com/ Šeit var izlasīt pilnu MaxSite CMS iespēju aprakstu, kas pārpublicēts no oficiālās mājas lapas autora interpretācijā: Простая установка. Следуя несложной инструкции нужно указать параметры базы данных. Дальше инсталляция пройдет автоматически. 9
  • 10. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Скорость работы. За счет продуманной архитектуры системы, MaxSite CMS работает очень быстро. По некоторым оценкам WordPress работает примерно в 5-10 раз медленнее. Небольшой размер системы. В распакованном виде это примерно 5Мб. Это с учетом того, что в комплекте 84 плагина. Небольшая ресурсоемкость. В среднем MaxSite CMS потребляет (php) около 1- 6Мб (см. для примера статистику потребления в подвале этого сайта). И это при всех включенных плагинах. Это даже не стоит сравнивать с WordPress, который обычно требует от 9 (ранних версий) до 32Мб (последних версий, а в wp- админке и все 256Мб). MaxSite CMS использует фреймворк CodeIgniter. Поэтому разработчику автоматически доступны богатые средства CodeIgniter: библиотеки, хелперы, API для работы с базой данных и т.д. Стоит также отметить, что CodeIgniter считается одним из самых быстрых и удобных фреймворков. Развитая система кэширования. Кэширование - часть системы и механизм кэширования очень простой. Поэтому у него высокая скорость и легкость использования в произвольных частях кода. Гибкая система типов данных. На MaxSite CMS можно забыть про ограничения WordPress на типы данных и страниц. Вы можете придумывать свои типы данных, свою систему навигации и т.д. MaxSite CMS не выполняет лишнего кода. При инициализации системы выполняется только «ядро» и подключаются активированные плагины. После этого управление передается шаблону. Поэтому система будет выполнять ровно тот код, который вы ей укажете. Это принципиально отличается от WordPress, в котором выполняется весь код, получаются все данные, а уже потом у разработчика есть возможность что-то с ним делать. С MaxSite CMS у вас полный контроль. Шаблоны для MaxSite CMS не сложнее вордпрессовских. Последние версии шаблона default позволяют другим шаблонам использовать его функциональность для вывода разных типов данных. Таким образом, создание шаблона для MaxSite CMS по сути сводится к обычной верстке. SEO-friendly. В MaxSite CMS можно указывать title, keywords, descriptions для каждой страницы. Можно указать дефолтные значения, а также различные комбинации. Есть возможность указывания canonical, адреса rss, а также запретить использование «лишних» адресов (исключение дублирования контента). Поддерживаются noindex и nofollow для ссылок. Есть плагины для перелинковки (автоматической по заголовкам) и внутренними ссылками. Мета-данные страниц имеют структуру ini-файла. За счет этого добавить метаполе (дополнительную информацию к странице) можно вообще без программирования. Опции, настройки также могут быть выполнены в виде ini-файла. Это значительно упрощает их добавление/редактирование. Система разрешений авторов работает по принципу групп. Вы можете создавать разные группы и отмечать нужные для них действия. Система комментирования позволяет оставлять комментарии анонимам, а также т.н. комюзерам - зарегистрированным. Причем регистрация происходит автоматически в момент комментирования. Данные комюзеров хранятся в отдельной базе и позволяют на её основе выполнять любые манипуляции. Главный плюс такого деления в том, что у комюзеров нет доступа в админ- панель. 10
  • 11. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Полная поддержка виджетов. В MaxSite CMS создать виджет очень просто за счет продуманного API. В отличие от WordPress'а, который позволяет устанвливать только один виджет для одного плагина, в MaxSite CMS любой виджет может использоваться сколько угодно раз. MaxSite CMS расширяется за счет плагинов. В отличие от бардака WordPress, в MaxSite CMS используется строгое именование и за счет вспомогательных функций плагины получаются небольшими. Для примера, плагин антиспама, который имеет свою страницу настроек имеет размер всего 13кб. Плагины в которых только виджеты - еще меньше - 2-5Кб. Шаблоны для админ-панели очень просты. Например дефолтный шаблон - это 9Кб. В шаблоне используется нормальный html и css, в которых разберется даже школьник. Поэтому, если потребуется сделать свой «фирменный» стиль админки, проблем не будет. Функциональность админ-панели определяется точно такими же плагинами. Разница только в том, что эти плагины прописаны в коде и автоматически активируются при входе в админ-панель. Таким образом любой плагин может добавить себя в админ-панель. При этом все они используют единый несложный API. В админ-панели существует возможность настраивать шаблон. В отличие от WordPress, где данная возможность реализуется очень сложно, в MaxSite CMS для этого достаточно разместить в каталоге шаблона один файл options.ini. Таким образом шаблон можно сделать полностью настраиваемым. Для создания плагинов в комплекте поставки присутствуют файлы template-... для разных вариантов: только виджет, просто плагин, плагин с настройкой в админ-панели, полный вариант. На данный момент в комплекте следующие плагины: Блокировка по IP, Антиспам, BBCode, Календарь, Капча антиспам, Облако рубрик, Вывод рубрик, Кнопки для комментирования, Счетчик переходов по ссылке, Виджет событий, Виджет Избранное, Последние комментарии, Последние записи, LightBox с галереей (картинки загружаются и автоматически подготавливаются для галереи, код галереи генерируется автоматически), Виджет для ссылок, Виджет для формы логина, Самое комментируемое, Самое читаемое, Пагинация (листание страниц), Плагин перелинковки страниц, Преобразование PRE в список OL, Псевдокод, Случайные страницы, Цитаты или случайный текст, Рейтинг страниц в виде звездочек, Форма поиска, Карта сайта (архив), Смайлики, Облако меток, Текстовый блок (html/php), Twitter (rss-агрегатор) и другие. Плагины постоянно добавляются, поэтому их количество будет только увеличиваться. В комплекте поставки входят magpierss и jquery (+UI). Бесплатность и открытость. Лицензия GNU GENERAL PUBLIC LICENSE - 2. Kā papildus var minēt to, ka: 1. iespējams izmantot standarta CI funkcionalitāti, 2. lapās ievietot iepriekš sagatavotu HTML kodu, 3. lapās ievietot iepriekš sagatavotu PHP kodu. 11
  • 12. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Prasības darbam. Pirms instalācijas ieteicams nokopēt un uzstādīt Notepad++ no saita http://notepad-plus-plus.org/. Šo teksta redaktoru ieteicams lietot, jo viss kodējums ir UTF-8. Lai izveidotu projekta mājas lapu, izveidojiet Linux serveri (ieteicams debian) no saita http://www.debian.org/. Uzstādiet Apache web serveri un failā httpd.conf atļaujiet : LoadModule rewrite_module modules/mod_rewrite.so. Uzstādiet MySQL ar UTF8 un MyISAM. Uzstādiet PHP ar bibliotēku mbstring. CodeIgniter frameworks ir jau iekļauts MaxSite CMS instalācijā. 12
  • 13. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Līdz ar to sagatavošanās darbi ir veikti un varat pāriet pie MaxSite CMS instalācijas, nokopējot tā pēdējo versiju no saita: http://max-3000.com. Atarhivējiet nokopēto failu un visas mapes pārkopējiet uz serveri. Tālāk veiciet nepieciešamās izmaiņas un configurāciju: atvērt application/config/database.php-distr uzstādīt db pieejas parametrus priekš cache uzstādīt $db['default']['cache_on'] = TRUE; $db['default']['cachedir'] = "/application/cache/db"; pārsaukt par database.php. atvērt application/maxsite/mso_config.php-distr ierakstīt frāzi šifrēšanai ja to izmaina paroles nav derīgas pārsaukt mso_config.php uzstādīt /application/cache/ /application/cache/db /application/cache/html /application/cache/rss tiesības 777 uzstādīt /sitemap.xml tiesības 666 (izmanto google indeksācijai) 13
  • 14. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis uzstādīt /uploads/ /uploads/_mso_float /uploads/_mso_i /uploads/mini tiesības 777 failā robots.txt-distr ierakstīt Host: site.com saglabāt kā robots.txt pārsaukt /.htaccess-distr par .htaccess pievienot failā .htaccess pēc «RewriteEngine on»: RewriteCond %{HTTP_HOST} ^www.site.com RewriteRule ^(.*)$ http://site.com/$1 [R=permanent,L] palaizt http://jūsusaits/ un izpildām prasīto atvērt /application/maxsite/mso_config.php izmainīt $mso_install = true; 14
  • 15. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Izvēlēto izstrādāšanas tehnoloģiju apraksts. 1. No sākuma apskatīsim CodeIgniter struktūru: (šī ir mājas direktorija piemēram WWW) /System (paša framework sistēmas faili) /Application ( visa Jūsu izstrāde jāveic šeit!!!) /Config /Controllers /Models /Views /Helpers / ... /User_guide (šo mapi var dzēst ārā, tie ir help faili) index.php (pats galvenais fails) 2. Konfigurācija: Visa konfigurācija ir mapē /application/config/ Config.php base_url (norāda saita adresi) Routes.php default_controller (norāda,kurš kontrolieris atveras) Database.php hostname, username, password, database (db parametri) 15
  • 16. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis 3. Controllers: Katra kontroliera klasē rakstītā metode ir pieejama kā www lapa, bet viss teksts, ko metode izdrukā, tiek nogādāts pārlūkprogrammai: kontrolieris.php class Kontrolieris extends Controller { function laiks() { $data["laiks"]=mktime(); $this->load->view("skats",$data); } } 4. Views: Lai kontrolierī nebūtu jāizmanto “echo”, izvades līmeņa sagatavošanai lieto skatus. Ielādējot skatu, kontrolieris padod līdzi masīvu $data ar parādāmajiem datiem. Skati satur daudz HTML un mazliet PHP, kas lasa informāciju no $data un iekļauj, kur nepieciešams. skats.php <html> <head></head> <body> <div id="time"> <?php echo $time ?> </body></html> 16
  • 17. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis 5. Skata izsaukšana kontrolierī: $data["laiks"]=mktime(); $this->load->view("skats",$data); 6. Adrešu uzbūve: http://www.codeigniter.lv/{klase}/{funkcija}/{parametri} 7. Models: Models ir CodeIgniter papildus slānis. 8. Helpers: Helper ir dažādu veidu palīdzētāji, kas atvieglo koda rakstīšanu. Tāds ir īss pārskats par CodeIgniter darbību. Atšķirība starp CI 1.x versiju un 2.x versiju: VERSION 1.7.2 CONTROLLERS class Contact extends Controller { function Contact() { parent::Controller(); } } 17
  • 18. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis MODELS class Contact_model extends Model { function Contact_model() { parent::Model(); } } VERSION 2.0.0 CONTROLLERS class Contact extendsCI_Controller { function__construct() { parent::__construct(); } } Models class Contact_model extendsCI_Model { function__construct() { parent::__contruct(); } } 18
  • 19. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Vēl jāpiemin šādas mapes: /Application /errors/ – kļūdu paziņojumi; /Application /libraries/ – bibliotēkas, kas attiecas tikai priekš jūsu aplikācijas; /Application /hooks/ – huki atļauj izmainīt paša CI kodola darbību. CodeIgnitor frameworks būvēts pēc MVC arhitektūras. MVC (Model-View-Controller) sadala sistēmu trijās daļas - datu ievade, datu apstrāde, datu attēlojums, kur katra daļa risina atsevišķu uzdevumu. Loģiskā komponente Modelis iekapsulē datu kodolu un pamata funkcionalitāti, kas nav atkarīga no attēlojuma. Loģiskā komponente Skats ir atbildīga par Modeļa datu attēlošanu, atbilstoši lietotāja definētai datu prezentācijas formai. Loģiskā komponente Kontrolleris saņem un nolemj kā apstrādāt ziņojumus, kurus saņem no lietotāja, un translē signālus komandās, kas tiek sūtītas Modelim vai Skatam. 19
  • 20. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis CodeIgniter frameworkā Model-View-Controller ir realizēts šādi: 20
  • 21. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis MaxSite CMS uzbūves shēmas: 21
  • 22. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis 22
  • 23. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis MaxSite CMS darbības princips (autora raksts): 1. Входящий адрес принимает CodeIgniter. Он сам определяет что с ним делать. Но настраиваем его мы так, чтобы все запросы автоматом передавались нашему контролеру. 2. Наш контролер, благодаря CodeIgniter, сразу вполняет функции типа. Например если в адресе указывается «archive», значит будет выполняться функция «archive» (с таким же названием). При этом у нас в конструкторе сразу подключается библиотека основных функций CMS, а также считываются основные настройки. (Пока они сделаны в виде файла, но должны храниться в БД.) Здесь же происходит интересная вещь: если указывается несуществующая функция (тип), то стандартно CodeIgniter выдает сообщение об ошибке (404). Нас это не устраивает, поэтому я немного изменил CodeIgniter и теперь управление передается не на страницу ошибки, а на функцию контролера page_404(). И если этой функции нет, то уже на стандартную 404-страницу. Таким образом мы можем подключить свой обработчик несуществующих типов. Но это еще не все. Если нам нужно подключить свой тип страницы, то не обязательно переписывать контролер. Вместо этого контролер сам проверяет существование php- файла с именем входящего типа. И если есть, то подключаем как обычно через require(). Если же нет, то передаем управление на главную страницу (функция home()). Таким образом, если возникнет необходимость расширить типы данных, то делается это очень просто: создается php-файл с именем типа и в нем несколько строк, где указывается тип и вьвер - все данные автоматом передадутся по цепочке в файл шаблона. 3. В контролере заполняется специальная структура-массив, где указывается тип страницы. Так же здесь передается входящий url и его сегменты. В общем эта информация нам нужна для того, чтобы в самом шаблоне можно было бы сразу получить файл типа страницы. 4. После контролера управление передается на вьювер (view). Поскольку у нас уже есть своя структура с нужными для шаблона данными, то мы используем один- единственный вьювер. В нем мы передаем наши переменные и смотрим текущий шаблон. Шаблон указывается в конфигурации и совпадает с каталогом. По-умолчанию используется шаблон «default». Правда здесь стоит сделать отдельное замечание. Поскольку мы сразу же предполагаем, что у нас будет использваться RSS, то мы будем анализировать входящий адрес на наличие «feed» в конце. И если таково имеется, то управление будем передавать на другой вьювер - «feed». 5. В наш шаблон всегда передается в файл index.php. Всегда. В нем выполняется селектор типа страницы (тот который мы получили в начале). Выглядит это так: if ( is_type('archive') ) require('archive.php'); 23
  • 24. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis elseif ( is_type('author') ) require('author.php'); elseif ( is_type('category') ) require('category.php'); elseif ( is_type('home') ) require('home.php'); elseif ( is_type('link') ) require('link.php'); elseif ( is_type('page') ) require('page.php'); elseif ( is_type('page_404') ) require('page_404.php'); elseif ( is_type('search') ) require('search.php'); elseif ( is_type('tag') ) require('tag.php'); else require('page_404.php'); В зависимости от типа мы подключаем нужные нам файлы . 6. Уже в этом подключаемом файле мы и будем выполнять запросы к БД (точнее это будет набор готовых функций), заполнять начальные сведения для header страницы и после этого выполняем нужный нам вывод (типа TheLoop). Вот пример home.php: <?php # подготовка данных $MSO->title = 'Главная страница сайта'; $MSO->keywords = 'Ключевики'; $MSO->description = 'Описание сайта для этой страницы'; # получение данных ... # начало вывода # подключается header и начало html-дизайна require('main-start.php'); ?> Home - все что угодно - сам вывод данных <?php # завершение html, footer и т.п. require('main-end.php'); ?> 24
  • 25. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Projekta izstrāde. Projekta izstrāde sastāv no vairākām daļām: 1. Uzstādīt un nokonfigurēt MaxSite CMS (To jūs jau izdarījāt). 2. Lai samazinātu SQL-pieprasījumus, ieslēgt CodeIgniter kešošanu. Lai to izdarītu failā database.php ierakstam: $db['default']['cache_on'] = TRUE; $db['default']['cachedir'] = "system/cache/db";. 3. Šablona izveide. (Ja gribam, ņemam kādu no gatavajiem). Izveidojam katalogu /templates/mini/. Tajā izveidojam failus (vai varam pārkopēt no /default mapes): info.php – informācija par šablonu index.php – failu tipu dispičers functions.php – sidebar funkcionalitāte footer.php - kājene header.php - galvene sidebar1.php – sidebar( 1 sānu panelis). Šos failus varēsim izmantot arī turpmākajos projektos. struct.css – šis fails būs struktūras (karkasa) dizaina apraksts. style.css – pārējais noformējums. Tiem jābūt ierakstītiem failā header.php. Saita mainīgā daļa tiks izvadīta no pašas sistēmas. Nemainīgā daļa - no main-start.php , main-end.php failiem. Šablona struktūra var būt jebkāda, vienīgais nosacījums jābūt failam - index.php. Ko izvadīt tajā – atkarīgs no jūsu vajadzībām. Tālāk jāizveido faili main-start.php un main-end.php ar vajadzīgo html kodu. Tagad ieslēdzam šablonu admin panelī un skatamies rezultātu. Pārējais darbs saistīts ar CSS stiliem un noformēšanu. 25
  • 26. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Piemēri: main-start.php #pieslēdzam header require_once(getinfo('template_dir') . 'header.php'); <div id="container"> #container <div id="headers"> <div id="headers-wrap"> #papildus priekš IE <div id="header1">...</div> <div id="header2">...</div> <div id="header3">...</div> </div><!-- div id="headers-wrap" --> </div><!-- div id="headers" --> <div id="sub-container"> #bloks saturam <div id="wrapper"> <div id="content"> #bloks tekstam <div class="content-all"> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Šeit būs mainīgā daļa ko izdos sistēma xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 26
  • 27. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis main-end.php </div><!--div class="content-all"--> </div><!-- div id="content" --> </div> <!-- div id="wrapper" --> #saidbar <div id="sidebars"> <div id="sidebar1"> <div class="wrap"> <?php require(getinfo('template_dir') . 'sidebar-1.php'); ?> </div><!-- div class=wrap --> </div><!-- div id="sidebar-1" --> </div><!-- div id="sidebars" --> </div><!-- div id="sub-container" --> <?php require(getinfo('template_dir') . 'footer.php'); ?> </div><!-- div id="container" --> </body> </html> 27
  • 28. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Stili: struct.css * {padding: 0; margin: 0;} html, body {margin: 0; padding: 0;} body {font: 9pt/1.3em Verdana;} #container {width: 900px; margin: 0 auto;} #header1 {background: #DDD; height: 100px;} #header2 {background: #EEE; height: 50px;} #sub-container {float: left;} #wrapper {float: left; width: 100%;} #content {margin: 0 0 0 300px;} #sidebar kreisa pusē #sidebars {float: left; width: 300px; margin-left: -100%;} vai #content {margin: 0 300px 0 0;} #sidebar labā pusē #sidebars {float: left; width: 300px; margin-left: -300px;} style.css - šo failu variet veidot pēc vajadzības. 4. CodeIgniter funkciju pieslēgšana. Lai pieslēgtu Codeigniter standarta controlieri uz adresi example.lv/ci/..... failā routes.php rakstam: $route['default_controller'] = "maxsite"; $route['my:any'] = "welcome"; Tagad Codeigniter standarta controlieris piejams pēc adreses: example.lv/ci/..... 28
  • 29. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis 5. Valodu maiņa. Tulkošanai padodas visas frāzes, kas tiek rādītas ar ar funkciju t('фраза', __FILE__);. Tulkošanas fails atrodas tajā pašā katalogā /language/, kur tulkojamais: /common/language/ sistēmas failiem, /admin/language/ admin paneļa failiem, /common/language/plugins/ plugin failiem, /common/language/templates/ template failiem. Faila nosaukums sakrīt ar valodas nosaukumu: en.php - angļu lv.php - latviešu Valodu nosaka failā: mso_config.php < $MSO->language = 'lv'; //latviešu. > Tulkojamā lv.php faila struktūra: < if (!defined('BASEPATH')) exit('No direct script access allowed'); # ceļš/xxx.php $lang['фраза1'] = 'tulkojums1'; $lang['фраза2'] = 'tulkojums2'; > 6. Citi paplašināšanas veidi: MaxSite CMS iespējams paplašināt arī izmantojot parastus HTML vai PHP failus, kā arī citu valodu failus. Šim nolūkam tiek izmantoti speciāli tegi, starp kuriem var ievietot savu kodu. Var arī ielikt savu kodu bet neizpildot to, tā lai parādās koda piemērs ar sintakses izgaismojumu. 29
  • 30. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis 7. Databāze. Databāze tiek izveidota automātiski pie sākotnējās saita instalācijas. Šajā projektā aprubis_ ar sekojošām tabulām, kuras var redzēt no SQL faila datubāzes izveidei: CREATE DATABASE IF NOT EXISTS `vdstvr2q_max` /*DEFAULT CHARACTER SET utf8 */; USE `vdstvr2q_max`; CREATE TABLE IF NOT EXISTS `mso_cat2obj` ( `cat2obj_id` bigint(20) NOT NULL AUTO_INCREMENT, `page_id` bigint(20) NOT NULL DEFAULT '0', `category_id` bigint(20) NOT NULL DEFAULT '0', `links_id` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`cat2obj_id`), KEY `category_id` (`category_id`), KEY `page_id` (`page_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_category` ( `category_id` bigint(20) NOT NULL AUTO_INCREMENT, `category_id_parent` bigint(20) NOT NULL DEFAULT '0', `category_type` enum('page','links') NOT NULL DEFAULT 'page', `category_name` varchar(255) DEFAULT '', `category_desc` longtext, `category_slug` varchar(255) DEFAULT '', `category_menu_order` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`category_id`), KEY `category_slug` (`category_slug`), KEY `category_id_parent` (`category_id_parent`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_comments` ( `comments_id` bigint(20) NOT NULL AUTO_INCREMENT, `comments_page_id` bigint(20) NOT NULL DEFAULT '0', `comments_parent_id` bigint(20) NOT NULL DEFAULT '0', `comments_users_id` bigint(20) NOT NULL DEFAULT '0', `comments_comusers_id` bigint(20) NOT NULL DEFAULT '0', `comments_author_name` varchar(255) NOT NULL, `comments_author_ip` varchar(100) NOT NULL DEFAULT '', `comments_date` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `comments_content` longtext, `comments_rating` bigint(20) NOT NULL DEFAULT '0', `comments_approved` bigint(20) NOT NULL DEFAULT '0', `comments_type` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`comments_id`), KEY `comments_page_id` (`comments_page_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_comusers` ( `comusers_id` bigint(20) NOT NULL AUTO_INCREMENT, `comusers_email` varchar(255) DEFAULT '', `comusers_password` varchar(255) DEFAULT '', `comusers_nik` varchar(255) DEFAULT '', `comusers_allow_publish` enum('0','1') NOT NULL DEFAULT '0', `comusers_count_comments` bigint(20) NOT NULL DEFAULT '0', `comusers_icq` varchar(255) DEFAULT '', `comusers_url` varchar(255) DEFAULT '', `comusers_msn` varchar(255) DEFAULT '', `comusers_jaber` varchar(255) DEFAULT '', 30
  • 31. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis `comusers_skype` varchar(255) DEFAULT '', `comusers_date_registr` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `comusers_last_visit` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `comusers_date_birth` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', `comusers_avatar_url` varchar(255) DEFAULT '', `comusers_description` longtext, `comusers_ip_register` varchar(50) DEFAULT '', `comusers_language` varchar(5) DEFAULT 'ru', `comusers_skins` varchar(255) DEFAULT '', `comusers_notify` enum('0','1') NOT NULL DEFAULT '1', `comusers_admin_note` longtext, `comusers_activate_string` varchar(255) DEFAULT '', `comusers_activate_key` varchar(255) DEFAULT '', PRIMARY KEY (`comusers_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_groups` ( `groups_id` bigint(20) NOT NULL AUTO_INCREMENT, `groups_name` varchar(255) NOT NULL DEFAULT 'groups', `groups_rules` longtext, PRIMARY KEY (`groups_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_links` ( `links_id` bigint(20) NOT NULL AUTO_INCREMENT, `links_url` varchar(255) DEFAULT '', `links_name` varchar(255) DEFAULT '', `links_desc` longtext, `links_rel` varchar(255) DEFAULT '', `links_target` varchar(255) DEFAULT '', `links_menu_order` bigint(20) NOT NULL DEFAULT '0', `links_visible` bigint(20) NOT NULL DEFAULT '1', `links_rating` bigint(20) NOT NULL DEFAULT '0', `links_image` varchar(255) DEFAULT '', `links_rss` varchar(255) DEFAULT '', PRIMARY KEY (`links_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_meta` ( `meta_id` bigint(20) NOT NULL AUTO_INCREMENT, `meta_key` varchar(255) DEFAULT NULL, `meta_id_obj` bigint(20) NOT NULL DEFAULT '0', `meta_table` varchar(255) DEFAULT '', `meta_value` longtext, `meta_desc` longtext, `meta_menu_order` bigint(20) NOT NULL DEFAULT '0', `meta_slug` varchar(255) DEFAULT NULL, PRIMARY KEY (`meta_id`), KEY `meta_key` (`meta_key`), KEY `meta_table` (`meta_table`), KEY `meta_id_obj` (`meta_id_obj`), KEY `meta_value` (`meta_value`(256)) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_options` ( `options_id` bigint(20) NOT NULL AUTO_INCREMENT, `options_key` varchar(255) NOT NULL DEFAULT '', `options_value` longtext, `options_type` varchar(255) DEFAULT 'general', PRIMARY KEY (`options_id`), KEY `options_key` (`options_key`), 31
  • 32. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis KEY `options_type` (`options_type`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_page` ( `page_id` bigint(20) NOT NULL AUTO_INCREMENT, `page_type_id` bigint(20) NOT NULL DEFAULT '1', `page_id_parent` bigint(20) NOT NULL DEFAULT '0', `page_id_autor` bigint(20) NOT NULL DEFAULT '1', `page_title` varchar(255) DEFAULT 'no-title', `page_content` longtext, `page_content2` longtext, `page_date_publish` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `page_date_dead` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `page_last_modified` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `page_status` enum('publish','draft','private') NOT NULL DEFAULT 'publish', `page_menu_order` bigint(20) NOT NULL DEFAULT '0', `page_slug` varchar(255) DEFAULT '', `page_view_count` bigint(20) NOT NULL DEFAULT '0', `page_rating` bigint(20) NOT NULL DEFAULT '0', `page_rating_count` bigint(20) NOT NULL DEFAULT '0', `page_password` varchar(255) DEFAULT '', `page_comment_allow` bigint(20) NOT NULL DEFAULT '1', `page_ping_allow` bigint(20) NOT NULL DEFAULT '1', `page_feed_allow` bigint(20) NOT NULL DEFAULT '1', `page_min_user_level` bigint(20) NOT NULL DEFAULT '0', `page_allow_group` bigint(20) NOT NULL DEFAULT '0', `page_lang` varchar(255) DEFAULT '', PRIMARY KEY (`page_id`), KEY `page_type_id` (`page_type_id`), KEY `page_date_publish` (`page_date_publish`), KEY `page_menu_order` (`page_menu_order`), KEY `page_rating` (`page_rating`), KEY `page_view_count` (`page_view_count`), KEY `page_id_autor` (`page_id_autor`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_page_type` ( `page_type_id` bigint(20) NOT NULL AUTO_INCREMENT, `page_type_name` varchar(255) NOT NULL, `page_type_desc` longtext, PRIMARY KEY (`page_type_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_sp_answers` ( `a_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `a_qid` int(10) unsigned NOT NULL DEFAULT '0', `a_answer` varchar(200) NOT NULL, `a_votes` int(11) NOT NULL DEFAULT '0', `a_order` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`a_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_sp_logs` ( `l_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `l_qid` int(10) unsigned NOT NULL DEFAULT '0', `l_aid` int(10) unsigned NOT NULL DEFAULT '0', `l_ip` int(11) NOT NULL, `l_host` varchar(64) NOT NULL, `l_timestamp` int(11) NOT NULL DEFAULT '0', `l_user` varchar(64) NOT NULL DEFAULT '0', `l_userid` int(10) NOT NULL DEFAULT '0', 32
  • 33. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis PRIMARY KEY (`l_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_sp_questions` ( `q_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `q_question` varchar(200) NOT NULL, `q_timestamp` int(10) NOT NULL, `q_totalvotes` int(11) NOT NULL DEFAULT '0', `q_active` tinyint(4) NOT NULL DEFAULT '1', `q_expiry` int(10) NOT NULL DEFAULT '0', `q_multiple` tinyint(4) NOT NULL DEFAULT '0', `q_totalvoters` int(11) NOT NULL DEFAULT '0', `q_protection` tinyint(4) NOT NULL DEFAULT '1', PRIMARY KEY (`q_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `mso_users` ( `users_id` bigint(20) NOT NULL AUTO_INCREMENT, `users_login` varchar(255) DEFAULT '', `users_password` varchar(255) DEFAULT '', `users_levels_id` bigint(20) NOT NULL DEFAULT '1', `users_groups_id` bigint(20) NOT NULL DEFAULT '2', `users_first_name` varchar(255) DEFAULT '', `users_last_name` varchar(255) DEFAULT '', `users_nik` varchar(255) DEFAULT '', `users_count_comments` bigint(20) NOT NULL DEFAULT '0', `users_icq` varchar(255) DEFAULT '', `users_email` varchar(255) DEFAULT '', `users_url` varchar(255) DEFAULT '', `users_msn` varchar(255) DEFAULT '', `users_jaber` varchar(255) DEFAULT '', `users_skype` varchar(255) DEFAULT '', `users_date_registr` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `users_date_birth` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', `users_last_visit` datetime NOT NULL DEFAULT '2008-01-01 00:00:00', `users_avatar_url` varchar(255) DEFAULT '', `users_description` longtext, `users_ip_register` varchar(50) DEFAULT '', `users_show_smiles` enum('0','1') NOT NULL DEFAULT '1', `users_show_wis_editor` enum('0','1') NOT NULL DEFAULT '1', `users_time_zone` bigint(20) NOT NULL DEFAULT '7200', `users_language` varchar(5) DEFAULT 'ru', `users_skins` varchar(255) DEFAULT '', `users_notify` enum('0','1') NOT NULL DEFAULT '0', `users_admin_note` longtext, `users_activate_string` varchar(255) DEFAULT '', `users_activate_key` varchar(255) DEFAULT '', `users_rules` longtext, PRIMARY KEY (`users_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Datubāzi iespējams viegli pārnest ar šāda faila palīdzību no viena servera uz otru, ko arī izdarīju ar programmas HeidiSQL palīdzību. Atlika tikai pārkopēt www mapi un saits tika veiksmīgi iedarbināts uz cita servera. 33
  • 34. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Dokumentācija Pieejas dati glabājas 2 failos: /application/config/config.php $config['encryption_key'] = 'encryption key'; /application/config/database.php $db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'dzintars'; $db['default']['password'] = 'kasalots'; $db['default']['database'] = 'aprubis_'; Saita admin paneļa pieeja: username: nikita (admin tiesības). password: webskola ,kas glabājas datu bāzē. 34
  • 35. CodeIgniter framework un MaxSite CMS interaktīvais informācijas portāls. Izstrādātājs: Dzintars Aprubis Nobeigums un kopējie secinājumi. MaxiSite CMS uz CodeIgniter bāzes manuprāt ir viens no vislabākajiem risinājumiem jauniesācējam programmistam, lai pilnvērtīgi varētu sākt izstrādāt vienkāršus, profesionāla līmeņa saitus ar saprotamu uzbūvi, kas balstīta uz Model-View-Controller arhitektūras. Projekta spēks slēpjas tur, ka var izmantot gan CodeIgniter programmēšanas iespējas, gan HTML, PHP, gan vienkārši lietot CMS iespējas, tādējādi kombinējot dažādus programmēšanas veidus un elastīgi pielāgojoties klienta prasībām. Pats grūtākais ir izprast MaxiSite CMS un CodeIgniter darbību un konfigurācijas failus – tam vajadzīgs diezgan ilgs laiks. Šādai sistēmai ir liels potenciāls un tā strauji turpina attīstīties. Šobrīd esmu tikai ceļa sākumā, bet ceru, ka diezgan ātri gūšu labus panākumus, jo šeit redzu sava biznesa iespējas. 35