Fejlesztői Doc.:
FEJLESZTŐI DOKUMENTÁCIÓ
BETTLE- CorinCloud
1.5v (2014.12.01)
î¿¿
5. Adatbázisszerkezet, adatkapcsolatok
7. Keretrendszer függvény, változó és objektumtár
8. Rendszerbeállítások (config)
8.1 app/config/config-system.php
8.3 app/config/config-admin.php
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
14. Megjelenítés sablonkezelő rendszer
15. Oldalkapcsolódási szerkezet
16.1. Aldomain és redirect URL értelmező

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,
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.
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!
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.
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 -
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,
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_”
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
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 |
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 |
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 |
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 |
Picture model megvalósítása.
Példa hívásra: APP::ModelLoader('gallerypic')->xy();
Deklartál Publikus eljárások:
getGalleryPics($data ) Galéria képlista lekérése
getGalleryData ($data) Adott geléria adatainak lekérdezése
AjaxUpdateGallery($data) Album adat firssítése az adatbázisban
AjaxDelPic($data) AJAX Kép törlése
setGalleryPic($data) kép beillesztése, módosítása
setGallery($data) galléria beillesztése, módosítása
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
Felhasználó model megvalósítása.
Példa hívásra: APP::ModelLoader('user')->xy();
Deklartál Publikus eljárások:
setUser($data) egy felhasználó frissítése vagy hozzáadása
getUser ( $data ) Egy felhasználó összes adatának lekérdezése
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
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
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)
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:
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
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:
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:
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.
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.
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
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.
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ő
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
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
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.
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.
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ő
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
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
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
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
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
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.
Admin általános osztály
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
A levelezés kezelését végzi az osztály
Az osztály elérése APP::Loader(phpmailer)->xy();
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
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
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
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
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 );
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
(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
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ő
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
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.
/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
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
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)
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!
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 »</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
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ő
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
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
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.
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.
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'];
}
}