M\á:l‹°;ZfbJôØèÞ®^—X£ß (qª·vÓIÍnÛ³séRÈEÜ]ð> ­§#~å�ŸØj±Æ,ŸH>‹ôbç àØ#hÏ#*Ç“2E€é„ÇÄ¥Äí_¨éò+�G5�¸±¤Úr,²œ…âéŽjàs^4mËmKòäW-ò²@¯¢XU _¯¤BXJަªq¿–«â¾tvì"¨Ï¥Oµ`¢qßl�"¬Á„ñ«8µöß]¤->¥u°3Ò̇�ù@’|þ£ô‚Ü׋òxO|îŒéƒu£-âY¬}®„‚5Í2æm,ŽpÏu÷Cªçåd#u˜,VÊþ¦NéþÓHªËÔ? ëϨ?Eb£ókBj&:^–^‹ã)Ç+3\Õ ‹Ô™"‚®Õ×�I�BÜ·ã›$Îö.¢YÛ5Ìâ³›Š©jXÔ‡Šæ‚[ešÂ…/À.¼�à;½p䩌î»ÊÀã·¢iŒ¸³è€Ã_ÈBåšh:쫇±Ò±#$\yWO ÎÊÆ-‘QùxÜþÅÒЦ£{×párÛ ~ݸܶJNo‘²Sljg1vKv¤ø›à¤ÐŠ¥7=È9ÞtýõhPÏEv�¾ÞyÀx'' ¨ë�ئÕé±µVª°›3@œ .†éN£©räÂÒi/QH\0âÀ©Rs ùà²,Õªf)kÌô´ÌɱBÔ7ay!‚ñ¬6ÐÌžÓ7%"¢-³JmõÓêîçè4upp6Á«óqs œdh—Ý¥§Tx%ÏšKM;VœÞÉV·�)9[ bí¯0Çò˳ãdbê OOd·èé°‚gôt“žˆè£kÌô´ÌɱBÔ7ay!‚ñz¬þÆŸâBS¨î«*öÒÌò.wžüÈBí"pò¯D ÏŒÂꤎд§ÿm7 |üP{7é—òãüŽ“X�áÊÉ®ûdÆC8lØ/3}õzÏ”¹cê£1™›©N‰µ‚?PoM�hÓªô ½®Î.ÈQ‡÷ŽiIüXòR‡!M„†üQ¡¨46h³K%0ƒv&ÒØš'ÌŽ½ªÈEñÜÿNý´ì(ºªc-N-�O¯Z¸›êÌ0  P$eâ,7Põ/ÐÇóÑA{Ç™ñˆÙd¥vÄËucÛ{Ôz{¤rË]( 3±!ɤf+ÁÉxÌçȤuWáê®É–ÄíR£-Vº~¡äòçꌅ|SGÑÓz¬þÆŸâBS¨î«*ön>þŽ{þÿj¥Ö§H-&fo@(iM£)Q×ï[…ݯç ‡.ì£:~öœ†²ãí =¦¤_éÃÐS²½Î„u‡5C½#bÝ-“óÏü’•¥7ƒ2ˆÑë™×gê׀ qÁt!Ò³™N=í¼^·sWŸÎ´•õ°pŒ^‚î¤B[¥ßÊÏ¡ÁDºÓ¯t´q^|žO5Q¦�®„å�åf$AÆP[FÚæM( AˆÇegª¨”Œ„;Qò®/Ãó)®¬¶½o#}l¬YL[Œ_–c­îÒÏì}JÓ-mËìh@.Gqö¨úBêRÖnŽ¡äòçꌅ|SGÑÓz¬þÆŸâBS¨î«*öŒcw¥—Ì¿äzÁÞÈ�Éy/½¹pYàÎçÓþܪ½à ¡uèyÈf È,S[?ð–^X1jðHo¬Oð…²ÿKÍzÍ/£{`b@÷pp”¹§5�'ióqÙ™…¼sÐTJ9m ÝvºÏVÅÞ(àÓ“è)S¶(—ÐS„S�²b%f2b-­ˆ·±è.@œᄌõ!bj{í5QQ«‘Åz¥æl˜~C饉jJÊçc:¾÷~ƒ(ºHvH�©¢Éxgo~(ü8?iøjú3fç:<%‰À|“Ry›��&楼ÈÄ©øß]é!ÌÍε< W´U¹½ÿ·`À?«nDe¤jÕ$€î –†ºhÉí]½„ä|Næ·‘™¾·H(&ìïhµŠ €\ù–¾!n·}µª¿÷ëϽYÅz¥æl˜~C饉jJÊç«–©7@}ûv5•¥Kǃuf±võ¡y»�b’1v‚2øóÁüÓ3bÃß \jèõ=ÅX¨B™PbÞºº@¨†Ûx$yÍsø÷÷q¦leˆk'u>ÀÜ+É: ®?©ƒ@ü’‚~v8Ï¥O¾?äì|€“e¬öróØÊÀ\w04t©áQš¥1Ö}Ùò¯vŒ«9A‚r^�Þ'uð«Lñ·ÿÙ«á} „êvb�Qì#�ªÉ-P� �«ÍV‘j½ÂA–ôV€ùX‹†n0ÆXýbÂ*ˆµi”/<ÉU+ߙړ4Ç„v²?lÍÀši�­î®’~Æz©³Äiæð ºok-™ûMÛÔìŒIHlšhUÎTàxZ�€ûõØg¦½rþ¾�éª�Í4“6Ì?}Y"‘9Âa/cUŽJ³ÖŠë eB QM^7¬UžHÂCXc~úxý¯5ò¥H³¿Â0XPÿqDH¾Ö�V«þürÂí¤æ»ØQižMㄆ§ãÀÍâ�¥\ÇA+ë–¼RßíVb¿O1@Í\³4¿‡8äÍಬzôü„"¾àcšõô`ù»†„Àkª�àÿÿɪ•¡$ªÚn|‚ür™À;%è Š¶1vKv¤ø›à¤ÐХŠœgÞjăîn ö‘¬ýn¿, /ѳž‡ü!¡¼Ô ÃA-jBŸ_̼Â�N¬R0Ñ$¡íF˜ëž<©E4ˆÛ$#Oÿ@#ƒŠJ– !ñÛ ·ÆÜ4ÆiÑ?²ÒЦ£{×párÛ ~Ý®dñƒÅ1ãpÞÏZ".4„–¤ˆddVr°‘ ‰[(Gä-´ÛxÆÕ’ÜÚFªeú�ŠVÀ†Ã,'¨ï«\=nGŠP´xÞjÚ è1ï�GÄËCÓYÍ­³ˆ{%µ Űö•AX’ÈïÈîc!©of'È÷ež$ÚÔþµý¨g•Tºµ2Òw—¦…ýhIë®~¦‡²Ž—俹®·ãÃÊTï ÇÞœV¨a>KÍÃgÚ{¯�e×°©Ô‘ ŸÎ�’ÓZµ Õÿos«#�lZ «Rzt.F‚©ÇEäý”vÉMåô#~Șæ•4äAf'ÈÒž©P–Ξÿ—dîl¹,Â똤 µÑýÐÜý\c“óÿ¼Eú@ŽÐ8RºpßWè„ùÑ}Há¿¶¤»èU^{Ì?©åO5QL‚Ú�ø=QúÆV…}ÃÚÚ�À„°sH †1<�•äÜŸô¹×°ŸQÔúHô:¾vX¬á†ó•`ð•ÌRf�ü8ÿÚyü(¦;½ )�²„4W;Ù¢^L�!U…8s˜49×­¶Ã?í°­*¹žþÐ* r+öq,ù‹ªg¼#²á¥ •Ø`AL£�Í>Þ_Ùê!FF= @-SîõºòD¾ó›(p¼š²SW‚Ù” dîÉ úB÷Â1„¨éè¯oû4Oâåž¼a– w å×ÇÑs7-'èÓs{U½ž‰±@Z{A>ØCµ5Ÿ� Úëên:åiæŠÞÀ5`¡Ý.œkÁ®@·™±nˆÜv³ß,Åz¥æl˜~C饉jJÊçÐG¥í>ísÍ�NÉ™ /‰¸G–2 ØI6²¹‰€R†C‘+dóÒåÈXð›!ÝÛæáØßbCž áø ’„s(1½Kê™åЩx…Z÷X‰#ëþé1Hõ::òM`‹l3öç¯Hý¨aGðÑæO[G˜gT�±×ŸÆ›ËU`¥ITGÕH×uõxn%Jf_©é¯q«1p½P}̯-v_Ž«ÐМǵþ¤>`“¹U·X#€|w§ìM{˜Qͯï Eîml`Mɵ„¶‘;ÅÉx3¹®OÖ \›„ƒâàdi¹¢(G¯^ì10cÝëg-ÔÕ,Wx/²½‹× N8ñs(ˆ20'C*Ÿ§±Wã8u#Èa°YùÜ|Æëàˆ4jh+>2„.œkÁ®@·™±nˆÜv³ß,Åz¥æl˜~C饉jJÊçÐG¥í>ísÍ�NÉ™ /~‹›‹ªû¤Íy�Gœ…[.nnäÔQاøÖ›ºº`/ w0S²v[Ü\% �ìTDHÉ´Ð LnC}O@w«M9DÕ9ú¨æªBÀ©ûÀen¤Åë²¼Åi4Š­Éâ–ªpèe%çÆ'nx¬ D|®{0ü+¡-Èæ@ÕaE{ý>xÇ8=¡ ÈE–nE”²€©düÚ\ü°þž_ûßÔ‹™ìÌoß{RËÐMæ^Ý{…e8Ë/€»S¤ëànî8žp“¸V:ø ~—³ö?�G|»Vû< Ri˜ ²#Å¥¬.¨&: ïjHT!þ΂ÀDí�½þl€…�övH˜¾B^Ãp‚ÕÊ„‰ãr*¦d” ++8§’ð#;èq\J9ÐDEάžø}¶Dp k‰÷ÌùoŒŒÐ¿O4@z½YøÂ›Ì„jôÊ>*B#),ù5‘�$aWÉwä×hy®'QóØ.?ê#ãy’ ûz¬dÓËVk+ý¨ Ò)ßô™rÈð‡µH ÚzàI§éþŠá­ùÍÿé •}¨ÏuÆJ€„Z`w1ÇÏ:µÆ ,¡ª{�ç‹}T°k‚Ó7c="tree">
DataTables\Ext
Extended by DataTables\Editor\Upload
Namespace: DataTables\Editor
Example:

