Fejlesztői Doc.:

 

FEJLESZTŐI DOKUMENTÁCIÓ

BETTLE- CorinCloud

1.5v (2014.12.01)


î¿¿

0.Ismeretek, feltételek

1. Rendszer definíció

2. Technológiai leírás

3. Működési környezet

4. Könyvtár és fájl szerkezet

5. Adatbázisszerkezet, adatkapcsolatok

6. Modelek, adat kezelők

7. Keretrendszer függvény, változó és objektumtár

8. Rendszerbeállítások (config)

8.1 app/config/config-system.php

8.2 app/config/config-db.php

8.3 app/config/config-admin.php

9. Vezérlőfájlok (controller)

9.1.    app/control/control-system.php    -    általános vezérlő

9.2.    app/control/control-web.php    -    webes nézet vezérlő

9.3    app/control/control-admin.php    -    Adminisztrációs vezérlő

9.4.    app/control/control-ajax.php    -    Ajax vezérlő

9.5.    app/control/control-popup.php    -    Popup vezérlő

10. Rendszerkönyvtár (library)

11. Bettle.php    -    központi indító

12. Backend-adminisztrációs rendszer

https://docs.google.com/a/quickstudiogroup.com/document/d/1jPbGQ29WIJF_64btnPFIH9Jhn_D6Hnm3u2b1pssAZuM/edit

13. Modulok

https://docs.google.com/a/quickstudiogroup.com/document/d/1IVNz_RYqVkV1_5Yb82JyQyqEf4h582plP8apu-C1AbY/edit

14. Megjelenítés sablonkezelő rendszer

15. Oldalkapcsolódási szerkezet

16. Vezérlő szerkezetek

16.1. Aldomain és redirect URL értelmező

17.    Sablon készítés

19.Fejlesztési irányelvek

1, Dokumentálás:

2, Eljárások:

3, Modelek



 

0.    Ismeretek, feltételek

    A keretrendszer fejlesztői dokumentációja nem terjed ki az alapvető programozási ismeretekre, ezért az alábbi fogalmak legalább középszintű ismerete szükséges az információk feldolgozásához:

Nyelvek: HTML5, PHP5, CSS3, SQL, JavaScript, JQuery, Ajax, XML

Módszerek: MVC, OOP, Modularitás, Kód dokumentálás, Sablon kezelés, SKIN, Session, Cookie, Autocomplete, Egyébi Hibakezelés, Naplózás, Adatbázis réteg, Backup, CRC ellenőrzés, Admin konfigurálhatóság, Statikus és dinamikus nyelvkezelés

Egyéb ismeretek: .htaccess, HTTP HEADER, Cache, NoSQL, REGEX, SQL inject, XSS, CSR,

1. Rendszer definíció

A keretrendszer elsődleges technikai célja, hogy a lehető leggyorsabban megjelenítse az érdeklődőknek a keresett információkat.

 

A rendszer támogatja az összes felületen a többnyelvűséget a szöveges tartalmak nyelvi fájlokban/adattáblákban tárolásával.

 

A rendszer adminisztrációk korlátozott funkciókkal a frontendbe építve is érhetőek, de a teljes körű rendszer adminisztráció csak elkülönítve a backendből érhető le.

2. Technológiai leírás

A gyors adateléréshez előre generált gyorsító tárazott listákat, találatokat használunk, melyeket kliensoldalon AJAX, XML vagy közvetlen cacheHTML betöltésével jelenítünk meg.

 

A rendszer minden fontos interakciót naplóz (Debug modul), az adatokat (Adatkezelő modul) több szinten tárolja és kérdezi le (SQL,XML,CACHE). Teljes körű adat és behatolásvédelem, minden beérkező input szűrve és ellenőrizve, ahol szükséges white és black listák használata, rendszeres (napi) adatbázis mentés, változásfigyelő rendszer (CheckCRC modul).

 

A portál PHP nyelven, MVC alapokon, opensource keretrendszerek nélkül, egyedi modulok (osztályok) fejlesztésével, AJAX, JQUERY felhasználásával valósul meg. Szerver oldalon a vezérlést kizárólag a PHP fájlok végzik. Adatokat SQL adatbázisban valamint XML-ben tárolja. Az oldal megjelenítésénél a portál cache technikát (html, sql) is használ. A legmagasabb szintű cache rendszer használatakor az adatlekérdezések (SELECT) kizárólag az XML fájlokból történnek, SQL-ben csak az INSERT, UPDATE műveletek kerülnek végrehajtásra. A rendszer ideiglenesen adatbázis kapcsolat hiányában is működőképes néhány funkció kivételével (insert, update).

 

A rendszer objektumorientáltan modulárisan épül fel. Minden elinduló modul (kisbetüvel) az APP::Loader(”˜modulnev”™)-> objektumból érhető el, ez az adott modul betöltését is elvégzi ha szükséges, pld a lekérdezés adatbázisművelet a APP::Loader(”˜db”™)->Query (). A JS és CSS fájlokat konfigurációban beállítva vagy függvénnyel betöltve érhetjük el: APP::Loader('template')->addJS( APP::getDATA('DIR','SKIN').'js/jquery.js' ).

 

Változókat az APP::setDATA(”˜tömbnév”™,”™mező”™,”™érték”™) -kel tudunk globálisan menteni, és kiolvasható az APP::getDATA(”˜tömbnév”™,”™mező”™)-vel! A hibakeresés az APP::setDATA(”˜DEBUG”™,”™xy”™,”™asdf”™) tömbbe írt változókat jeleníti meg, valamint jelzi a betöltött modul-okat, library-kat, template-ket, GET, POST paramétereket és az adatbázis műveleteket, végül kiírja az összes PHP hibát (notice!)

 

Az MVC szemlélet szerint a class-okban lehetőség szerint csak a vezérlő szerkezetek és az adatbázis művelet különválasztva szerepelnek. A megjelenítést minden esetben egy template fájl betöltésével $maintemp = APP::Loader('template')->loadFile( 'content/viewer' ) és a változók cserélésével $maintemp = APP::Loader('template')->replaceVar( 'REGFORM', ”˜xy”™, $maintemp ) valósítjuk meg szintén külön eljárásban. Működési logikája: egy XY vezérlő eldönti, hogy kell neki adat, ezt lekérdezi egy getDBXY adatkezelőtől, mely visszaadja az eredménytömböt, majd ezt a vezérlő elküldi a showXY megjelenítőnek, amely egy sablont beolvasva megjeleníti az adatokat.

 

Az app/-ban a library mappában a vezérlők a szervesen a rendszer részét képző részek (pld: sablonkezelő, debug, adatbázis-kezelő, sessionkezelő,...) vannak (ezek fejlesztése csak központilag történik verziószámozással), a module mappában pedig a modulárisan elkészített külső újrafelhasználható modulok vannak (ide kell minden új funkcióval rendelkező részt elkészíteni). Ezek szabványos műveleteken keresztül kommunikálnak a rendszerrel pld: getId(), show(), list(), addData(). Az eljárás nevek egységesen épülnek fel az előtag a műveletre utaló kisbetűs rész (get, set, show, load, write) az utótag pedig a nagy kezdőbetűs feladatmeghatározó rész (User,Place,AjaxUserList). Az adminisztrációs modulok egy meglévőből (user) másolva könnyen létrehozhatók és testreszabhatók. config.xy.php, class.xy.php fájlokban tartalmazzák a megfelelő műveleteket. Az adatbázis műveleteket külön eljárásokban végezzük és mindig csak egy adattömböt adjon vissza, így lehetőség van a rendszer bővítésére gyorsítótár vagy xml használatával, időszakosan akár adatbázis kapcsolat nélkül is működőképes lesz a rendszer.

 

Minden új fejlesztést modulárisan Osztályokba zárva készítünk el a modul mappában, az összes szükséges általános műveletre felkészítve (listázás, elem adat lekérdezése, új elem felvitele, törlés, módosítás). A kapcsolódó rendszer csak ezeket az eljárásokat használva végzi el a szükséges műveleteket (pld egy eljárásban egy keresőszó megadásával visszakapjuk a találati lista tömbjét, hogy ezt adatbázisból olvassa ki vagy cache-elt html-xml-ből az itt már nem számít).

 

Ha az eljárások a kötött 1-2 paramétertől (id,name) többet várnak, akkor $data tömbben adjuk át neki és a tömbben ellenőrizve isset($data[xy]) majd kiolvasva kezeljük, így bármikor dinamikusan változtatható a paraméterek száma.

 

A rendszer konfigurációs folyamatánál minden esetben végrehajtunk egy SQL Inject ellenőrzést a teljes POST,GET,REQUEST tömbön, ezért a fejlesztés folyamán már nem kell erre külön időt fordítani!

3. Működési környezet

A keretrendszer működéséhez Apache szerveren PHP5.3 és MySQL 5 használata szükséges. A link rövidítésekhez Rewrite apache modul engedélyezve legyen. Egyéb követelmények, PHP 5.3, MYSQL, PHPMyadmin, Biztonságos STFP kapcsolat IP-re korlátozva.

4. Könyvtár és fájl szerkezet

A gyökérkönyvtár, és az ettől eltérő jogosultságú alkönyvtárak a megfelelő jogosultságú .htaccess fájlt tartalmazzák, tiltva a felesleges hozzáféréseket és a könyvtárlistázást. A fájl és könyvtárnevekben nem használ index, main, home, default, log kifejezéseket, mivel a „rossz fiúk” automatikus scriptjei ezeket a fájlokat írják felül rendszerint!

Fejleszteni az app/module mappába, az adminisztrációs dolgokat az app/admin mappába, a megjelenítést (template,js,css,image) pedig a skin mappában a ”œdomainname” stílus végzi, minden felületnek külön skinje van (admin,web,mobil).

 

app    /    -    teljes programkönyvtár (nem listázható, nem írható benne semmi, nem     hivatkozik rá                 semmi a webről)

    admin/  -     admin könyvtárak

        api/class.apiadmin.php

        api/config.apiadmin.php

        client_api/class.client_apiadmin.php

        client_api/config.client_apiadmin.php

        cms/class.cmsadmin.php

        cms/config.cmsadmin.php

        config/class.configadmin.php

        config/config.configadmin.php

        gallery/class.galleryadmin.php

        gallery/config.galleryadmin.php

info/class.infoadmin.php

info/config.infoadmin.php

language/class.languageadmin.php

