Ecosyste.ms: Repos
An open API service providing repository metadata for many open source software ecosystems.
GitHub / lortnus / ezc
ezComponents
JSON API: https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lortnus%2Fezc
Stars: 1
Forks: 4
Open Issues: 0
License: other
Language: PHP
Repo Size: 37.7 MB
Dependencies:
1,865
Created: almost 10 years ago
Updated: 20 days ago
Last pushed: over 5 years ago
Last synced: 20 days ago
Files
Loading...
Readme
Loading...
Dependencies
composer.json
packagist
- php >=5.2.1
- Aboutauthentication *
- Agenericfilterwhichisusedtogrouptwoormorefilters.Dependingon *
- Alistoffilterswhicharetobesupportedintheinitialreleaseofthe *
- Authentication *
- Authenticationexamples *
- Authenticationfilters *
- Authenticationisaprocessofverifyingtheidentityofanuserandenabling *
- Authenticationprocess *
- Authenticationstages.ValidationandAuthorizationwillbeimplementedata *
- Authorization *
- CAPTCHA *
- Checkifuserhaspermissionsforthecurrentcontext *
- Checkifuserisvalidforthecurrentcontext *
- Checkusercredentialswithasecurityprovider *
- Confirmationticket *
- Continue *
- Database *
- DatabaseSchemacomponents. *
- Designgoals *
- Duetothenatureofthiscomponent ,caremustbetakentoensuresecure
- End *
- Error *
- Example *
- Extensionsneededfortheauthentication *
- Fetchtheusercredentials *
- Forexample *
- Group *
- Groupingoffilters *
- Htpasswdfile *
- Identification *
- IfaSessionobjectisspecified ,thenitwillbecheckedbeforethe
- InmanywayssimilarwithOpenID ,inthatusersloginonlyonce.Info
- Introduction *
- LDAP *
- LocalVariables *
- Login *
- NO *
- Notaproperauthentication ,itisjustawaytosecurecertainfeaturesof
- OpendID *
- PHPrequirements *
- Protocolforqueryingandupdatingdirectoryservices.Compatiblewith *
- Requirements *
- START *
- Schematic *
- Securityconsiderations *
- Session *
- Sessionattackswillbepreventedwiththesemethods *
- Sessionsupport *
- SimilartoCAPTCHA.Theservergeneratesacodeandkeepsitinadatabase *
- Stop *
- Supportforauthenticatingagainstausergeneratedcode.Thecodeisstored *
- TheAuthenticationcomponentshouldsupportaddingfilters *
- TheSessionclassisresponsiblefor *
- Theauthenticationprocessisdividedintofilters *
- Theauthenticationprocesswillstop *
- Theauthenticationprocesswillstopregardlessofwhatfiltersarestillin *
- Thedeveloperoftheapplicationcangroupsimilarfilterstogether ,whereat
- Thefiltersruninsequence.Basedonthereturnstatusofeachfilter ,the
- Thelistoffilterscanbeextendedbydevelopers ,andcreatingnewfilters
- TheloggingofauthorizationattemptswillnotbedonebytheAuthentication *
- ThenewAuthenticationcomponentwillimplementonlytheIndentificatonand *
- Thenextfilterwillberun.Ifallfiltersarerunandpositiveanswer *
- ThepurposeoftheAuthenticationcomponentistoprovidesupportfordifferent *
- Thesessionisoptionalandisusedtomaketheauthenticationpersistent *
- Thestepsoftheauthenticationprocessare *
- TheuseofaSessionobjectisoptional *
- Theuserentertheirusername *
- Thisbehaviourcanbechangedwithanoptionforeachfilter ,whichspecifies
- Thisisusuallydonetoconfirmtheuser *
- Token *
- TypeKey *
- UsesaUnixhtpasswdfiletoauthenticateusers.Basicfilterandnottoo *
- Usesanexistingdatabasetoauthenticateusercredentials.Shoulduse *
- UsestheOpenIDprotocoltoauthenticateusers.Thecentralideaofthis *
- UsesthePHPsessiontomakeinformationabouttheauthenticateduser *
- VNO *
- VVV *
- Validation *
- Websitesusuallyhavea *
- Whatisauthentication *
- accessforthatuserbasedonstoredpermissions. *
- acodegenerator *
- acrossrequests.Ifthesessionisenabled ,theauthenticationprocessstarts
- anLDAPprovider ,butitneedsnotbepresentinbothproviders.Inthiscase
- anapplicationagainstscripts.Theservergeneratesacodeanddisplaysit *
- application. *
- applicationwillcomparetheuser *
- arenotrecognized ,theapplicationwilldenyaccesstotheuser.Sometimes
- asanexample. *
- astatusobjectwillcontaintheerror.Theapplicationwilldecide ,basedon
- atthesession ,whereitwillcheckiftheuserisalreadyauthenticated.If
- authenticatedagainstit.Itisusuallyusedforconfirmationoftheuser *
- authenticatedandauthenticationtimestamp *
- authenticationprocess ,anditwillsavetheauthenticationinformationfor
- authenticationprocess.Thesefilterswillbeprocessedinorder ,andonlyif
- authenticationprocesswillcontinueorstopasfollows *
- avoidenteringcredentialseverytimetheuserstartstheapplication.The *
- candecidewhichfilterstheapplicationshouldemployandtheirorder. *
- component *
- component ,butbytheapplication
- configuration ,atleastonefilterneedstosucceedinorderforthegroup
- databaseabstractiontobeabletoauthenticateagainstdifferentdatabase *
- deletedfromthedatabaseafterbeingused. *
- distributedprotocolisthatusersloginonlyonceusingtheirownURL. *
- eZComponents-Authentication ,Requirements
- emailaddress. *
- exampleifthepasswordisincorrect *
- file *
- fill-column *
- filtersneedtosucceedforthefiltergrouptosucceed. *
- filtersucceed ,thenthegroupfilterwillsucceed.
- functionality. *
- futurerequests ,aftertheprocess.
- handlingofresources. *
- ifthefilterstopstheauthenticationprocessifitissuccessful ,orallows
- imagetogainaccesstothesecuredfeature *
- inadatabase *
- isreceivedfromallofthem ,thentheuserisgrantedaccesstothe
- laterpointintime. *
- leastonefilterneedstosucceedforthefiltergrouptosucceed ,orall
- leastoneofthefiltersneedstosucceedforthegrouptosucceed. *
- meansofidentificationandauthenticationofusersusingdifferentprovidersand *
- mode *
- otherprotocols *
- persistentacrossrequests.Thisinformationincludesiftheuseris *
- protocols. *
- provider ,andallowtheuseraccesstotheapplication.Ifusercredentials
- providers *
- secureasthehtpasswdfilecanbeaccessibletosomeonewhohasaccessto *
- shouldnotaffectexistingcode. *
- specifytheprovidedSessionclassorextendittoimplementtheirdesired *
- stopsandthestatusoftheauthenticationcanbeusedbytheapplication *
- successful ,thenthesessionwillsavetheauthenticationinformationtobe
- theLDAPandDatabasefilterswillbegroupedtogether ,andifatleastone
- theauthenticationprocesstocontinue. *
- theauthenticationprocesswillberun.Iftheauthenticationprocesswas *
- theerrorstatus ,whattodo
- thepreviousfiltersallowtheprocesstocontinue.Ifonefilterfails *
- thequeue ,andtheuserisgrantedaccesstotheapplication.
- theserver.Shouldnotbeemployedoncriticalapplication.Itisusedmostly *
- thesessionexpiredoriftheuserisnotauthenticated ,theotherfiltersin
- tosucceed ,orallfiltersneedtosucceedinorderforthegrouptosucceed.
- totheuserinascrambledimage ,andtheusermustenterthecodeinthe
- usedinsubsequentrequests. *
- usesthiscodeintheapplication *
- vim *
- websitesuseothercredentialsinaddition ,likebanksrequiringuserstouse
- Aboutauthentication *
- Agenericfilterwhichisusedtogrouptwoormorefilters.Dependingon *
- Alistoffilterswhicharetobesupportedintheinitialreleaseofthe *
- Authentication *
- Authenticationexamples *
- Authenticationfilters *
- Authenticationisaprocessofverifyingtheidentityofanuserandenabling *
- Authenticationprocess *
- Authenticationstages.ValidationandAuthorizationwillbeimplementedata *
- Authorization *
- CAPTCHA *
- Checkifuserhaspermissionsforthecurrentcontext *
- Checkifuserisvalidforthecurrentcontext *
- Checkusercredentialswithasecurityprovider *
- Confirmationticket *
- Continue *
- Database *
- DatabaseSchemacomponents. *
- Designgoals *
- Duetothenatureofthiscomponent ,caremustbetakentoensuresecure
- End *
- Error *
- Example *
- Extensionsneededfortheauthentication *
- Fetchtheusercredentials *
- Forexample *
- Group *
- Groupingoffilters *
- Htpasswdfile *
- Identification *
- IfaSessionobjectisspecified ,thenitwillbecheckedbeforethe
- InmanywayssimilarwithOpenID ,inthatusersloginonlyonce.Info
- Introduction *
- LDAP *
- LocalVariables *
- Login *
- NO *
- Notaproperauthentication ,itisjustawaytosecurecertainfeaturesof
- OpendID *
- PHPrequirements *
- Protocolforqueryingandupdatingdirectoryservices.Compatiblewith *
- Requirements *
- START *
- Schematic *
- Securityconsiderations *
- Session *
- Sessionattackswillbepreventedwiththesemethods *
- Sessionsupport *
- SimilartoCAPTCHA.Theservergeneratesacodeandkeepsitinadatabase *
- Stop *
- Supportforauthenticatingagainstausergeneratedcode.Thecodeisstored *
- TheAuthenticationcomponentshouldsupportaddingfilters *
- TheSessionclassisresponsiblefor *
- Theauthenticationprocessisdividedintofilters *
- Theauthenticationprocesswillstop *
- Theauthenticationprocesswillstopregardlessofwhatfiltersarestillin *
- Thedeveloperoftheapplicationcangroupsimilarfilterstogether ,whereat
- Thefiltersruninsequence.Basedonthereturnstatusofeachfilter ,the
- Thelistoffilterscanbeextendedbydevelopers ,andcreatingnewfilters
- TheloggingofauthorizationattemptswillnotbedonebytheAuthentication *
- ThenewAuthenticationcomponentwillimplementonlytheIndentificatonand *
- Thenextfilterwillberun.Ifallfiltersarerunandpositiveanswer *
- ThepurposeoftheAuthenticationcomponentistoprovidesupportfordifferent *
- Thesessionisoptionalandisusedtomaketheauthenticationpersistent *
- Thestepsoftheauthenticationprocessare *
- TheuseofaSessionobjectisoptional *
- Theuserentertheirusername *
- Thisbehaviourcanbechangedwithanoptionforeachfilter ,whichspecifies
- Thisisusuallydonetoconfirmtheuser *
- Token *
- TypeKey *
- UsesaUnixhtpasswdfiletoauthenticateusers.Basicfilterandnottoo *
- Usesanexistingdatabasetoauthenticateusercredentials.Shoulduse *
- UsestheOpenIDprotocoltoauthenticateusers.Thecentralideaofthis *
- UsesthePHPsessiontomakeinformationabouttheauthenticateduser *
- VNO *
- VVV *
- Validation *
- Websitesusuallyhavea *
- Whatisauthentication *
- accessforthatuserbasedonstoredpermissions. *
- acodegenerator *
- acrossrequests.Ifthesessionisenabled ,theauthenticationprocessstarts
- anLDAPprovider ,butitneedsnotbepresentinbothproviders.Inthiscase
- anapplicationagainstscripts.Theservergeneratesacodeanddisplaysit *
- application. *
- applicationwillcomparetheuser *
- arenotrecognized ,theapplicationwilldenyaccesstotheuser.Sometimes
- asanexample. *
- astatusobjectwillcontaintheerror.Theapplicationwilldecide ,basedon
- atthesession ,whereitwillcheckiftheuserisalreadyauthenticated.If
- authenticatedagainstit.Itisusuallyusedforconfirmationoftheuser *
- authenticatedandauthenticationtimestamp *
- authenticationprocess ,anditwillsavetheauthenticationinformationfor
- authenticationprocess.Thesefilterswillbeprocessedinorder ,andonlyif
- authenticationprocesswillcontinueorstopasfollows *
- avoidenteringcredentialseverytimetheuserstartstheapplication.The *
- candecidewhichfilterstheapplicationshouldemployandtheirorder. *
- component *
- component ,butbytheapplication
- configuration ,atleastonefilterneedstosucceedinorderforthegroup
- databaseabstractiontobeabletoauthenticateagainstdifferentdatabase *
- deletedfromthedatabaseafterbeingused. *
- distributedprotocolisthatusersloginonlyonceusingtheirownURL. *
- eZComponents-Authentication ,Requirements
- emailaddress. *
- exampleifthepasswordisincorrect *
- file *
- fill-column *
- filtersneedtosucceedforthefiltergrouptosucceed. *
- filtersucceed ,thenthegroupfilterwillsucceed.
- functionality. *
- futurerequests ,aftertheprocess.
- handlingofresources. *
- ifthefilterstopstheauthenticationprocessifitissuccessful ,orallows
- imagetogainaccesstothesecuredfeature *
- inadatabase *
- isreceivedfromallofthem ,thentheuserisgrantedaccesstothe
- laterpointintime. *
- leastonefilterneedstosucceedforthefiltergrouptosucceed ,orall
- leastoneofthefiltersneedstosucceedforthegrouptosucceed. *
- meansofidentificationandauthenticationofusersusingdifferentprovidersand *
- mode *
- otherprotocols *
- persistentacrossrequests.Thisinformationincludesiftheuseris *
- protocols. *
- provider ,andallowtheuseraccesstotheapplication.Ifusercredentials
- providers *
- secureasthehtpasswdfilecanbeaccessibletosomeonewhohasaccessto *
- shouldnotaffectexistingcode. *
- specifytheprovidedSessionclassorextendittoimplementtheirdesired *
- stopsandthestatusoftheauthenticationcanbeusedbytheapplication *
- successful ,thenthesessionwillsavetheauthenticationinformationtobe
- theLDAPandDatabasefilterswillbegroupedtogether ,andifatleastone
- theauthenticationprocesstocontinue. *
- theauthenticationprocesswillberun.Iftheauthenticationprocesswas *
- theerrorstatus ,whattodo
- thepreviousfiltersallowtheprocesstocontinue.Ifonefilterfails *
- thequeue ,andtheuserisgrantedaccesstotheapplication.
- theserver.Shouldnotbeemployedoncriticalapplication.Itisusedmostly *
- thesessionexpiredoriftheuserisnotauthenticated ,theotherfiltersin
- tosucceed ,orallfiltersneedtosucceedinorderforthegrouptosucceed.
- totheuserinascrambledimage ,andtheusermustenterthecodeinthe
- usedinsubsequentrequests. *
- usesthiscodeintheapplication *
- vim *
- websitesuseothercredentialsinaddition ,likebanksrequiringuserstouse
- 3typesofcacheareavailableforanapplication.Thefirstandfastestlevel *
- Accordingtothereplacementstrategy ,cacheitemsneedtobeplacedinto
- Amajorproblemhereis ,thatthisinformationeitherneedstopersistbetween
- Anobjectofthisclassmusttakecareof *
- Aproblemwithanyofthereplacementstrategiesis ,thatadditional
- Assoonasthenumberofitemsinacacheexceedsthemaximum *
- Atypicalusecaseforthisfeatureexists ,ifseveralcachelocationsare
- Awaymustbeinvestigated ,howanarbitrarycachestoragecanbelimitedbythe
- Awayneedstobeimplementedtoputmultipleinstancesofthecurrent *
- Besidethemainrequirement ,tobeablerealizehierarchicalcaching,several
- Cachecomponenttosearchothercachesincaseofamiss.Forthisreason ,
- Cachepropagation *
- Cons *
- End *
- Hierarchicalstacking *
- Incontrast ,ithasthelargeststoragecapability.
- Inthisscenario ,thedesiredbehaviorwouldbethatthemostneededcache
- Itwouldbefavorabletoallowuserstodecideforaspecificreplacement *
- LRUalgorithm ,thelastaccesstimeofanitemneedstobestored.ForLFU,the
- Limitingofcacheditems *
- LocalVariables *
- Locking *
- Memcached ,runningonadedicatedcacheserver.Thisisalsoquitefast,but
- Openissues *
- Propagateinstore *
- Propagateonreplacement *
- Pros *
- Replacementstrategies *
- Requirements *
- Scope *
- Thecurrentstorageimplementationsassumethatunlimitedspaceisavailablein *
- Theideabehindthisfeatureistoprovidehierarchicalmultilevelcachingfor *
- Therearetwopossibilitiestodefinepropagationofcacheitemsthroughthe *
- Therequirementsforthesefeatureswillbedescribedinthisdocument.For *
- Thescopeofthisdocumentistodescribetherequirementsforthefeaturesto *
- Thestackingmechanismneedstosearchthestackofcachesfromtoptobottom *
- Thishassomeadvantagesandsomedisadvantagesagainstthesecondalternative *
- Thissectionsummarizesmiscopenissuesthatneedtobesolvedduringthe *
- Usecase *
- Usingthisstrategy ,anewlystoredcacheitemisonlyputintothetopmost
- Whenanewcacheitemisstored ,itneedstobestoredaccordingtothe
- Wikipediaunder *
- Withhierarchicalcaching ,thecomplexityofoperationsthatneedtobe
- Withthisstrategy ,anewlystoredcacheitemisautomaticallypropagatedto
- algorithmortoevenimplementtheirownstrategies. *
- alllevelsofthecachehierarchy.Withthisstrategy ,anewlystoredorupdate
- arequest.Thiscacheisextremelyfast ,becauseitresidesinlocalmemory,but
- available ,whicharedifferentlyperformantandcanstoreadifferentamount
- beforeitindicatesthatacacheitemcouldnotbefound. *
- beimplementedfortheCachecomponentversion1.4.Thisversionwill *
- cacheddataforthedesiredobject *
- cacheitemneedstobeupdateinallcachesofthehierarchyatonce. *
- cachestorageswithit. *
- cachingisprovidedbyafileserver ,whichofferstheslowestkindofcache.
- complexpersistencemechanismsforthedesiredinformationandmightpollutethe *
- designandimplementationphase. *
- designandimplementationrelatedinformation ,pleasetakealookatthedesign
- document. *
- done. *
- eZcomponent *
- eitherbestoredonlyin1Cacheorinseveralcachesatonce.Formore *
- filesystembasedcaches *
- fill-column *
- handlertobeaskedtorestoreacertainobject.Eitherthehandlerreturns *
- hasn *
- hierarchiccacheswillbeintroduced. *
- hierarchy.Aclasstomanagesuchstacksistobedesignedandimplemented. *
- higherlevelsofthehierarchy ,assoonastheygetrestoredfromadeeper
- implementedcachestoragesinastacktoindicatethattheyrepresenta *
- impossibletoknow ,severalestablishedalternatives
- incorporatethefollowingfeaturesandfixes *
- informationaboutacacheitemneedstobestored.Forexample *
- informationseethe *
- inthetopmoststorageofthecachestackandthelowerstorageswouldnotbe *
- iscoveredbyacachethatresidesinthelocalmemoryoftheserverfulfilling *
- isthereforealsolimitedtoaverylownumberofobjectsitcancontain *
- itdoesnothavevaliddata *
- itemisbubbleddowntothelowestlevel. *
- itemneedstobereplaced.Themostfavorableapproachwouldbetoremovethe *
- itemswouldbestoredinthefastestcache.Cacheitemswhicharenotthat *
- itemwhichwillbenotusedforthelongesttimeinthefuture.Sincethisis *
- lattersolutionmightsignificantlyreduceperformance *
- level ,tomakethemavailablefasteronsubsequentrestorerequests.Formore
- mode *
- much ,butstilloftenneededcouldresideinthesecondcachelevelandrarely
- needed. *
- notasfastasthelocalmemorycache ,sincedataneedstobetransfered
- numberofaccessesneedstobestored.Thecachestoragescurrentlydon *
- numberofcacheitemsitstores. *
- ofitems.Thefollowingissuchascenario. *
- openthepossibilityforraceconditionsinhighloadenvironments.Toavoid *
- performedonastorageandbetweendifferentstoragesisraised.Thismight *
- persistentlyandefficientlyneedstobethoughtout. *
- propagateddownonelevel ,beforebeingremovedfromthehigherlevelcache.
- propagation. *
- requestsorneedstoberecalculatedineachrequest.Ontheonehand ,the
- stack ,whereadecisionneedstobemadeforoneconsistentsolution
- storage.Inaddition ,thisshouldbethefasteststorage
- storageinthehierarchy.Assoonasitneedstobereplacedthere ,itis
- strategychosenforthemaintenanceofthehierarchy.Inaddition ,itcan
- structuresneedtobeavoidedtomaintainperformance. *
- sub-requirementsofthisexist ,whichwillbesummarizedinthissection.Note
- supportaddingsuchinformationandanappropriateplacetostorethis *
- thatafixedtargetistonotbreakBCforexistingapplicationsinanywayand *
- thatresidedeeperthanthefirstcachewheretheitemisfound. *
- theCachecomponent.CurrentlytheCachecomponentonlysupports1cache *
- theserverisdedicatedlybuildforperformantcaching.Thethirdlevelof *
- thestoragelocation.Followingthisphilosophy ,allcacheitemswouldbekept
- this ,alockingmechanism
- throughanetworkconnection.Ontheotherhand ,thiscacheislarger,since
- toavoidcodeduplicationasmuchaspossible.Besidethat ,toocomplex
- tosolvethereplacementproblem.Moreinformationaboutthiscanbefoundin *
- useditemswouldbestoredinthethirdlayer. *
- vim *
- withoutpollutingthelocalmemorytoomuch.Thesecondlevelcacheisa *
- 1.Booleanswhichcanbewrittenas *
- 2.NumbersarewrittenusingEnglishlocaleandcanbeinthefollowingformat *
- 3.Anexplicitstringwhichisenclosedindoublequotes *
- ASimpleName *
- Asimplename *
- BackgroundColor =0xaabbcc
- Commentsarealwaysplaced *
- Commentsarewrittenusinga *
- Currentimplementation *
- DNUM *
- Defaults *
- Defaultvaluescouldalsobestoredinasecondconfigfileiftheapplication *
- Description *
- Designgoals *
- Distributionvsdevsettings *
- EXPONENT_DNUM *
- End *
- Format *
- Groupandsettingidentifierscanonlycontainthecharactersatoz ,AtoZ,0
- Groupsaredefinedbyplacinganidentifierinsidesquarebracketsaloneonthe *
- Handlingdefaultvaluesformissingsettingsisuptotheapplication.Default *
- Hash =4
- Hash =5
- Inadditionitispossibletodefinearraysinasecondwaybyusingsquare *
- Inadditionthegroupnamesmaycontainforwardslashes *
- Inadditionthesquarebracketsmaybeenclosedaroundastringwhichturnsthe *
- Introduction *
- LNUM *
- List =5
- List =Firststring
- List =Secondstring
- LocalVariables *
- LogErrors =false
- MaxSize =400
- MinSize =0
- Mostapplicationsandcomponentsneedstobeabletoconfiguretheirbehavior *
- Multiplecommentlineswillbereadasonecommentwithmultiplelines ,if
- Permission =0666
- Price =10.4
- Requirements *
- Seed =10e5
- Setting =value
- Setting1 =Someexamplestring
- Setting2 =42
- Settingsaredefinedbyplacinganidentifierwithanequalsign *
- Specialconsiderations *
- SystemEnabled =true
- TextColor =0x0102FE
- The *
- Theconfigurationformatconsistsoffourelements *
- Theconfigurationpackageprovidesthetoolstostoreconfigurationsettings *
- ThecurrentimplementationusesonlyINIfilesandoneclass *
- ThefilesarealwaysencodedinUTF-8format ,thismeansitcancontainUnicode
- Thefollowingarelegalnames *
- Thefollowingconsiderationsmustbefollowedwhendesigningthecomponent. *
- Themajorproblemswiththecurrentimplementationare *
- TheoldsyntaxineZpublish3.xwith *
- Theparserwillremoveleadingandtrailingwhitespacefromgroupnames ,
- Thevaluesofsettingsaregenerallyseenasstringswiththeexceptionof *
- Validation *
- Validationisnotdonebytheconfigurationorthereaders *
- a-simple_and.longName *
- a.simple.name *
- a_simple_name *
- agenericconfigurationsystemisneeded.Thegoalofthedesignis *
- allowsyoutohavemultiplesettingswiththesamenamebutindifferent *
- alsotrimmed.Forinstancethefollowcomments *
- andtheseareillegal *
- array *
- arrayintoahash *
- arraysandstrings. *
- arraystospeeduptheprocess.Italsosupportsacomplexoverridesystem *
- asimplename *
- automated.Thismakesitpossibletooptimizetheapplicationbygettingrid *
- away *
- behavioraspossible ,separateautomationintodifferentclassesdepending
- beinusewhencreatingthedistribution.Themainproblemwasthatthesetting *
- beused ,butthatitismucheasierfortheapplicationtoknowhowtohandle
- brackets *
- butaccessingthemcanbedonewithanycase ,thismeansyoucannothavetwo
- charactersifneededorplainASCIIwithoutspecificencoding. *
- closetoimpossibleandwillonlycomplicatethecode. *
- commentstosettings.Forinstancethefilecouldlooklike *
- containsavalue. *
- defaultvalues. *
- describewhatthegroupcontainsorwhatasettingcontrols. *
- differentandsotheclassesmustcaterfortheneedofeachapplication. *
- eZpublishEnterpriseComponent *
- fasteraccesswhenusedonpageloads.Thismeansaslittleautomatic *
- fileasettingwasset. *
- filesorotherconfigurationformats.Theconfigurationpackagecomeswith *
- fill-column *
- formatinternallyintheapplication. *
- formatsthatfittheconfigurationstructure.Whilethefirstversionmaynot *
- forreadingthePHPwillparsethefile.Thefilewillcontainthreevariables ,
- foryourapplication.ConfigurationoptionsarestoredondiskusingINI *
- group.Settingswithoutgroupsarenotallowedandwillcauseanerrortobe *
- groups.Thismeansthatyoudon *
- havealltheotherformatsitshouldbeabletonewoneswitheaselateron. *
- havetobequoted. *
- havingthemexpiredwhentheoriginalconfigurationchanges. *
- inSVNwoulddifferfromthelivesettingmakingithardtogofromonesetup *
- intoproperPHPtypes ,thismeansintegers,floats,booleans,arraysand
- isnotpossible. *
- issued.Thegroupnamewillhaveitsleadingandtrailingwhitespacetrimmed *
- keptinsidethequotesandcharactersarereadliterallywiththeexception *
- line.Thewhitespaceblockbeforethecommenttextonallthelineswillbe *
- longeroccur. *
- mode *
- mustbepossibletoextendthisbyexternaldeveloperstosupportnewformats *
- name. *
- nameofthesiteorwhichemailtransporttouse.Howevertheapplications *
- ofescapedcharacters.Theescapedcharactersare *
- oflayersonedoesnotneed. *
- oneforthegroupsandsettings ,oneforthecommentstogroupsandonefor
- oneline ,itcannotspanmultiplelines
- ontheneed. *
- operations. *
- parser.Oncetheconfigurationisparsedanywhitespacetrimmingshouldno *
- problemsintheconfigurationtheyhavemadeormodified.Thismeans *
- reducesthememoryneededforopcodes. *
- reportingtheexactlocation ,whatiswrongandeventuallyhowtofixit.
- settingsandsettingvalues.Ifyouwishtokeepwhitespaceinastringitwill *
- settingswiththesameidentifieronlydifferingincase. *
- sincethelastcheck. *
- sothattheend-usercanchoosewhattodowithit.Thiscanbeconfiguringthe *
- string.Anysettingthatisreadafterthiswillbeplacedaspartofthis *
- strings.Thismeansthattheconfigurationsettingsarealwaysinaproper *
- stringsastexttheymustbequoted *
- sumoftheirconfigurations.Thisallowstheapplicationtousecachingand *
- supportformanipulationandstorageofINIfilesandcaching. *
- thantheconfigurationsystem. *
- thatonlycontainswhitespacewillbeignored. *
- thecommentitself *
- thedesignshouldmakesurethisisnolongeranissue. *
- thereareemptylinesinbetweencommentstheywillbereadasemptylinesin *
- thevaluefollowsaftertheequalsign.Thesettingandthevaluemustbeon *
- thismeansnothavingtoworryaboutwhitespacesandcasesfornames. *
- time. *
- timebeingassimpleandefficientaspossible.Theneedsofapplicationsare *
- to9 ,underscore
- totheother. *
- tousetheconfigurationfiles.Therearemanypitfallsforbothusageand *
- trimmedawaywhilewhitespaceafterthisblockiskept.Trailingwhitespaceis *
- uptotheapplicationtoprovideavalidationsystem.Thereasonisthat *
- useinthesystem.Thismakesitusemorememorythanitneedsto. *
- validationcanbesocomplexthatprovidingthisintheconfigurationobjectis *
- valuesalsoworktogetherwithvalidation.Ifvalidationfailsthedefaultscan *
- vim *
- wantsit. *
- wantstospendaslittletimeorcodewhenreadingintheconfigurationandso *
- whichallowsasite-access ,extensionorsite
- whichfittheconfigurationstructure. *
- willbecome *
- willmakethesettinganarrayandthevalueisparsedasexplainedabove. *
- willreadinagivenINIfilewhenitisinstantiatedandusescachinginPHP *
- Autogeneratedcontents *
- Centralrequirements *
- Dependingontheusedfontandstylesinlineformattingmighthaveaserious *
- Driverinfrastructure *
- Embeddingofmedia *
- Especiallyforcoverandbackpagesitmightbeusefultoincludethem *
- Especiallyjustifiedtextsinnarrowtextcolumnsrequireshyphenationfor *
- Floatingmediaobjects *
- Forcoverpages *
- Formediaobjects ,whichdonotspanthewholecolumnwidth,itshouldbe
- Formostofthoseelementsapredefinedgeneratorcanbeimplementedwhich *
- GenerationofPDFdocumentsshouldbeaddedtothedocumentcomponent.Those *
- Headersandfootersoftencontainsomefixedtexts ,butmightalsocontain
- Hyphenation *
- ImportofPDFpages *
- Inlineformatting *
- ItiscommontomakePDFdocumentswriteprotectedorsignPDFdocuments.If *
- ItmightbeusefultodirectlyconvertstyledHTMLtoPDF-iftheAPIstays *
- Itmightdependontheenvironmentwhichoneofthoselibrariesisavailable *
- Itmightdependontheuseddriverwhichformatsaresupported. *
- Itmustbepossibletoassigndifferentstylesdependingontheparent *
- Itmustbepossibletodefinecallbackswhichgeneratethosecontentsforthe *
- Itwouldbeniceifthestylescanbeimportedandexportedfrom *
- LTFandRTLlanguages *
- Layout *
- Metadata *
- OncePDFrenderingisimplementedcorrectly ,includingcorrectrenderingand
- Onemajorproblemmightbetheusedmarkupforformattingofinlinetext *
- Optionalrequirements *
- PDFdocumentsshouldbecreatedfromDocbookdocuments ,whichcanbegenerated
- PDFsupportsembeddingadditionaldocumentmetadata.Thisshoulddefinitely *
- PDIallowsembeddingofotherPDFsinsidethecreatedPDF-thiscanbeuseful *
- Properformattingoftextsismostprobablythebiggestprobleminthe *
- RequirementsforPDFgeneration *
- SigningPDFs *
- Textformatting *
- ThecentralrequirementistogenerateuserstylesPDFdocumentsfromDocbook *
- TheconversionofSVGtoPDFisusedfordistributionofheavilycustomized *
- Thedocumentcomponentalreadypreservesmetadataassociatedwithdocuments. *
- Thekeyrequirementsforthecomponent *
- ThemostcommonformatseemtobeJPEGandEPS.JPEGisnotsuitablefor *
- Therearealotofdifferentmediatypes ,whichmightbeembeddedintoPDF
- TherearemultiplewaystogeneratePDFdocuments ,like
- Thereareseveralelements ,whichcanrequireautomaticgeneration,thoseare
- Thereshouldbewaystoconfigurethethresholdsunderwhichparagraphsare *
- Thetextwrappingmustbeabletoworkwithleft-to-rightandright-to-left *
- ThisdocumentsummarizestherequirementsforPDFgeneration. *
- ThisrequiresreadingofexistingPDFdocuments ,though
- Widowsandorphans *
- andperformsthebest.Adriverinfrastructureshouldoffertheuserthe *
- atleast *
- autogeneratedcontents ,like
- beembedded ,butitmightalsobeusefultoofferaeasyaccessibleAPIfor
- bordersisnotrequired-therectangularframearoundtheimageshouldbe *
- cannotbehandedovertothedrivers. *
- choiceofselectingthebestoutputdriverforwritingtheactualPDF.Notall *
- consideredwidowsororphans ,whichshouldbeavoided.
- createsmeaningfuldefaultcontents ,andthencanbeextendedbytheuser.
- designeddocuments.WithaproperrenderinginfrastructuretheAPIshouldbe *
- differentlanguages ,basedonexternallyavailabledictionaries.
- directlyfromotherPDFdocuments. *
- documentcanbeformatteddifferently *
- effectonthetextwidth.ThisMUSTberespectingduringtextrendering. *
- elements. *
- elementsintheDocbookmarkup ,sothatthetitlesinthefollowingDocbook
- embeddingofadditionalmetadata.XMPisespeciallydesignedtoembedmetadata *
- evaluated. *
- flexibleenoughthisshouldbepossibletoaddlater. *
- fromeachmarkupavailableinthedocumentcomponent. *
- generationofthosecontentsneedstobeevaluated. *
- implementation ,therequirementsinclude
- keptflexibleenoughtosupportsuchconversionslater *
- languages. *
- markup.Thecustomizedstylingshouldinclude ,butisnotlimitedto
- much.Apluggablehyphenationmechanismisrequired ,whichcanbeadaptedto
- ofthosedriversdosupportpropertextwrappingthemselves ,sothatthis
- pagesfromotherPDFsandembedtheminthegeneratedPDFdocument. *
- pagetheyarecurrentlyrenderedon.Thebestpossiblemarkupusedfor *
- possibletofloattextaroundthemediaobjects.Detectionoftheactualimage *
- readableandwriteableformat. *
- severaltypesofgraphics ,andEPScanonlybeusedproperlyforsome
- sufficantfortextfloating. *
- theAPIofthePDFcreation. *
- therespectivePDFcreationlibrarycanhandlethat ,itshouldbeexposedin
- tobeimplementedyet. *
- typesofvectorbasedimages.Conversionoptionsandsupportedformatsmustbe *
- usingtheRDF. *
- whenmergingdifferentgenerateddocuments. *
- words ,otherwisetheblanksbetweencharactersandwordsmightincreaseto
- wrappingoftexts ,itmightbeusefulinsimilarcases,forexample
- Additionallythenextfeaturesshouldbeimplemented *
- Alsotherearealotofalreadyexistingtoolsthatsupportthisformat ,so
- AlsothereisanODFextensionforeZpublishthatcanconvertsimpledocuments *
- Currentimplementation *
- Description *
- Designdocumentshouldcontainalistofformatswearewillingtosupportin *
- Designgoals *
- Formats *
- HTML *
- IneZpublish3thereisadatatype *
- Internalformatshouldhaveaschemathatisrichenoughtopresentanydocument. *
- Inthefirstreleasewewillmostlikelysupportasubsetofthisformat ,soit
- Introduction *
- Mainformatsthecomponentdealwithinclude *
- Otherdocumentformatsthatwilldefenitelysupportedinsomeway *
- PHP5isrequiredforthiscomponent. *
- Requirements *
- Theattacheddiagram *
- Thecomponentshouldbeableto *
- Themaintaskofthecomponentistotakeaninputinoneofthesupported *
- ThepurposeoftheDocumentcomponentistoprovideaneasyanduniversalwayto *
- Thepurposeofthecomponentistopresentdocument *
- Thereshouldalwaysbeaawaytoconvertfromanyofthesupportedformatsto *
- Thereshouldbeonespecialformatthatisrecommendedtouseasintermediate *
- Thisdatatypecantakeinputinsomeformatsincluding *
- Thisisopenformatthathasalotoffeatureswhilenotbeingtoocomplex. *
- XMLtransformationscanbedonewithXSLtemplates.ThusXSLextensionfor *
- anyformats. *
- back.ItusesthecustomcodeplusOpenOffice.orgindaemonmodeforconversion. *
- dealwithstructuredtextdocumentsofanyformat. *
- documentautomatically. *
- eZpublishEnterpriseComponent *
- formatincomplexconversions ,unlesstherearereasonstopeekanother.This
- formatiscalled *
- formatsandconvertittoanother.Thereshouldbealwaysawaytoconvert *
- inOasisOpenDocumentformattotheinternalformatof *
- it *
- ithardtopresentitinWYSIWYGeditorsandhasanegativeimpactonthe *
- notcompatiblewithXMLschemadefinitions. *
- oneformattoanother ,itcouldbeadirectconversion,orchainconversion,
- performance.Themainthingsare *
- possibletoconvertitproperly. *
- probablyhasasensetouseanalreadyexistingsubsetcalledSimplifiedDocBook *
- soallstylinginformationthatcomesfromtheinputwillbeignored.Butif *
- somesemanticsiscodedwithstylesintheinputdocument ,itshouldbe
- supportedinthefirstreleaseofthecomponentandpossibledirectionsof *
- thatinvolvesoneormoreintermediateformats. *
- thefirstreleaseandthewaystheycanbeprocessed. *
- theinternalformat.Thisruleguaranteesthatthereisalwaysawaybetween *
- transformingfromoneformattoanthoer. *
- weakpointisthatit *
- wecanusesomeofthemifitisallowedbythelicense. *
- whichisnotallowedinXHTML. *
- Componentchecksiftherewasafatalerrororuncatchedexceptionduringyour *
- Description *
- End *
- Fatalerrorsonyourwebsiteshouldbehandledinasomewhatniceway.This *
- Introduction *
- LocalVariables *
- Providesawaytohandlefatalerrorsanduncatchedexceptions. *
- Requirements *
- applicationandallowsyoutorunaspecificfunctionincasethishappens. *
- eZpublishEnterpriseComponent *
- fill-column *
- mode *
- vim *
- Description *
- Designgoals *
- End *
- Handlingfeedscanbecumbersomeasyouneedtotakecareofencodings ,
- Introduction *
- LocalVariables *
- Requirements *
- Syndicationandaggregationareimportantaspectsofmodernwebapplications. *
- TheFeedpackageprovidesaccesstosyndicationfeeds ,butalsocontains
- asolidbasetogenerateandparsefeeds. *
- aspossiblewiththesupportofdifferenttypes *
- differentfeedtypesandmodules.Thiscomponentisdesignedtobeasflexible *
- eZpublishEnterpriseComponent *
- fill-column *
- functionalitytogeneratefeeds.TheFeedcomponentsupportsmultiplefeed *
- mode *
- supportthat. *
- thefeedtypesupportsthat *
- typesandalsoofferswaystouseadditionalmodulesinthefeedtypesthat *
- vim *
- Description *
- End *
- Introduction *
- LocalVariables *
- ProvidesfunctionalityrelatedtofileandfilesystemthatPHPdoesn *
- Requirements *
- Themethodsinthefilecomponentareallstandalonemethodsandcovermissing *
- directoryandpickoutfilesmatchingaspecificpatternspecfiedbyoneor *
- eZcomponent *
- fill-column *
- functionalityandhigherlevelfile *
- mode *
- moreregularexpressions. *
- ordoesn *
- thecomponentshouldincludeastaticmethodtorecursivelyscanthrougha *
- vim *
- Additionaldatapointinformation *
- Description *
- End *
- Flash *
- Formats *
- GD *
- Interactivedatapointsdescribeafeatureincharts ,thattheviewerofthe
- Introduction *
- Itisimpossibletoimplementnativelymorethensimpletextinaboxforthe *
- LocalVariables *
- Requirements *
- SVG *
- Specialconsideration *
- TheintegrationofHTML ,FlashorSVGdocumentsshouldbepossible,butwould
- Therearetwomajorsetsoffeaturestoimplement *
- Thevalueindicationmeans ,thatatthepositionofthemousepointerlines
- Valueindication *
- Whenhoveringorclickingonadatapointoralegendaite ,aboxwith
- acompleterederingmodellikeHTMLuses. *
- additionalinformationinhighlighteddatapoints ,becausethiswouldrequire
- additionalinformationshouldbedisplayed.Theboxshouldcontaintextor *
- aredrawn ,depedingonthecharttype,toindicatethecurrentdatavalueat
- beanondrivergenericmechanism.Itseemsnoteasilypossibletoconvert *
- chart ,ormovinghismousepointeroverpointsofinterestinthechart.
- chartcaninteractivelygetmoreinformationaboutdata ,whenviewingthe
- drawn. *
- eZcomponent *
- fill-column *
- mode *
- positionofthemousepointer ,whileinradarchartalinetothecenterof
- thechartandanellipse ,indicatingthevalueontheyaxis,needstobe
- thispoistioninthechart.Inalinechartthiswouldmeanahorizontalanda *
- userdefinedFlash ,HTMLandSVGtotherespectiveotherformat.
- userdefinedcontent. *
- verticallinetotheaxisandsomecoordinateinformationatthecurrent *
- vim *
- AnAPIforassigningdatasetstoaxisotherthenthedefaultonewillbe *
- Description *
- End *
- Introduction *
- Itshouldalsobepossibletoaddaxisnotdependingonanydatasetand *
- Itshouldbepossibletoassociateadatasetwithanondefaultaxis ,to
- LocalVariables *
- Multipleaxisareusedinthreedifferentcases. *
- Requirements *
- Specialconsideration *
- Toactasadditionalaxisandseperatorsitisrequired ,thatadditionalaxis
- andtheloadonamachine. *
- atleastoptional. *
- beginningofthechartsdata. *
- calculatethepositionofitsdatapointsbasedonadiffenrentscaling ,then
- canbeplacedatanypositioninthechart ,especiallyattheveryendand
- chart ,andifnoscalingwasexplicitelygivenandnodatasetisassociated,
- chartwhichhascompletelydifferentscalingsorunits ,liketheusedRAM
- definedinthedesigndocument.Thecalculationofthepoistionofadata *
- definethescalingmanually.Thoseaxiscanbeplacedatanypositioninthe *
- eZcomponent *
- fill-column *
- highlightdatabordersinyourchart.Inthiscasethesteplabelsshouldbe *
- linewiththe *
- mode *
- pointinachartiscompletelydoneinthechartclasses ,soitwillbeno
- problemtouseanotheraxisforthis.Nochangesoradditionsintherenderers *
- thedefaultone. *
- thedisplayeddata ,forexamplethevalueofasinglestockoptionandthe
- thoseaxiswillomitdrawingstepsorsteplabelingandjustdisplayasingle *
- valuesumofthecompletecompany. *
- vim *
- willberequired. *
- Adiagramshowingvaluesaselementsofapiechart.Itshouldsupport *
- Adiagramwithavariabley-axisshowingvaluesforafinitesetofdata *
- Description *
- End *
- Formats *
- GraphsshouldberenderedasPNGsinthefirstversion ,butitshouldbe
- Introduction *
- Linechart *
- Linechartsshouldsupport *
- LocalVariables *
- Piechart *
- Requirements *
- SpecialConsiderations *
- Thecomponentshouldbeflexibleenoughtoallowaveragingandotheranalysis *
- Thefirstversionofthecomponentshouldcoverthefollowingtypesof *
- Thepurposeofthiscomponentistogeneratedifferentkindsofdiagramsfrom *
- canforexamplebetrendanalysisormeanaverageetc. *
- charts *
- customizable. *
- differentkindsofdata.Thediagrams *
- eZcomponent *
- fill-column *
- manually *
- methodstoworkondatasetsandaddrendereddatatotheresultinggraph.This *
- mode *
- onlyinthesameunit. *
- part *
- points.Thechartshouldbeabletoshowdifferentdatasets ,butallmeasured
- possibletohavedifferentrenderstorendertof.e.SVGorflashinlater *
- styletheyshouldbedrawn *
- versionsofthecomponent. *
- vim *
- APersistentObject_tie-incouldbesuppliedtoeasilyrealizeCrud_ *
- Abeneficialside-effectrelatestocontroller-testing *
- Abstraction_ *
- Action *
- Actionsshouldbeabletocastanerrorspecifying ,atonce
- AgoodstartingpointtolearnmoreaboutMVCistheWikipediaarticle *
- AnEventLog_andMail_tie-inshouldbesuppliedbyanothercomponent. *
- Asnoneofthegivenerrorsismeanttobedisplayedtotheuserofthe *
- Atie-infortheTemplate_componentshouldbeprovidedwiththefirst *
- CSS ,gzipcontentandre
- Clarificationofterms *
- Componentintegration *
- Controller *
- Controllerscanprovideoneorseveralactions.Eachactionhasaspecific *
- Controllersprocessandrespondtoevents ,typicallyuseractions,andmay
- Controllersprovidetheactionsthatimplementthebusinesslogicofthe *
- Controllersreturnavaluethatcannotbesenddirectlytotheclient *
- Controllersrunwithasingleargument *
- Controllerswillhoweverreceivealltheinputdata ,besidestheabstracted
- Conventionisthekeyforthiscomponent.Eventhoughtie-inswillbesupplied *
- Conventions *
- Designrequirements *
- Dispatcher *
- Duringdebuggingitmustbepossibletopresenthelpfulerrormessages *
- Eachcontrollerimplementationcanprovidetwomethodsthatprovidefilter *
- Eachrequestrunsacontroller.Acontrollerreturnsanabstractvaluethat *
- End *
- Error-handling *
- Errorsmayoccurduringeachstepoftherequesthandling ,likethe
- Filtering *
- FilteringistheprocessofmodifyingtheezcMvcRequest ,ezcMvcResultand
- Filteringontheresultobjectthatcomesfromthecontroller *
- Fixture_ *
- Fixturesareobjectsthataresettoanarbitrarystatefortesting *
- Foreachofthesecomponentsatie-incomponentcouldconsideredtobe *
- Forexample ,theview
- HTTP-GETshouldnotbeallowedtoinvokechangesonthemodelbecausethis *
- HTTPRequestParser *
- However ,wecouldprovidedetailedinformationandpossiblysomehelper
- Ideas *
- Inaddition ,thiscomponentshouldneitherprovideanyautomationfacilities
- Integrationwithsuchcomponentscould *
- Introduction *
- Itislefttotheuseronhowtheinteractionwiththemodelhappens.There *
- Itistheprocessorresultofgeneralizationbyreducingdata ,typically
- Itreceivesoneabstractresultobject.Aview-handlerisresponsibleto *
- Itshouldallow *
- Itshouldalsoprovidearawrequestobject ,withprotocolspecificunparsed
- Layers *
- LocalVariables *
- MVC_ *
- MVCcomponentshouldbethatfarabstracted ,thatothercomponentscanbe
- Model *
- Model-View-Controller *
- Modernapplicationsoftenrequiretodealwithdifferentinputandoutput *
- MultilevelI *
- MvcTemplateTiein *
- Notethatifyoudon *
- Processesandrespondstoevents ,typicallyuseractions,andmayinvoke
- Protocoldependentroutersaresimplycalledfromthedispatcherandselectan *
- RegexpRouter *
- Renderstheactionintoaformsuitableforinteraction ,typicallyauser
- Request *
- RequestParser *
- RequestParsing *
- Requestedprocesstotestacontroller *
- Requestsshouldbeparsedbytherequestparser.Therequestparsersare *
- Response *
- Result *
- Router *
- Routers *
- Routersareresponsiblefor *
- Routersarethefirstlayerhitbyinputandthelastlayerthatprocesses *
- Routersmaybeaskedbyacontrollertore-routetherequesttoanother *
- RoutersmustalsoprovideamechanismtocreateURLsfromrequest-objects ,
- Routing *
- Shippedimplementations *
- Somefailuresshouldbereportedtotheadministratorinatechnicalmanner ,
- SpecialConsiderations *
- Summary *
- Targetandscope *
- Templatecomponentshouldbeprovided. *
- Testing *
- Testingacontrolleristhekeytoqualitydevelopment.Testingmanuallyeach *
- TheHTTPRequestParsershouldbeabletomakerequestobjectsfromanyHTTP *
- TheMvcToolscomponentshoulddistinguishcertainlayerstoallowusersto *
- TheRegexpRoutershouldallow *
- TheTemplate_Routerusesezt_filesfromtheTemplate_componentto *
- Theabstractresultofacontrolleractionthatcanbeusedbytheview *
- Thedatathatcomesinthroughanyprotocolpossiblefromtheclienttothe *
- Thedatathatissendfromtheservertotheclientthathasbeengenerated *
- Thedesigndocumentcontainsanexampledispatcherthatshowsthecontrol *
- ThedispatcherexecutethedifferentlayersofMVCinorder.Firstit *
- Thedomain-specificrepresentationoftheinformationthattheapplication *
- Thelaterapplicationconfigurationlayer *
- Theonlyclassesthatshouldbecommontoeveryprojectaretherequest *
- Therefore ,itshouldbepossibletouseabstractedinputandoutputformats,
- Therequest-objectcontainsalltherequestdata. *
- Therequestobjectisresponsibleofgeneratinganinputobject ,which
- Therequestparseristhefirstlayerinaction ,it
- Therouterisresponsibletoselectthecontrollertorunand *
- Therouterselectsthecontrollertorun.Therearetwotypesofrouters. *
- Thescopeofthisdocumentistodescribetherequirementsforacomponent *
- Theviewhandlerisresponsibleforrenderingoneresultobjectintoaproper *
- Theviewmanagerreceivestheresultobjectandtherequestobject *
- Thisdocumentdoesnotdescribethedesignofthenamedcomponent ,butonly
- ThisissimilartotheroutingsystemimplementedintheDjango_Python_ *
- Thissectionsummarizestherequirementsregardingthelaterfollowingdesign *
- Thoseerrorscannotbehandledbythecontroller ,becausetheyhappen
- Thosetwolayersuseonecontrollerperrequest.Theyhandlethe *
- Tie-incomponentsfortheUrl_andTree_componentsshouldbeprovided *
- TieInsforthisdefaultcontrollerusingtheExecution ,EventLog
- View *
- View-management *
- View-managerrole *
- Viewhandlers *
- Wecannotprovidethetestingenvironmentitself *
- Weshouldkeeptestingcapabilitiesfortheextensionstothiscomponentand *
- Wheresuitable ,designrelatedtopicswillbetouched,butadedicateddesign
- abstractinputobject. *
- accesstherawrequestdata. *
- actionandabstractstherequest *
- allowinghimtofixtheproblemortohandletheclient *
- allowsuserstoimplementtheirownmechanisms.Thefollowingcomponents *
- and *
- andcandecideonthebaseofbothofthemwhichviewhandlertouse. *
- andcharactersetencodings.Theobjectalsowillcontainrawprotocoldata *
- apersistentstoragemechanism *
- application *
- application-specificview-handlers ,
- application.Whereacontrollerdealswithmodules *
- appropriatecontroller.Protocolindependentroutersarecreatedthrougha *
- appropriatere-runningoftheroutershouldoccur. *
- aretwobasicoptions.Oneiswherethemodelisdirectlyusedinthe *
- bedefinedthroughinterfacesandonlyverybasicimplementationswillbe *
- bytheviewmanagerfromtheabstractresultobject. *
- cannotcoverallcontrollersmanuallyaftereachbugfix.Thesolutionis *
- chains.Thesefilterchainsarerunbefore-ontherequestobject-andafter *
- changesonthemodel. *
- chargesforshoppingcartitems *
- classes *
- classesforthetestingofapplicationsbuildonthiscomponent. *
- client-protocol ,sothatthecontrollerdoesn
- configfilesandconfiguringthepartsoftheMVCaccordingly *
- containsanewrequestobjectthatcanbepickedupbythedispatcherand *
- containsdatathatisnotspecifictotheprotocol *
- controller.Wherethecontrollerspecifiesaspecificresource ,anactionis
- controllerandmustthereforebeaccessiblefromanyaction. *
- controllercanleadtodisasters *
- controllers. *
- controllersandtheview-manager.Thisisrequiredforcreatingback-linksor *
- controllerswithonlytheprotocol-abstracteddatathattherequestobject *
- controllerthroughf.e.thePersistentObjectSession *
- controllerwithit *
- correctrenderingmodefortheoutputprotocol *
- createdinfuture. *
- data ,whereasHTTPPUTismeantformodifyingdata.
- datathatcomesinfromtherequest.It *
- differentpurposes.TheTemplatecomponentprovidesasyntax-lightlanguage *
- document. *
- documentisavailable ,definingAPIs,classesandthearchitecturalstructure
- documentnortheMvcToolscomponent. *
- doesnotspecificallymentionthedataaccesslayerbecauseitis *
- eZComponent *
- eZComponentsalreadyprovidesomecomponentsthatareusefulwhen *
- eachcomponentasindependentaspossibleandtorealizedependencies *
- easilyadjustandreplacecertainfunctionality.Therefore ,thefollowing
- easilycreatetheirown ,customimplementations.
- encapsulatedintheezcMvcRequestobject. *
- errormessages ,sotheapplicationdevelopermaydecidetosend
- extractallrelevantdataintotherequestobjectinaprotocolindependent *
- ezcMvcResponseobjects.FilteringintheezcMvcRequestobjectcanforexample *
- featuredimplementationoftheMVCarchitecture ,butshouldhelpusersto
- fill-column *
- filtering. *
- fixtureistheproceduretotestacontroller. *
- flow.Afewdiagramsarealsoavailablecontainingahighleveloverviewof *
- followingexamples *
- forexampleconvertcurrenciesandfilteringintheresponsecouldminimize *
- format. *
- fornon-programmerstodesigntheviews.Thereforeatie-inwiththe *
- framework. *
- fromtheview-handlerthatgeneratesXML *
- handlerthroughtheviewmanager. *
- havebeenidentifiedaspossibletie-ins *
- implementedatalaterstage.Thisshouldbekeptinmindwhendesigningthe *
- implementinganMVC.However ,onebasicgoalofeZComponentsistokeep
- importantwhiledesigningtheMvcToolscomponent. *
- inordertoretainonlyinformationwhichisusablebyanyrouterforany *
- installedthrough3rdpartycode. *
- interfacearchitecturepreventsthecontrollerfrombeingdependentonthe *
- interfaceelement.Multipleviewscanexistforasinglemodelfor *
- interfacewillnotaffectdatahandling. *
- intodedicatedobjects *
- invokechangesonthemodel.Inacase ,controllersrunanactionusinga
- isdeterminedbytheusedview-manager ,whichselectsaviewhandlersimilarly
- itintoaspecificresponse.Thislayeriscalledtheview-manager. *
- kindofresult ,butshouldonlyworkonabstractedrequestandresult
- kindsofapplicationsusingtheobject-orienteddesignparadigm.Thegoalof *
- linksinviewswithaspecificbaseURLinmind. *
- managertogeneratearesponse. *
- messages ,showorlogtheoccurrederror.Anerrorduringtheexecution
- mode *
- model. *
- noneoftheprotocol-specificdataisusedincasehewantsa *
- notexplicitlyneededbyit *
- object ,andtherequestandtheresultabstractions.Allotherclassesshould
- objectissendtotheview-manager ,whichisresponsibletoselectthe
- objects. *
- ofapotential *
- ofthecomponent. *
- ofthisdefaultcontrollerwillcausea *
- operateson.Domainlogicaddsmeaningtorawdata *
- outsideofit.Aconfigurabledefaultcontrollerwillbecalledforall *
- outworkonabstractobjectsonly. *
- parserstherequestthrougharequestparser ,thenfindtherouterthrough
- partandHTML ,PDF,ReST
- partofthe *
- passedtothecontroller. *
- phase. *
- processthatcanbecalledbytherouter.Anactionisanoperationona *
- protocol-abstractcontroller.Thisallowsprotocol-specificcontrollersto *
- protocol-independentcontrollers. *
- protocol-specificrequestparsertosetvariablesthesameway. *
- protocol. *
- protocoldependent ,andreturnarequestobject.Therequestobjectin
- protocolsandformats *
- provides.Ithandlesinputparsingandfiltering ,butdelegatesinput
- providingclassestoimplementaMVC_architectureforawebapplication. *
- purposes. *
- questioncontainsprotocol-abstractedinputsuchastheuseragent ,messageID
- re-encodeallthedifferentinputvariablesinadifferentcharacterset. *
- releaseofMvcTools. *
- renderacertainoutputformatforacertainprotocol.Theview-handlertouse *
- rendertheresponsebody. *
- replaceablebytheuser. *
- request ,encapsulatingallpossibledatainawayallowingother
- request-objectfixtureandassertingthattheresultmatchesanresult-object *
- requirementshavebeenspecified. *
- response.Onlyoneview-handlercanbeusedtogenerateacertainresponse. *
- result-objectafterbeingrun. *
- resultmocksandfixturesallowsstraight-forwardTDD. *
- resultobject ,oraninternalredirectresult.Theinternalredirectresult
- routermanager.Theresultofacontrolleractioncaneitherbeaabstract *
- secondpossibilityistodependonaserviceinterface.Thisserviceinterface *
- section *
- section. *
- server.Therequestdataconsistsofheaders ,variables,filesetcandis
- shippedwiththecomponent.Advancedimplementationscanbeaddedatalater *
- shouldbeshowntotheuser ,butthedevelopershouldbeabletohandle
- shouldbeusablewithanyoutputformatsandprotocols ,theresultobject.
- singleargument *
- singlevalue *
- so-calledrequestparser.Afterthecontrollerhasbeenrun ,theresult
- stage ,beprovidedviatie
- summarizestherequirementsforitasdiscussedonthedevelopermailinglist. *
- templateparseerror *
- test-automationinPHP *
- testeZComponentsthemselves. *
- thatmaybeusedtoaccessacertaincontrollerandactionwithacertain *
- theMvcToolscomponentistogiveusersabasisforsucharchitecturesfor *
- theactionexecutions-ontheresultobjecttoimplementapplicationspecific *
- theactiontocallonit.Tocreatetherequest-objectitrequiresthe *
- theapplicationsbuilduponitinmindduringthedesignandimplementation *
- thedifferentdesignparts. *
- theerrorsneedtobeprovided. *
- themgracefully. *
- thenusesthePersistentSessiontoquery ,andworkonthemodel.Thisservice
- theoperationtocallonthisresource.Asanexampletheresourcecouldbe *
- theoutput.Thatiswhyithandlesroutingrequeststotheappropriate *
- theroutermanager ,thecontrollerthroughtherouterandaslasttheview
- throughadifferentproperty. *
- throughso-calledtie-incomponents.Thereforethemechanismsrealizedinan *
- tiedinandprovideonlyverybasicimplementationsonitsown.Thisalso *
- toallowtheusageofothereZComponents ,alllayersshouldbeadjustableand
- toarouterselectingacontroller. *
- torealizerouters.Thedesignofthesecomponentsshouldbeconsidered *
- tothedeveloper ,butonaproductionsystemnoerrorsfromtheMVC
- twolayersabstractI *
- understoodtobeunderneathorencapsulatedbythemodel. *
- validationtothecontroller. *
- variables. *
- view-manageranddefinedparameters.Thismethodmustbeaccessiblefromthe *
- vim *
- way. *
- webapplicationswritteninPHP5.Thecomponentshallnotprovideafull- *
- whethertodayistheuser *
- wouldcauseaviolationofHTTPstandards.HTTPGETissolelyfor *
- Correspondingto *
- Foreachoftheissuestherequirementsareexplainedinaseparatesectionin *
- However ,sinceitreturnsnullifitdoesnot,thisresultcouldalsobe
- IdentitymapforPersistentObject *
- Ifthismethodiscalled ,thenewlyaddedrelatedobjectshouldbeaddedto
- Insidethismethod ,firstitshouldbecheckedifthesamefindquerywas
- Inthismethod ,theobjectdatacansafelyberefreshed,sincetheinstance
- Inthismethod ,therelationcacheneedstobeupdatedintheopposite
- SameasgetRelatedObjects *
- Sameassave *
- Scope *
- Thegeneralgoalforthisversionistoimplementvariousfeatures *
- Theimplementationofthisfeaturemusttrytotakecarethatnoobjectthatis *
- Theiteratorclass ,whichisresponsiblefortheretrievalofthedata,must
- Thereshouldbeaswitchtoswitchofthisbehavior ,tomakeanewfindto
- Thescopeofthisdocumentistodescribetherequirementsforthe *
- ThisclassofmethodscannotbesupportedbytheIdentityMap ,sinceitis
- Thismethodmustcheckforanexistingobjectinstancelikeload *
- Thismethodmusttakecaretoremoveallreferencestothegivenobjectfrom *
- Thismethodneedstocheckacachefirst ,ifrelatedobjectwiththegiven
- Thismethodshouldindicateanerror ,ifanalreadyloadedobjectistobe
- Wheneveranewobjectissaved ,itshouldbestoredinthecacheforlater
- Wheneveranobjectistobeloaded ,alookupmusttakeplace,ifthisobject
- alreadyperformedearlier.Inthiscase ,acachedresultsetcanbereturned.
- automatically.Thiswouldleadtoheavyinconsistencies.Thereforea *
- cachedorbere-evaluatedaslongasnoobjecthasbeenloadedsuccessfully. *
- cachedversion ,newlyloadedobjectsmustbecached.
- certaincases.However ,usuallytherefresh
- checkfornewobjects.Foranewquery ,thereturnedresultsmustbechecked
- criteriahavealreadybeenloaded.Ifthisisthecase ,theycansafelybe
- datacanbeoverwritten ,asrequestedbytheuser.
- describedbytheseissuesinourissuetracker *
- directionofaddRelatedObject *
- eZcomponent *
- elementbyelement.Alreadyloadedelementsmustbereplacedwiththeir *
- enhancementsproposedforthePersistentObjectcomponentversion1.5. *
- existingobjectinthatcase. *
- hasalreadybeenloaded.Ifthisisthecase ,theloadedversionshouldbe
- includingthequerycachedobjects. *
- indicated ,sincemostprobablythereisnowaytoreplaceallofits
- instanceswithacloneinthecachemappings. *
- into ,2casescanoccur
- loadedoncefromthedatabaseexistsina2ndcopyinthesamerequest.This *
- means ,thefollowingoperationsareaffectedinthedescribedway
- method ,nochangesarenecessary.Ifadifferentobjectisgiventoloaddata
- notpossibletodeterminetheaffectedobjectsfromthequery ,
- objects.Ifnoobjectsarefound ,yet,themethodmustreactasfind
- occur.Ifanotherinstanceexistsinthecache ,anerrormustberaised.If
- retrieval. *
- returned.Itmustbeevaluatedifthereisneedtoswitchthislookupoffin *
- returned.Itshouldbepossibletoswitchoffthisbehaviortoreloadrelated *
- shouldbetheonealreadyinthemappingcache.Afterall ,are
- sincethe *
- solutionmustbefoundhowcallstothesemethodsarehandled. *
- statedbelow ,canbefoundinthecorrespondingdesigndocument.
- storedintoanotherinstance.Incasethecorrectinstanceisgiventothe *
- takecaretorealizethesamebehaviorasfind *
- thecaches.Thiscanleadtoproblems ,ifmultiplecachesneedtobechecked.
- thecachethatislookedupbygetRelatedObjects *
- thecreateRelationFindQuery *
- theobjectisnotcachedatall ,itmustbeadded.
- thisdocument.Thedesignoftheenhancements ,fulfillingtherequirements
- Description *
- Document *
- Facets_shouldbesupported ,andtheavailablefacetsshouldbethedocument
- Forqueryingtheindex ,somemechanismforhandlingpermissionsshouldbe
- General *
- Indexing *
- Indexingshouldbedonebysendingthedocumentstoanindexer.Indexing *
- Introduction *
- Itisimportantthatasmanybackendscouldbesupportedthroughthis *
- Requirements *
- Searching *
- Searchingdocumentsisprimarilytermbased.Oneormultipletermsare *
- Specialconsiderations *
- TheSearchcomponentprovidesaninterfacetoindexandquerydocumentswith *
- ThecomponentsshouldimplementanAPIthatsupportsmultiplebackends. *
- Theformatofthedocumentsthatcanbeindexed ,andsearchfor,needtobe
- ThequeryAPIshouldallowforeasysearches ,similartoanSQLquery.
- ThereforeasimilarinterfaceasDatabase *
- TowardsallbackendsthesameAPIshouldworktoindexandsearchfor *
- abletobedefinedbythecomponent.Herebywethinkaboutspecifyingthe *
- abstractionsofdifferencesinsearchbackendqueryingdialects.Searches *
- adatatypethatthedifferentbackendsunderstand.Thedocument *
- anddatatypesthatthebackendsunderstand. *
- backendcommunication. *
- component ,soitisimportantthattheexternalAPIdoesnotpreventsome
- differentfieldsthatformadocument.Eachofthefieldsshouldbemappedto *
- differentsearchenginebackends.Searchingisbecominganintegralpartof *
- documents. *
- eZComponent *
- fields ,andfacetsquerieswithinthedocumentfields.
- functionalitiesofthebackendstobeexposed.Thecomponentwillonlydeal *
- preferredqueryinglanguage.Thisqueryinginterfaceshouldallowfor *
- provided ,andthesearchresultlistcontainsonlydocumentscontainingthose
- searchenginebackendsupports.ThesearchcomponentmustsupportXMLfor *
- shouldalsoallowforlimitationofmetadata ,suchaspublicationdate
- shouldbeusedforbothindexingandsearchingfordocuments.The *
- shouldsupportbothblocking ,andnon
- specificationcouldalsore-mapfieldnamesanddatatypestofieldnames *
- specificationshouldallowforeasydefinition ,andthesamespecification
- supportedtolimitthesearchresults. *
- term. *
- websites ,thisisbecominganimportantfeature.
- withUTF-8strings ,justlikealltheothercomponents.
- Description *
- Designgoals *
- Inordertomakesysteminformationretrievalmoreflexible ,there
- Introduction *
- Requirements *
- TheSystemInformationpackageshouldprovideinterfaceforaccessing *
- Thiscomponentwillprovideaccesstocommonsystemvariables ,
- areseveralhelperclassesthatrepresentsspecificwayofreceiving *
- eZpublishEnterpriseComponent *
- shouldbesupportedwin32isdesiredaswell. *
- suchasCPUtypeandspeed ,andtheavailableamountofmemory.
- systeminfoformajoroperatingsystems. *
- totheunderlyingOperatingSysteminformation.AtleastUnixsystems *
- Accessingpropertiesofarraysisdonewith *
- Accessingpropertiesofobjectsisdonewith *
- Allerrorsorwarningsmustalsobeproperlylogged. *
- Allvariablesarenowcreatedonastackinsteadofthenamespace *
- Alsothedesignshouldbelesscomplexthanitwasearlier ,thismeanssmaller
- Alsothesyntaxfortemplatelanguageshouldreflectwhatisnormalamong *
- Amoredetaileddescriptionofflawsfollows ,thelistissplitintoonefor
- Aparametercanbeofoneofthesetypes *
- Asystemisnotofmuchuseunlessitiseasytouse.Thismeansthatone *
- Atypicalexampleofacomponentisthecurrentlyrunningmoduleinthe *
- Basicallyembeddingcanbeseenasawayofcopy *
- Changingtheoutputcontextisdonewithastackinwhichtheprevioussettings *
- Creatingoverridesbasedonthedesignkeysofanobjectisapowerful *
- Currentimplementation *
- Description *
- Designgoals *
- Eachlevelshouldbeabletoturnonandoffcertainoptimizationtypes. *
- EachoptimizationtypemustgetauniquenamewhichcanbereferencedbyPHP *
- End *
- FR-GEN-001 *
- FR-GEN-002 *
- FR-GEN-003 *
- FR-GEN-004 *
- FR-PERF-001 *
- FR-PERF-002 *
- FR-PERF-003 *
- FR-PERF-004 *
- FR-PERF-005 *
- FR-PERF-006 *
- FR-PERF-007 *
- FR-PERF-008 *
- FR-SEC-001 *
- FR-SEC-002 *
- FR-SEC-003 *
- FR-SEC-004 *
- FR-SEC-005 *
- FR-SEC-006 *
- FR-SEC-007 *
- FR-SEC-008 *
- FR-USB-001 *
- FR-USB-002 *
- FR-USB-003 *
- FR-USB-004 *
- FR-USB-005 *
- FR-USB-006 *
- FR-USB-007 *
- FR-USB-008 *
- FR-USB-009 *
- FR-USB-010 *
- FR-USB-011 *
- FR-USB-012 *
- Forinstance *
- Forinstancethetemplatesystemcouldgetarequestforthefilecalled *
- General *
- Havingdifferentoptimizatinglevelsallowsthegeneratedcodetobetunedto *
- Ifstringswhichhavebeeninputfromauser *
- IneZpublish3.xthetemplatevariablessetbyonerequestwouldleaktothe *
- Introduction *
- Itmustbepossibletodefineacomponentwhichcanbeplacedinany *
- Itmustbepossibletodefineacustomoutputcontextwhichcontrols *
- Itmustbepossibletodefinethecurrentoutputcontextwhenparsinga *
- Itmustbepossibletovalidateatemplatefileofyourchoiceseparatelyfrom *
- ItshouldbeeasytointegrateexistingPHPfunctionsandscriptsintothe *
- Itshouldbepossibletorecorddependenciesbetweenelements ,notonlybetween
- Lastlythecurrentstackcanreusedintheothertemplateiftheyembedded ,
- LocalVariables *
- Nosuchfunctionnamedisset ,similarlynamedfunctionsareis_set
- Oneofthemajorrequirementsistoraisetheperformanceofthecompiledcode *
- PHPDeveloper *
- PHPandisastructuredsystemwhichallowseasytravesalofthecodetobe *
- Performance *
- ProvideoutputwhichissuitedforXHTML. *
- Provideoutputwhichissuitedforinclusionine-mails. *
- Provideoutputwhichissuitedforplaintextfilesortextformats. *
- ProvidesfunctionalityforseparatinglayoutanddesignfromthePHPcode.The *
- Requirements *
- Security *
- Seealso *
- Separatebusinessslogicfrompresentationlogic.Thismeansthatthereshould *
- Specialconsiderations *
- Templatedeveloper *
- TheOp-Codeswillremovetheneedfortemplateelementstooptimizeanddo *
- Theaccessofobjectsandarraysshouldbedifferentfromoneanother.This *
- Theaimofthetemplatecomponentistoprovideahighlevellanguagefor *
- Thecontextisinvolvedintheparsingofthetemplatefileandpartlythe *
- ThecurrentimplementationineZpublish3.xwasbuiltasaresultofthe *
- Thedesignshouldstrikeafinebalancebetweensomeoftherequirements.This *
- Thedisplaymethodmustacceptaparameterwhichcontrolshowitshouldbe *
- Thefollowinglevelsshouldbeavailable. *
- Thefollowingrequirementsisbasedontheflawsoftheprevioussystemand *
- Theinitiallearningcurveneedstobelow.Developersneedstoabletoget *
- Thelevelalsodetermineshowtheuniquefilenameisgenerated. *
- Thenamesforthevariouselementsmustbeclearandconsistent.Adeveloper *
- Thenewtemplatesyntaxandstructuremustbemadeinsuchawaysoitiseasy *
- TheoptimizerwillexaminetheOp-Codestructureandperformoptimizationbased *
- Thereshouldnotbepossibletoaccessinputvariablesdirectly ,e.g.by
- Thesystemshouldalsogivehintsonimprovementstothetemplatecodewhenever *
- Thetemplateenginemustcomewithastandardsetoffunctionalitywhichis *
- Thetemplateenginemusthaveaclearseparationbetweenthetagsetandthe *
- Thetemplatelanguagemusthavesecurityinmindwhenitisdesigned ,basically
- Thetemplatelanguageshouldnotallowtemplatedeveloperstoaccessthe *
- ThetemplatesthatarewrittenwillbetransformedintopurePHPcodebya *
- Thetemplatesystemshouldgiveyousomehintsifyou *
- Thevariousoptionsinthetemplatesystemshouldbeconfigurablebythe *
- Thevarioustemplateoperators ,functionsandblockswillgeneratewhatis
- Thismeansavoidingfunctionswhichcanopenfilesorrequestdatabasedata *
- Toensurethatthedevelopersisnotlimitedbythisothermeansofaccessing *
- Toremedythis ,templatevariableswillnolongerleak
- Toremedythistheaccessofarrayswillnowusethesquarebrackets *
- Uniformaccess *
- Usability *
- Variableleaks *
- Variablestack *
- Whenatemplateischangedthedependentitemshouldbenotifiedofthechange *
- Whencalling *
- Whencompilingmultipletemplatesitmustusetransactionforthefiles ,this
- Whenevererrorsoccurruntimethetemplatesystemshouldnotcontinueasnormal *
- WhenoneaccessedobjectandarraysineZpublish3.xthesamesyntaxwasused *
- Withtheinclusionofmultipletagsetitcouldbechaossinceitwouldbe *
- Youshouldbeabletodooneofthefollowing *
- again.Itshouldalsobepossibletoexportallvariableswithoutknowing *
- algorithmdependsontheoutputformatbutingeneralitwilltrimaway *
- alsomakesitpossibletohavemoretagsetslateron ,forinstanceaTALbased
- amountoftime.Thismeansusingcommonlyusednamesfromotherprogramming *
- andactaccordingly. *
- andcauseproblemswhichissomewhathiddenforthetemplate *
- andmoremaintainableclassesandsmallerexecutionthreads. *
- andstrings *
- anotherserverandstillwork.ThismeansforinstancethatINIreading ,
- application.Theapplicationcanforinstanceturnonandoffdebuggingor *
- applicationmustbeabletodefinewhichsetsshouldbeallowedtouse. *
- approach.Thismeansthateachtemplategetsitsownvariablestackunlessit *
- arelaterexecutedandtheycanalsobeimprovedbeingruntroughanoptimizer. *
- areready. *
- aresometimesinherited.Forinstancesettingtheindentationtextwillappend *
- asblocksortags. *
- avoidincreaseincompilationtime. *
- awaysounnecessarywhitespaceisincludedintheoutput ,thisallowsthe
- beavailabletoworkanalltheavailabletypeswithoutresortingtothird *
- bedefinedexternallyandconfiguredtouseanothertemplatethantheone *
- benofunctionalityforreadingPOSTvariablesorperformingadvanced *
- built-insyntaxasoneisusedto. *
- butwhilerunningthesiteliveyouwon *
- canbeusedtogenerateHTMLpages ,textfiles,emails,PDFsandotheroutput
- cases. *
- code. *
- code.Toensurethisispossiblethefollowingmustbepartofthe *
- codecanbeheavilyoptimizedandskipthingslikefilemtimechecking. *
- codeorusedonthecommandline. *
- column. *
- compilation. *
- compilehintsdependingontheneed. *
- compiler.Thecompilationprocessallowsthetemplatedevelopercanconcentrate *
- compilertogeneratefastPHPcodeanditalsomakesitharderthannecessary *
- completeenoughfornormallowleveloperations *
- conditionalcode. *
- conditionresultsisconstant. *
- constants. *
- constantstring. *
- constantsvalues. *
- couldreadoutvaluesfromthelastrequestandusethatforrendering ,however
- deliveredastemplateparametersordatafromcomponents. *
- developer.Likewiseerrorsinparsershouldnotallowitbecompiledorerrors *
- developerwrotebutinfactdidn *
- directly. *
- directlybyapplicationsorextendedbythirdpartyaddons.Thetemplatesystem *
- done ,whenitisdoneitrenamesallthecompiledtemplatestotheircorrect
- e.g *
- e.g.byextendingexistingfunctionalitywithPHPcode. *
- eZpublishEnterpriseComponent *
- elements. *
- elementsoftheoutputcontext. *
- especiallysincesomeoperatorssupportbothmodes. *
- experiencewiththe2.xseries.Itcamewithlotsofbenefitsfromtheold *
- extendingthelanguageandmaintainingit *
- ezurl *
- fasterfunctioncalls. *
- fileintotheinternalstructurewhichisthenprocessedintoopcodes.This *
- filesystem ,databaseorothercriticalpartsofthesysteminanywayunlessit
- fill-column *
- fordistributions. *
- formats. *
- formwiththenameofthetemplatetofetchacombination.Thiscombinationcan *
- generated.TheOp-CodescanbetransformedintoPHPcodeinPHPfileswhich *
- generatedtemplatecode. *
- generatestheresultbutitcanuseanothertemplatetodothework. *
- goestroughhighlycontrolledoperationsandispartofalargersystem. *
- handlingofoutput.Whatthecontextcancontrolis *
- hardtomaintain. *
- i.e.nestedfunctioncalls. *
- includesyntaxthatdoesnotmakesenseforapresentationlanguage. *
- includingJavaScript.Thismeansthatallstringswhichareoutputmustbe *
- incompilationshouldnotallowitbeexecuted. *
- insteadconcentrateonhowtopresentthedata. *
- interfaceforthemoduleoraccessingspecialpropertiessuchasrelated *
- internallytoensureadegreeofbackwardscompatability. *
- internalstructureinuse.Thismeansthattheparsertransformsthetemplate *
- istoldtoreuseanotheronesstack. *
- isusuallyonlydoneonsubregions. *
- itispossible.Thehintsmustnotspendmuchtimeontheirinvestigationto *
- keysarevalueswhicharefetchedfromoneormoreobjectsorotherinputand *
- knownastemplateOp-Codes.TheOp-Codesdiffersfromtheinternalop-codesin *
- languages *
- layerontopofPHPbutratherasophisticatedtemplatesystemwhichsimplifies *
- makesitclearerwhatoneisaccessingandalsomakeiteasierforthesystem *
- makingithardtoaddnewelements. *
- manipulatingvariables.Gooddocumentationandsimplysyntaxwillhelpout *
- manipulation *
- meansgivingthefilenamesanothernametemporarilyuntilallcompilationis *
- meansprovidingahighenoughexecutionspeedwithoutcompromisingthe *
- mechanismwhichshouldbehandledinternallyinthetemplatesystem.Thedesign *
- mistakes.Thiscanbetofindexistingfunctionswhichisclosetowhatthe *
- mode *
- names.Thismeansthatthesystemusestheoldtemplatesuntilthenewones *
- namingandsyntax. *
- next *
- object ,parametersmustbepossible.
- objectaccessusesthesamedot *
- objectsorotherinformation. *
- oftemplates.Severalchangeswillneedtobedoneinthewaytemplatesare *
- onthecurrentrules.Herearesomeexamplesofwhattheoptimizercoulddo *
- onthepresentationlogiconahigherlevelanddoesnotneedtofinetunehis *
- orotheroutputdonebythePHPcodeiscaughtandsentbacktothetemplate *
- parameterswhichcanbereadbythetemplatecode. *
- parsed ,variablesaccessedandfunctionexecuted.Mostofthismustbedone
- partyextensions. *
- possibleformultiplesetstobeusedinoneapplication.Toamendthisthe *
- possibletocreateupgradescriptswhichtransformstheexistingtemplatesto *
- presentationlogic. *
- presented ,e.ginfullmodeorjustabriefdescription.
- programminglanguagessuchasC ,C
- properlydocumentedandthecodehadtoomanyspecialcasestotakecareof. *
- properlyescaped. *
- readingHTTPPOSTvariables ,butinsteaditshouldrelyondatawhichis
- readingtemplatecodeandvalidationwasimpossible.Italsocomplicatedthe *
- referencedtemplateintothecurrentone. *
- reportedneedsfromtemplatedesigners.Eachrequirementsisgivenaseparate *
- requested. *
- requests.Ifthisisneededitshouldbehandledbytheunderlyingsystem ,
- requiredquitealotofcodesomethingwhichshouldn *
- runningmodulewillbemade *
- sectionandanIDwhichcanbetrackedtothedesigndocument. *
- seriesbutitalsointroducedsomenewproblems.Themajorbenefitwasthatit *
- shouldnothavetoreadtroughlotsofdocumenttounderstandhowthebasics *
- startedwiththelanguagequickly ,forinstancecreatingsimplelistsand
- startingwiththelanguageneedstobeabletograsptheconceptsinashort *
- subjectsthesystemhandles. *
- suchdatawillbemade. *
- syntax. *
- system. *
- system.Thepagelayouttemplatecanrequesttherepresentationoftheuser *
- template. *
- template.Acomponentconsistsof *
- templatecodeaswellastheoutputbeingreadable. *
- templatedevelopers *
- templateelementtohavetwoversionsoftheircode.Intheendthisisvery *
- templatelanguage. *
- templatesquitealotsothereisnoneedtooptimizetoomuch *
- templatesystemcomeswithabasicsetoffunctionalitywhichcanbeused *
- the2.xseries.Themajorproblemswerelackofdocumentationandconfusing *
- thecompilationprocess.Thisallowsthedevelopertoverifytheirsyntax *
- thecurrentneed.Forinstancewhiledevelopingasiteyouwillneedtochange *
- theindenttexttothecurrentoneset. *
- theirnames. *
- thenewstyleoratleastascloseaspossible. *
- theoutputlogic.Thesystemwillhandlethetypicalchoresofoutputwhich *
- thetemplatecanprependagivenstringtouseaindentation. *
- thetemplatedevelopersshouldnothavetothinktoomuchontheseissuesand *
- thewhitespacetrimming ,newlinehandling,indentationtrimmingandother
- thismeansthatanyallcreatedvariablesareavailableinbothtemplates. *
- thisonlyworkedwhencachingwasturnedoff ,italsomeantthatthevariables
- to *
- tocreateelementcode. *
- tomigratefromeZpublish3.xtothecurrentsystem.Thesystemmustmakeit *
- toprovidefeedbackaboutwrongusage. *
- translationsetc.arenotturnedintoconstants.Thislevelisquiteuseful *
- unlessitispossible.Thisavoidserrorstopropagatedownthetemplatefile *
- unneccesarywhitespacewhichisgeneratedfromstructuredtemplatecode.The *
- unnecessarywhitespace.Toavoidthisonehadtowriteunreadabletemplate *
- usabilityandflexibilityofthesystem. *
- usuallyare *
- validation. *
- valuebutisneverchanged ,onlyused.
- variables.Thismakesalltemplatesinsecurebydefault. *
- vim *
- wasforcedtoclearallcompiledtemplatesafterchanges. *
- wasfreefromthestrictstructureofthefind-and-replacetemplatesystemin *
- wastoocomplicated *
- werekeptfortheentireHTTPrequestusingmorememorythanitneedsto. *
- whatwouldseemlikefunctionsandtemplatefunctionstowhatisusuallyseen *
- whenitispresentedinXHTMLoutputitcanbeusedtogenerateXSSexploitsby *
- wherethevariableswereplacedwastroublesome. *
- whitespaceinsuchawaythatthetagsjustdisappearfromtheoutput. *
- withoutapplyingitonthewebpageanditalsoallowsscriptstoautomate *
- withthis. *
- workandreadingthedocumentationshouldprovideallthedetailsonallthe *
- workingwithoutoutputandformatting.Thelanguageisnotmeantasathin *
- Description *
- Designgoals *
- Inordertomaketranslatinganapplicationeffective ,thereareseveralhelper
- Introduction *
- Requirements *
- Theideaofthiscomponentisthatapplicationscanusetranslationsinaneasy *
- Thiscomponentwillprovideaninterfacetolocalizedstrings.Localized *
- andwritetoanotherbackend *
- cachingisdonethroughanoptional *
- classesandfunctionalitythatallowyoutoreadfromonebackend *
- eZpublishEnterpriseComponent *
- froms.Italsosupportsfiltersthatcanbeappliedonthetextthatis *
- retrievedfromthebackendsforspecialeffects. *
- speedupperformance.Becausewecannotdependonanyotherpackages ,the
- stringsarereturnedtotheapplicationbasedoncontextandidentifier *
- theCachepackage. *
- way ,wheremultiplefileformatsaresupportedforretrievingtranslatedtext
- AdditionalInformation *
- Asthefieldofnestedintervalsencodingsisstilldeveloping ,thecomponent
- Besidesthedatabasebackendstherecouldbeotherplacesonwhereto *
- Celko. _
- Description *
- Designgoals *
- End *
- Format *
- Introduction *
- It *
- LocalVariables *
- NestedIntervals *
- Nestedsets *
- Nicetreedatastructureforretrievingsubtrees ,cheapreading,but
- Ofcoursetherecanbedataassociatedwitheachoftheleavesinthe *
- Parent-childrelations *
- PersistentObject_component. *
- References *
- Requirements *
- SELECT...WHEREpathLIKE *
- Serialized *
- Since2004therehasbeenproposeddifferentencodingstosavethepathin *
- Specialconsiderations *
- TheTreecomponenthandlesthecreating ,manipulatingandqueryingoftree
- Thecomponentshouldhandletherepresentationoftreestructuresin *
- Thefollowingencodings ,fareyfractionsandcontinuedfractions
- Thefollowingoperationsshouldbepossibleonthetrees *
- Thisalgorithmwantstosolvetheproblemofexpensiveinsertsinthenested *
- Thisischeaponwriting ,butnotreallycheaponreading.Supportmay
- Thissectionliststhebackendsthatshouldbesupported.Conversionbetween *
- Thistechniqueisanextensiontotheparent-childrelationsalgorithm *
- UseCases *
- Verycheapwhenupdatingdata ,withadditionalrootnodereferencein
- Veryexpensiveforreadingsubtrees. *
- anode.Aselectforasubtreewouldlooklike *
- another ,etc.
- applicationspecificperformance. *
- asthepathtoanodeissavedinthenode *
- backdrawofaverylimitedscalabilityasitutilizes *
- backendsshouldalsobepossible. *
- beDBMSdepending.Nevertheless ,movingasubtreeisexpansive,asthe
- childnodescheaptoread *
- containingaPHParrayorinanXMLfile.Thebackendmechanismshouldsupport *
- contentoftheleaves.Thecontentsshouldbedisconnectedfromthetree *
- databasetables.Therearedifferentalgorithmsforrepresentingtree *
- densedomainsforatheoreticallyunlimitednumberofchildreninsidean *
- eZComponent *
- eZPublishcurrentlyusesaserializedpathtodefinethelocationof *
- extension ,e.g.Node
- fill-column *
- finitenumberofchildrenbetweenthem ,thenestedintervalsalgorithmuses
- implementation.Bothencodingsarestillinaveryexperimentalstageandno *
- interval. _
- itispossibletostorethedatabelongingtoatreenodeindifferent *
- mode *
- nodeitself ,forexamplethroughaproperty.
- notbeobligedtoextendanabstractnodeclasswhenworkingwiththe *
- numbersratheruneconomically *
- places.Thisshouldalsoallowtouseadifferentretrievalmechanism ,
- practicalimplementationsandexperienceshavebeenfoundsofar. *
- quiteexpensivewhenaddingnodes.HasbeenfirstintroducedbyJoe *
- serializedpathineverysubtree *
- setsalgorithm.Whiletheleftandrightvaluesofnestedsetsallowonlya *
- shouldallowlateradditionofdifferentalgorithms *
- shouldbedoneinone *
- specificapplication.Thereforeweneedtoimplementabackendmechanism *
- storetreestructures-forexamplesimplyonthefilesystem ,inafile
- structures.Thecomponentsupportsdifferentstoragealgorithmsforoptimal *
- structuresinarelationalmodelandtheycanallbethefastestfora *
- suchasretrievingthedataaspersistentobjectsthroughthe *
- thatrefertotheID. *
- thenode.Thefirstattemptwastousedyadicrationalencoding ,buthasthe
- thisaswell. *
- tree.Theplacewherethedataisstoredshouldbeconfigurable ,sothat
- useofhighlycomplicatealgebraandneedsintensivestudyingfor *
- vim *
- whatthelengthtotherootnodeis ,ifanodeisachildordecendentof
- withmultiplebackendsforeachspecificoptimizedalgorithm. *
- Astaticarrayholdsprefixes *
- Currentimplementation *
- Description *
- Designgoals *
- End *
- Introduction *
- LocalVariables *
- Providethesefunctionalities *
- Requirements *
- ThecurrentimplementationoftheUrlcomponenthasfunctionalitysimilarto *
- Theurlpassedtotheconstructorisparsed *
- Thiscomponentwillprovidesupportforhandlingurls.Theapplicationsthat *
- eZcomponent *
- filenamessothefullpathisnotspecifiedeverytime. *
- fill-column *
- mode *
- phpfunctionparse_url *
- prependedtofilenamessothebasedirisnotspecifiedeverytime. *
- sqlinjection. *
- thebasedir.Thequeryargumentsareurlencodedtoprotectagainstattackswith *
- theeZpublish3.xurlhandling.ezcUrlistheonlyclassinthepackage. *
- usetheurlcomponentcancreateurls ,canmodifyqueryarguments,canextract
- vim *
- Description *
- Designgoals *
- Introduction *
- Providesaccesstoinputvariablesinaconvenientway ,withsecurityinmind.
- Requirements *
- UserInputhandlingisgreatlyimprovedinPHP ,wherethereisaspecialfilter
- Weallknowthatyoushouldalwayscheckinputvariables ,butPHPdoesnot
- componentismeanttoaddressthisissuebyimplementingasetoffiltersand *
- eZpublishEnterpriseComponent *
- extensiontogettouserinputteddata.Althoughit *
- forhandlingwithuserinputinasecureway ,itdoesn
- interface.Thiscomponentisaddressingthis. *
- mechanismsthatuserscanusetosafelyaccesstheirinputdata. *
- offerreallygoodfunctionalityfordoingthisinasafeway.TheUserInput *
- APIofthebackendclassesstillneedapossibilitytoprovidesuchdead *
- Adeveloperintegratingwebdavusingthiscomponentmaywanttousewebdavasa *
- Amajorproblemtobesolvedbythiscomponentis ,thatmostimplementationsof
- Authentication *
- Authenticationiskeymechanisminwebdav ,especiallywhenitcomesto
- Authorization *
- Clients *
- Collection *
- CollectionsProtocol *
- CommonWebDAVterms *
- ControlProtocol *
- Description *
- Dispatching *
- End *
- Everyonewithwriteaccesstotheressourcemaystillchangetheressource *
- ExclusiveLocks *
- Extensions *
- Formats *
- Inthefirstiterationofthecomponentwewillimplement *
- Introduction *
- Itshouldbeuptothestoragebackendtoproperlyimplementthestorageof *
- LocalVariables *
- Locking *
- Metadata *
- Optionally *
- OptionallyaezcAuthenticationTieinmayprovideotherauthenticationbackends *
- OtherwebdavrelatedRFCs *
- PerhapsconsiderextensionsoftheWebdavprotocol ,likeversioningandVCS
- Pricipal *
- ProtocolfortheWorldWideWeb *
- RFC ,whichispossiblethroughcostomorpredefindeproperties.Thestorageof
- ReferenceResources *
- Requirements *
- Sharedlock *
- SpecialConsiderations *
- Terms *
- Thebackendwillhandletheread *
- Thecomponentshouldbeflexibleenoughtoeasilyaddsupportforother *
- Thedefault ,RFCcompliant,implementationmuststillbeavailableandcanbe
- Thefirstversionofthecomponentshouldsupportafilesystemasbackendand *
- Thepurposeofthiscomponentisactingasawebdavserver ,letclients
- ThereforetheWebdavcomponentshouldonlybecapableofusingnon-interactive *
- Versioning *
- WebDAVclientsviolatetheRFC ,eachinadifferentway.Thecomponentneedsto
- Webdavsupportsanykindofmetadatainadditiontothedatarequiredbythe *
- Wewillnotsupportwebdavextensionslikedistributedauthoringand *
- Wewillsupportexclusiveandsharedlocksdirectlyintheserver ,including
- abstractfromtheseviolationandtomakeiteasytosupportnewclients.On *
- asthereare *
- authenticiationmethods. *
- authorizeseveryusertoconnectandreadthecontents. *
- backendsistaskofthewebserver ,becauseitiscapableofdispatching
- basedsharedlocks ,orexclusivelockmechanisms.
- beforeperforminganyfurtherchange. *
- betweeninteractiveauthenticationmechanism *
- denytheaccess ,ifrequired.
- directlyinthefileheaders. *
- download ,uploadandmodifyfilesfromvarioussources.
- eZcomponent *
- eachplatformatleastoneclientshouldbesupportedintheinitialrelease ,
- extensionsformisbehavingclients. *
- filesystembackend.Ansolidabstractionofbothtiersistheprimarygoalof *
- fill-column *
- frontendforseveraltypesofdata.ThedispatchingofURLstodifferent *
- generationofuniquelocktokensandlocktimeouts.Theserverwillstorethe *
- locking.Alockpersitsonaperprincipalbasis ,sothateachuseris
- lockstateinacustomdeadpropertyreseveredforthis.Thebackendmay *
- makeiteasytowriteowncustombackendsforthedatastorageofthe *
- mechanismsisrequired ,becausenoteverywebdavclientsupportsHTML.
- mindduringthedesignphase. *
- misbehavingclientslater ,andtoeasilyaddotherdatasourcesthenthe
- mode *
- notbepartofthiscomponentinanyway. *
- orcollection.Thesharedlockisjustusedasanindicator ,thatthe
- overwritethelockingcapabilitiesoftheserver ,toimplementcustomgroup
- performasawebdavserverforonesinglebackend.Thereforedispatchingwill *
- properties *
- propertiesandtoreactonpropertiesdefinedbytheclient. *
- requestsbasedonaURL *
- requiredtoidentifyhimself.Thedefaultauthenticationmechanismjust *
- ressourceisinusebyanotherpersonandthatcommunicationisrequired *
- support ,tobeeasilyintegratedlater.
- testedusingcadaver ,themoststandardcompliancewebdavclientavailable.
- thedocuments ,orspecialfilemechanismslike
- thesepropertiesneedstoimplementedbytheserver.Thepredefinedproperties ,
- thiscomponent. *
- thisdata.Forexample ,thefilesystembackendmayuseXMLfilesattachedto
- versioningdefinedin *
- vim *
- webdavserver.Imaginablearedatabasebackends ,FTP
- whichmaydenytheconnectiontothewebdavserver.Apossibilitytodistinct *
- Aneventperformsaspecifictask.eZPublish3shipswithalibraryofevents *
- Aworkflowdefinesanorderedsequenceinwhichworkfloweventsareexecuted *
- BoththearchitectureofthecurrenteZPublishversionaswellasitsworkflow *
- ECMSandisusedwhenanewemployeeishired. *
- EmploymentProcess *
- Eventually ,theworkflowcomponentshouldbecomeanimportantpartofthe
- Hecanalsoeditthearticleandsenditbacktoitscreator. *
- Hecaneditthearticleandandsenditbackonelevel. *
- Herearetwousecasesthatshouldbesupportedbytheworkflowengine *
- Introduction *
- Itispossibletoseeallon-goingprocessesforanadministrator.Heor *
- MultipleApproval ,ISOCertification
- Nowwecometotherequirementsthatrelatetotheactualsoftware *
- PHPprogramminglanguage. *
- Requirements *
- Shecaneditthearticleandandsenditbackonelevel. *
- Shecaneditthearticleandsenditbackonelevel. *
- Thebuilt-inworkflowforpublishingacontentobjectineZPublish3canonly *
- Thee-mailcontainsalinkforthesystemadministratorto *
- Theon-goingstatusforallemploymentprocessesatanytimeisavailable *
- Thisdocumentisdividedintotwosections.Thefirstsectionpresentsthe *
- ThisscenarioisfromacurrentcustomeroftheeZPublishECMSproviding *
- ThisscenarioisfromtheintranetofacurrentcustomeroftheeZPublish *
- UseCases *
- Westartwiththerequirementsthatarerelevanttotheunderlyingworkflow *
- activitiesarestarted *
- activitywasexecuted. *
- allowittoco-existandplugintothesoftware. *
- andcustomeventscanbeimplementedinPHP. *
- andisinitiatedbybyatriggerthatisassociatedwithafunctionofa *
- andlocationforpublication. *
- becustomizedatthePublishintreeactivity.Thisactivityservesasthe *
- besupportedasonebackend. *
- clickwhenheisdone. *
- componentthatistobeimplementedforeZpublishTelemarkaspartofthis *
- consistsofafive-levelapproval *
- continues. *
- controlflow *
- correctness. *
- dependentonotherpartsofthesystem *
- differentsystems. *
- eZComponent *
- eZPublish3 *
- eZPublish3comeswithanintegratedworkflowmechanismthatmakesitpossible *
- eZPublishTelemark *
- eZpublish3. *
- effectonthemaintainabilityofthesoftwareasawhole. *
- email ,etc.
- featurehaveshortcomingsthataretobeovercome *
- functionhascompleted. *
- handlesit. *
- implementation *
- makesextendingthesoftwarehard. *
- modeloftheworkflowcomponentthatistobeimplemented *
- module.Itwillstartthespecifiedworkfloweitherbeforeorafterthatthe *
- overallsolution.However ,itmustnotbetightlyintegratedortoomuch
- overthemislimited. *
- processesofeZPublish *
- qualityassurancefordairyproducts.Thecustomerhasinformationabout *
- removal ,andmodificationofcontentobjects,shouldbeaexpressable
- requesttocreatee-mailandotheraccounts. *
- senttotheCEO. *
- shecanseeeacharticleaswellasitsstateandwhichpersoncurrently *
- shouldbepossible. *
- thatarecurrentlyexecuting. *
- thedairyproductsstoredineZPublish.Whentheyupdateanycontent *
- thereisastrictISO-governedprocesstofollow.Thisprocessbasically *
- therequirementsthattheworkflowengineforeZPublishTelemark ,thenext
- thesis.Theyarecurrentlyimplementedusingcustomextensionsfor *
- theworkflowcomponentmustbeflexibleandprovidegoodinterfaceswhich *
- throughworkflows. *
- toanyonewiththeappropriatepermissions. *
- tobuynewhardwareforthenewemployee. *
- toperformdifferenttaskswithorwithoutuserinteraction. *
- triggerforacustomworkflowthatcanbeexecutedeitherbeforeorafterthe *
- versionofeZPublish ,needstofulfill.
- withabackgroundprocess *
- workflowinstances *
- workflowmechanismthatispartofeZPublish3.Thesecondsectiondiscusses *