Store information about a file in a table called files and the actual file in an uploads directory.

Field::inst( 'imageId' )
        ->upload(
            Upload::inst( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' )
                ->db( 'files', 'id', array(
                    'webPath'     => Upload::DB_WEB_PATH,
                    'fileName'    => Upload::DB_FILE_NAME,
                    'fileSize'    => Upload::DB_FILE_SIZE,
                    'systemPath'  => Upload::DB_SYSTEM_PATH
                ) )
                ->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" )
        )

Example:

As above, but with PHP 5.4 (which allows chaining from new instances of a class)

newField( 'imageId' )
        ->upload(
            new Upload( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' )
                ->db( 'files', 'id', array(
                    'webPath'     => Upload::DB_WEB_PATH,
                    'fileName'    => Upload::DB_FILE_NAME,
                    'fileSize'    => Upload::DB_FILE_SIZE,
                    'systemPath'  => Upload::DB_SYSTEM_PATH
                ) )
                ->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" )
        )

Located at Editor/Upload.php
Methods summary
public
# __construct( string|callable $action = null )

Upload instance constructor

public DataTables\Editor\Upload
# action( string|callable $action )

Set the action to take when a file is uploaded. This can be either of:

public DataTables\Editor\Upload
# allowedExtensions( string[] $extn, string $error = "This file type cannot be uploaded" )

An array of valid file extensions that can be uploaded. This is for simple validation that the file is of the expected type - for example you might use [ 'png', 'jpg', 'jpeg', 'gif' ] for images. The check is case-insensitive. If no extensions are given, no validation is performed on the file extension.

public DataTables\Editor\Upload
# db( string $table, string $pkey, array $fields )

Database configuration method. When used, this method will tell Editor what information you want written to a database on file upload, should you wish to store relational information about your file on the database (this is generally recommended).

public DataTables\Editor\Upload
# dbClean( callable $tableField, $callback = null )

Set a callback function that is used to remove files which no longer have a reference in a source table.

public DataTables\Editor\Upload
# validator( callable $fn )

Add a validation method to check file uploads. Multiple validators can be added by calling this method multiple times - they will be executed in sequence when a file has been uploaded.

public DataTables\Editor\Upload
# where( callable $fn )

Add a condition to the data to be retrieved from the database. This must be given as a function to be executed (usually anonymous) and will be passed in a single argument, the Query object, to which conditions can be added. Multiple calls to this method can be made.

Methods inherited from DataTables\Ext
_getSet(), _propExists(), _readProp(), _writeProp(), inst(), instantiate()
Constants summary
string DB_CONTENT

Database value option (Db()) - File content. This should be written to a blob. Typically this should be avoided and the file saved on the file system, but there are cases where it can be useful to store the file in the database.

# 'editor-content'
string DB_CONTENT_TYPE

Database value option (Db()) - Content type

# 'editor-contentType'
string DB_EXTN

Database value option (Db()) - File extension

# 'editor-extn'
string DB_FILE_NAME

Database value option (Db()) - File name (with extension)

# 'editor-fileName'
string DB_FILE_SIZE

Database value option (Db()) - File size (bytes)

# 'editor-fileSize'
string DB_MIME_TYPE

Database value option (Db()) - MIME type

# 'editor-mimeType'
string DB_SYSTEM_PATH

Database value option (Db()) - Full system path to the file

# 'editor-systemPath'
string DB_WEB_PATH

Database value option (Db()) - HTTP path to the file. This is derived from the system path by removing $_SERVER['DOCUMENT_ROOT']. If your images live outside of the document root a custom value would be to be used.

# 'editor-webPath'
string DB_READ_ONLY

Read from the database - don't write to it

# 'editor-readOnly'