language/config.languageadmin.php

menu/class.menuadmin.php

menu/config.menuadmin.php

news/class.newsadmin.php

news/config.newsadmin.php

sum/class.sumadmin.php

sum/config.sumadmin.php

template/class.templateadmin.php

template/config.templateadmin.php

user/class.useradmin.php

user/config.useradmin.php

usergroup/class.usergroupadmin.php

usergroup/config.usergroupadmin.php

 

    domain/ -     domain könyvtárak

    001/

                /class.domain.php

                /config-popup.php

                /config-web.php

        002/

                /class.domain.php

                /config-popup.php

                /config-web.php

 

library/        -    rendszer könyvtárak

admin/class.admin.php    -    adminisztrációs library

api/            -    api könyvtárak

    /api.client_api.php     -    api kliens library    

    /api.server_api.php     -    api szerver library    

    /class.api.php        -    api library

auth/class.auth.php        -    authentikációs, bejelentkezés, jogosultsűgkezelés

        cache/class.cache.php        -    cache library

        core/class.core.php         -    core library

        corn/class.corn.php        -    corn library

        db/class.db.php        -    adatbázis library

        dbmongo/class.dbmongo.php     -    dbmongo library

        debug/class.debug.php        -    debug nyomkövető, hibanaplózó library

        facebook/class.facebook.php     -     facebook library

        file/class.file.php        -    fájlkezelő libaray

        function/        (ÜRES)

        image/class.image.php         -    képkezelő library

        label/class.label.php        -    label, címke kezelő library

        lang/class.lang.php        -    nyelvkezelő library

        menu/class.menu.php        -    menükezelő library

        naplo/class.naplo.php        -    napló library

        phpmaker/class.phpmaker.php -    phpmaker library

        security/class.security.php    -    biztonsági, ellenőrző, riasztó library

        template/class.template.php    -    sablonkezelő library

        web/class.web.php        -    web kezelő library

        xml/class.xml.php        -    xml kezelő library

        

 

    model/        -    modelek

/model.menu.php        -    menü model

/model.session.php        -    session model

/model.translate.php        -    fordító model

/model.user.php        -    felhasználó model

/model.ws_media.php        -    termék képek, videókat kezelő model

/model.ws_price.php        -    ár model

/model.ws_product.php    -    termék model    

        

    module/    -    modulok

        search/class.search.php                

    plugin/        -    kiegészítő tartalomegységek

 

control/        -    vezérlők

    control-web.php        -    Webes normál megjelenítés rendszer vezérlőfájl

    control-system.php        -    Központi rendszer vezérlőfájl

    control-popup.php        -    Popop vezérlőfájl

    control-mobil.php        -    Mobil központi vezérlőfájl

    control-ajax.php        -    Ajax vezérlőfájl

    control-admin.php        -    Admin (Backend) központi vezérlőfájl

    control-api.php            -    Api vezérlőfájl

    control-cron.php        -    Cron vezérlőfájl

    

 

config/        -    konfigurációs beállítások

    configl-system.php        -    Központi rendszer konfiguráció

    config-db.php            -    Adatbázis  konfiguráció

    config-admin.php        -    Admin (Backend) konfiguráció

 

Zend/        -    Zend könyvtárak

    

skin/    -    felületek designjai    (webről látható behívható fájlok)

    admin/        -    admin skinek

        css/        -     stílusfájlok

        image/        -     képfájlok

            button/        - button

            defalult/        - default

            forms/        - formok

            icon/        - ikonok

            jstree/        - jstree

            login/        - bejelentkezés

            shared/        - megosztott

            sum/        - sum

            table/        -tábla

        js/        -    közös javascript fájlok, Framework-ök

            /tiny_mce    - tiny szövegszekresztő sablonok

            cms.js

            overlaymessage.js

            system.js

        template/

            box/        - box sablonok

            content/    - tartalom keret sablonok

            js/        - javascript sablonok

            page/        - oldalsablonok

 

    common/

        css/

        html5/        - html5 sablonok

        image/

        jquery/        - jquery sablonok

        jquery-ui/

        js/        - javascript sablonok

    facebook/

        css/

        image/

        js/

        template/

    font/

    domaindemo.hu/

        css/        - stíluslapok / grid

        images/        - képek javascript

        js/        - rendszer javascript

        template/

            /box        - doboz

            /content     - tartalom

            /email        - email

            /page        - főoldal

    mobil/        -    mobil felületek kinézete    (ugyanaz a szerkezet mint a web)

        css/

        images/

        js/

        template/

    

 

public/    -    minden az oldal (api import) vagy látogatók (upload) által feltöltött fájl helye, 777 jogosultságú

    picture/    -    adatfájljai (képek, thumb, xml)

        000/001    -    kép azonosító könyvtár

            000/    -    képalbumok

                b_seonev01.jpg    -    eredeti kép

                t_seonev01.jpg    -    generált nagykép (vízjeles)

                i_seonev01.jpg    -    ikonkép (kiskártyához vizjeles)

            seonev.xml    -    szállásadatok xml-be tárolva

    bad/        -    Bettle Advert, reklámkezelő rendszer anyagai, bannerek, kreatívok

    cahce/        -    cache anyagai

    content/    -    Tartalom anyagai

    gallery/        -    CMS-el feltöltött képfájlok

    user/        -    fehlasználók által profile-hoz töltött képek

    temp/        -    ideiglenese feltöltött anyagok

    xml/        -    egyéb xml-be tárolt nyilvános lekérdezések eredményei

 

private/    -    az oldal belső adattárolásához hasznát könyvtár (cache, html) nem nyilvános, 775 jogosultságú

    bakcup/    -    adatbázis mentések

    cache/        -    Cache gyorsítótárak

        sql/    -    adatbázislekérdezés cache-ek md5-je a fájlnév

            data/    -

        page/    -    oldal sablon cache-ek md5-je a fájlnév

            all/    -

            box/    -html tartalom sablon cache-ek md5-je a fájlnév

    data/        -    data fájlok

    domain/    -    domain fájlok

        cipoplaza.tk/

    help/        -

    html/        -     html fájlok

lang/        -    nyelvi fájlok xmlje

        auth/    -    

        system/ -

            /hu.lang    -

            /hu.lang_old

        template/ -

    naplo/        -    naplók

        error/    -    hibanaplók

        incash_naplo/   -

        info/    -

        mail/    -    email üzenetek naplója

        report/    -

        security/

        slow/

        stat/    -    statisztikák naplói

 

        hash.log.dat    -    rendszer hash napló, hackellenőrzéshez

        cache.log.dat    -    cache napló

    notice/        -

        email/    -

            send/

                2014/

            wait/

                2014/

        sms/    -

            send/

                2014/

            wait/

                2014/

rss/        -    rss hírfolyam fájlok

sql/        -

stat        -

    temp/        -    ideiglenes adattároló

    xml/        -    rendszer xml fájlok, belső adattároláshoz

    

bettle.php    -    Központi indítófájl, minden hívást ez kezel le és irányít tovább (frontend)

.htaccess    -    központi hozzáférés szabályzó

robots.txt    -

 

4.1. PHP fájl állandó tartalmi elemei

    PHP fájl, modul, osztály leírás része:

/**
* Class/Modul    :    Template
* Version        :    0.0.1
* Date        :    2014/06/17
* Author        :    Quickstudio
*
* Template sablonkezelés
*
* Use (Használat):
*
* Tasks (Feladatok):
* 2011-06-20    loadTemplateFile globális paraméterezett nézetváltás pld: web - mobil mappa szerint
*
* Changes (Változtatások):
* 2014-06-17    ...............
*/
    A PHP fájl közvetlen direkt meghívásának ellenőrzése és tiltása, a „BETTLE” rendszerdefinió az bettle.php-ban kerül beállításra, így csak azon keresztül hívhatóak meg a PHP fájlok:
if ( !defined( 'BETTLE' ) ) die( 'HACK' );

 

Globális eljáráshíváshoz a példányosított APP osztály használjuk, az MVC OOP projekteknél szokott módon az osztályokat egy loader tölti be és adja használatra (APP::Loader(”˜db”™)->). Az osztályneveket csupa kisbetüvel, a változókat „_” kezdjük, az eljárások neveiben a vezérlőneveket mindig kisbetűvel és következetesen írjuk (pld getUser)

Minden fejlesztés során a forráskód dokumentálást a minta alapján kell elvégezni, és a fontosabb változtatásokat a fejlécbe is felvezetve a verzószámot eggyel megnövelve jelezni kell,

 

5. Adatbázisszerkezet, adatkapcsolatok

Adatbázis szerkezet (táblák):

Az adattáblák minden esetben tartalmaznak egy előtagot (prefixet) aláhúzás jellel elválasztva, ez a seocms esetében: „scms_”

scms_feedback - Visszajelzések

Mezo

Típus

Nulla

Alapértelmezett

Leírás

feedback_id

int(3)

Nem

 

Visszajelzés azonosító

feedback_author

varchar(50)

Igen

 

Feladó neve

feedback_url

varchar(150)

Igen

 

Kitöltés url-je

feedback_note

text

Igen

 

Megjegyzés

feedback_ip

varchar(20)

Igen

 

Kitöltés IP címe

feedback_browser

varchar(250)

Igen

 

Kitöltés böngésző környezete

feedback_session_id

varchar(100)

Igen

 

Kitöltés Session ID-je

feedback_create_date

datetime

Igen

 

Létrehozási dátum

owner_id

smallint(6)

Igen

1

Aktív vagy inaktív adat

domain_id

smallint(6)

Igen

1

Publikus vagy zárolt adat

scms_loginlog ”“ Bejelentkezési napló


 

Mezo

Típus

Nulla

Alapértelmezett

Leírás

user_id

tinyint(4)

Nem

 

Felhasználó azonosítója

time

int(11)

Nem

 

Bejelentkezés időpontja

ip

varchar(15)

Nem

 

Bejelentkezés IP címe

data

varchar(255)

Nem

 

Adatok, megjegyzések

scms_news - hírek

Mezo

Típus

Nulla

Alapértelmezett

Leírás

news_id

int(10)

Nem

 

Hírek azonosítója

cat_id

int(10)

Nem

 

Hír kategória azonosítója

seourl

varchar(150)

Nem

 

SEO url név

title

varchar(255)

Nem

 

Cím szövege

lead

longtext

Nem

 

Lead rövid leírás

text

longtext

Nem

 

Részletes tartalom szövege

create_date

datetime

Nem

 

Létrehozási dátum

itemsort

smallint(6)

Nem

100

Elem sorrendje

active

tinyint(1)

Nem

 

Aktív vagy inaktív adat

public

tinyint(1)

Nem

 

Publikus vagy zárolt adat

image

varchar(100)

Nem

 

Nyitókép linkje

scms_news_cat ”“ hírek kategóriák

Mezo

Típus

Nulla

Alapértelmezett

Leírás

cat_id

mediumint(5)

Nem

 

Kategória azonosítója

lang

varchar(2)

Nem

 

Kategória nyelve

name

varchar(128)

Nem

 

Kategória megnevezése

description

varchar(255)

Nem

 

Kategória leírása

position

mediumint(10)

Nem

100

Sorrendje

active

tinyint(1)

Nem

0

Aktív vagy inaktív adat

public

tinyint(1)

Nem

0

Publikus vagy zárolt adat

scms_newsletter ”“ Hírlevélre feliratkozottak

Mezo

Típus

Nulla

Alapértelmezett

Leírás

newsletter_id

int(11)

Nem

 

Hírlevél azonosítója

u_name

varchar(100)

Igen

NULL

Felhasználó neve

email

varchar(50)

Igen

NULL

Felhasználó email címe

createdate

datetime

Nem

 

Létrehozási dátum

regip

varchar(20)

Nem

 

Regisztrációs IP cím

scms_page ”“ Statikus oldalak

Mezo

Típus

Nulla

Alapértelmezett

Leírás

page_id

mediumint(5)

Nem

 

Oldal azonosítója

lang

varchar(2)

Nem

 

Oldal nyelve

page

varchar(50)

Nem

 

Oldal SEO url-je

keywords

varchar(255)

Nem

 

META kulcsszó tartalma

description

varchar(255)

Nem

 

META leírás tartalma

title

varchar(255)

Nem

 

META title tartalma

modify_date

datetime

Nem

 

Módosítás időpontja

active

tinyint(1)

Nem

1

Aktív vagy inaktív adat

public

tinyint(1)

Nem

1

Publikus vagy zárolt adat

content

text

Nem

 

Oldal tartalma

scms_session ”“ Munkamenetek

Mezo

Típus

Nulla

Alapértelmezett

Leírás

session_id

varchar(100)

Nem

 

Munkamenet azonosítója

user_id

smallint(3)

Nem

 

Felhasználó azonosítója

time

int(11)

Nem

 

Munkamenet ideje

ip

varchar(15)

Nem

 

Munkamenet IP címe

lang

tinyint(4)

Nem

 

Munkamenet nyelve

scms_system - Rendszerváltozók

Mezo

Típus

Nulla

Alapértelmezett

Leírás

key

varchar(127)

Nem

 

Változó neve

value

varchar(127)

Igen

NULL

Változó értéke

scms_user - Felhasználók

Mezo

Típus

Nulla

Alapértelmezett

Leírás

user_id

smallint(3)

Nem

 

Felhasználó azonosítója

group_id

smallint(2)

Nem

1

Felhasználó csoportja

user_name

varchar(50)

Nem

 

Felhasználó beceneve

fullname

varchar(100)

Nem

 

Felhasználó teljes neve

user_password

varchar(40)

Nem

 

Jelszó (MD5-tel) kódolva

user_email

varchar(100)

Nem

 

E-mail cím

user_birthday

date

Nem

 

Születési ideje

user_pic

varchar(250)

Nem

 

Profil kép linkje

address

varchar(250)

Nem

 

Lakcím

tel

varchar(100)

Nem

 

Telefonszám

seourl

varchar(50)

Nem

 

SEO url link

create_date

datetime

Nem

 

Létrehozási dátum

lastlogin_date

datetime

Nem

 

Utolsó belépés időpontja

user_lastip

varchar(50)

Nem

 

Utolsó belépés IP címe

active

tinyint(1)

Nem

0

Aktív vagy inaktív adat

public

tinyint(1)

Nem

1

Publikus vagy zárolt adat

verified

tinyint(1)

Nem

0

Aktiválás státusza

verifidata

varchar(100)

Nem

 

Aktiválás egyedi azonosítója

scms_usergroup ”“ Felhasználói csoportok

Mezo

Típus

Nulla

Alapértelmezett

Leírás

group_id

smallint(2)

Nem

 

Csoport azonosítója

group_name

varchar(50)

Nem

 

Csoport megnevezése

rights

bigint(20)

Nem

0

Csoport jogosultságai

active

tinyint(1)

Nem

0

Aktív vagy inaktív adat

public

tinyint(1)

Nem

1

Publikus vagy zárolt adat









 

6. Modelek, adat kezelők

6.7  model.gallerypic.php

Picture model megvalósítása.

Példa hívásra: APP::ModelLoader('gallerypic')->xy();

 

Deklartál Publikus eljárások:

 

6.7.1 Lekérdezők

getGalleryPics($data )                      Galéria képlista lekérése

getGalleryData ($data)                      Adott geléria adatainak lekérdezése

6.7.2 Ajax

AjaxUpdateGallery($data)                   Album adat firssítése az adatbázisban

AjaxDelPic($data)                      AJAX Kép törlése

6.7.3 Beállítók

setGalleryPic($data)                     kép beillesztése, módosítása

setGallery($data)                      galléria beillesztése, módosítása

 

6.11 model.menu.php

6.17 model.session.php

Session model megvalósítása. Itt valósítjuk meg a szerveren tárol munkamenetek kezelését

Példa hívásra: APP::ModelLoader('session')->xy();

 

Deklartál Publikus eljárások:

 

startSession()                     session inditas

getUserId( $data )                  user ID lekerese session ID alapjan

getSession( $data )                 munkamenet adatainak lekérdezése

clearSessions ($data )                 Munkamenetek törlése, takarítása

updateSession($data )                  Munkamenet frissítése

updateSessionUser($data )               Munkamenet frissítése felhasználó belépéskor

setSessionID()                     Egyedi Session Munkamenet változó generálása

getSessionID()                     saját session azonosító lekérdezése

getSessions()                     session-ök listájának lekérdezése

getKey( $sid, $key, $default  )          session custom info get

setKey( $sid, $key, $value )              session custom info set

unsetKey( $sid, $key )               custom info unset

ping( $sid )                       session fenntartás

link( $sid, $user_id )                  session kapcsolasa userhez

unlink( $sid )                       session oldali kilepes

getOnlineDb ( $data )                   domain azonosító beállítása


 

6.18 model.translate.php

6.19 model.user.php

Felhasználó model megvalósítása.

Példa hívásra: APP::ModelLoader('user')->xy();

 

Deklartál Publikus eljárások:

 

6.19.1 Felhasználó kezelés

setUser($data)                  egy felhasználó frissítése vagy hozzáadása

getUser ( $data )              Egy felhasználó összes adatának lekérdezése

6.19.2 Jogosultság kezelés

getUserPermission ( $data )          Egy adott user jogosultságainak lekéredezése

delUserPermission( $data )         Egy jogosultság törlése

setUserPermission( $data )           user jogosultságait beállító

generatePassword( $length = 9, $strength = 0 ) jelszó generálás

getList( $data )               felhasználó lista lekérdezése csökkentett

adattartalommal

getUserGroupSelect()             Csoportlista select lekérdezése

getUsers ( $group_id  )          Felhasználólista lekérdezése

6.19.3 Ismerős keresés

getStatus( $uid )              user státusz lekérése

getEmailToken( $uid )              email token lekérése

emailConfirmed( $uid )           küldhet-e a user email-t?

confirmEmail( $token, $uid )         email megerősítés

6.19.4 Partnerek kezelése

banPartner( $data )               partner letiltása

unbanPartner( $data )              partner letiltásának feloldása

banPartnerPrivilege($data )           partner jogosultság letiltása (és vele az összes ilyen jogú partner letiltása)

 

unbanPartnerPrivilege( $data )      partner jogosultság letiltásának feloldása

delPartner( $data )              partner törlése

delPartnerPrivilege($data )           partner jogosultság törlése (és a hozzá tartozó

partnerek tiltása)

6.23 model.ws_product.php

 

7. Keretrendszer függvény, változó és objektumtár

 

8. Rendszerbeállítások (config)

8.1 app/config/config-system.php

 

    A központi konfigurációs fájl, amely minden futtatáskor meghívódik rögtön az elején a megfelelő vezérlőből.

 

    Szükséges modulok, osztályok, objektumok:

        nincs

 

    Include:

        app/config/config-db.php        -    adatbázis konfigurációs adatok

    

    Dekralált változói:

 

8.2 app/config/config-db.php

 

    Az adatbázis kapcsolati központi konfigurációs fájl, amely minden futtatáskor meghívódik a config-system.php-ből.

 

    Szükséges modulok, osztályok, objektumok:

        nincs

 

    Meghívás forrása:

        app/config/config-system.php

 

    Dekralált változói:

 

    APP::setDATA('CONFIG','DBSERVER',   'localhost');  //  Adatbázisszerver neve címe portszáma

APP::setDATA('CONFIG','DBUSER',     'root');        //  Felhasználó neve

APP::setDATA('CONFIG','DBPASSWORD', 'root');        //  Felhasználó jelszava

APP::setDATA('CONFIG','DBDATABASE', 'seocms');  //  Adatbázis megnevezése

APP::setDATA('CONFIG','DBTAG',      'scms_');        //  Adatbázistáblák előtagja/prefixe

8.3 app/config/config-admin.php

 

9. Vezérlőfájlok (controller)    

    9.1.    app/control/control-system.php    -    általános vezérlő

    Az app/control/control-system.php fájl tartalmazza a mindenkor érvényes és végrehajtandó vezérlőket, itt hívja meg a általános konfigurációkat tartalmazó config-system.php-t. Betölti a mindig használt rendszer librarykat (nalo,function,security,template,cache,db,lang,auth) majd lekérdezi hogy adminmód-e a hívás, végül paraméter (get ”˜m”™) alapján dönt hogy mely modult kell hívni és mi az azonosító ha egy elem hívása van.

Rendszer indító vezérlőelemek, általános minden futásra érvényes vezérlők

 

    Deklarált osztályok:

        

    Dekralált eljárások:

 

    Dekralált változói:

    9.2.    app/control/control-web.php    -    webes nézet vezérlő

    Az app/control/control-web.php fájl tartalmazza a webes megjelenítésre érvényes és végrehajtandó vezérlőket, itt hívja meg a webes konfigurációkat tartalmazó config-web.php-t. Betölti a web skin által használt további rendszer librarykat (fooldal), majd cache használatának lehetőségével az aldomain és redirect értelmezésével vezérli mi hívódjon meg. Ha van modul meghatározva, akkor az adott modul webes vezérlőjét indítja el. A vezérlő minden meghívott résztől egy template-et kap vissza, így a végén $maintemp változóban összerakott sablont fogja megjeleníteni:

 

# Főoldal modul webvezérlőjének indítása

$maintemp = APP::Loader('fooldal')->WebController();

# Sablon változó cseréje

$maintemp = APP::Loader('template')->replaceVar( 'AB', ”˜xy”™, $maintemp );

# Kötelező sablonváltozók cseréje

$maintemp = APP::Loader('template')->changeMainVar( $maintemp );

# Automatikus nyelvi fordítások a sablonban

$maintemp = APP::Loader('template')->translate($maintemp);

# Sablon megjelenítése

APP::Loader('template')->show( $maintemp );

 

    Webes felület (web-skin) rendszer vezérlőfájlja, amely betölti a konfigurációt valamint az alapértelmezett librarykat és modulokat.

 

    Szükséges modulok, osztályok, objektumok:

 

    Include:

 

    Meghívás forrása:

 

    Tartalma:

    9.3    app/control/control-admin.php    -    Adminisztrációs vezérlő

    Az app/control/control-admin.php fájl tartalmazza az admin megjelenítésre érvényes és végrehajtandó vezérlőket, itt hívja meg az admin konfigurációkat tartalmazó config-admin.php-t. Betölti az admin skin által használt további rendszer librarykat (admin), és kezeli a felhasználói beléptetéseket, majd a további paramétereket olvassi ki és menti (search, sort, page). Ha van modul meghatározva, akkor beléptetés után az adott modult indítja el:

 

$maintemp = APP::Loader('template')->replaceVar( 'CONTENT', APP::AdminLoader( APP::getDATA('SYSTEM','MOD') )->WebController(), $maintemp );

 

A végén pedig a szokásos Template eljárásokkal cseréli le a sablonváltozókat, fordítja a nyelvi szövegeket és jeleníti meg a oldalt.

    9.4.    app/control/control-ajax.php    -    Ajax vezérlő

    Az app/control/control-ajax.php fájl tartalmazza az ajax lekérdezésekre érvényes és végrehajtandó vezérlőket. Betölti az ajax skin által használt további rendszer librarykat (), és értelmezi az ”œevent” paramétert az ajax események különválasztásához. Ha van modul meghatározva, akkor az admin mód meghatározása után az adott modul ajax vezérlőjét indítja el:

 

$maintemp = APP::AdminLoader( APP::getDATA('SYSTEM','MOD') )->AjaxController();

vagy

$maintemp = APP::Loader( APP::getDATA('SYSTEM','MOD') )->AjaxController();

 

    Kezeli az érvénytelen ajax műveletek hibajelentését is.

9.5.    app/control/control-popup.php    -    Popup vezérlő

    Az app/control/control-popup.php fájl tartalmazza a popup megjelenítésekre érvényes és végrehajtandó vezérlőket. Betölti a popup által használt további rendszer librarykat (), és értelmezi az ”œevent” paramétert a popup események különválasztásához. Ha van modul meghatározva, akkor az admin mód meghatározása után az adott modul popup vezérlőjét indítja el:

 

$maintemp = APP::AdminLoader( APP::getDATA('SYSTEM','MOD') )->PopupController();

vagy

$maintemp = APP::Loader( APP::getDATA('SYSTEM','MOD') )->PopupController();

 

    Kezeli az érvénytelen popup műveletek hibajelentését is.

 

9.6.    app/control/contol-api.php

9.7.    app/control/contol-cron.php

9.8.    app/control/contol-mobil.php

 

10. Rendszerkönyvtár (library)

A rendszer könyvtárak az app/library mappában vannak a modulnév alkönyvtárban szabványos class.modulnév.php néven.

10.1. Core (class.core.php)

    Központi rendszer kezelő könyvtár, mely az alapvető ősosztályokat tartalmazza és a keretrendszer magját.

 

Tartalma:

* Általános APP alkalmazás osztály

* Általános Modul Ős Osztály

* Általános Model Ős Osztály

 

APP - alkalmazás osztály feladata:  

* Include betöltések

* Globális adat tároló

* Hibakezelés, nyomkövetés

* Module osztályok betöltését

* Model osztály betöltését

* Domain osztály betöltése

* Api vezérlők betöltése

* Plugin betöltő

* Rendszer konfigurációs fájl betöltése

 

Modul osztály feladata:

    * Általános modul oldalmegjelenítés

    * Általános modul Ajax vezérlő

* Általános modul Popup vezérlő

 

Model osztály feladata:

* Adatréteg cache, gyorsítótár vezérlő

* Általános adatréteg lista lekérdező

10.1.1. APP

    A keretrendszer minden részének meghívása a központi APP nem példányosított osztályból történik. A különböző részeket modulokat modelekket az APP osztályból az APP::Loader(”˜xy”™)->z(); formában hívjuk meg.

 

includeFile ($file)             Fájl inculde betöltése

LANGS($mod, $name)             Nyelvi változók kiolvasása

getDATA($main,$sub )             Adat osztályváltozó visszadása

gD($main,$sub )                  Adat osztályváltozó ALIAS

setDATA($main,$sub,$value)           Adat osztályváltozó töltése

sD($main,$sub,$value)               Adat osztályváltozó töltése ALIAS

addDATA($main,$sub,$value)          Adat osztályváltozó hozzáadása, bővítése

aD($main,$sub,$value)              Adat osztályváltozó hozzáadása ALIAS

pushDATA($main,$sub,$value)          Adat osztályváltozó tömb elem hozzáadása,

bővítése

pD($main,$sub,$value)             Adat osztályváltozó tömb elem hozzáadása

TABLES($name)                  Db. tábla nevét adja meg

Loader($class)                 osztály hívás betöltése, példányosítása

és viszadása

Loaded($modname)                 Betöltött osztály létezik-e

loadClass()                     Modul osztály betöltése, ha van library

akkor az ha nincs akkor module

ModelLoader( $class )             Model osztály betöltése

loadModelClass()                 Model Modul osztály betöltése

Domain()                     Domain osztály betöltése

loadDomainClass()                 Domain osztály betöltése

apiLoader()                     Api betöltése

loadApi()                      Api betöltése

AdminLoader( $class )              Admin Modul osztály betöltése

loadAdminClass()                 Admin Modul osztály betöltése

loadAdminConfig()                 Admin Modul osztály beállításainak

betöltése

PluginLoader($plugin_name)          Plugin betöltő

setADMINDATA($main,$sub,$value)     Admin config osztályváltozó töltése

getADMINDATA($name, $main,$sub )    Admin config osztályváltozó visszadása

loadConfigFile ($filename = 'config') Rendszer konfigurációs fájl betöltése

getInstance()                 Az osztály saját példányosítása

__call($method, $args)          Általános osztály függvény vezérlő, a nem

létező metódusokhoz

    

10.1.2. Modul

Minden modul osztály őse, amely tartalmazza azokat a vezérlőket, amelyek megvalósítják az oldalmegjelenítést az ajax és a popup vezérlését

WebController()             Általános modul oldalmegjelenítés

AjaxController()             általános modul Ajax vezérlő

PopupController()          általános modul Popup vezérlő

 

10.1.3 Model

Általános model osztály, amely minden model őse. Tartalmazza az általános eljárásokat, amelyeket a többi model osztály megvalósíthat, felhasznált működése során.

_getLocal( $id )              local cache get

_unsetLocal( $id )             local cache unset

_getOneField( $data )           egy mező lekérése

_setOneField( $data)               egy mező beállítása

setPublic( $data )               Elem publikusságának beállítás

setActive( $data )               Elem aktiválásának beállítása

getList( $data  )               Általános Lista lekérdezése

getListDb()                 Lista lekérdezés elemszáma

 

10.2. Sablonkezelő (class.template.php)

Sablonkezelő library, mely a sablonokat fájlokban tárolja. Ez az osztály egy egyszerű sablon kezelő rendszer, amely a controllertől kapott kérések alapján, a megjelenítésért felelős sablon fájlokban a megfelelő változókat kicseréli; és ezáltal megjelenik a controller által kért tartalom az oldalon. A sablon fájlokban elhelyezett nyelvi változókat automatikusan kicseréli a megfelelő nyelvi szövegre. Minden sablon fájlt alapértelmezetten magyar nyelven tölt be, és ha a controllertől kérés érkezik, hogy másik nyelven jelenjen meg a tartalom, akkor a sablonkezelő a meglévő magyar nyelvre ráhúza a kért nyelvi elemeket. Ezáltal biztosítva van az, hogy ha valamelyik tartalom nincs meg idegen nyelven, akkor az magyarul még mindig elérhető a sablon fájlban.

    Az osztály elérése APP::Loader(”˜template”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

        nincs

 

    Meghívás forrása:

 

    Deklarált publikus ejárások:

        

        loadFile( $filename, $load = false)        Sablonfájl betöltése

        load($filename, $load)                Sablonfájl betöltése ALIAS

show( $content, $header=true )        Sablon megjelenítése a

képernyőn

        add($name, $value=”™”™)                Adat osztályváltozóba mentése

        addDATA($data )                    Sablon változó tömb hozzáadása

        addDATAS($datas )                    Sablon változó tömbök hozzáadása

        addJS( $scriptfile )                Javascript fájl hozzáadása

        addCSS( $cssfile )                CSS fájl hozzáadása

        addTitleHTML($text)                META TITLE hozzáadása

        addKeyWordHTML( $text )                META kulcsszavak hozzáadása

        parseTitleHTML()                    META TITLE tömb összefűzése

        parseKeyWordHTML()                META KEYWORD tömb összefűzése

        changeMainVar( $maintemp )            Rendszerváltozók kicserélése

        changeDebugVar( $maintemp )            Debug ablak megjelenítése

        replaceVar( $where, $what, $maintemp )    Sablonváltozók    cseréje

        replaceTemplate ( $temp, $data )        Sablonváltozó tömbök cseréje

        setSkin ( $skin )                    Megjelenési skin beállítása

        getSkin ()                        Megjelenési skin kiolvasása

        getJSFiles()                    JS Fájlok listájának

generálása HTML fejlécbe

        changeMainVar($maintemp)            Alapértelmezett változók cseréje a

sablonfájlban

    changeDebug($maintemp)                 debug változó cseréje ha létezik

        inVar( $var, $maintemp )            Létezik-e a változó a sablonban

        clearVar($cont)                    Maradék sablonváltozó törlése    

        clearNote($cont)                    Megjegyzések törlése

        translate($cont)                    Automatikus sablon fordítás

loadModuleBlock($cont)                 Automatikus modul block betöltő

sablonváltozó keresése

        loadPlugin($cont)                 Automatikus plugin betöltő

sablonváltozó keresése

        includeFile($maintemp)                 Automatikus template betöltő

        loadStatic($name, $page = true)         Statikus oldaltartalom vagy doboz

megjelenítése az adott nyelven

        setComprassHeader($comp = true)        Tömörített fejléc engedélyezése

                                    vagy tiltása

        setHeaderExpired($exp)                 Header lejárati idő beállítása

sumJS( $clear = false )                lokális JS JavaScript fájlok

összemásolása és tartalmuk

visszaadása

sumCSS($clear = false)                 CSS Stílus fájlok összemásolása

compJS($script, $fn='public/cache/sum.js')Egy adott JS fájl beolvasása és

tartalmi tömörítés utána kiírása

xy.min.js néven

        compCSS($css, $fn='public/cache/sum.css')    Egy adott CSS fájl beolvasása és

tartalmi tömörítés utána kiírása

xy.min.css néven

10.3. Nyelvkezelő (class.language.php)

Ez az osztály végzi a nyelvek betöltését és a fordítást, valamint a nyelvek adminisztrálásához szükséges függvényeket is tartalmazza.

A fordítás menete: Betöltünk egy alap nyelvet (magyart) majd rá töltjük a kívánt idegen nyelvet. Aztán a fordító függvény lefordítja amit megtalál. Ez azért jó, mert ha a választott idegen nyelven nincs meg egy bizonyos rész fordítása, akkor az eredeti(magyar) nyelvű változat kerül be az oldalba.

 

Szükséges modulok, osztályok, objektumok:

nincs    

Deklarált publikus függvények:

 

Lang()                        Alapértelmezett beállítás, és a system

modul aktuális nyelvi betöltése

getId($data)                     Nyelv azonosítójának lekérdezése

getName($data)                       Nyelv nevének lekérdezése

loadFile ( $mod, $langfile)             Modul nyelvi fájljának betöltése

load ( $lang )                     Nyelvi tartalmak betöltése adatbázisból

is( $mod, $langfile )                  Létezik-e az adott modulhoz az adott

nyelvi fájl

translate( $msg, $mod = 'system', $par )  Fordítás keresése és visszaadása

getLangList2char()                 visszaadja a nyelvek listáját, értékben a

két karakteres nyelvkód található

 

Az adminisztrációs részben betöltjük egyben a kívánt fordítás fájlt és az admin ezt szabadon szerkesztheti, majd a végén újra mentjük a változtatásokkal. A rendszer több modulhoz külön-külön nyelvi fájlokat tölt be így a modulárisan elkészített részek külön kezelhetőek lesznek.

10.4. SQL Adatbáziskezelő (class.db.php)

Ez az osztály valósítja meg az adatkezelő réteget. A controllertől érkező kéréseket a modeleken keresztül kapja meg, amelyeket adatbázis felé továbbít, és az onnan kapott eredményeket feldolgozva visszaadja a modelnek.

Tárolja az adatok adatbázisból való lekérdezéséhez és beállításához szükséges függvényeket. Itt tudjuk beállítani az adatbázis kapcsolatot, ellenőrzi a kapcsolat állapotát, a műveletek sikeresen végrehajtódtak-e.

Az osztály elérése APP::Loader(”˜db”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

Dedikált publikus eljárások:

 

setDebug ( $debug )                      Hibakeresési mód beállítása

setCache ( $cache = false, $expire = 60 ) Cache mód beállítása

Connect( $dbserver, $dbuser, $dbpass, $dbname )    Adatbázis kapcsolat felépítése

isConnect ()                    Adatbázis kapcsolat állapotának

ellenőrzése

Query( $query )                    Adatbázis lekérdezés hibakereséssel

Select( $query )                    Select adatbázis lekérdezés cache és az

eredmény tömb visszadása (SQLCACHE)

Error( $the_error )                 Adatbázis műveleti hibakezelés

Fetch_Array( $result )                 Adatbázis lekérdezés eredményénem tömbbe

tárolása

Fetch_Assoc( $result  )                 Adatbázis lekérdezés eredményénem tömbbe

tárolása asszocíatív tömbként

Fetch_Row( $result  )                Adatbázis lekérdezés eredményébõl egy sor

olvasása

Num_Rows( $result  )                 Adatbázis lekérdezés eredményének

darabszáma

Free_Result( $result  )                Adatbázis lekérdezés eredményének

memórafogalás felszabadítása

Insert_ID()                     Adatbázis utolsó létrehozott azonosító

saveBackup($dbname)                 Adatbázis biztonsági mentés futtatása

saveMySqlBackup($dbname, $output, $structure_only) SQL Adatbázis biztonsági mentése

 

A db osztályt adatkezelő réteg, amely elsősorban a model osztályok kéréseit szolgálja ki, ezáltal az adatok közvetítésért felel a model és az adatbázis között.

 

10.5. Felhasználókezelő, authentikáció (class.auth.php)

Felhasználók kezelését és jogosultságukat kiszolgáló osztály. A felhasználó beléptetését a belépő vezérlő irányítja. Lekérdezi a felhasználói listát, megkeresi az adott felhasználót és a hozzá tartozó jelszót, ha megtalálta és minden adat egyezik, akkor beengedi a felhasználót, amúgy nem. Ugyanúgy itt történik a kiléptetés is.

Itt történik a jogosultságok kezelése, hogy mely felhasználói csoportok mely oldalakhoz férhetnek hozzá.

Egyes csoportokhoz és felhasználokhoz a vezérlő hozzá rendelhet létrehozási, szerkesztési és törlési jogokat is.

Az osztály elérése APP::Loader(”˜auth”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

    nincs

 

Dedikált publikus eljárások:

 

auth()                         Felhasználó azonosítás és munkamenet

frissítése, létrehozásaaz  adatbázisban

whatCanIView()                     Megtekinthető elemek lekérdezése

isRight($data )                     Jogosultság lekérdezése

canIView($data )                    Megtekintési jog lekérdezése

canICreate($data )                Létrehozási jog lekérdezése

canIEdit($data )                    Szerkesztési jog lekérdezése

canIDelete($data )                  Törlési jog lekérdezése

passwordStrength ($password, $useremail  )Jelszó erősség mérő 0-7 skálán

visszaadott értékkel

login( $useremail, $password )         Felhasználó beléptetése

logout ()                         Kijelentkezés

getUserGroupList ()                 Csoportlista betöltése

getUsers ($group_id )                 Felhasználólista lekérdezése

getUserData ($user_id )              Egy felhasználó összes adatának

lekérdezése

UserLogin ( )                     Belépés vezérlő    

UserLogged ()                     Belépett felhasználó fejléc vezérlője

AdminLogin ( )                      Admin Belépés vezérlő

RegForm ( $error )                 Regisztráció

checkRegData ($username, $password, $email) Regisztrációs adatok hibaellenőrzése

RegBox ()                         Regisztráció vezérlő

10.6. Biztonság, security (class.security.php)

Biztonsági osztály. Feladata az SQL inject és XSS ellenőrzése, a támadások azonosítása és naplózása.  

Az inputokat ellenőrzi, hogy azok nem-e esetleges külső támadások, az oda nem illő, felesleges kódrészleteket eltávolítja, hogy ne lehessen felhasználni a weboldal elleni támadásra.

Automatikus támadási tesztek integrálása. Automatikus egység és rendszertesztek riasztásokkal.

Az osztály elérése APP::Loader(”˜security”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

Deklarált publikus eljárások:

 

slash( $input, $type = 'add' )      SQL Inject és XSS biztonsági ellenőrzések

addSlashesArray( $data )         Bemeneti szöveg vagy tömb takarítása ('\"NULL)

removeXss( $string )             XSS törési kisérletek blokkolása stingben és

tömbben (&"<>')

clearData ($data)             Blacklist szűrő

setHashBase ( $dir = './' )         Inicializáló, nyitókönyvtár beállítása

checkHash ()                 Fájlváltoztatások ellenőrzése

setToken()                     Egyedi Token generálása és Sessionbe mentése,

későbbi összehasonlításhoz

10.7. Hibakezelés, debug (class.debug.php)

Nyomkövető/hibakezelő osztály. Ez az osztály elsősorban a fejlesztés közbeni hibakezelést és nyomkövetést segíti.

Az osztály elérése APP::Loader(”˜debug”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

        nincs

 

    Deklarált publikus eljárások:

 

debug()                     Alapértékek beállítása, naplófile

start()                     Egyéni hibakezelő indítása

exception_handler($exception)      Nem kezelt kivételek eljárása

stop()                     Egyéni hibakezelő leállítása

handler( $errno, $errmsg, $filename, $linenum, $vars = '' ) Egyéni hibakezelő

eljárás

addError( $errmsg )             Egyéb hibaüzenet naplózása

silentDebug()                 Csendes nyomkövetés, futási idő, db lekérdezési

idő és darabszám, php errors

show()                     Hiba és napló kiiratása

vardump($data)                 IP szűréses var_dump kiiratás

print_r($data)                 IP szűréses print_r kiiratás

dvd($data)                     nyomkövetési vardumpolás kiírása ip alapján

dpr($data)                  nyomkövetési tömb kiiratás ip alapján

 

10.8. Napló (class.naplo.php)

Naplózó osztály. Ez az osztály valósítja meg a napló fájlok elkészítését a folyamatos naplózást a rendszerről. A vezérlők által megadott váloztásokat egy általános fájlba írja, esetleg egy naplófájlba  vagy egy adatbázisba ment.

Az osztály elérése APP::Loader(”˜naplo”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

naplo()                         Alapértékek beállítása

writeFile( $text, $log = 'global' )      Naplófájlba írás

writeDB( $mod, $event, $msg, $userid=0 )  Napló adatbázisba mentés

write( $text, $log = 'global' )           Általános naplóba írás - Fájlba

 

10.9. Menükezelő (class.menu.php)

    A controller által átadott adatok alapján a menürendszert generálja ki az oldalra. A megkapott adatokból kiszűri a menü címeket amelyeket osztályváltozóba tölt be. Id alapján felépíti a menüszerkezet szintjeit, és ezután a felépített kész menü struktúrát visszaadja.

Az osztály elérése APP::Loader(”˜menu”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált publikus eljárások:

 

config($data = array())              Konfiguráció beállítása

getMenu()                          Visszaadja a menüt

loadMenus()                        Minden aktiális menü adatának betöltése

osztályváltozóba

getMenus()                       Betöltött menü támb visszaadása

showFrontEndMenu( $iid, $menus  )   Frontend menü kiíratása

getMenuDataByField ( $fieldname, $value ) A menütömb osztályváltozóból egy elem

kiolvasása egy adott mező értékegyezése

alapján

start($datas )                   Start

getIdByName ($name)                   Név alapján azonosító lekérdezése

getLevelById ($id)                  Id alapján szint lekérdezése

controlMenus()                       Aktuális menük osztályváltózóba töltése

show( $iid, $level = 0 )               Menüstruktúra kiíratása

10.10. Képkezelő (class.image.php)

    class.image.php

    Képkezelő osztály. Feldata: Képfeltöltéskor az álló kép crop, a kép teltejéből vágjon.

Az osztály elérése APP::Loader(”˜image”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

image()                         Kép konstruktor eljárás

setConfig()                     Alapértelmezett beállítok megadása a

képművelethez

setConfigName( $name, $data )           Képfájl változat létrehozásához

beállítások megadása paramétertömbbel

securedFilename( $name )              Fájlnév biztonsági szűrése és kovertálása

getMime()                         Képfájl MIME tipus meghatározása

saveEXIFDataFile( $target )           Ha van modul hozzá, akkor képfájl EXIF

adatok mentése fájlba mellé

getFileLoaderFunc( $imagetype )           Kép beolvasási eljárások nevének

meghatározása képfájl tipus alapján

copyImage( $source, $target, $permission )  Fájl másolása megadott jogosultsáokkal

Resize( $source, $target )               Kép átméretező forrásból célfájlba adott

módszerekkel

getGalleryPics($iid)                 Galéria képlista lekérése

 

10.11. API (class.api.php)

API általános osztály.

Az osztály elérése APP::Loader(”˜image”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

    api.client_api.php

    api.server_api.php

 

Deklarált Publikus Eljárások:

 

api()                             API konstruktor, vezérlő

readAPI($event, $apiurl , $apikey ) Szerver API hívás, esemény

paraméterrel

isKey ($key)                         Szerver hívás- API kulcs ellen.


 

10.12. Adminisztráció (class.admin.php)

Admin általános osztály

10.13. Gyorsítótár (class.cache.php)

Ez az osztály felel a Cache műveletekért.

Működése: meghívásra kerül a cache betöltése. Ha nem volt betöltött cache, akkor a tartalmat generálja, azután a cachebe menti, és a legvégén a kiírja.

Az osztály elérése APP::Loader(”˜cache”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

initMC ($server='localhost',$port='11211') MemCache kapcsolat felépítése

getMCVer()                         MemCahce verzió lekérdezése

getMC ($name)                     MemCache változó lekérdezése

setMC ($name,$data,$comp=MEMCACHE_COMPRESSED,$time=5)  MemCache változó mentése

replaceMC ($from,$to)               MemCache változó cseréje

delMC($name,$time=5)                  MemCache változó törlése

flushMC()                         Memcache teljes törlése

closeMC()                         Memcahc kapcsolat lezárása

set( $data )                     Általános cache beállítások megadása

compress( $data )                   gz betömörítés

uncompress( $data )                  gz kitömörítés

add_to_file( $text )                   szöveges naplófájlba írás

is_valid_cache( $fname )              létezik-e érvényes cache fájl

get_cache_filename( $cacheid  )         a cache fájl nevének generálása

check_for_cleaning()                  cache törlések ellenorzése és idõszakos

végrehajtása

check_gz_funcs()                  gz tömörítés lehetoségének ellenorzése

changed( $cacheid  )                   ha változás volt az "url"-en

($_SERVER['REQUEST_URI'])) akkor a cache fájl törlése

is_cache_writable()                  a cache könyvtárak írhatóak-e

isCache($type,$item,$cname,$expired)       Cache létezésének ellenőrzése

load ( $cacheid  )                   Cache adatok kiolvasása és betöltése ha

engedélyezett és létezik

save ( $content, $cacheid  )          Cache adatok kiolvasása és betöltése ha

engedélyezett és létezik (hibakódok: 1 ok, -1 nincs cache bekapcsolva, -2 nem cachelhetõ a tartalom, -3 nem írható a cache könyvtár )

add_define( $new, $my_file )          definició hozzáadása fájlba mentéssel

remove_define( $new, $my_file )          definició törlése a fájlból

formatBytes( $bytes, $precision = 2 )      Méret kategóriák konvertálása

get_cache_status()                 Cache státusz lekérdezése

clean_cache()                     Cache könyvtár teljes törlése

 

10.14. Levelezés (class.phpmailer.php)

    A levelezés kezelését végzi az osztály

Az osztály elérése APP::Loader(phpmailer)->xy();

10.15. Fájlkezelő (class.file.php)

    A Fájl osztály valósítja meg a fájlok és könyvtárak kezelését.

A vezérlő utasítására fájlba olvasás és írás is itt valósul meg, ugyanúgy a könyvtárkezelés, mint létrehozás, törlés, másolás.

Az osztály elérése APP::Loader(”˜file”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

readTxtFile( $filename )              Szöveges fájl olvasása

writeTxtFile( $filename, $content )       Szöveges fájl írása

copyDir( $from, $to )                 Teljes könyvtár másolása

deleteDir( $dir )                 Könyvtár törlése

copyFile( $from, $to, $ext = '.*' )     Fájl másolása

makeDir($dir,$rights = 0777)          Könyvtár létrehozása

checkTargetDirectory($target, $rights = 0777)  Célkönyvtár meghatározása,

ellenőrzése és létrehozása célfájlból

makeMongoDirName($mongoid )              Mongo könyvtárnév generálása - csak név

uploadFile( $file, $path ='content/upload/') uploadFile  képfeltöltés


 

10.16. Általános eljárások (class.function.php)

    class.function.php

    Itt az általános eljárások gyűjteménye található meg. Ezek olyan univerzális függvények, amelyeket a webalkalmazásunk a vezérlők utasítására bárhol meghívhatnak a kódban. Elsősorban kiegészítő / segítő jellegű függvények melyek többsége egy bizonyos adattípust konvertál át egy másik adattípusba.

Az osztály elérése APP::Loader(”˜function”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

str2url ( $str )             Szövegbõl linkké alakítás szóköz csere '-'re

url2str ( $str  )         Linkbõl szöveggé alakítás '-' csere szóközre

sectime ( $s)             Másodpercet alakítja át, óra perc formátummá

sec2time ( $s )              Másodperc átalakítása perc:másodperc formátumra

sec2time2 ( $s)              Másodpercet alakítja át, óra perc formátummá

byte2size ( $s )          Byte átalakítása GB, MB, KB -okra

memoryUsage()             Memóriafoglalás mérete

setRandom()             Véletlenszám generátor beállítása

emailCheck($string)           email ellenőrző

localised_timestamp($timestamp = -1)      Idõbélyeg létrehozása

object2array($object)       Objektum tömbbé alakítása

ReDirect( $url, $die = true ) Lap újratöltése

intro( $string, $maxLength = 30, $template = '%1$s' )  Szöveg rövidítõ Intro

maxlength($text, $len=30)       Max hosszúságú intro készítő

title2str ( $str )          Cimkébõl szöveggé alakítás _ csere szóközre

str2title ( $str )          Szövegbõl cimkévé alakítás szóköz csere _re

hungarianToEnglishConvert( $string )        Ékezetek eltávolítása és kisbetűvé

alakítása

strtolowerHun($string)      Magyar ékezetes szöveg kisbetűsre alakítása

strtoupperHun($string)       Magyar ékezetes szöveg nagybetűsre alakítása

weburlencode ( $str )         webcímek átalakítás mentéshez protokoll nélkül

emaildecode ( $str )           email cím átalakítás kiíratáshoz spamvédelemmel

date2datum ( $datum )          Adatbázis dátumérték formázása normálra

str2datum ( $str )          Szöveges extra dátum meghatározások konvertálása

isweekend($date)             Hétvége ellenőzése

id2dir ( $id, $dirs = 2)     azonosító átalakítása könyvtárszerkezetre 3

számjegyes tagolásban    999.999 elemig

id2zero ( $id, $db = 6 )     azonosító átalakítása 6 karakteresre    999.999

elemig

make_seed()             Véletlenszámgenerátor beállítása

bigint2rights ( $nb )         Szám kibontása jogosultsági tömbbé

rights2bigint ( $jogok )     ogosultsági tömb kovertálása számra

GetMicroTime()

getip()                 Látogató IP címének kiolvasása

BrowserGetInfo()          Böngésző információ

getbrowser()              Böngésző tipusa

getos()                 operációs rendszert

 

10.18. Xml kezelő (class.xml.php)

    Az Xml kezeléssel kapcsolatos műveleteket tartalmazza az osztály, mint az adatok exportálása xml fájlba és

onnan való importálása.

Az osztály elérése APP::Loader(”˜xml”™)->xy();

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

xml( $xml  )                 Xml adat

addXml( $xml )                 Xml hozzáadása

_struct_to_array( $values, &$i )      A visszatérő xml tömb tartalmát egészíti ki.

createArray()                 A visszatérő xml sztring tömb tartalmát egészíti

ki.    

xml2array( $xml )                XML átalakítása tömbbé

object2array( $object )              Objektum tömbbé alakítása

xml2ary( &$string )             XML adatok átalakítása tömbbé

del_p( &$ary )                  Eltávolítja a rekurziót az eredmény tömbből

ary2xml( $cary, $d = 0, $forcetag = '' )     Tömb átalakítása Xml-be

ins2ary( &$ary, $element, $pos )    Elem beszúrása tömbbe

 

10.19. Mongo nosql adatbázis réteg (class.dbmongo.php)

A MongoDB adatbázishoz való kapcsolódást valósítja meg.

Először létrejön egy objektum, amely lekérdezi kapcsolat állapotát, ha van kapcsolódás az adatbázishoz, akkor műveletek hajt végre, amikre a vezérlő utasította, ha nincs kapcsolat, akkor először megpróbál kapcsolódni az adatbázishoz, és a fentebb említett tevékenységet folytatja.

Az osztály elérése APP::Loader(”˜dbmongo”™)->xy();

 

    Szükséges modulok, osztályok, objektumok:

nincs

 

    Deklarált Publikus eljárások:

 

instance()                 példányosítás, kapcsolati érték visszaadása

connect()                 mongo szerver kapcsolat kiépítése

isconnect()             Kapcsolódási állapot lekérdezése

 

11. Bettle.php    -    központi indító

    Minden futtatási művelet központi kezelője, a megfelelő .htaccess beállítások után minden php lekérés ide fut be. Itt deklaráljuk a közvetlen php fájlhívásokat kivédő „BETTLE” állandót. Értelmezés után a vezérlő csak a megfelelő helyre irányít tovább.

 

    Szükséges modulok, osztályok, objektumok:

 

    Include:

        app/control/control-system.php

 

    Szerkezete:

        DEFINE ( 'BETTLE', true );

 

12. Backend-adminisztrációs rendszer

12.1    Admin modul szerkezete

Az adminisztrációs modulok egy egységes osztályelnevezést kapnak a admin osztályból származtatva.

Például a felhasználókezelő modul (user) az app/admin/user/class.useradmin.php-ben található useradmin osztályt hozza létre.

Minden származtatott osztály 3 alapértelmezett vezérlővel rendelkezik:

    AjaxController        - Ajax események kiszolgálása

    PopupController    - Popup szerkesztés műveletek, nézetek

    WebController        - Webes lista megjelenítés

A vezérlők a APP::getDATA( 'SYSTEM', 'EVENT' ) alapján határozzák meg a szükséges eljáráshívásokat. A szabványos Controller szerkezet megtalálható az Ajax és Popup vezérlőkben, ezek szabadon bővíthetőek.

A WebController általános esetben csak a szülő osztály showPage() függvényét hívva jeleníti meg listanézetet a konfigurációban megadott adatok alapján.

 

Az admin osztályokhoz mindig tartozik egy konfigurációs fájl (config.useradmin.php), mely tartalmazza az összes szükséges beállítást.

    config.xyadmin.php szerkezet, tartalmi elemei:

    $name        - A modul megnevezése pld user

APP::setADMINDATA($name,'main', array())    - Az alapértékek tömbje

APP::setADMINDATA($name,'ajaxfunc', array ())    - Az engedélyezet ajax műveletek beállításai

APP::setADMINDATA($name,'oszlop', array ())    - A lista nézet oszlopainak meghatározása

APP::setADMINDATA($name,'sorts', array ())    - A lista rendezési beállításai

APP::setADMINDATA($name,'submenu',”™”™)        - A megjelenített almenüpontok (általában: új elem)

 

$field_title= array()        - Űrlap mezők paraméterezett megadása egyesével

APP::setADMINDATA($name,'fieldsnew', $formfields); - Űrlapmezőkből összeállított ”œúj” és ”œszerkesztés” űrlap megadása a popup nézetekhez

 

12.1.1 Api  admin(class.apiadmim.php)

12.1.4 Api partnerek admin (class.client_apiadmin.php)

12.1.5 Keretrendszer admin, CMS (class.cmsadmin.php)

12.1.6 Beállítás admin, Config (class.configadmin.php)

12.1.9 Képgaléria admin (class.galleryadmin.php)

12.1.23 Nyelvkezelő admin (class.languageadmin.php)

12.1.24 Menükezelő admin (class.menuadmin.php)

12.1.25 Hírkezelő admin (class.newsadmin.php)

12.1.30 Vezérlőpult admin, sum (class.sumadmin.php)

12.1.32 Felhasználó admin (class.useradmin.php)

12.1.33 Felhasználói csoportok admin (class.usergroupadmin.php)

 

12.3 Vezérlőpult tartalmi része

(class.sumadmin.php)

Felhasználók

Csoportok

Tartalmak

Sablonok

Menükezelő

Hírek

Kategóriák

Médakezelő

Modulok

Pluginok kiegészítők

Nyelvkezelő

Beállítások

Információ

Kilépés

13. Modulok

13.2 class.event.php

    Esemény modul osztály.

    Ez modul kezeli a különböző eseményeket.

Példa az osztály hívására: APP::Loader('event')->xy;

 

Deklarált Publikus eljárás:

sendTest()                     Teszt küldése

control($data = null)             Központi vezérlő

13.8 class.notice.php

    Megjegyzés modul osztály.

Példa az osztály hívására: APP::Loader('notice')->xy;

 

Deklarált Publikus eljárás:

 

sendTestMail()                     Teszt email küldése

sendMail( $data = null )               értesítő levél küldésre bejegyzése adott

email címre

saveMailFile( $data = null )               email file létrehozáse és lementése a

megfelelő helyre

loadMailFiles( $data = null )             email file beolvasása és kiküldése (ez a

fv hívja a moveMailFile fv-t is)

moveMailFile( $data = null, $error = false ) email file áthelyezése a mai dátum

kiküldött könyvtárba

createEmailHeader()                 Email fejléc generálása

sendNotice($data = null)                értesítő küldés emailben vagy smsben

inviteNotice($data = null)              Felhasználók meghívása emailben vagy

smsben

14. Megjelenítés sablonkezelő rendszer

A megjelenítési réteg (VIEW) egy egyszerű sablonkezelő rendszert használ a megfelelő változók lecserélésére. Valamint a sablonfájlokban elhelyezett nyelvi változókat automatikusan kicseréli a megfelelő nyelvi szövegre.

15. Oldalkapcsolódási szerkezet

 

16. Vezérlő szerkezetek

16.1. Fő vezérlők

/bettle.php    Fővezérlő

    Az url alapján eldönti hogy melyik tipus vezérlőre írányítsa a kérést

    /cron -> /app/control/control-cron.php

    /ajax -> /app/control/control-ajax.php

    /admin -> /app/control/control-admin.php

    /xy -> /app/control/control-web.php

 

/app/control/control-system.php        Globális/rendszer típus vezérlő

    Minden típus vezérlő előtt meghívódik és feldolgozza a globális REQUEST paremétereket (m, iid, event, search, page)

 

/app/control/control-ajax.php        Ajax típus vezérlő

    Feldolgozza az ajax speciális REQUEST paremétereket (sort, filter,data) majd a m(MOD) paraméter alapján továbbirányítja az adott modul AjaxController() -re

 

/app/module/ws_cart/class.ws_cart.php     Webshop kosár vezérlő

    WebController()

    AjaxController()    az event(EVENT) paraméter alapján elvégzi a kívánt műveletet vagy meghívja az osztály adott eljárását

 

Minta példa:

A hívott url: /ajax?m=ws_cart&event=add&iid=825&data=1

A vezérlési szerkezet (route) útvonala:

    /bettle.php - /ajax ezért továbbírányítja

        /app/control/control-ajax.php - m=ws_cart ezért továbbírányítja

        APP::Loader(”˜ws_cart”™)->AjaxController();

            /app/module/ws_cart/class.ws_cart.php AjaxController

                event=add ezért elvégzi a kosárhoz adás műveletet a 825 azonosítójú termékből 1 darabot a kosárhoz ad    

16.2. Aldomain és redirect URL értelmező

Ha nincs aldomain, akkor

    Ha van REDIRECT, akkor

        Ha REDIRECT=search, akkor

        Ha a REDIRECT egy létező statikus oldal, akkor

            STATIKUS OLDAL megjelenítése

        Ha a REDIRECT egy rendszer link, akkor

            REDIRECT=foglalas

            REDIRECT=ertekeles

            REDIRECT=feliratkozas

    Ha nincs REDIRECT, akkor FŐOLDAL megjelenítése

 

17.    Sablon készítés

17.1.    Könyvtár és fájlszerkezet

    Az oldal teljes arculatának elkészítéséhez szükséges a főoldali, a különböző aloldali, valamint speciális esetekben az egy elemet bemutató nagykártya és a több elemet listázó kiskártyás oldal elkészítése is.    

    Az elkészült új arculat minden eleme a ”œskin/” főkönyvtárba kerül, azon belül pedig egy aktuális domain pld ”œkontingenskezelo.tk/”  könyvtárba. A minden megjelenésre érvényes fájlok a ”œskin/”-en belül a megfelelő ”œcss”, ”œjs”, ”œimage” mappákba helyezhetők el, a adott skinre érvényesek pedig azon belül pld ”œskin/kontingenskezelo.tk/js”, ”œskin/kontingenskezelo.tk/css”,”œskin/kontingenskezelo.tk/image”.

    A skinek sablonjai a skin template könyvtárába kerül kategórizálva almappákban az egész oldal ”œpage”, a tartalmi keretek ”œcontent” a további doboz megjelenés ”œbox”.

    

    skin/                    -    Megjelenítése főkönyvtára

    skin/css/                -    Általános CSS stílusfájlok

    skin/js/                    -    Általános JS javascript fájlok mappákba rendezve (jquery)

    skin/image/                -    Általános képek, ikonok kategóriákba szedve (icon,button)

    

    skin/web/                -    Webes (kontingenskezelo) normál megjelenés főkönyvtára

    skin/web/css/                -    Webes megjelenés CSS stílusfájljai

    skin/web/js/                -    Webes megjelenés JS javascript fájljai

    skin/web/image/            -    Webes megjelenés képei

    skin/web/template/            -    Webes sablonok könyvtára

    skin/web/template/page/        -    Webes teljes oldal sablonok

    skin/web/template/content/        -    Webes oldal szerkezet, tartalmi sablonok

    skin/web/template/box/        -    Webes dobozok sablonok (doboz, üzenet, lista sor, email)

17.2.    CSS Stílusfájl

    Az egységes (egybe dologozott) CSS stílusfájlban a külső kép hivatkozásnál a fenti mappa szerkezet használata szükséges. A CSS-ben hasznos nevek használata kötelező, kerülendők a semmitmondó ”œosztály” vagy ”œname” nevek (pld: class5, tablazat3). Az összes stílusformázás a CSS-be kerül, HTML kódban nem használunk STYLE mezőt!

    A CSS-ben lehetőleg használjuk az objektum orientált elrendezést legalább behúzásokkal jelezve az egy csoportba/szintre tartozó jelöléseket.

.content div {

}

.header_icon{

}

    .header_icon a{

    }

 

A float-ok törléséhez és alapértékre állításához ajánlott egy clear osztály használata a CSS-ben:

.clear    {

    clear: both;

    font-size: 0px;

    height: 0;

    line-height: 0px;

    margin: 0px;

    padding: 0px;

    }

HTML-ben pedig: <div class="clear"></div>

 

    Az arculat készítésénél nem megengedett a táblázatos elrendezés, csak a tableless sablont használunk! Mivel a böngészők mindegyike támogatja már (2011-eleje óta) a CSS3 tulajdonságot nagyobb részét, ezért a lekerekített megjelenítést csak CSS3-al kell elvégezni és nem sarokképek összerakásával!

17.3.    Sablonfájlok TEMPLATE

A sablonfájlok nevei is tükrözzék a tartalmukat vagy a funkciójukat pld: ”œreg_email.php” és biztonsági okból kerüljük a jellegzetes neveket (index, home, main, log). A Sablonok php kiterjesztésű fájlokba kerülnek, a tartalomban pedig sablonváltozókat használhatunk ** (két csillag) karakterekkel körbevéve (pld: ). A betöltendő CSS és JS fájlok az oldal konfigurációjában kerülnek meghatározásra ezért a beillesztett sablonban már csak és szerepel. A HTML sablonokban az áttekinthető miatt fontos a szerkezeti szintek jelzésére a behúzások használata!

    

Minta főoldali PAGE szerkezet egy HTML5-ös oldal-ra (allhtml.php):

<!DOCTYPE html>

<html lang="hu">

<head>

<title>fejlesztői dokumentáció CorinCloud.com bérelhető webshop rendszer</title>

<meta charset="utf-8">

<meta name="keywords" content=" corincloud, corinwebshop, webáruház bérlés, bérelhető webshop" />

<meta name="description" content=" CorinCloud bérelhető webshop rendszer" />

</head>

<body>

    <header></header>

<section>**CONTENT**</section>

    <footer>**FOOTER**</footer>

**FEEDBACK**

</body>

</html>

 

    A mintakódban szereplő **FEEDBACK** és kötelező paraméterek, melyek a hibajelzéseket és a visszajelzéseket kezelik és jelenítik meg szükség esetén. A kódban látható változó helyére a rendszer automatikusan betölti (include) a page/header.php sablonfájlt, de ha nincs szükség különböző szerkezetű fejlécekre, akkor ez közvetlenül beírható az allhtml.php -ba. A META tagok sablonváltozói szükségesek a megfelelő SEO kezeléséhez!

    

Egy oldalszerkezet minta sablon, így válik lehetővé különböző szerkezeti elrendezés (pld főoldal két hasáb,  aloldalak három hasábosak) ”œcontent/fooldal.php”:

<div id="sidebar_page">

    **SEARCHBOX**

    **SORTBOX**

    **SERVICEBOX**

    **FAVORITEBOX**

</div>

<div id="main_content_page">

**MAP**

    <div id="items">**ITEMS**</div>

</div>

 

    Egy doboz tartalmi sablon, hírek lista egy sornyi elemének mintája ”œbox/hirek_sorok.php”:

<div class="hir_cikk">

<div class="hir_kep"><img src="**H_KEP**"  alt="**H_TITLE**" /></div>

<div class="hir_tartalom">

<div class="datum">**H_DATUM**</div>

<div class="cim"><a href="**H_URL**">**H_TITLE**</a></div>

<div class="bevezeto">**H_BEVEZETO**</div>

<div class="tovabb"><a href="**H_URL**">reszlet &raquo;</a></div>

</div>

</div>

    Lehetőleg az összes HTML elem szerkesztését a CSS végezze, ezért pl az image csak kötelező ALT-ot tartalmaz, de width és height értékeket nem!

 

    Egy lehetséges sablon könyvtár tartalom mintája:

skin/web/template/

        page/allhtml.php

        page/header.php

        page/footer.php

        content/fooldal.php

content/listapage.php

content/errorpage.php

box/feedback.php

box/loginform.php

box/logged.php

box/hirekdoboz.php

box/hirek_sor.php

box/hirlevel_feliratkozas.php

17.3.1    Sablonváltozók

    A sablonváltozók a sablonokban ** karakterek között nagybetüvel írva és kizárólag angol nyelven találhatóak. Az hosszabb nevek elválasztására _ aláhúzást használhatunk pld: **NEWS_HEADER**

 

    Általános sablonváltózók listája:

    fejlesztői dokumentáció        - kötelező egyedi META cím

CorinCloud.com bérelhető webshop rendszer    - kötelező állandó META cím

    - kötelező egyedi META kulcsszavak

corincloud, corinwebshop, webáruház bérlés, bérelhető webshop- kötelező egyedi META kulcsszavak

        - kötelező egyedi META leírás

CorinCloud bérelhető webshop rendszer    - kötelező egyedi META leírás

            - kötelező egyéb META elemek tömbje

            - kötelező CSS stílus fájlok tömbje

            - kötelező JS script fájlok tömbje

                    - állandó oldalfejléc lehetőség

**CONTENT**        - a változó központi tartalmi rész

**FOOTER**            - állandó oldallábléc lehetőség

**FEEDBACK**        - FEEDBACK visszajelzés lehetőség

            - kötelező DEBUG nyomkövető

    17.4.    Nyelvi változat, nyelvkezelés

    A sablonokban lehetőség van közvetlenül nyelvi szöveges tartalmak kiírása helyett nyelvi változókat elhelyezni. Ezen változók formátuma a következő: xy mely az xy nyelvi azonosító helyére a megfelelő fordítást fogja betölteni. A rendszer a futtatáskor automatikusan végrehajtja az összes nyelvi sablonváltozó fordítását! A fordításokat egy külön nyelvi fájlban (hu.lang) vagy adatbázisban tároljuk az alábbi egyszerű szöveges szerkezetben soronként xy=fordítás (pld: sendbutton=Elküldés)

    A nyelvi fájlok szabályai:

    A szöveges nyelvi fájl soronként változó értékpárokat tartalmaz = jellel szétválasztva, baloldal a változó neve végig nagybetüvel _ jel használata tagoláshoz, jobb oldal a lefordított szöveg. A nyelv fájl tartalmazhat megjegyzés sorokat # karakterrel kezdve. Az egybe rendezett blokkokat # ------------------- forbában kommentezzük, a változókat pedig # xy formában mindig a sor elé külön sorba beszúrva.


 

    Nyelvi fájl minta:

#---------------- PAGE FOOTER  ------------------------------------------

FOOTER_LINK_MOBIL                = * Mobil

FOOTER_LINK_MOBIL_DEMO            = * Mobil demo

# Az ötlet feltöltése csak a láblécben van használva

FOOTER_LINK_UPLOAD                = * Ötlet feltöltése

FOOTER_LINK_REGISZTRALAS        = * Regisztrálás a Ribizly rendszerbe

 

    17.5. Sablonból sablon betöltés

    Sablonokban lehetőség van másik sablon automatikus betöltésére (include) a formában, mely a ”œdir” template könyvtárból a ”œname”.php sablonfájlt tölti be.

 

18. Domain  APP/DOMAIN/

18.1 class.domain.php

    loadPaypalAPI( $data )                  paypal Api betöltése

loadColorLibraryAPI()                   a szín cimke betöltése

loadDescriptionAPI()

loadOptionLabelAPI( $data = null )

loadCategoryLabelAPI( $data = null )

loadColorTranslateAPI()

SideBarController()                     Sidebar oldalsáv megjelenítése

controlSubDomain( $maintemp)             egyedi aldomain kezelő

controlRedirect()                     Átirányítás vezérlő

controlTemplate( $maintemp)                 Sablon vezérlő

addPager($data)                     Oldallapozó hozzáadása

controlVelemeny()                     Vélemény oldal vezérlő


 

18.2 config-popup.php

 

18.3 config-web.php

19.Fejlesztési irányelvek

1, Dokumentálás:

        File elején a fejlcében a feladatok, változtatások és a használat leírása.

        Fejlécben minden publikus eljárás hívásának mintája.

        Eljárások előtt szabványos komment szerkezetben osztálynév::eljárásnév leírás sor, majd a paraméterek a PHPEDIT dok generátorával.

        A programblokkokban átlagosan 2-3 soronként // formájú megjegyzések, melyek leírják a lényeget. Minden külső nem rendszer php parancs egyszerű magyarázata.

        # megjegyzés használata az ideiglenesen kikapcsolt soroknál.

        /**/ megjegyzés csak eljáráson kívül eljárás csoportok jelzésére használható.

        // TODO: xy formában a későbbi feladatokat emlékeztetőket a kódon belül kell jelezni.

2, Eljárások:

        Az aljárások paramétereit minden esetben ($data=null) formában vesszük át, a paramétereket teljeskörűen isset() formában ellenőrizzük.

    3, Modelek

        Model eljárások visszatérési értékei $data vagy $datas elem vagy tömb formában

        Get metódusoknál ha hibás paraméterek akkor false visszatérés, ha üres találat, akkor üres tömb bisszatérés

        Set metódusoknál, ha sikeres akkor ID (insert vagy update) visszatérés, ha sikertelen akkor false

        Set metódusnál ha van $data[”˜id”™] paraméter, akkor UPDATE-elni, különben              INSERT

        Minták:

public  function getvalami($data= null )

{

// Ha nem létezik, vagy nem tömb, vagy nincs azonosító akkor visszatérés

    if ( !isset( $data ) or !is_array( $data ) or !isset( $data['xy_id'] ) ) return false;

”¦

return $datas;

}

public function setValami( $data = null )

{

// Ha nem létezik, vagy nem tömb,  akkor visszatérés

if ( !isset( $data ) or !is_array( $data ) ) return false;

// ha nincs id megadva akkor insert

if ( !isset( $data['id'] ) )

{

$res = APP::Loader( 'db' )->Query( "INSERT INTO  ”¦...");

return APP::Loader( 'db' )->Insert_ID();

}else {

$res = APP::Loader( 'db' )->Query( "UPDATE  ”¦.........,");

return $data['id'];

}

}