Compare commits

...

57 Commits

Author SHA1 Message Date
cb355feaf4 fixed import of components selection 2017-05-20 09:36:26 +02:00
9b1f111251 fix gh-78 to ensure the field options get loaded in the repeatable conditions 2017-05-08 11:09:24 +03:00
4cead46ac4 Fixed gh-75 to insure the column names are loaded as before. Fix gh-76 by adding more checks to insure that the correct date is used in the getLastModifiedDate method. 2017-05-04 23:34:28 +01:00
25c632065a updated the readme 2017-04-26 17:30:09 +01:00
ea1edebc05 Resolves gh-71 bug, so that admin views that has no fields are still accessible. Fixed gh-72 to insure all components on Joomla version 3.7.0 works and looks correctly. Please just recompile your components for Joomla v3.7.0 2017-04-26 09:56:17 +01:00
498c75dfcf Next stable release with improvments and fixes 2017-04-08 22:58:53 +01:00
f39a877db2 fixed double // in file path when exporting a component and its images 2017-04-08 21:52:51 +01:00
7afbb131ce fixes gh-68 where the wrong name is used in searching for the alias, it must be the table name, and this is not always the same as the view. 2017-04-08 19:52:09 +01:00
6bba258fec Improved the import feature to insure that we don't have language conflicts with multiple strings for one language. 2017-04-08 14:44:41 +01:00
1cf259a54d Resolves gh-60 with complete implementation of the language manager/translator feature. Added a purge function the clear unused language strings from the database and unlike them from the related component during compilation. 2017-04-07 21:33:35 +01:00
d113d7b91b Added the new language feature to the export and import of Components, so that their related translations can also be linked to the exported package. 2017-04-06 22:40:22 +01:00
dev
2f90f9359c fixed typo 2017-04-06 09:51:46 +01:00
dev
b1d9b672ab Added the global switch to set the percentage a language should be translated before it is automatically added to the component during compilation. Force language to be added when the debug lines are set to be added. 2017-04-06 09:47:51 +01:00
dev
d9b2e51f8c Fix redirect during creation of new language from translation view. 2017-04-05 21:14:29 +01:00
dev
2caaa1a1e3 added the translation to the component view, also adding lang tags of ready translated languages 2017-04-05 17:26:17 +01:00
dev
1b3cb2bfdd fixed the search in translation view 2017-04-05 16:21:56 +01:00
dev
5a6ef33c5b removed button for now 2017-04-05 15:07:48 +01:00
dev
7eb5a2473c include fix for the a.* error 2017-04-05 14:49:11 +01:00
dev
34d14ed95d gh-60 language translation component added, basic implementation 2017-04-05 14:21:10 +01:00
d31b0b6c0c fixed gh-53 the database error call on a.*, very strange 2017-04-05 07:27:39 +01:00
dev
f3f91f492f added the UI for the new Language Manager gh-60 2017-04-03 11:58:41 +01:00
bd0febd92c Resolves gh-63 to prevent repeateble field from being created a second time. Resolves gh-62 to insure full encryption of JCB packages. 2017-04-01 15:59:54 +02:00
b294af2e7d Stable release of component mapped export and import feature 2017-03-31 23:39:20 +02:00
82fd08cf57 Resolves gh-59 the repeatable field id problem. Also improved the export and import to insure snippets and linked admin views are re-mapped on import of the component. Also fixed the target and match field conditions in admin views to re-map the ids correctly. 2017-03-31 23:28:16 +02:00
5dc3f97f15 Export any component completely mapped in JCB and import into another JCB with owner control 2017-03-31 10:18:33 +02:00
cca07258d6 Added owner and key control to export & import of components, also added buy and package link building to global options gh-53 2017-03-30 23:19:12 +02:00
f61bb46073 Resolves gh-53 with stable export & import of fully mapped components. Key export & import encryption and forced update switch, with error and waring messages has been added. 2017-03-28 16:57:59 +02:00
8b522f44d9 Further gh-53 implementation of the export and import of complete components as JCB packages. Fixes gh-56 2017-03-27 14:38:51 +02:00
63b1bac955 Expanded the export feature of gh-53 to bundle the data into package. 2017-03-21 00:07:14 +02:00
3c610acb31 Merge pull request #55 from ro-ot/staging
Development of the export feature of JCB components mapping.
2017-03-19 10:30:09 +02:00
dev
cfd9b33b30 added the custom code search and more to gh-53 2017-03-19 00:55:34 +02:00
dev
952d26f1f8 added the getData method of the component smart export feature 2017-03-18 22:17:15 +02:00
dev
b0ad2ddffc Added the basic code for controller and model for gh-53 2017-03-18 13:16:07 +02:00
7534aed01d Fixed #54 2017-03-18 04:53:27 +02:00
28198e9b9e Next stable release 2017-03-12 14:23:42 +02:00
dev
3953df845c impoved the request linking options, fixed few bugs in compiler (#52) 2017-03-08 06:49:54 +02:00
30e37dcfde Improved category integration, adapted the fields generator to allow one field to be used multiple times in the same view 2017-03-06 14:08:12 +02:00
bc9e5495d7 fixed #43 to insure fields are sorted in the correct order. Added the noticeboard to the compiler page, to insure all our notices gets viewed by all those who use the JCB 2017-03-03 23:53:18 +02:00
4d47f8292f added another fields to admin view to target list controller and model. Also improve compiler to add these new custom script to correct areas 2017-03-02 02:55:04 +02:00
a1ff74f157 Resolves #43 to insure that fields are sorted by tab once save, thanks to @Peeripapo 2017-02-24 16:57:40 +02:00
dc1217e6d1 Resolved #42 to insure the strpos always returns the correct data type. Improvements to some of the UI surrounding the custom code area. Added an edit button for the component being compiled on the complier page. 2017-02-23 02:29:37 +02:00
f2e4df6ecb Improved the custom code by adding the feature that shows where the manual custom code is used, including better placeholder information. Added component information to the compiler view. 2017-02-17 20:35:18 +02:00
a197f503a9 changed component table name to joomla-component to add history/version tracking back to components 2017-02-16 16:02:23 +02:00
79ab3164a6 few changes in comments, descriptions and fields. Included JS files to custom code engine 2017-02-14 02:33:24 +02:00
290a51dd5a Further improved #37 to ensure language strings are set and reversed, also add extra buttons to the compiler page. Major restructure of custom code implementation to make it more stable. Resolved #40 by updating the default field sql values. 2017-02-14 01:24:38 +02:00
de008d5907 Stable release of the automatic import of custom code, and the JCB manual placeholder implementation resolves #37 please view https://youtu.be/KiAtJawZ3oo 2017-02-11 04:24:26 +02:00
5b5599575b Fixes #39 to ensure components are build even if created and modified dates are not set. Improved #37 #issuecomment-278372267 to avoid one line error in windows. 2017-02-09 18:11:10 +02:00
3497de7c28 Changed alias in site-view and custom-admin-view to codename so we can have views with the same names in different components, added warning notice if custom code can't be added, Bug fixes in the demo content dates 2017-02-04 02:22:17 +02:00
e0efef54e9 Implementation of the switches and update the update server. 2017-02-02 14:19:09 +02:00
655708cfa3 Bug fixes, error on compilation when using view date & version was fixed, headercheck file missing was fixed. Added swithces to controle custom import placeholders and if view version and date should be used 2017-02-02 13:54:07 +02:00
1a79b92b07 Added #39 a new feature the imports custom code during compilation. We also improved the compiler. 2017-02-01 15:17:04 +02:00
ea2b2ea4c4 added feature to remove site folder if not needed, also some linked to component tabs to fields, admin views, site views, and custom admin views 2017-01-20 02:16:50 +02:00
b02771762d improved the linked view option, and added the Linked - Admin Views to each field 2017-01-13 00:38:33 +02:00
0ae4e4f80d Added #31 feature to build fields and views dynamically via a sql dump. Fixed #29 to insure that a redirect loop does not occur easily. Made many other compiler improvements. 2016-12-30 12:47:19 +02:00
829384a56b added dynamic email helper fields to the global settings of all components that use the email helper class 2016-12-22 23:32:13 +02:00
0cd5660141 added another field to the component view, to add helper methods to both admin and site area of the component 2016-11-25 04:56:16 +02:00
082196378b Improved the lockdown WHMCS license integration 2016-11-22 19:08:17 +02:00
658 changed files with 55978 additions and 32922 deletions

View File

@ -1,4 +1,4 @@
# Component Builder (2.2.3)
# Component Builder (2.4.6)
This is a [Joomla 3.x](http://www.joomla.org/) component.
@ -8,7 +8,7 @@ The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanc
Whether you're a seasoned [Joomla](http://www.joomla.org/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.2.3) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.4.6) with **ALL** its features and **ALL** concepts totally open-source and free!
Once installed upgrades are quick and easy via the default Joomla upgrade area.
@ -70,18 +70,21 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
+ You can dynamically add internal help structures to all component.
+ There is no limitations on how big or how much you want to build (server limitation only).
+ This is a complete factory kind of component that functions like a deployment hub.
+ Export any component completely mapped in JCB and import into another JCB.
+ This and much much more are all possible with this component builder!
# Get Access to Video Tutorials
> **You can purchase more demo content for Component Builder including access to training & help video tutorials:**
> **You can purchase more [demo content](http://vdm.bz/jcb-packages) for Component Builder including access to training & help video tutorials:**
+ Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component)
+ Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component)
+ Help View Integration*
+ Training & Help Videos* tutorials in the component included.
+ *Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demo.zip) _(free)_
+ *Advance Demo Component* get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demoAdvanced.zip) _([buy key](http://vdm.bz/get-advance-demo-key))_
+ *Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_sermondistributor.zip) _([buy key](http://vdm.bz/get-sermon-distributor-key))_
+ *Location Data* see the build on [github](https://github.com/vdm-io/Joomla-Location-Data) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_locationData.zip) _([buy key](http://vdm.bz/get-location-data-key))_
+ *Help View Integration*
+ *Training & Help Videos* tutorials in the component included.
[**GET ACCESS NOW!**](https://www.vdm.io/joomla-component-builder#get)
[**GET ACCESS NOW!**](http://vdm.bz/component-builder)
# gitHub Support
@ -100,23 +103,23 @@ Component Builder is mapped as a component in itself on my local development env
# Build Details
+ *Company*: [Vast Development Method](https://www.vdm.io/joomla-component-builder)
+ *Author*: [Llewellyn van der Merwe](mailto:info@vdm.io)
+ *Name*: [Component Builder](https://www.vdm.io/joomla-component-builder)
+ *Company*: [Vast Development Method](http://vdm.bz/component-builder)
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 22nd November, 2016
+ *Version*: 2.2.3
+ *Last Build*: 20th May, 2017
+ *Version*: 2.4.6
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **86456**
+ *File count*: **540**
+ *Folder count*: **99**
+ *Line count*: **106004**
+ *File count*: **643**
+ *Folder count*: **115**
> This **component** was build with a Joomla [Automated Component Builder](https://www.vdm.io/joomla-component-builder).
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
## Donations
If you want to support this project, please consider donating:
Come on buy me a coffee :)
* PayPal: pay@vdm.io
* Bitcoin: 3H35PYwikEosvcjxHXGPLS1GufZ4b4iFu3

View File

@ -1,4 +1,4 @@
# Component Builder (2.2.3)
# Component Builder (2.4.6)
This is a [Joomla 3.x](http://www.joomla.org/) component.
@ -8,7 +8,7 @@ The Component Builder for [Joomla](http://www.joomla.org/) that is highly advanc
Whether you're a seasoned [Joomla](http://www.joomla.org/) developer, or have just started, Component Builder will safe you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.2.3) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [github](https://github.com/vdm-io/Joomla-Component-Builder/releases) is the latest release (2.4.6) with **ALL** its features and **ALL** concepts totally open-source and free!
Once installed upgrades are quick and easy via the default Joomla upgrade area.
@ -70,18 +70,21 @@ Once installed upgrades are quick and easy via the default Joomla upgrade area.
+ You can dynamically add internal help structures to all component.
+ There is no limitations on how big or how much you want to build (server limitation only).
+ This is a complete factory kind of component that functions like a deployment hub.
+ Export any component completely mapped in JCB and import into another JCB.
+ This and much much more are all possible with this component builder!
# Get Access to Video Tutorials
> **You can purchase more demo content for Component Builder including access to training & help video tutorials:**
> **You can purchase more [demo content](http://vdm.bz/jcb-packages) for Component Builder including access to training & help video tutorials:**
+ Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component)
+ Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component)
+ Help View Integration*
+ Training & Help Videos* tutorials in the component included.
+ *Demo Component* see the build on [github](https://github.com/namibia/demo-joomla-3-component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demo.zip) _(free)_
+ *Advance Demo Component* get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_demoAdvanced.zip) _([buy key](http://vdm.bz/get-advance-demo-key))_
+ *Sermon Distributor* see the build on [github](https://github.com/SermonDistributor/Joomla-3-Component) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_sermondistributor.zip) _([buy key](http://vdm.bz/get-sermon-distributor-key))_
+ *Location Data* see the build on [github](https://github.com/vdm-io/Joomla-Location-Data) or get the [JCB Package](https://github.com/vdm-io/JCB-Packages/raw/master/JCB_locationData.zip) _([buy key](http://vdm.bz/get-location-data-key))_
+ *Help View Integration*
+ *Training & Help Videos* tutorials in the component included.
[**GET ACCESS NOW!**](https://www.vdm.io/joomla-component-builder#get)
[**GET ACCESS NOW!**](http://vdm.bz/component-builder)
# gitHub Support
@ -100,23 +103,23 @@ Component Builder is mapped as a component in itself on my local development env
# Build Details
+ *Company*: [Vast Development Method](https://www.vdm.io/joomla-component-builder)
+ *Author*: [Llewellyn van der Merwe](mailto:info@vdm.io)
+ *Name*: [Component Builder](https://www.vdm.io/joomla-component-builder)
+ *Company*: [Vast Development Method](http://vdm.bz/component-builder)
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](http://vdm.bz/component-builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 22nd November, 2016
+ *Version*: 2.2.3
+ *Last Build*: 20th May, 2017
+ *Version*: 2.4.6
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
+ *Line count*: **86456**
+ *File count*: **540**
+ *Folder count*: **99**
+ *Line count*: **106004**
+ *File count*: **643**
+ *Folder count*: **115**
> This **component** was build with a Joomla [Automated Component Builder](https://www.vdm.io/joomla-component-builder).
> This **component** was build with a Joomla [Automated Component Builder](http://vdm.bz/component-builder).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
## Donations
If you want to support this project, please consider donating:
Come on buy me a coffee :)
* PayPal: pay@vdm.io
* Bitcoin: 3H35PYwikEosvcjxHXGPLS1GufZ4b4iFu3

View File

@ -23,6 +23,10 @@
<action name="admin_view.export" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EXPORT_DESC" />
<action name="admin_view.import" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_IMPORT_DESC" />
<action name="admin_view.submenu" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_SUBMENU_DESC" />
<action name="compiler.access" title="COM_COMPONENTBUILDER_COMPILER_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_ACCESS_DESC" />
<action name="compiler.clear_tmp" title="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_COMPILER_CLEAR_TMP_BUTTON_ACCESS_DESC" />
<action name="compiler.dashboard_list" title="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_COMPILER_DASHBOARD_LIST_DESC" />
<action name="compiler.submenu" title="COM_COMPONENTBUILDER_COMPILER_SUBMENU" description="COM_COMPONENTBUILDER_COMPILER_SUBMENU_DESC" />
<action name="custom_admin_view.access" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_ACCESS_DESC" />
<action name="custom_admin_view.batch" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_BATCH_USE_DESC" />
<action name="custom_admin_view.dashboard_add" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_DASHBOARD_ADD_DESC" />
@ -31,6 +35,20 @@
<action name="custom_admin_view.export" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EXPORT" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_EXPORT_DESC" />
<action name="custom_admin_view.import" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_IMPORT_DESC" />
<action name="custom_admin_view.submenu" title="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_ADMIN_VIEWS_SUBMENU_DESC" />
<action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" />
<action name="custom_code.batch" title="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_BATCH_USE_DESC" />
<action name="custom_code.create" title="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE_DESC" />
<action name="custom_code.dashboard_list" title="COM_COMPONENTBUILDER_CUSTOM_CODES_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_CUSTOM_CODES_DASHBOARD_LIST_DESC" />
<action name="custom_code.delete" title="COM_COMPONENTBUILDER_CUSTOM_CODES_DELETE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_DELETE_DESC" />
<action name="custom_code.edit" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_DESC" />
<action name="custom_code.edit.created_by" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_BY_DESC" />
<action name="custom_code.edit.created" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_DATE_DESC" />
<action name="custom_code.edit.own" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN_DESC" />
<action name="custom_code.edit.state" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE_DESC" />
<action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" />
<action name="custom_code.export" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EXPORT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EXPORT_DESC" />
<action name="custom_code.import" title="COM_COMPONENTBUILDER_CUSTOM_CODES_IMPORT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_IMPORT_DESC" />
<action name="custom_code.submenu" title="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU" description="COM_COMPONENTBUILDER_CUSTOM_CODES_SUBMENU_DESC" />
<action name="dynamic_get.access" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS_DESC" />
<action name="dynamic_get.batch" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_BATCH_USE_DESC" />
<action name="dynamic_get.create" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_CREATE_DESC" />
@ -83,6 +101,41 @@
<action name="help_document.export" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EXPORT_DESC" />
<action name="help_document.import" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_IMPORT_DESC" />
<action name="help_document.submenu" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_SUBMENU_DESC" />
<action name="joomla_component.export_components" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_COMPONENTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_COMPONENTS_BUTTON_ACCESS_DESC" />
<action name="joomla_component.import_components" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_COMPONENTS_BUTTON_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMPORT_COMPONENTS_BUTTON_ACCESS_DESC" />
<action name="joomla_component.access" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_ACCESS_DESC" />
<action name="joomla_component.batch" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_BATCH_USE_DESC" />
<action name="joomla_component.dashboard_add" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_ADD_DESC" />
<action name="joomla_component.dashboard_list" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DASHBOARD_LIST_DESC" />
<action name="joomla_component.edit.add_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE_DESC" />
<action name="joomla_component.edit.license_type" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE_DESC" />
<action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
<action name="joomla_component.export" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EXPORT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EXPORT_DESC" />
<action name="joomla_component.import" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_IMPORT" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_IMPORT_DESC" />
<action name="joomla_component.submenu" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_SUBMENU_DESC" />
<action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" />
<action name="language_translation.batch" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_BATCH_USE_DESC" />
<action name="language_translation.create" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE_DESC" />
<action name="language_translation.dashboard_list" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DASHBOARD_LIST_DESC" />
<action name="language_translation.delete" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE_DESC" />
<action name="language_translation.edit" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_DESC" />
<action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" />
<action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" />
<action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" />
<action name="language_translation.export" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EXPORT_DESC" />
<action name="language_translation.import" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_IMPORT_DESC" />
<action name="language_translation.submenu" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_SUBMENU_DESC" />
<action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" />
<action name="language.batch" title="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE" description="COM_COMPONENTBUILDER_LANGUAGES_BATCH_USE_DESC" />
<action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" />
<action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" />
<action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" />
<action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" />
<action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" />
<action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" />
<action name="language.export" title="COM_COMPONENTBUILDER_LANGUAGES_EXPORT" description="COM_COMPONENTBUILDER_LANGUAGES_EXPORT_DESC" />
<action name="language.import" title="COM_COMPONENTBUILDER_LANGUAGES_IMPORT" description="COM_COMPONENTBUILDER_LANGUAGES_IMPORT_DESC" />
<action name="language.submenu" title="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU" description="COM_COMPONENTBUILDER_LANGUAGES_SUBMENU_DESC" />
<action name="layout.access" title="COM_COMPONENTBUILDER_LAYOUTS_ACCESS" description="COM_COMPONENTBUILDER_LAYOUTS_ACCESS_DESC" />
<action name="layout.batch" title="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE" description="COM_COMPONENTBUILDER_LAYOUTS_BATCH_USE_DESC" />
<action name="layout.dashboard_add" title="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD" description="COM_COMPONENTBUILDER_LAYOUTS_DASHBOARD_ADD_DESC" />
@ -116,6 +169,11 @@
<action name="template.import" title="COM_COMPONENTBUILDER_TEMPLATES_IMPORT" description="COM_COMPONENTBUILDER_TEMPLATES_IMPORT_DESC" />
<action name="template.submenu" title="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU" description="COM_COMPONENTBUILDER_TEMPLATES_SUBMENU_DESC" />
</section>
<section name="joomla_component">
<action name="joomla_component.edit.add_license" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_ADD_LICENSE_DESC" />
<action name="joomla_component.edit.license_type" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_LICENSE_TYPE_DESC" />
<action name="joomla_component.version" title="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_EDIT_VERSION_DESC" />
</section>
<section name="admin_view">
<action name="core.edit" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_DESC" />
<action name="core.edit.state" title="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE" description="COM_COMPONENTBUILDER_ADMIN_VIEWS_EDIT_STATE_DESC" />
@ -170,6 +228,17 @@
<action name="dynamic_get.access" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_ACCESS_DESC" />
<action name="dynamic_get.version" title="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION" description="COM_COMPONENTBUILDER_DYNAMIC_GETS_EDIT_VERSION_DESC" />
</section>
<section name="custom_code">
<action name="custom_code.edit" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_DESC" />
<action name="custom_code.edit.own" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_OWN_DESC" />
<action name="custom_code.edit.state" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_STATE_DESC" />
<action name="custom_code.edit.created_by" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_BY" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_BY_DESC" />
<action name="custom_code.edit.created" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_DATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_CREATED_DATE_DESC" />
<action name="custom_code.create" title="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_CREATE_DESC" />
<action name="custom_code.delete" title="COM_COMPONENTBUILDER_CUSTOM_CODES_DELETE" description="COM_COMPONENTBUILDER_CUSTOM_CODES_DELETE_DESC" />
<action name="custom_code.access" title="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS" description="COM_COMPONENTBUILDER_CUSTOM_CODES_ACCESS_DESC" />
<action name="custom_code.version" title="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION" description="COM_COMPONENTBUILDER_CUSTOM_CODES_EDIT_VERSION_DESC" />
</section>
<section name="snippet">
<action name="core.edit" title="COM_COMPONENTBUILDER_SNIPPETS_EDIT" description="COM_COMPONENTBUILDER_SNIPPETS_EDIT_DESC" />
<action name="core.edit.state" title="COM_COMPONENTBUILDER_SNIPPETS_EDIT_STATE" description="COM_COMPONENTBUILDER_SNIPPETS_EDIT_STATE_DESC" />
@ -197,6 +266,24 @@
<action name="fieldtype.access" title="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS" description="COM_COMPONENTBUILDER_FIELDTYPES_ACCESS_DESC" />
<action name="fieldtype.version" title="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION" description="COM_COMPONENTBUILDER_FIELDTYPES_EDIT_VERSION_DESC" />
</section>
<section name="language_translation">
<action name="language_translation.edit" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_DESC" />
<action name="language_translation.edit.own" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_OWN_DESC" />
<action name="language_translation.edit.state" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_STATE_DESC" />
<action name="language_translation.create" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_CREATE_DESC" />
<action name="language_translation.delete" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_DELETE_DESC" />
<action name="language_translation.access" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_ACCESS_DESC" />
<action name="language_translation.version" title="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGE_TRANSLATIONS_EDIT_VERSION_DESC" />
</section>
<section name="language">
<action name="language.edit" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_DESC" />
<action name="language.edit.own" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_OWN_DESC" />
<action name="language.edit.state" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_STATE_DESC" />
<action name="language.create" title="COM_COMPONENTBUILDER_LANGUAGES_CREATE" description="COM_COMPONENTBUILDER_LANGUAGES_CREATE_DESC" />
<action name="language.delete" title="COM_COMPONENTBUILDER_LANGUAGES_DELETE" description="COM_COMPONENTBUILDER_LANGUAGES_DELETE_DESC" />
<action name="language.access" title="COM_COMPONENTBUILDER_LANGUAGES_ACCESS" description="COM_COMPONENTBUILDER_LANGUAGES_ACCESS_DESC" />
<action name="language.version" title="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION" description="COM_COMPONENTBUILDER_LANGUAGES_EDIT_VERSION_DESC" />
</section>
<section name="help_document">
<action name="help_document.edit" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_DESC" />
<action name="help_document.edit.own" title="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN" description="COM_COMPONENTBUILDER_HELP_DOCUMENTS_EDIT_OWN_DESC" />

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version 2.4.6
@build 20th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 111 of this MVC
@build 7th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_view.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 111 of this MVC
@build 7th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_views.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 48 of this MVC
@build 25th April, 2017
@created 1st February, 2017
@package Component Builder
@subpackage site.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@subpackage compiler.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
@ -23,9 +23,5 @@
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */
.no-click {
pointer-events: none;
}
.fieldMedium { width: 130px; }
.fieldSmall { width: 60px; }
code { display: inline-block; margin: 3px;}

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 22 of this MVC
@build 1st March, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_view.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 22 of this MVC
@build 1st March, 2017
@created 13th August, 2015
@package Component Builder
@subpackage custom_admin_views.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 25th April, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_code.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 82 of this MVC
@build 25th April, 2017
@created 11th October, 2016
@package Component Builder
@subpackage custom_codes.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version 2.4.6
@build 20th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage dashboard.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 84 of this MVC
@build 4th May, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_get.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 84 of this MVC
@build 4th May, 2017
@created 21st May, 2015
@package Component Builder
@subpackage dynamic_gets.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 37 of this MVC
@build 3rd February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage field.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 37 of this MVC
@build 3rd February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage fields.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 12 of this MVC
@build 20th October, 2016
@created 30th April, 2015
@package Component Builder
@subpackage fieldtype.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version @update number 12 of this MVC
@build 20th October, 2016
@created 30th April, 2015
@package Component Builder
@subpackage fieldtypes.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 6 of this MVC
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_document.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 6 of this MVC
@build 17th October, 2016
@created 4th March, 2016
@package Component Builder
@subpackage help_documents.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 338 of this MVC
@build 20th May, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_component.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 338 of this MVC
@build 20th May, 2017
@created 6th May, 2015
@package Component Builder
@subpackage joomla_components.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 3 of this MVC
@build 3rd April, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage component.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@subpackage language.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translation.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -0,0 +1,27 @@
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version @update number 39 of this MVC
@build 7th April, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage language_translations.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
/* CSS Document */

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 3 of this MVC
@build 3rd April, 2017
@created 3rd April, 2017
@package Component Builder
@subpackage components.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@subpackage languages.css
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 67 of this MVC
@build 1st April, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layout.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 67 of this MVC
@build 1st April, 2017
@created 18th May, 2015
@package Component Builder
@subpackage layouts.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 51 of this MVC
@build 6th March, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_view.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 51 of this MVC
@build 6th March, 2017
@created 29th May, 2015
@package Component Builder
@subpackage site_views.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 16 of this MVC
@build 20th October, 2016
@created 19th May, 2015
@package Component Builder
@subpackage snippet.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 16 of this MVC
@build 20th October, 2016
@created 19th May, 2015
@package Component Builder
@subpackage snippets.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 40 of this MVC
@build 1st April, 2017
@created 26th May, 2015
@package Component Builder
@subpackage template.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -9,12 +9,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@version @update number 40 of this MVC
@build 1st April, 2017
@created 26th May, 2015
@package Component Builder
@subpackage templates.css
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -33,7 +33,7 @@ defined('_JEXEC') or die('Restricted access');
* ###Component### component helper.
*/
abstract class ###Component###Helper
{###ADMIN_GLOBAL_EVENT_HELPER### ###CUSTOM_HELPER_SCRIPT###
{###ADMIN_GLOBAL_EVENT_HELPER### ###CUSTOM_HELPER_SCRIPT### ###BOTH_CUSTOM_HELPER_SCRIPT###
/**
* Load the Component xml manifest.
**/
@ -146,13 +146,18 @@ abstract class ###Component###Helper
if (self::checkArray($where))
{
// prep main <-- why? well if $main='' is empty then $table can be categories or users
if (self::checkString($main))
{
$main = '_'.ltrim($main, '_');
}
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
$query->from($db->quoteName('#__'.$main.'_'.$table));
$query->from($db->quoteName('#_'.$main.'_'.$table));
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
$db->setQuery($query);
$db->execute();
@ -265,7 +270,7 @@ abstract class ###Component###Helper
{
// The record has been set. Check the record permissions.
$permission = $user->authorise($action->name, 'com_###component###.'.$view.'.' . (int) $record->id);
if (!$permission && !is_null($permission))
if (!$permission) // TODO removed && !is_null($permission)
{
if ($action->name == 'core.edit' || $action->name == $view.'.edit')
{
@ -600,10 +605,22 @@ abstract class ###Component###Helper
return false;
}
public static function checkArray($array)
public static function checkArray($array, $removeEmptyString = false)
{
if (isset($array) && is_array($array) && count($array) > 0)
{
// also make sure the empty strings are removed
if ($removeEmptyString)
{
foreach ($array as $key => $string)
{
if (empty($string))
{
unset($array[$key]);
}
}
return self::checkArray($array, false);
}
return true;
}
return false;
@ -669,57 +686,86 @@ abstract class ###Component###Helper
return $string;
}
public static function safeString($string, $type = 'L', $spacer = '_')
public static function safeString($string, $type = 'L', $spacer = '_', $replaceNumbers = true)
{
// remove all numbers and replace with english text version (works well only up to a thousand)
$string = self::replaceNumbers($string);
if ($replaceNumbers === true)
{
// remove all numbers and replace with english text version (works well only up to millions)
$string = self::replaceNumbers($string);
}
// 0nly continue if we have a string
if (self::checkString($string))
{
// remove all other characters
$string = trim($string);
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
$string = preg_replace('/\s+/', ' ', $string);
$string = preg_replace("/[^A-Za-z ]/", '', $string);
// return a string with all first letter of each word uppercase(no undersocre)
if ($type == 'W')
{
return ucwords(strtolower($string));
}
elseif ($type == 'w')
{
return strtolower($string);
}
elseif ($type == 'Ww')
{
return ucfirst(strtolower($string));
}
elseif ($type == 'WW')
{
return strtoupper($string);
}
elseif ($type == 'U')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return all upper
return strtoupper($string);
}
elseif ($type == 'F')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return with first caracter to upper
return ucfirst(strtolower($string));
}
elseif ($type == 'L')
// create file name without the extention that is safe
if ($type === 'filename')
{
// make sure VDM is not in the string
$string = str_replace('VDM', 'vDm', $string);
// Remove anything which isn't a word, whitespace, number
// or any of the following caracters -_()
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
$string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
// remove all other characters
$string = trim($string);
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
$string = preg_replace('/\s+/', ' ', $string);
$string = preg_replace("/[^A-Za-z ]/", '', $string);
// select final adaptations
if ($type === 'L' || $type === 'strtolower')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// default is to return lower
return strtolower($string);
}
elseif ($type === 'W')
{
// return a string with all first letter of each word uppercase(no undersocre)
return ucwords(strtolower($string));
}
elseif ($type === 'w' || $type === 'word')
{
// return a string with all lowercase(no undersocre)
return strtolower($string);
}
elseif ($type === 'Ww' || $type === 'Word')
{
// return a string with first letter of the first word uppercase and all the rest lowercase(no undersocre)
return ucfirst(strtolower($string));
}
elseif ($type === 'WW' || $type === 'WORD')
{
// return a string with all the uppercase(no undersocre)
return strtoupper($string);
}
elseif ($type === 'U' || $type === 'strtoupper')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return all upper
return strtoupper($string);
}
elseif ($type === 'F' || $type === 'ucfirst')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return with first caracter to upper
return ucfirst(strtolower($string));
}
elseif ($type === 'cA' || $type === 'cAmel' || $type === 'camelcase')
{
// convert all words to first letter uppercase
$string = ucwords(strtolower($string));
// remove white space
$string = preg_replace('/\s+/', '', $string);
// now return first letter lowercase
return lcfirst($string);
}
// return string
return $string;
}

View File

@ -0,0 +1,35 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@package Component Builder
@subpackage componentbuilder.php
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* ###Component### Component Category Tree
*/
###CATEGORY_CLASS_TREES###

View File

@ -0,0 +1,50 @@
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
\ \ / /_ _ ___| |_ | | | | _____ _____| | ___ _ __ _ __ ___ ___ _ __ | |_ | \ / | ___| |_| |__ ___ __| |
\ \/ / _` / __| __| | | | |/ _ \ \ / / _ \ |/ _ \| '_ \| '_ ` _ \ / _ \ '_ \| __| | |\/| |/ _ \ __| '_ \ / _ \ / _` |
\ / (_| \__ \ |_ | |__| | __/\ V / __/ | (_) | |_) | | | | | | __/ | | | |_ | | | | __/ |_| | | | (_) | (_| |
\/ \__,_|___/\__| |_____/ \___| \_/ \___|_|\___/| .__/|_| |_| |_|\___|_| |_|\__| |_| |_|\___|\__|_| |_|\___/ \__,_|
| |
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@package Component Builder
@subpackage componentbuilder.php
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
Builds Complex Joomla Components
/-----------------------------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* ###Component### ###View### Component Category Tree
*/
class ###Component######Views###Categories extends JCategories
{
/**
* Class constructor
*
* @param array $options Array of options
*
*/
public function __construct($options = array())
{
$options['table'] = '#__###component###_###view###';
$options['extension'] = 'com_###component###.###views###';
parent::__construct($options);
}
}

View File

@ -33,7 +33,7 @@ defined('_JEXEC') or die('Restricted access');
* ###Component### component helper
*/
abstract class ###Component###Helper
{###SITE_GLOBAL_EVENT_HELPER### ###SITE_CUSTOM_HELPER_SCRIPT###
{###SITE_GLOBAL_EVENT_HELPER### ###SITE_CUSTOM_HELPER_SCRIPT### ###BOTH_CUSTOM_HELPER_SCRIPT###
public static function jsonToString($value, $sperator = ", ", $table = null)
{
@ -320,13 +320,18 @@ abstract class ###Component###Helper
if (self::checkArray($where))
{
// prep main <-- why? well if $main='' is empty then $table can be categories or users
if (self::checkString($main))
{
$main = '_'.ltrim($main, '_');
}
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
$query->from($db->quoteName('#__'.$main.'_'.$table));
$query->from($db->quoteName('#_'.$main.'_'.$table));
$query->where($db->quoteName($whereString) . ' '.$operator.' (' . implode(',',$where) . ')');
$db->setQuery($query);
$db->execute();
@ -408,7 +413,7 @@ abstract class ###Component###Helper
{
// The record has been set. Check the record permissions.
$permission = $user->authorise($action->name, 'com_###component###.'.$view.'.' . (int) $record->id);
if (!$permission && !is_null($permission))
if (!$permission) // TODO removed && !is_null($permission)
{
if ($action->name == 'core.edit' || $action->name == $view.'.edit')
{
@ -592,10 +597,22 @@ abstract class ###Component###Helper
return false;
}
public static function checkArray($array)
public static function checkArray($array, $removeEmptyString = false)
{
if (isset($array) && is_array($array) && count($array) > 0)
{
// also make sure the empty strings are removed
if ($removeEmptyString)
{
foreach ($array as $key => $string)
{
if (empty($string))
{
unset($array[$key]);
}
}
return self::checkArray($array, false);
}
return true;
}
return false;
@ -661,62 +678,91 @@ abstract class ###Component###Helper
return $string;
}
public static function safeString($string, $type = 'L', $spacer = '_')
public static function safeString($string, $type = 'L', $spacer = '_', $replaceNumbers = true)
{
// remove all numbers and replace with english text version (works well only up to a thousand)
$string = self::replaceNumbers($string);
if (self::checkString($string))
if ($replaceNumbers === true)
{
// remove all numbers and replace with english text version (works well only up to millions)
$string = self::replaceNumbers($string);
}
// 0nly continue if we have a string
if (self::checkString($string))
{
// create file name without the extention that is safe
if ($type === 'filename')
{
// make sure VDM is not in the string
$string = str_replace('VDM', 'vDm', $string);
// Remove anything which isn't a word, whitespace, number
// or any of the following caracters -_()
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
$string = mb_ereg_replace("([^\w\s\d\-_\(\)])", '', $string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
// remove all other characters
$string = trim($string);
$string = preg_replace('/'.$spacer.'+/', ' ', $string);
$string = preg_replace('/\s+/', ' ', $string);
$string = preg_replace("/[^A-Za-z ]/", '', $string);
// return a string with all first letter of each word uppercase(no undersocre)
if ($type == 'W')
{
return ucwords(strtolower($string));
}
elseif ($type == 'w')
{
return strtolower($string);
}
elseif ($type == 'Ww')
{
return ucfirst(strtolower($string));
}
elseif ($type == 'WW')
{
return strtoupper($string);
}
elseif ($type == 'U')
// select final adaptations
if ($type === 'L' || $type === 'strtolower')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// default is to return lower
return strtolower($string);
}
elseif ($type === 'W')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return all upper
return strtoupper($string);
// return a string with all first letter of each word uppercase(no undersocre)
return ucwords(strtolower($string));
}
elseif ($type == 'F')
elseif ($type === 'w' || $type === 'word')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return with first caracter to upper
// return a string with all lowercase(no undersocre)
return strtolower($string);
}
elseif ($type === 'Ww' || $type === 'Word')
{
// return a string with first letter of the first word uppercase and all the rest lowercase(no undersocre)
return ucfirst(strtolower($string));
}
elseif ($type == 'L')
elseif ($type === 'WW' || $type === 'WORD')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// default is to return lower
return strtolower($string);
// return a string with all the uppercase(no undersocre)
return strtoupper($string);
}
// return string
return $string;
}
// not a string
return '';
elseif ($type === 'U' || $type === 'strtoupper')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return all upper
return strtoupper($string);
}
elseif ($type === 'F' || $type === 'ucfirst')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return with first caracter to upper
return ucfirst(strtolower($string));
}
elseif ($type === 'cA' || $type === 'cAmel' || $type === 'camelcase')
{
// convert all words to first letter uppercase
$string = ucwords(strtolower($string));
// remove white space
$string = preg_replace('/\s+/', '', $string);
// now return first letter lowercase
return lcfirst($string);
}
// return string
return $string;
}
// not a string
return '';
}
public static function htmlEscape($var, $charset = 'UTF-8', $sorten = false, $length = 40)

View File

@ -47,5 +47,5 @@ class ###Component###Controller###Views### extends JControllerAdmin
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
return $model;
}###CONTROLLEREXIMPORTMETHOD### ###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER###
}###CONTROLLEREXIMPORTMETHOD### ###CUSTOM_ADMIN_DYNAMIC_BUTTONS_CONTROLLER### ###ADMIN_CUSTOM_BUTTONS_CONTROLLER_LIST###
}

View File

@ -181,7 +181,7 @@ class ###Component###Model###View### extends JModelAdmin
* @since 1.6
*/
protected function prepareTable($table)
{
{###LICENSE_TABLE_LOCKED_CHECK###
$date = JFactory::getDate();
$user = JFactory::getUser();

View File

@ -67,7 +67,7 @@ class ###Component###Model###View### extends JModelAdmin
public function getTable($type = '###view###', $prefix = '###Component###Table', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
}###ADMIN_CUSTOM_BUTTONS_METHOD###
/**
* Method to get a single record.
@ -181,7 +181,7 @@ class ###Component###Model###View### extends JModelAdmin
* @since 1.6
*/
protected function prepareTable($table)
{
{###LICENSE_TABLE_LOCKED_CHECK###
$date = JFactory::getDate();
$user = JFactory::getUser();
@ -248,6 +248,45 @@ class ###Component###Model###View### extends JModelAdmin
return $data;
}###VALIDATIONFIX### ###UNIQUEFIELDS###
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{###JMODELADMIN_BEFORE_DELETE###
if (!parent::delete($pks))
{
return false;
}###JMODELADMIN_AFTER_DELETE###
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{###JMODELADMIN_BEFORE_PUBLISH###
if (!parent::publish($pks, $value))
{
return false;
}###JMODELADMIN_AFTER_PUBLISH###
return true;
}
/**
* Method to perform batch operations on an item or a set of items.

View File

@ -99,7 +99,7 @@ class ###Component###Model###SView### extends JModelItem
{
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'), 'error');
// redirect away if not a correct (TODO for now we go to default view)
// redirect away if not a correct to cPanel/default view
$app->redirect('index.php?option=com_###component###');
return false;
}

View File

@ -95,16 +95,7 @@ class ###Component###Model###SView### extends JModelItem
*/
public function getItem($pk = null)
{
$this->user = JFactory::getUser();
// check if this user has permission to access item
if (!$this->user->authorise('site.###sview###.access', 'com_###component###'))
{
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'), 'error');
// redirect away if not a correct (TODO for now we go to default view)
$app->redirect(JRoute::_('index.php?option=com_###component###&view=###SITE_DEFAULT_VIEW###'));
return false;
}
$this->user = JFactory::getUser();###USER_PERMISSION_CHECK_ACCESS###
$this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups');

View File

@ -34,6 +34,11 @@ defined('_JEXEC') or die('Restricted access');
*/
class ###Component###ModelImport extends JModelLegacy
{
// set uploading values
protected $use_streams = false;
protected $allow_unsafe = false;
protected $safeFileOptions = array();
/**
* @var object JTable object
*/
@ -75,10 +80,6 @@ class ###Component###ModelImport extends JModelLegacy
// Recall the 'Import from Directory' path.
$path = $app->getUserStateFromRequest($this->_context . '.import_directory', 'import_directory', $app->get('tmp_path'));
$this->setState('import.directory', $path);
// set uploading values
$this->use_streams = false;
$this->allow_unsafe = false;
$this->safeFileOptions = array();
parent::populateState();
}
@ -285,21 +286,16 @@ class ###Component###ModelImport extends JModelLegacy
}
// check the extention
switch(strtolower(pathinfo($p_dir, PATHINFO_EXTENSION))){
case 'xls':
case 'ods':
case 'csv':
break;
default:
if(!$this->checkExtension($p_dir))
{
// set error message
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
break;
}
$package['packagename'] = null;
$package['dir'] = $p_dir;
$package['type'] = $type;
$package['dir'] = $p_dir;
$package['type'] = $type;
return $package;
}
@ -357,21 +353,15 @@ class ###Component###ModelImport extends JModelLegacy
$archivename = JPath::clean($archivename);
// check the extention
switch(strtolower(pathinfo($archivename, PATHINFO_EXTENSION))){
case 'xls':
case 'ods':
case 'csv':
break;
default:
if(!$this->checkExtension($archivename))
{
// Cleanup the import files
$this->remove($archivename);
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
break;
}
}
$config = JFactory::getConfig();
$config = JFactory::getConfig();
// set Package Name
$check['packagename'] = $archivename;
@ -384,6 +374,28 @@ class ###Component###ModelImport extends JModelLegacy
return $check;
}
/**
* Check the extension
*
* @param string $file Name of the uploaded file
*
* @return boolean True on success
*
*/
protected function checkExtension($file)
{
// check the extention
switch(strtolower(pathinfo($file, PATHINFO_EXTENSION)))
{
case 'xls':
case 'ods':
case 'csv':
return true;
break;
}
return false;
}
/**
* Clean up temporary uploaded spreadsheet
*

View File

@ -34,6 +34,11 @@ defined('_JEXEC') or die('Restricted access');
*/
class ###Component###Model###View### extends JModelLegacy
{
// set uploading values
protected $use_streams = false;
protected $allow_unsafe = false;
protected $safeFileOptions = array();
/**
* @var object JTable object
*/
@ -75,10 +80,6 @@ class ###Component###Model###View### extends JModelLegacy
// Recall the 'Import from Directory' path.
$path = $app->getUserStateFromRequest($this->_context . '.import_directory', 'import_directory', $app->get('tmp_path'));
$this->setState('import.directory', $path);
// set uploading values
$this->use_streams = false;
$this->allow_unsafe = false;
$this->safeFileOptions = array();
parent::populateState();
}
###IMPORT_METHOD_CUSTOM###
@ -175,21 +176,16 @@ class ###Component###Model###View### extends JModelLegacy
}
// check the extention
switch(strtolower(pathinfo($p_dir, PATHINFO_EXTENSION))){
case 'xls':
case 'ods':
case 'csv':
break;
default:
if(!$this->checkExtension($p_dir))
{
// set error message
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
break;
}
$package['packagename'] = null;
$package['dir'] = $p_dir;
$package['type'] = $type;
$package['dir'] = $p_dir;
$package['type'] = $type;
return $package;
}
@ -247,21 +243,15 @@ class ###Component###Model###View### extends JModelLegacy
$archivename = JPath::clean($archivename);
// check the extention
switch(strtolower(pathinfo($archivename, PATHINFO_EXTENSION))){
case 'xls':
case 'ods':
case 'csv':
break;
default:
if(!$this->checkExtension($archivename))
{
// Cleanup the import files
$this->remove($archivename);
$app->enqueueMessage(JText::_('COM_###COMPONENT###_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'), 'warning');
return false;
break;
}
}
$config = JFactory::getConfig();
$config = JFactory::getConfig();
// set Package Name
$check['packagename'] = $archivename;
@ -273,6 +263,7 @@ class ###Component###Model###View### extends JModelLegacy
return $check;
}
###IMPORT_EXT_METHOD_CUSTOM###
/**
* Clean up temporary uploaded spreadsheet

View File

@ -47,7 +47,7 @@ class ###Component###Model###Views### extends JModelList
}
parent::__construct($config);
}
}###ADMIN_CUSTOM_BUTTONS_METHOD_LIST###
/**
* Method to auto-populate the model state.

View File

@ -77,16 +77,7 @@ class ###Component###Model###SViews### extends JModelList
*/
public function getItems()
{
$user = JFactory::getUser();
// check if this user has permission to access items
if (!$user->authorise('site.###sview###.access', 'com_###component###'))
{
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'), 'error');
// redirect away if not a correct (TODO for now we go to default view)
$app->redirect(JRoute::_('index.php?option=com_###component###&view=###SITE_DEFAULT_VIEW###'));
return false;
}###LICENSE_LOCKED_CHECK### ###SITE_BEFORE_GET_ITEMS###
$user = JFactory::getUser();###USER_PERMISSION_CHECK_ACCESS### ###LICENSE_LOCKED_CHECK### ###SITE_BEFORE_GET_ITEMS###
// load parent items
$items = parent::getItems();

View File

@ -52,7 +52,8 @@ class ###Component###ViewImport extends JViewLegacy
}
// Check for errors.
if (count($errors = $this->get('Errors'))){
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}

View File

@ -132,7 +132,7 @@ class ###Component###View###Views### extends JViewLegacy
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}###CUSTOM_ADMIN_DYNAMIC_BUTTONS###
}###CUSTOM_ADMIN_DYNAMIC_BUTTONS### ###ADMIN_CUSTOM_BUTTONS_LIST###
if ($this->state->get('filter.published') == -2 && ($this->canState && $this->canDelete))
{

View File

@ -60,8 +60,7 @@
</files>
<languages folder="site">
<language tag="en-GB">language/en-GB/en-GB.com_###component###.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_###component###.sys.ini</language>
###SITE_LANGUAGES###
</languages>
<administration>
@ -86,8 +85,7 @@
</files>
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_###component###.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_###component###.sys.ini</language>
###ADMIN_LANGUAGES###
</languages>
</administration>###UPDATESERVER###

View File

@ -30,7 +30,6 @@ defined('_JEXEC') or die('Restricted access');
defined('_JEXEC') or die('Restricted access');
$manifest = ###Component###Helper::manifest();
JHtml::_('bootstrap.loadCss');
?>
<img alt="<?php echo JText::_('COM_###COMPONENT###'); ?>" src="components/com_###component###/assets/images/component-300.###COMP_IMAGE_TYPE###">

View File

@ -1,4 +1,4 @@
<?php
<?php
/*--------------------------------------------------------------------------------------------------------| www.vdm.io |------/
__ __ _ _____ _ _ __ __ _ _ _
\ \ / / | | | __ \ | | | | | \/ | | | | | | |
@ -10,12 +10,10 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@my wife Roline van der Merwe <http://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
@ -25,25 +23,66 @@
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
###BOM###
// Set the component css/js
$document = JFactory::getDocument();
$document->addStyleSheet('components/com_componentbuilder/assets/css/site.css');
$document->addScript('components/com_componentbuilder/assets/js/site.js');
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Require helper files
JLoader::register('ComponentbuilderHelper', dirname(__FILE__) . '/helpers/componentbuilder.php');
JLoader::register('ComponentbuilderHelperRoute', dirname(__FILE__) . '/helpers/route.php'); ###SITE_GLOBAL_EVENT###
class HeaderCheck
{
function js_loaded($script_name)
{
// UIkit check point
if (strpos($script_name,'uikit') !== false)
{
$app = JFactory::getApplication();
$getTemplateName = $app->getTemplate('template')->template;
if (strpos($getTemplateName,'yoo') !== false)
{
return true;
}
}
$document = JFactory::getDocument();
$head_data = $document->getHeadData();
foreach (array_keys($head_data['scripts']) as $script)
{
if (stristr($script, $script_name))
{
return true;
}
}
// import joomla controller library
jimport('joomla.application.component.controller');
return false;
}
function css_loaded($script_name)
{
// UIkit check point
if (strpos($script_name,'uikit') !== false)
{
$app = JFactory::getApplication();
$getTemplateName = $app->getTemplate('template')->template;
if (strpos($getTemplateName,'yoo') !== false)
{
return true;
}
}
$document = JFactory::getDocument();
$head_data = $document->getHeadData();
foreach (array_keys($head_data['styleSheets']) as $script)
{
if (stristr($script, $script_name))
{
return true;
}
}
// Get an instance of the controller prefixed by Componentbuilder
$controller = JControllerLegacy::getInstance('Componentbuilder');
// Perform the request task
$jinput = JFactory::getApplication()->input;
$controller->execute($jinput->get('task', null, 'CMD'));
// Redirect if set by the controller
$controller->redirect();
return false;
}
}

View File

@ -1,6 +1,11 @@
###INSTALL###
--
-- Always insure this column is large enough for all the access control values.
-- Always insure this column rules is large enough for all the access control values.
--
ALTER TABLE `#__assets` CHANGE `rules` `rules` MEDIUMTEXT NOT NULL COMMENT 'JSON encoded access control.';
--
-- Always insure this column name is large enough for long component and view names.
--
ALTER TABLE `#__assets` CHANGE `name` `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The unique name for the asset.';

View File

@ -127,16 +127,10 @@ class ###Component###Router extends JComponentRouterBase
* @since 3.3
*/
public function parse(&$segments)
{
//var_dump($segments);
//$app = JFactory::getApplication();
//$menu = $app->getMenu();
//$item = $menu->getActive();
{
$count = count($segments);
$vars = array();
//var_dump($item->query['view']);
//Handle View and Identifier
switch($segments[0])
{###ROUTER_PARSE_SWITCH###
@ -145,11 +139,11 @@ class ###Component###Router extends JComponentRouterBase
return $vars;
}
protected function getVar($table, $where = null, $whereString = 'user', $what = 'id', $operator = '=', $main = '###component###')
protected function getVar($table, $where = null, $whereString = null, $what = null, $category = false, $operator = '=', $main = '###component###')
{
if(!$where)
if(!$where || !$what || !$whereString)
{
$where = JFactory::getUser()->id;
return false;
}
// Get a db connection.
$db = JFactory::getDbo();
@ -157,21 +151,44 @@ class ###Component###Router extends JComponentRouterBase
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
if ('categories' == $table || 'category' == $table)
if ('categories' == $table || 'category' == $table || $category)
{
$query->from($db->quoteName('#__categories'));
$getTable = '#__categories';
$query->from($db->quoteName($getTable));
}
else
{
$query->from($db->quoteName('#__'.$main.'_'.$table));
// we must check if the table exist (TODO not ideal)
$tables = $db->getTableList();
$app = JFactory::getApplication();
$prefix = $app->get('dbprefix');
$check = $prefix.$main.'_'.$table;
if (in_array($check, $tables))
{
$getTable = '#__'.$main.'_'.$table;
$query->from($db->quoteName($getTable));
}
else
{
return false;
}
}
if (is_numeric($where))
{
$query->where($db->quoteName($whereString) . ' '.$operator.' '.(int) $where);
return false;
}
elseif (is_string($where))
elseif ($this->checkString($where))
{
$query->where($db->quoteName($whereString) . ' '.$operator.' '. $db->quote((string)$where));
// we must first check if this table has the column
$columns = $db->getTableColumns($getTable);
if (isset($columns[$whereString]))
{
$query->where($db->quoteName($whereString) . ' '.$operator.' '. $db->quote((string)$where));
}
else
{
return false;
}
}
else
{
@ -185,6 +202,15 @@ class ###Component###Router extends JComponentRouterBase
}
return false;
}
protected function checkString($string)
{
if (isset($string) && is_string($string) && strlen($string) > 0)
{
return true;
}
return false;
}
}
function ###Component###BuildRoute(&$query)

View File

@ -157,24 +157,19 @@
"rename": "Helper_site",
"type": "file"
},
"Helper_category.php": {
"naam":"Helper_category.php",
"path": "c0mp0n3nt/site/helpers",
"rename": "new",
"newName": "category.php",
"type": "file"
},
"script.php": {
"naam":"script.php",
"path": "c0mp0n3nt/",
"rename": false,
"type": "file"
},
"en-GB.com_admin.ini": {
"naam":"en-GB.com_admin.ini",
"path": "c0mp0n3nt/admin/language/en-GB",
"rename": "admin",
"type": "file"
},
"en-GB.com_admin.sys.ini": {
"naam":"en-GB.com_admin.sys.ini",
"path": "c0mp0n3nt/admin/language/en-GB",
"rename": "admin",
"type": "file"
},
"install.mysql.utf8.sql": {
"naam":"install.mysql.utf8.sql",
"path": "c0mp0n3nt/admin/sql",
@ -187,6 +182,13 @@
"rename": false,
"type": "file"
},
"headercheck_admin.php": {
"naam":"headercheck_admin.php",
"path": "c0mp0n3nt/admin/helpers",
"rename": "new",
"newName": "headercheck.php",
"type": "file"
},
"LICENSE.txt": {
"naam":"LICENSE.txt",
"path": "c0mp0n3nt/",
@ -205,18 +207,6 @@
"rename": false,
"type": "file"
},
"en-GB.com_site.ini": {
"naam":"en-GB.com_site.ini",
"path": "c0mp0n3nt/site/language/en-GB",
"rename": "site",
"type": "file"
},
"en-GB.com_site.sys.ini": {
"naam":"en-GB.com_site.sys.ini",
"path": "c0mp0n3nt/site/language/en-GB",
"rename": "site",
"type": "file"
},
"headercheck.php": {
"naam":"headercheck.php",
"path": "c0mp0n3nt/site/helpers",
@ -670,6 +660,11 @@
"rename": "new",
"newName": "submitbutton.js",
"type": "custom_form"
},
"Helper_category_view.php": {
"path": "c0mp0n3nt/site/helpers",
"rename": "Helper_category_view",
"type": "category"
}
},
"custom_admin": {

View File

@ -1,167 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* @package Exceptions
*/
class WideImage_NoFontException extends WideImage_Exception {}
/**
* @package Exceptions
*/
class WideImage_InvalidFontFileException extends WideImage_Exception {}
/**
* @package Exceptions
*/
class WideImage_InvalidCanvasMethodException extends WideImage_Exception {}
/**
* @package WideImage
*/
class WideImage_Canvas
{
protected $handle = 0;
protected $image = null;
protected $font = null;
/**
* Creates a canvas object that writes to the image passed as a parameter
*
* Shouldn't be used directly, use WideImage_Image::getCanvas() instead.
*
* @param WideImage_Image $img Image object
*/
function __construct($img)
{
$this->handle = $img->getHandle();
$this->image = $img;
}
/**
* Sets the active font. Can be an instance of
* WideImage_Font_TTF, WideImage_Font_PS, or WideImage_Font_GDF.
*
*
*
*
* @param object $font Font object to set for writeText()
*/
function setFont($font)
{
$this->font = $font;
}
/**
* Creates and sets the current font
*
* The supported font types are: TTF/OTF, PS, and GDF.
* Font type is detected from the extension. If the $file parameter doesn't have an extension, TTF font is presumed.
*
* Note: not all parameters are supported by all fonts.
*
* @param string $file Font file name (string)
* @param int $size Font size (supported for TTF/OTF and PS fonts, ignored for GDF)
* @param int $color Text color
* @param int $bgcolor Background color (supported only for PS font, ignored for TTF and PS)
* @return mixed One of the WideImage_Font_* objects
*/
function useFont($file, $size = 12, $color = 0, $bgcolor = null)
{
$p = strrpos($file, '.');
if ($p === false || $p < strlen($file) - 4)
$ext = 'ttf';
else
$ext = strtolower(substr($file, $p + 1));
if ($ext == 'ttf' || $ext == 'otf')
$font = new WideImage_Font_TTF($file, $size, $color);
elseif ($ext == 'ps')
$font = new WideImage_Font_PS($file, $size, $color, $bgcolor);
elseif ($ext == 'gdf')
$font = new WideImage_Font_GDF($file, $color);
else
throw new WideImage_InvalidFontFileException("'$file' appears to be an invalid font file.");
$this->setFont($font);
return $font;
}
/**
* Write text on the image at specified position
*
* You must set a font with a call to WideImage_Canvas::setFont() prior to writing text to the image.
*
* Smart coordinates are supported for $x and $y arguments, but currently only for TTF/OTF fonts.
*
* Example:
* <code>
* $img = WideImage::load('pic.jpg');
* $canvas = $img->getCanvas();
* $canvas->useFont('Verdana.ttf', 16, $img->allocateColor(255, 0, 0));
* $canvas->writeText('right', 'bottom', 'www.website.com');
* </code>
*
* @param int $x Left
* @param int $y Top
* @param string $text Text to write
* @param int $angle The angle, defaults to 0
*/
function writeText($x, $y, $text, $angle = 0)
{
if ($this->font === null)
throw new WideImage_NoFontException("Can't write text without a font.");
$angle = - floatval($angle);
if ($angle < 0)
$angle = 360 + $angle;
$angle = $angle % 360;
$this->font->writeText($this->image, $x, $y, $text, $angle);
}
/**
* A magic method that allows you to call any PHP function that starts with "image".
*
* This is a shortcut to call custom functions on the image handle.
*
* Example:
* <code>
* $img = WideImage::load('pic.jpg');
* $canvas = $img->getCanvas();
* $canvas->filledRect(10, 10, 20, 30, $img->allocateColor(0, 0, 0));
* $canvas->line(60, 80, 30, 100, $img->allocateColor(255, 0, 0));
* </code>
*/
function __call($method, $params)
{
if (function_exists('image' . $method))
{
array_unshift($params, $this->handle);
call_user_func_array('image' . $method, $params);
}
else
throw new WideImage_InvalidCanvasMethodException("Function doesn't exist: image{$method}.");
}
}

View File

@ -1,208 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internals
**/
/**
* @package Exceptions
*/
class WideImage_InvalidCoordinateException extends WideImage_Exception {}
/**
* A utility class for smart coordinates
*
* @package Internals
**/
class WideImage_Coordinate
{
static protected $coord_align = array("left", "center", "right", "top", "middle", "bottom");
static protected $coord_numeric = array("[0-9]+", "[0-9]+\.[0-9]+", "[0-9]+%", "[0-9]+\.[0-9]+%");
/**
* Parses a numeric or string representation of a corrdinate into a structure
*
* @param string $coord Smart coordinate
* @return array Parsed smart coordinate
*/
static function parse($c)
{
$tokens = array();
$operators = array('+', '-');
$flush_operand = false;
$flush_operator = false;
$current_operand = '';
$current_operator = '';
$coordinate = strval($c);
$expr_len = strlen($coordinate);
for ($i = 0; $i < $expr_len; $i++)
{
$char = $coordinate[$i];
if (in_array($char, $operators))
{
$flush_operand = true;
$flush_operator = true;
$current_operator = $char;
}
else
{
$current_operand .= $char;
if ($i == $expr_len - 1)
$flush_operand = true;
}
if ($flush_operand)
{
if (trim($current_operand) != '')
$tokens[] = array('type' => 'operand', 'value' => trim($current_operand));
$current_operand = '';
$flush_operand = false;
}
if ($flush_operator)
{
$tokens[] = array('type' => 'operator', 'value' => $char);
$flush_operator = false;
}
}
return $tokens;
}
/**
* Evaluates the $coord relatively to $dim
*
* @param string $coord A numeric value or percent string
* @param int $dim Dimension
* @param int $sec_dim Secondary dimension (for align)
* @return int Calculated value
*/
static function evaluate($coord, $dim, $sec_dim = null)
{
$comp_regex = implode('|', self::$coord_align) . '|' . implode('|', self::$coord_numeric);
if (preg_match("/^([+-])?({$comp_regex})$/", $coord, $matches))
{
$sign = intval($matches[1] . "1");
$val = $matches[2];
if (in_array($val, self::$coord_align))
{
if ($sec_dim === null)
{
switch ($val)
{
case 'left':
case 'top':
return 0;
break;
case 'center':
case 'middle':
return $sign * intval($dim / 2);
break;
case 'right':
case 'bottom':
return $sign * $dim;
break;
default:
return null;
}
}
else
{
switch ($val)
{
case 'left':
case 'top':
return 0;
break;
case 'center':
case 'middle':
return $sign * intval($dim / 2 - $sec_dim / 2);
break;
case 'right':
case 'bottom':
return $sign * ($dim - $sec_dim);
break;
default:
return null;
}
}
}
elseif (substr($val, -1) === '%')
return intval(round($sign * $dim * floatval(str_replace('%', '', $val)) / 100));
else
return $sign * intval(round($val));
}
}
/**
* Calculates and fixes a smart coordinate into a numeric value
*
* @param mixed $value Smart coordinate, relative to $dim
* @param int $dim Coordinate to which $value is relative
* @param int $sec_dim Secondary dimension (for align)
* @return int Calculated value
*/
static function fix($value, $dim, $sec_dim = null)
{
$coord_tokens = self::parse($value);
if (count($coord_tokens) == 0 || $coord_tokens[count($coord_tokens) - 1]['type'] != 'operand')
throw new WideImage_InvalidCoordinateException("Couldn't parse coordinate '$value' properly.");
$value = 0;
$operation = 1;
foreach ($coord_tokens as $token)
{
if ($token['type'] == 'operand')
{
$operand_value = self::evaluate($token['value'], $dim, $sec_dim);
if ($operation == 1)
$value = $value + $operand_value;
elseif ($operation == -1)
$value = $value - $operand_value;
else
throw new WideImage_InvalidCoordinateException("Invalid coordinate syntax.");
$operation = 0;
}
elseif ($token['type'] == 'operator')
{
if ($token['value'] == '-')
{
if ($operation == 0)
$operation = -1;
else
$operation = $operation * -1;
}
elseif ($token['value'] == '+')
{
if ($operation == 0)
$operation = '1';
}
}
}
return $value;
}
}

View File

@ -1,31 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* Base Exception class
*
* @package Exceptions
**/
class WideImage_Exception extends RuntimeException {}

View File

@ -1,48 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* GDF font support class
*
* @package WideImage
*/
class WideImage_Font_GDF
{
protected $font;
protected $color;
function __construct($face, $color)
{
if (is_int($face) && $face >= 1 && $face <= 5)
$this->font = $face;
else
$this->font = imageloadfont($face);
$this->color = $color;
}
function writeText($image, $x, $y, $text)
{
imagestring($image->getHandle(), $this->font, $x, $y, $text, $this->color);
}
}

View File

@ -1,60 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* PS font support class
*
* @package WideImage
*/
class WideImage_Font_PS
{
public $size;
public $color;
public $handle;
function __construct($file, $size, $color, $bgcolor = null)
{
$this->handle = imagepsloadfont($file);
$this->size = $size;
$this->color = $color;
if ($bgcolor === null)
$this->bgcolor = $color;
else
$this->color = $color;
}
function writeText($image, $x, $y, $text, $angle = 0)
{
if ($image->isTrueColor())
$image->alphaBlending(true);
imagepstext($image->getHandle(), $text, $this->handle, $this->size, $this->color, $this->bgcolor, $x, $y, 0, 0, $angle, 4);
}
function __destruct()
{
imagepsfreefont($this->handle);
$this->handle = null;
}
}

View File

@ -1,75 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* TTF font support class
*
* @package WideImage
*/
class WideImage_Font_TTF
{
public $face;
public $size;
public $color;
function __construct($face, $size, $color)
{
$this->face = $face;
$this->size = $size;
$this->color = $color;
}
/**
* Writes text onto an image
*
* @param WideImage_Image $image
* @param mixed $x smart coordinate
* @param mixed $y smart coordinate
* @param string $text
* @param int $angle Angle in degrees clockwise
*/
function writeText($image, $x, $y, $text, $angle = 0)
{
if ($image->isTrueColor())
$image->alphaBlending(true);
$box = imageftbbox($this->size, $angle, $this->face, $text);
$obox = array(
'left' => min($box[0], $box[2], $box[4], $box[6]),
'top' => min($box[1], $box[3], $box[5], $box[7]),
'right' => max($box[0], $box[2], $box[4], $box[6]) - 1,
'bottom' => max($box[1], $box[3], $box[5], $box[7]) - 1
);
$obox['width'] = abs($obox['left']) + abs($obox['right']);
$obox['height'] = abs($obox['top']) + abs($obox['bottom']);
$x = WideImage_Coordinate::fix($x, $image->getWidth(), $obox['width']);
$y = WideImage_Coordinate::fix($y, $image->getHeight(), $obox['height']);
$fixed_x = $x - $obox['left'];
$fixed_y = $y - $obox['top'];
imagettftext($image->getHandle(), $this->size, $angle, $fixed_x, $fixed_y, $this->color, $this->face, $text);
}
}

View File

@ -1,964 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* Thrown when an invalid dimension is passed for some operations
*
* @package Exceptions
*/
class WideImage_InvalidImageDimensionException extends WideImage_Exception {}
/**
* Thrown when an image can't be saved (returns false by the mapper)
*
* @package Exceptions
*/
class WideImage_UnknownErrorWhileMappingException extends WideImage_Exception {}
/**
* Base class for images
*
* @package WideImage
*/
abstract class WideImage_Image
{
/**
* Holds the image resource
* @var resource
*/
protected $handle = null;
/**
* Flag that determines if WideImage should call imagedestroy() upon object destruction
* @var bool
*/
protected $handleReleased = false;
/**
* Canvas object
* @var WideImage_Canvas
*/
protected $canvas = null;
/**
* @var string
*/
protected $sdata = null;
/**
* The base class constructor
*
* @param resource $handle Image handle (GD2 resource)
*/
function __construct($handle)
{
WideImage::assertValidImageHandle($handle);
$this->handle = $handle;
}
/**
* Cleanup
*
* Destroys the handle via WideImage_Image::destroy() when called by the GC.
*/
function __destruct()
{
$this->destroy();
}
/**
* This method destroy the image handle, and releases the image resource.
*
* After this is called, the object doesn't hold a valid image any more.
* No operation should be called after that.
*/
function destroy()
{
if ($this->isValid() && !$this->handleReleased)
imagedestroy($this->handle);
$this->handle = null;
}
/**
* Returns the GD image resource
*
* @return resource GD image resource
*/
function getHandle()
{
return $this->handle;
}
/**
* @return bool True, if the image object holds a valid GD image, false otherwise
*/
function isValid()
{
return WideImage::isValidImageHandle($this->handle);
}
/**
* Releases the handle
*/
function releaseHandle()
{
$this->handleReleased = true;
}
/**
* Saves an image to a file
*
* The file type is recognized from the $uri. If you save to a GIF8, truecolor images
* are automatically converted to palette.
*
* This method supports additional parameters: quality (for jpeg images) and
* compression quality and filters (for png images). See http://www.php.net/imagejpeg and
* http://www.php.net/imagepng for details.
*
* Examples:
* <code>
* // save to a GIF
* $image->saveToFile('image.gif');
*
* // save to a PNG with compression=7 and no filters
* $image->saveToFile('image.png', 7, PNG_NO_FILTER);
*
* // save to a JPEG with quality=80
* $image->saveToFile('image.jpg', 80);
*
* // save to a JPEG with default quality=100
* $image->saveToFile('image.jpg');
* </code>
*
* @param string $uri File location
*/
function saveToFile($uri)
{
$mapper = WideImage_MapperFactory::selectMapper($uri, null);
$args = func_get_args();
array_unshift($args, $this->getHandle());
$res = call_user_func_array(array($mapper, 'save'), $args);
if (!$res)
throw new WideImage_UnknownErrorWhileMappingException(get_class($mapper) . " returned an invalid result while saving to $uri");
}
/**
* Returns binary string with image data in format specified by $format
*
* Additional parameters may be passed to the function. See WideImage_Image::saveToFile() for more details.
*
* @param string $format The format of the image
* @return string The binary image data in specified format
*/
function asString($format)
{
ob_start();
$args = func_get_args();
$args[0] = null;
array_unshift($args, $this->getHandle());
$mapper = WideImage_MapperFactory::selectMapper(null, $format);
$res = call_user_func_array(array($mapper, 'save'), $args);
if (!$res)
throw new WideImage_UnknownErrorWhileMappingException(get_class($mapper) . " returned an invalid result while writing the image data");
return ob_get_clean();
}
/**
* Output a header to browser.
*
* @param $name Name of the header
* @param $data Data
*/
protected function writeHeader($name, $data)
{
header($name . ": " . $data);
}
/**
* Outputs the image to browser
*
* Sets headers Content-length and Content-type, and echoes the image in the specified format.
* All other headers (such as Content-disposition) must be added manually.
*
* Example:
* <code>
* WideImage::load('image1.png')->resize(100, 100)->output('gif');
* </code>
*
* @param string $format Image format
*/
function output($format)
{
$args = func_get_args();
$data = call_user_func_array(array($this, 'asString'), $args);
$this->writeHeader('Content-length', strlen($data));
$this->writeHeader('Content-type', WideImage_MapperFactory::mimeType($format));
echo $data;
}
/**
* @return int Image width
*/
function getWidth()
{
return imagesx($this->handle);
}
/**
* @return int Image height
*/
function getHeight()
{
return imagesy($this->handle);
}
/**
* Allocate a color by RGB values.
*
* @param mixed $R Red-component value or an RGB array (with red, green, blue keys)
* @param int $G If $R is int, this is the green component
* @param int $B If $R is int, this is the blue component
* @return int Image color index
*/
function allocateColor($R, $G = null, $B = null)
{
if (is_array($R))
return imageColorAllocate($this->handle, $R['red'], $R['green'], $R['blue']);
else
return imageColorAllocate($this->handle, $R, $G, $B);
}
/**
* @return bool True if the image is transparent, false otherwise
*/
function isTransparent()
{
return $this->getTransparentColor() >= 0;
}
/**
* @return int Transparent color index
*/
function getTransparentColor()
{
return imagecolortransparent($this->handle);
}
/**
* Sets the current transparent color index. Only makes sense for palette images (8-bit).
*
* @param int $color Transparent color index
*/
function setTransparentColor($color)
{
return imagecolortransparent($this->handle, $color);
}
/**
* Returns a RGB array of the transparent color or null if none.
*
* @return mixed Transparent color RGBA array
*/
function getTransparentColorRGB()
{
$total = imagecolorstotal($this->handle);
$tc = $this->getTransparentColor();
if ($tc >= $total && $total > 0)
return null;
else
return $this->getColorRGB($tc);
}
/**
* Returns a RGBA array for pixel at $x, $y
*
* @param int $x
* @param int $y
* @return array RGB array
*/
function getRGBAt($x, $y)
{
return $this->getColorRGB($this->getColorAt($x, $y));
}
/**
* Writes a pixel at the designated coordinates
*
* Takes an associative array of colours and uses getExactColor() to
* retrieve the exact index color to write to the image with.
*
* @param int $x
* @param int $y
* @param array $color
*/
function setRGBAt($x, $y, $color)
{
$this->setColorAt($x, $y, $this->getExactColor($color));
}
/**
* Returns a color's RGB
*
* @param int $colorIndex Color index
* @return mixed RGBA array for a color with index $colorIndex
*/
function getColorRGB($colorIndex)
{
return imageColorsForIndex($this->handle, $colorIndex);
}
/**
* Returns an index of the color at $x, $y
*
* @param int $x
* @param int $y
* @return int Color index for a pixel at $x, $y
*/
function getColorAt($x, $y)
{
return imagecolorat($this->handle, $x, $y);
}
/**
* Set the color index $color to a pixel at $x, $y
*
* @param int $x
* @param int $y
* @param int $color Color index
*/
function setColorAt($x, $y, $color)
{
return imagesetpixel($this->handle, $x, $y, $color);
}
/**
* Returns closest color index that matches the given RGB value. Uses
* PHP's imagecolorclosest()
*
* @param mixed $R Red or RGBA array
* @param int $G Green component (or null if $R is an RGB array)
* @param int $B Blue component (or null if $R is an RGB array)
* @return int Color index
*/
function getClosestColor($R, $G = null, $B = null)
{
if (is_array($R))
return imagecolorclosest($this->handle, $R['red'], $R['green'], $R['blue']);
else
return imagecolorclosest($this->handle, $R, $G, $B);
}
/**
* Returns the color index that exactly matches the given RGB value. Uses
* PHP's imagecolorexact()
*
* @param mixed $R Red or RGBA array
* @param int $G Green component (or null if $R is an RGB array)
* @param int $B Blue component (or null if $R is an RGB array)
* @return int Color index
*/
function getExactColor($R, $G = null, $B = null)
{
if (is_array($R))
return imagecolorexact($this->handle, $R['red'], $R['green'], $R['blue']);
else
return imagecolorexact($this->handle, $R, $G, $B);
}
/**
* Copies transparency information from $sourceImage. Optionally fills
* the image with the transparent color at (0, 0).
*
* @param object $sourceImage
* @param bool $fill True if you want to fill the image with transparent color
*/
function copyTransparencyFrom($sourceImage, $fill = true)
{
if ($sourceImage->isTransparent())
{
$rgba = $sourceImage->getTransparentColorRGB();
if ($rgba === null)
return;
if ($this->isTrueColor())
{
$rgba['alpha'] = 127;
$color = $this->allocateColorAlpha($rgba);
}
else
$color = $this->allocateColor($rgba);
$this->setTransparentColor($color);
if ($fill)
$this->fill(0, 0, $color);
}
}
/**
* Fill the image at ($x, $y) with color index $color
*
* @param int $x
* @param int $y
* @param int $color
*/
function fill($x, $y, $color)
{
return imagefill($this->handle, $x, $y, $color);
}
/**
* Used internally to create Operation objects
*
* @param string $name
* @return object
*/
protected function getOperation($name)
{
return WideImage_OperationFactory::get($name);
}
/**
* Returns the image's mask
*
* Mask is a greyscale image where the shade defines the alpha channel (black = transparent, white = opaque).
*
* For opaque images (JPEG), the result will be white. For images with single-color transparency (GIF, 8-bit PNG),
* the areas with the transparent color will be black. For images with alpha channel transparenct,
* the result will be alpha channel.
*
* @return WideImage_Image An image mask
**/
function getMask()
{
return $this->getOperation('GetMask')->execute($this);
}
/**
* Resize the image to given dimensions.
*
* $width and $height are both smart coordinates. This means that you can pass any of these values in:
* - positive or negative integer (100, -20, ...)
* - positive or negative percent string (30%, -15%, ...)
* - complex coordinate (50% - 20, 15 + 30%, ...)
*
* If $width is null, it's calculated proportionally from $height, and vice versa.
*
* Example (resize to half-size):
* <code>
* $smaller = $image->resize('50%');
*
* $smaller = $image->resize('100', '100', 'inside', 'down');
* is the same as
* $smaller = $image->resizeDown(100, 100, 'inside');
* </code>
*
* @param mixed $width The new width (smart coordinate), or null.
* @param mixed $height The new height (smart coordinate), or null.
* @param string $fit 'inside', 'outside', 'fill'
* @param string $scale 'down', 'up', 'any'
* @return WideImage_Image The resized image
*/
function resize($width = null, $height = null, $fit = 'inside', $scale = 'any')
{
return $this->getOperation('Resize')->execute($this, $width, $height, $fit, $scale);
}
/**
* Same as WideImage_Image::resize(), but the image is only applied if it is larger then the given dimensions.
* Otherwise, the resulting image retains the source's dimensions.
*
* @param int $width New width, smart coordinate
* @param int $height New height, smart coordinate
* @param string $fit 'inside', 'outside', 'fill'
* @return WideImage_Image resized image
*/
function resizeDown($width = null, $height = null, $fit = 'inside')
{
return $this->resize($width, $height, $fit, 'down');
}
/**
* Same as WideImage_Image::resize(), but the image is only applied if it is smaller then the given dimensions.
* Otherwise, the resulting image retains the source's dimensions.
*
* @param int $width New width, smart coordinate
* @param int $height New height, smart coordinate
* @param string $fit 'inside', 'outside', 'fill'
* @return WideImage_Image resized image
*/
function resizeUp($width = null, $height = null, $fit = 'inside')
{
return $this->resize($width, $height, $fit, 'up');
}
/**
* Rotate the image for angle $angle clockwise.
*
* Preserves transparency. Has issues when saving to a BMP.
*
* @param int $angle Angle in degrees, clock-wise
* @param int $bgColor color of the new background
* @param bool $ignoreTransparent
* @return WideImage_Image The rotated image
*/
function rotate($angle, $bgColor = null, $ignoreTransparent = true)
{
return $this->getOperation('Rotate')->execute($this, $angle, $bgColor, $ignoreTransparent);
}
/**
* This method lays the overlay (watermark) on the image.
*
* Hint: if the overlay is a truecolor image with alpha channel, you should leave $pct at 100.
*
* This operation supports alignment notation in coordinates:
* <code>
* $watermark = WideImage::load('logo.gif');
* $base = WideImage::load('picture.jpg');
* $result = $base->merge($watermark, "right - 10", "bottom - 10", 50);
* // applies a logo aligned to bottom-right corner with a 10 pixel margin
* </code>
*
* @param WideImage_Image $overlay The overlay image
* @param mixed $left Left position of the overlay, smart coordinate
* @param mixed $top Top position of the overlay, smart coordinate
* @param int $pct The opacity of the overlay
* @return WideImage_Image The merged image
*/
function merge($overlay, $left = 0, $top = 0, $pct = 100)
{
return $this->getOperation('Merge')->execute($this, $overlay, $left, $top, $pct);
}
/**
* Resizes the canvas of the image, but doesn't scale the content of the image
*
* This operation creates an empty canvas with dimensions $width x $height, filled with
* background color $bg_color and draws the original image onto it at position [$pos_x, $pos_y].
*
* Arguments $width, $height, $pos_x and $pos_y are all smart coordinates. $width and $height are
* relative to the current image size, $pos_x and $pos_y are relative to the newly calculated
* canvas size. This can be confusing, but it makes sense. See the example below.
*
* The example below loads a 100x150 image and then resizes its canvas to 200% x 100%+20
* (which evaluates to 200x170). The image is placed at position [10, center+20], which evaluates to [10, 30].
* <code>
* $image = WideImage::load('someimage.jpg'); // 100x150
* $white = $image->allocateColor(255, 255, 255);
* $image->resizeCanvas('200%', '100% + 20', 10, 'center+20', $white);
* </code>
*
* The parameter $merge defines whether the original image should be merged onto the new canvas.
* This means it blends transparent color and alpha colors into the background color. If set to false,
* the original image is just copied over, preserving the transparency/alpha information.
*
* You can set the $scale parameter to limit when to resize the canvas. For example, if you want
* to resize the canvas only if the image is smaller than the new size, but leave the image intact
* if it's larger, set it to 'up'. Likewise, if you want to shrink the canvas, but don't want to
* change images that are already smaller, set it to 'down'.
*
* @param mixed $width Width of the new canvas (smart coordinate, relative to current image width)
* @param mixed $height Height of the new canvas (smart coordinate, relative to current image height)
* @param mixed $pos_x x-position of the image (smart coordinate, relative to the new width)
* @param mixed $pos_y y-position of the image (smart coordinate, relative to the new height)
* @param int $bg_color Background color (created with allocateColor or allocateColorAlpha), defaults to null (tries to use a transparent color)
* @param string $scale Possible values: 'up' (enlarge only), 'down' (downsize only), 'any' (resize precisely to $width x $height). Defaults to 'any'.
* @param bool $merge Merge the original image (flatten alpha channel and transparency) or copy it over (preserve). Defaults to false.
* @return WideImage_Image The resulting image with resized canvas
*/
function resizeCanvas($width, $height, $pos_x, $pos_y, $bg_color = null, $scale = 'any', $merge = false)
{
return $this->getOperation('ResizeCanvas')->execute($this, $width, $height, $pos_x, $pos_y, $bg_color, $scale, $merge);
}
/**
* Returns an image with round corners
*
* You can either set the corners' color or set them transparent.
*
* Note on $smoothness: 1 means jagged edges, 2 is much better, more than 4 doesn't noticeably improve the quality.
* Rendering becomes increasingly slower if you increase smoothness.
*
* Example:
* <code>
* $nice = $ugly->roundCorners(20, $ugly->allocateColor(255, 0, 0), 2);
* </code>
*
* Use $corners parameter to specify which corners to draw rounded. Possible values are
* WideImage::SIDE_TOP_LEFT, WideImage::SIDE_TOP,
* WideImage::SIDE_TOP_RIGHT, WideImage::SIDE_RIGHT,
* WideImage::SIDE_BOTTOM_RIGHT, WideImage::SIDE_BOTTOM,
* WideImage::SIDE_BOTTOM_LEFT, WideImage::SIDE_LEFT, and WideImage::SIDE_ALL.
* You can specify any combination of corners with a + operation, see example below.
*
* Example:
* <code>
* $white = $image->allocateColor(255, 255, 255);
* $diagonal_corners = $image->roundCorners(15, $white, 2, WideImage::SIDE_TOP_LEFT + WideImage::SIDE_BOTTOM_RIGHT);
* $right_corners = $image->roundCorners(15, $white, 2, WideImage::SIDE_RIGHT);
* </code>
*
* @param int $radius Radius of the corners
* @param int $color The color of corners. If null, corners are rendered transparent (slower than using a solid color).
* @param int $smoothness Specify the level of smoothness. Suggested values from 1 to 4.
* @param int $corners Specify which corners to draw (defaults to WideImage::SIDE_ALL = all corners)
* @return WideImage_Image The resulting image with round corners
*/
function roundCorners($radius, $color = null, $smoothness = 2, $corners = 255)
{
return $this->getOperation('RoundCorners')->execute($this, $radius, $color, $smoothness, $corners);
}
/**
* Returns an image with applied mask
*
* A mask is a grayscale image, where the shade determines the alpha channel. Black is fully transparent
* and white is fully opaque.
*
* @param WideImage_Image $mask The mask image, greyscale
* @param mixed $left Left coordinate, smart coordinate
* @param mixed $top Top coordinate, smart coordinate
* @return WideImage_Image The resulting image
**/
function applyMask($mask, $left = 0, $top = 0)
{
return $this->getOperation('ApplyMask')->execute($this, $mask, $left, $top);
}
/**
* Applies a filter
*
* @param int $filter One of the IMG_FILTER_* constants
* @param int $arg1
* @param int $arg2
* @param int $arg3
* @param int $arg4
* @return WideImage_Image
*/
function applyFilter($filter, $arg1 = null, $arg2 = null, $arg3 = null, $arg4 = null)
{
return $this->getOperation('ApplyFilter')->execute($this, $filter, $arg1, $arg2, $arg3, $arg4);
}
/**
* Applies convolution matrix with imageconvolution()
*
* @param array $matrix
* @param float $div
* @param float $offset
* @return WideImage_Image
*/
function applyConvolution($matrix, $div, $offset)
{
return $this->getOperation('ApplyConvolution')->execute($this, $matrix, $div, $offset);
}
/**
* Returns a cropped rectangular portion of the image
*
* If the rectangle specifies area that is out of bounds, it's limited to the current image bounds.
*
* Examples:
* <code>
* $cropped = $img->crop(10, 10, 150, 200); // crops a 150x200 rect at (10, 10)
* $cropped = $img->crop(-100, -50, 100, 50); // crops a 100x50 rect at the right-bottom of the image
* $cropped = $img->crop('25%', '25%', '50%', '50%'); // crops a 50%x50% rect from the center of the image
* </code>
*
* This operation supports alignment notation in left/top coordinates.
* Example:
* <code>
* $cropped = $img->crop("right", "bottom", 100, 200); // crops a 100x200 rect from right bottom
* $cropped = $img->crop("center", "middle", 50, 30); // crops a 50x30 from the center of the image
* </code>
*
* @param mixed $left Left-coordinate of the crop rect, smart coordinate
* @param mixed $top Top-coordinate of the crop rect, smart coordinate
* @param mixed $width Width of the crop rect, smart coordinate
* @param mixed $height Height of the crop rect, smart coordinate
* @return WideImage_Image The cropped image
**/
function crop($left = 0, $top = 0, $width = '100%', $height = '100%')
{
return $this->getOperation('Crop')->execute($this, $left, $top, $width, $height);
}
/**
* Performs an auto-crop on the image
*
* The image is auto-cropped from each of four sides. All sides are
* scanned for pixels that differ from $base_color for more than
* $rgb_threshold in absolute RGB difference. If more than $pixel_cutoff
* differentiating pixels are found, that line is considered to be the crop line for the side.
* If the line isn't different enough, the algorithm procedes to the next line
* towards the other edge of the image.
*
* When the crop rectangle is found, it's enlarged by the $margin value on each of the four sides.
*
* @param int $margin Margin for the crop rectangle, can be negative.
* @param int $rgb_threshold RGB difference which still counts as "same color".
* @param int $pixel_cutoff How many pixels need to be different to mark a cut line.
* @param int $base_color The base color index. If none specified (or null given), left-top pixel is used.
* @return WideImage_Image The cropped image
*/
function autoCrop($margin = 0, $rgb_threshold = 0, $pixel_cutoff = 1, $base_color = null)
{
return $this->getOperation('AutoCrop')->execute($this, $margin, $rgb_threshold, $pixel_cutoff, $base_color);
}
/**
* Returns a negative of the image
*
* This operation differs from calling WideImage_Image::applyFilter(IMG_FILTER_NEGATIVE), because it's 8-bit and transparency safe.
* This means it will return an 8-bit image, if the source image is 8-bit. If that 8-bit image has a palette transparency,
* the resulting image will keep transparency.
*
* @return WideImage_Image negative of the image
*/
function asNegative()
{
return $this->getOperation('AsNegative')->execute($this);
}
/**
* Returns a grayscale copy of the image
*
* @return WideImage_Image grayscale copy
**/
function asGrayscale()
{
return $this->getOperation('AsGrayscale')->execute($this);
}
/**
* Returns a mirrored copy of the image
*
* @return WideImage_Image Mirrored copy
**/
function mirror()
{
return $this->getOperation('Mirror')->execute($this);
}
/**
* Applies the unsharp filter
*
* @param float $amount
* @param float $radius
* @param float $threshold
* @return WideImage_Image Unsharpened copy of the image
**/
function unsharp($amount, $radius, $threshold)
{
return $this->getOperation('Unsharp')->execute($this, $amount, $radius, $threshold);
}
/**
* Returns a flipped (mirrored over horizontal line) copy of the image
*
* @return WideImage_Image Flipped copy
**/
function flip()
{
return $this->getOperation('Flip')->execute($this);
}
/**
* Corrects gamma on the image
*
* @param float $inputGamma
* @param float $outputGamma
* @return WideImage_Image Image with corrected gamma
**/
function correctGamma($inputGamma, $outputGamma)
{
return $this->getOperation('CorrectGamma')->execute($this, $inputGamma, $outputGamma);
}
/**
* Adds noise to the image
*
* @author Tomasz Kapusta
*
* @param int $amount Number of noise pixels to add
* @param string $type Type of noise 'salt&pepper', 'color' or 'mono'
* @return WideImage_Image Image with noise added
**/
function addNoise($amount, $type)
{
return $this->getOperation('AddNoise')->execute($this, $amount, $type);
}
/**
* Used internally to execute operations
*
* @param string $name
* @param array $args
* @return WideImage_Image
*/
function __call($name, $args)
{
$op = $this->getOperation($name);
array_unshift($args, $this);
return call_user_func_array(array($op, 'execute'), $args);
}
/**
* Returns an image in GIF or PNG format
*
* @return string
*/
function __toString()
{
if ($this->isTransparent())
return $this->asString('gif');
else
return $this->asString('png');
}
/**
* Returns a copy of the image object
*
* @return WideImage_Image The copy
**/
function copy()
{
$dest = $this->doCreate($this->getWidth(), $this->getHeight());
$dest->copyTransparencyFrom($this, true);
$this->copyTo($dest, 0, 0);
return $dest;
}
/**
* Copies this image onto another image
*
* @param WideImage_Image $dest
* @param int $left
* @param int $top
**/
function copyTo($dest, $left = 0, $top = 0)
{
if (!imagecopy($dest->getHandle(), $this->handle, $left, $top, 0, 0, $this->getWidth(), $this->getHeight()))
throw new WideImage_GDFunctionResultException("imagecopy() returned false");
}
/**
* Returns the canvas object
*
* The Canvas object can be used to draw text and shapes on the image
*
* Examples:
* <code>
* $img = WideImage::load('pic.jpg);
* $canvas = $img->getCanvas();
* $canvas->useFont('arial.ttf', 15, $img->allocateColor(200, 220, 255));
* $canvas->writeText(10, 50, "Hello world!");
*
* $canvas->filledRectangle(10, 10, 80, 40, $img->allocateColor(255, 127, 255));
* $canvas->line(60, 80, 30, 100, $img->allocateColor(255, 0, 0));
* $img->saveToFile('new.png');
* </code>
*
* @return WideImage_Canvas The Canvas object
**/
function getCanvas()
{
if ($this->canvas == null)
$this->canvas = new WideImage_Canvas($this);
return $this->canvas;
}
/**
* Returns true if the image is true-color, false otherwise
*
* @return bool
**/
abstract function isTrueColor();
/**
* Returns a true-color copy of the image
*
* @return WideImage_TrueColorImage
**/
abstract function asTrueColor();
/**
* Returns a palette copy (8bit) of the image
*
* @param int $nColors Number of colors in the resulting image, more than 0, less or equal to 255
* @param bool $dither Use dithering or not
* @param bool $matchPalette Set to true to use imagecolormatch() to match the resulting palette more closely to the original image
* @return WideImage_Image
**/
abstract function asPalette($nColors = 255, $dither = null, $matchPalette = true);
/**
* Retrieve an image with selected channels
*
* Examples:
* <code>
* $channels = $img->getChannels('red', 'blue');
* $channels = $img->getChannels('alpha', 'green');
* $channels = $img->getChannels(array('green', 'blue'));
* </code>
*
* @return WideImage_Image
**/
abstract function getChannels();
/**
* Returns an image without an alpha channel
*
* @return WideImage_Image
**/
abstract function copyNoAlpha();
/**
* Returns an array of serializable protected variables. Called automatically upon serialize().
*
* @return array
*/
function __sleep()
{
$this->sdata = $this->asString('png');
return array('sdata', 'handleReleased');
}
/**
* Restores an image from serialization. Called automatically upon unserialize().
*/
function __wakeup()
{
$temp_image = WideImage::loadFromString($this->sdata);
$temp_image->releaseHandle();
$this->handle = $temp_image->handle;
$temp_image = null;
$this->sdata = null;
}
}

View File

@ -1,51 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
include_once WideImage::path() . '/vendor/de77/BMP.php';
/**
* Mapper support for BMP
*
* @package Internal/Mappers
*/
class WideImage_Mapper_BMP
{
function load($uri)
{
return WideImage_vendor_de77_BMP::imagecreatefrombmp($uri);
}
function loadFromString($data)
{
return WideImage_vendor_de77_BMP::imagecreatefromstring($data);
}
function save($handle, $uri = null)
{
if ($uri == null)
return WideImage_vendor_de77_BMP::imagebmp($handle);
else
return WideImage_vendor_de77_BMP::imagebmp($handle, $uri);
}
}

View File

@ -1,44 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
/**
* Mapper class for GD files
*
* @package Internal/Mappers
*/
class WideImage_Mapper_GD
{
function load($uri)
{
return @imagecreatefromgd($uri);
}
function save($handle, $uri = null)
{
if ($uri == null)
return imagegd($handle);
else
return imagegd($handle, $uri);
}
}

View File

@ -1,41 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
/**
* Mapper class for GD2 files
*
* @package Internal/Mappers
*/
class WideImage_Mapper_GD2
{
function load($uri)
{
return @imagecreatefromgd2($uri);
}
function save($handle, $uri = null, $chunk_size = null, $type = null)
{
return imagegd2($handle, $uri, $chunk_size, $type);
}
}

View File

@ -1,50 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
/**
* Mapper class for GIF files
*
* @package Internal/Mappers
*/
class WideImage_Mapper_GIF
{
function load($uri)
{
return @imagecreatefromgif($uri);
}
function save($handle, $uri = null)
{
// This is a workaround for a bug, for which PHP devs claim it's not
// really a bug. Well, it IS.
// You can't pass null as the second parameter, because php is
// then trying to save an image to a '' location (which results in an
// error, of course). And the same thing works fine for imagepng() and
// imagejpeg(). It's a bug! ;)
if ($uri)
return imagegif($handle, $uri);
else
return imagegif($handle);
}
}

View File

@ -1,41 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
/**
* Mapper class for JPEG files
*
* @package Internal/Mappers
*/
class WideImage_Mapper_JPEG
{
function load($uri)
{
return @imagecreatefromjpeg($uri);
}
function save($handle, $uri = null, $quality = 100)
{
return imagejpeg($handle, $uri, $quality);
}
}

View File

@ -1,41 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
/**
* Mapper class for PNG files
*
* @package Internal/Mappers
*/
class WideImage_Mapper_PNG
{
function load($uri)
{
return @imagecreatefrompng($uri);
}
function save($handle, $uri = null, $compression = 9, $filters = PNG_ALL_FILTERS)
{
return imagepng($handle, $uri, $compression, $filters);
}
}

View File

@ -1,48 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Mappers
**/
include_once WideImage::path() . '/vendor/de77/TGA.php';
/**
* Mapper support for TGA
*
* @package Internal/Mappers
*/
class WideImage_Mapper_TGA
{
function load($uri)
{
return WideImage_vendor_de77_TGA::imagecreatefromtga($uri);
}
function loadFromString($data)
{
return WideImage_vendor_de77_TGA::imagecreatefromstring($data);
}
function save($handle, $uri = null)
{
throw new WideImage_Exception("Saving to TGA isn't supported.");
}
}

View File

@ -1,126 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* Thrown when image format isn't supported
*
* @package Exceptions
*/
class WideImage_UnsupportedFormatException extends WideImage_Exception {}
/**
* Mapper factory
*
* @package Internals
**/
abstract class WideImage_MapperFactory
{
static protected $mappers = array();
static protected $customMappers = array();
static protected $mimeTable = array(
'image/jpg' => 'JPEG',
'image/jpeg' => 'JPEG',
'image/pjpeg' => 'JPEG',
'image/gif' => 'GIF',
'image/png' => 'PNG'
);
/**
* Returns a mapper, based on the $uri and $format
*
* @param string $uri File URI
* @param string $format File format (extension or mime-type) or null
* @return WideImage_Mapper
**/
static function selectMapper($uri, $format = null)
{
$format = self::determineFormat($uri, $format);
if (array_key_exists($format, self::$mappers))
return self::$mappers[$format];
$mapperClassName = 'WideImage_Mapper_' . $format;
if (!class_exists($mapperClassName, false))
{
$mapperFileName = WideImage::path() . 'Mapper/' . $format . '.php';
if (file_exists($mapperFileName))
require_once $mapperFileName;
}
if (class_exists($mapperClassName))
{
self::$mappers[$format] = new $mapperClassName();
return self::$mappers[$format];
}
throw new WideImage_UnsupportedFormatException("Format '{$format}' is not supported.");
}
static function registerMapper($mapper_class_name, $mime_type, $extension)
{
self::$customMappers[$mime_type] = $mapper_class_name;
self::$mimeTable[$mime_type] = $extension;
}
static function getCustomMappers()
{
return self::$customMappers;
}
static function determineFormat($uri, $format = null)
{
if ($format == null)
$format = self::extractExtension($uri);
// mime-type match
if (preg_match('~[a-z]*/[a-z-]*~i', $format))
if (isset(self::$mimeTable[strtolower($format)]))
{
return self::$mimeTable[strtolower($format)];
}
// clean the string
$format = strtoupper(preg_replace('/[^a-z0-9_-]/i', '', $format));
if ($format == 'JPG')
$format = 'JPEG';
return $format;
}
static function mimeType($format)
{
return array_search(strtoupper($format), self::$mimeTable);
}
static function extractExtension($uri)
{
$p = strrpos($uri, '.');
if ($p === false)
return '';
else
return substr($uri, $p + 1);
}
}

View File

@ -1,153 +0,0 @@
<?php
/**
* @author Tomasz Kapusta
* @copyright 2010
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Noise filter
*
* @package Internal/Operations
*/
class WideImage_Operation_AddNoise {
/**
* Returns image with noise added
*
* @param WideImage_Image $image
* @param float $amount
* @param const $type
* @param float $threshold
* @return WideImage_Image
*/
function execute($image, $amount, $type) {
switch ($type)
{
case 'salt&pepper' : $fun = 'saltPepperNoise_fun';
break;
case 'color' : $fun = 'colorNoise_fun';
break;
default : $fun = 'monoNoise_fun';
break;
}
return self::filter($image->asTrueColor(), $fun, $amount);
}
/**
* Returns image with every pixel changed by specififed function
*
* @param WideImage_Image $image
* @param str $function
* @param int $value
* @return WideImage_Image
*/
function filter($image, $function, $value)
{
for ($y = 0; $y < $image->getHeight(); $y++)
{
for ($x = 0; $x< $image->getWidth(); $x++)
{
$rgb = imagecolorat($image->getHandle(), $x, $y);
$a = ($rgb >> 24) & 0xFF;
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
self::$function($r, $g, $b, $value);
$color = imagecolorallocatealpha($image->getHandle(), $r, $g, $b, $a);
imagesetpixel($image->getHandle(), $x, $y, $color);
}
}
return $image;
}
/**
* Adds color noise by altering given R,G,B values using specififed amount
*
* @param int $r
* @param int $g
* @param int $b
* @param int $value
* @return void
*/
function colorNoise_fun(&$r, &$g, &$b, $amount)
{
$r = self::byte($r + mt_rand(0, $amount) - ($amount >> 1) );
$g = self::byte($g + mt_rand(0, $amount) - ($amount >> 1) );
$b = self::byte($b + mt_rand(0, $amount) - ($amount >> 1) );
}
/**
* Adds mono noise by altering given R,G,B values using specififed amount
*
* @param int $r
* @param int $g
* @param int $b
* @param int $value
* @return void
*/
function monoNoise_fun(&$r, &$g, &$b, $amount)
{
$rand = mt_rand(0, $amount) - ($amount >> 1);
$r = self::byte($r + $rand);
$g = self::byte($g + $rand);
$b = self::byte($b + $rand);
}
/**
* Adds salt&pepper noise by altering given R,G,B values using specififed amount
*
* @param int $r
* @param int $g
* @param int $b
* @param int $value
* @return void
*/
function saltPepperNoise_fun(&$r, &$g, &$b, $amount)
{
if (mt_rand(0, 255 - $amount) != 0) return;
$rand = mt_rand(0, 1);
switch ($rand)
{
case 0 : $r = $g = $b = 0;
break;
case 1 : $r = $g = $b = 255;
break;
}
}
/**
* Returns value within (0,255)
*
* @param int $b
* @return int
*/
function byte($b)
{
if ($b > 255) return 255;
if ($b < 0) return 0;
return (int) $b;
}
}

View File

@ -1,48 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* ApplyConvolution operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_ApplyConvolution
{
/**
* Executes imageconvolution() filter
*
* @param WideImage_Image $image
* @param array $matrix
* @param numeric $div
* @param numeric $offset
* @return WideImage_Image
*/
function execute($image, $matrix, $div, $offset)
{
$new = $image->asTrueColor();
if (!imageconvolution($new->getHandle(), $matrix, $div, $offset))
throw new WideImage_GDFunctionResultException("imageconvolution() returned false");
return $new;
}
}

View File

@ -1,67 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* ApplyFilter operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_ApplyFilter
{
/**
* A list of filters that only accept one arguments for imagefilter()
*
* @var array
*/
static protected $one_arg_filters = array(IMG_FILTER_SMOOTH, IMG_FILTER_CONTRAST, IMG_FILTER_BRIGHTNESS);
/**
* Executes imagefilter
*
* @param WideImage_Image $image
* @param int $filter
* @param numeric $arg1
* @param numeric $arg2
* @param numeric $arg3
* @return WideImage_TrueColorImage
*/
function execute($image, $filter, $arg1 = null, $arg2 = null, $arg3 = null, $arg4 = null)
{
$new = $image->asTrueColor();
if (in_array($filter, self::$one_arg_filters))
$res = imagefilter($new->getHandle(), $filter, $arg1);
elseif (defined('IMG_FILTER_PIXELATE') && $filter == IMG_FILTER_PIXELATE)
$res = imagefilter($new->getHandle(), $filter, $arg1, $arg2);
elseif ($filter == IMG_FILTER_COLORIZE)
$res = imagefilter($new->getHandle(), $filter, $arg1, $arg2, $arg3, $arg4);
else
$res = imagefilter($new->getHandle(), $filter);
if (!$res)
throw new WideImage_GDFunctionResultException("imagefilter() returned false");
return $new;
}
}

View File

@ -1,105 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* ApplyMask operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_ApplyMask
{
/**
* Applies a mask on the copy of source image
*
* @param WideImage_Image $image
* @param WideImage_Image $mask
* @param smart_coordinate $left
* @param smart_coordinate $top
* @return WideImage_Image
*/
function execute($image, $mask, $left = 0, $top = 0)
{
$left = WideImage_Coordinate::fix($left, $image->getWidth(), $mask->getWidth());
$top = WideImage_Coordinate::fix($top, $image->getHeight(), $mask->getHeight());
$width = $image->getWidth();
$mask_width = $mask->getWidth();
$height = $image->getHeight();
$mask_height = $mask->getHeight();
$result = $image->asTrueColor();
$result->alphaBlending(false);
$result->saveAlpha(true);
$srcTransparentColor = $result->getTransparentColor();
if ($srcTransparentColor >= 0)
{
# this was here. works without.
#$trgb = $image->getColorRGB($srcTransparentColor);
#$trgb['alpha'] = 127;
#$destTransparentColor = $result->allocateColorAlpha($trgb);
#$result->setTransparentColor($destTransparentColor);
$destTransparentColor = $srcTransparentColor;
}
else
{
$destTransparentColor = $result->allocateColorAlpha(255, 255, 255, 127);
}
for ($x = 0; $x < $width; $x++)
for ($y = 0; $y < $height; $y++)
{
$mx = $x - $left;
$my = $y - $top;
if ($mx >= 0 && $mx < $mask_width && $my >= 0 && $my < $mask_height)
{
$srcColor = $image->getColorAt($x, $y);
if ($srcColor == $srcTransparentColor)
$destColor = $destTransparentColor;
else
{
$maskRGB = $mask->getRGBAt($mx, $my);
if ($maskRGB['red'] == 0)
$destColor = $destTransparentColor;
elseif ($srcColor >= 0)
{
$imageRGB = $image->getRGBAt($x, $y);
$level = ($maskRGB['red'] / 255) * (1 - $imageRGB['alpha'] / 127);
$imageRGB['alpha'] = 127 - round($level * 127);
if ($imageRGB['alpha'] == 127)
$destColor = $destTransparentColor;
else
$destColor = $result->allocateColorAlpha($imageRGB);
}
else
$destColor = $destTransparentColor;
}
$result->setColorAt($x, $y, $destColor);
}
}
return $result;
}
}

View File

@ -1,49 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* AsGrayscale operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_AsGrayscale
{
/**
* Returns a greyscale copy of an image
*
* @param WideImage_Image $image
* @return WideImage_Image
*/
function execute($image)
{
$new = $image->asTrueColor();
if (!imagefilter($new->getHandle(), IMG_FILTER_GRAYSCALE))
throw new WideImage_GDFunctionResultException("imagefilter() returned false");
if (!$image->isTrueColor())
$new = $new->asPalette();
return $new;
}
}

View File

@ -1,63 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* AsNegative operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_AsNegative
{
/**
* Returns a greyscale copy of an image
*
* @param WideImage_Image $image
* @return WideImage_Image
*/
function execute($image)
{
$palette = !$image->isTrueColor();
$transparent = $image->isTransparent();
if ($palette && $transparent)
$tcrgb = $image->getTransparentColorRGB();
$new = $image->asTrueColor();
if (!imagefilter($new->getHandle(), IMG_FILTER_NEGATE))
throw new WideImage_GDFunctionResultException("imagefilter() returned false");
if ($palette)
{
$new = $new->asPalette();
if ($transparent)
{
$irgb = array('red' => 255 - $tcrgb['red'], 'green' => 255 - $tcrgb['green'], 'blue' => 255 - $tcrgb['blue'], 'alpha' => 127);
// needs imagecolorexactalpha instead of imagecolorexact, otherwise doesn't work on some transparent GIF images
$new_tci = imagecolorexactalpha($new->getHandle(), $irgb['red'], $irgb['green'], $irgb['blue'], 127);
$new->setTransparentColor($new_tci);
}
}
return $new;
}
}

View File

@ -1,162 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* AutoCrop operation
*
* @package Internal/Operations
*/
class WideImage_Operation_AutoCrop
{
/**
* Executes the auto-crop operation on the $img
*
* @param WideImage_Image $img
* @param int $rgb_threshold The difference in RGB from $base_color
* @param int $pixel_cutoff The number of pixels on each border that must be over $rgb_threshold
* @param int $base_color The color that will get cropped
* @return WideImage_Image resulting auto-cropped image
*/
function execute($img, $margin, $rgb_threshold, $pixel_cutoff, $base_color)
{
$margin = intval($margin);
$rgb_threshold = intval($rgb_threshold);
if ($rgb_threshold < 0)
$rgb_threshold = 0;
$pixel_cutoff = intval($pixel_cutoff);
if ($pixel_cutoff <= 1)
$pixel_cutoff = 1;
if ($base_color === null)
$rgb_base = $img->getRGBAt(0, 0);
else
{
if ($base_color < 0)
return $img->copy();
$rgb_base = $img->getColorRGB($base_color);
}
$cut_rect = array('left' => 0, 'top' => 0, 'right' => $img->getWidth() - 1, 'bottom' => $img->getHeight() - 1);
for ($y = 0; $y <= $cut_rect['bottom']; $y++)
{
$count = 0;
for ($x = 0; $x <= $cut_rect['right']; $x++)
{
$rgb = $img->getRGBAt($x, $y);
$diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
if ($diff > $rgb_threshold)
{
$count++;
if ($count >= $pixel_cutoff)
{
$cut_rect['top'] = $y;
break 2;
}
}
}
}
for ($y = $img->getHeight() - 1; $y >= $cut_rect['top']; $y--)
{
$count = 0;
for ($x = 0; $x <= $cut_rect['right']; $x++)
{
$rgb = $img->getRGBAt($x, $y);
$diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
if ($diff > $rgb_threshold)
{
$count++;
if ($count >= $pixel_cutoff)
{
$cut_rect['bottom'] = $y;
break 2;
}
}
}
}
for ($x = 0; $x <= $cut_rect['right']; $x++)
{
$count = 0;
for ($y = $cut_rect['top']; $y <= $cut_rect['bottom']; $y++)
{
$rgb = $img->getRGBAt($x, $y);
$diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
if ($diff > $rgb_threshold)
{
$count++;
if ($count >= $pixel_cutoff)
{
$cut_rect['left'] = $x;
break 2;
}
}
}
}
for ($x = $cut_rect['right']; $x >= $cut_rect['left']; $x--)
{
$count = 0;
for ($y = $cut_rect['top']; $y <= $cut_rect['bottom']; $y++)
{
$rgb = $img->getRGBAt($x, $y);
$diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
if ($diff > $rgb_threshold)
{
$count++;
if ($count >= $pixel_cutoff)
{
$cut_rect['right'] = $x;
break 2;
}
}
}
}
$cut_rect = array(
'left' => $cut_rect['left'] - $margin,
'top' => $cut_rect['top'] - $margin,
'right' => $cut_rect['right'] + $margin,
'bottom' => $cut_rect['bottom'] + $margin
);
if ($cut_rect['left'] < 0)
$cut_rect['left'] = 0;
if ($cut_rect['top'] < 0)
$cut_rect['top'] = 0;
if ($cut_rect['right'] >= $img->getWidth())
$cut_rect['right'] = $img->getWidth() - 1;
if ($cut_rect['bottom'] >= $img->getHeight())
$cut_rect['bottom'] = $img->getHeight() - 1;
return $img->crop($cut_rect['left'], $cut_rect['top'], $cut_rect['right'] - $cut_rect['left'] + 1, $cut_rect['bottom'] - $cut_rect['top'] + 1);
}
}

View File

@ -1,90 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* CopyChannelsPalette operation class
*
* This operation is intended to be used on palette images
*
* @package Internal/Operations
*/
class WideImage_Operation_CopyChannelsPalette
{
/**
* Returns an image with only specified channels copied
*
* @param WideImage_PaletteImage $img
* @param array $channels
* @return WideImage_PaletteImage
*/
function execute($img, $channels)
{
$blank = array('red' => 0, 'green' => 0, 'blue' => 0);
if (isset($channels['alpha']))
unset($channels['alpha']);
$width = $img->getWidth();
$height = $img->getHeight();
$copy = WideImage_PaletteImage::create($width, $height);
if ($img->isTransparent())
{
$otci = $img->getTransparentColor();
$TRGB = $img->getColorRGB($otci);
$tci = $copy->allocateColor($TRGB);
}
else
{
$otci = null;
$tci = null;
}
for ($x = 0; $x < $width; $x++)
for ($y = 0; $y < $height; $y++)
{
$ci = $img->getColorAt($x, $y);
if ($ci === $otci)
{
$copy->setColorAt($x, $y, $tci);
continue;
}
$RGB = $img->getColorRGB($ci);
$newRGB = $blank;
foreach ($channels as $channel)
$newRGB[$channel] = $RGB[$channel];
$color = $copy->getExactColor($newRGB);
if ($color == -1)
$color = $copy->allocateColor($newRGB);
$copy->setColorAt($x, $y, $color);
}
if ($img->isTransparent())
$copy->setTransparentColor($tci);
return $copy;
}
}

View File

@ -1,67 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* CopyChannelsTrueColor operation class
*
* Used to perform CopyChannels operation on truecolor images
*
* @package Internal/Operations
*/
class WideImage_Operation_CopyChannelsTrueColor
{
/**
* Returns an image with only specified channels copied
*
* @param WideImage_Image $img
* @param array $channels
* @return WideImage_Image
*/
function execute($img, $channels)
{
$blank = array('red' => 0, 'green' => 0, 'blue' => 0, 'alpha' => 0);
$width = $img->getWidth();
$height = $img->getHeight();
$copy = WideImage_TrueColorImage::create($width, $height);
if (count($channels) > 0)
for ($x = 0; $x < $width; $x++)
for ($y = 0; $y < $height; $y++)
{
$RGBA = $img->getRGBAt($x, $y);
$newRGBA = $blank;
foreach ($channels as $channel)
$newRGBA[$channel] = $RGBA[$channel];
$color = $copy->getExactColorAlpha($newRGBA);
if ($color == -1)
$color = $copy->allocateColorAlpha($newRGBA);
$copy->setColorAt($x, $y, $color);
}
return $copy;
}
}

View File

@ -1,48 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* CorrectGamma operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_CorrectGamma
{
/**
* Executes imagegammacorrect()
*
* @param WideImage_Image $image
* @param numeric $input_gamma
* @param numeric $output_gamma
* @return WideImage_TrueColorImage
*/
function execute($image, $input_gamma, $output_gamma)
{
$new = $image->copy();
if (!imagegammacorrect($new->getHandle(), $input_gamma, $output_gamma))
throw new WideImage_GDFunctionResultException("imagegammacorrect() returned false");
return $new;
}
}

View File

@ -1,86 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Crop operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Crop
{
/**
* Returns a cropped image
*
* @param WideImage_Image $img
* @param smart_coordinate $left
* @param smart_coordinate $top
* @param smart_coordinate $width
* @param smart_coordinate $height
* @return WideImage_Image
*/
function execute($img, $left, $top, $width, $height)
{
$width = WideImage_Coordinate::fix($width, $img->getWidth(), $width);
$height = WideImage_Coordinate::fix($height, $img->getHeight(), $height);
$left = WideImage_Coordinate::fix($left, $img->getWidth(), $width);
$top = WideImage_Coordinate::fix($top, $img->getHeight(), $height);
if ($left < 0)
{
$width = $left + $width;
$left = 0;
}
if ($width > $img->getWidth() - $left)
$width = $img->getWidth() - $left;
if ($top < 0)
{
$height = $top + $height;
$top = 0;
}
if ($height > $img->getHeight() - $top)
$height = $img->getHeight() - $top;
if ($width <= 0 || $height <= 0)
throw new WideImage_Exception("Can't crop outside of an image.");
$new = $img->doCreate($width, $height);
if ($img->isTransparent() || $img instanceof WideImage_PaletteImage)
{
$new->copyTransparencyFrom($img);
if (!imagecopyresized($new->getHandle(), $img->getHandle(), 0, 0, $left, $top, $width, $height, $width, $height))
throw new WideImage_GDFunctionResultException("imagecopyresized() returned false");
}
else
{
$new->alphaBlending(false);
$new->saveAlpha(true);
if (!imagecopyresampled($new->getHandle(), $img->getHandle(), 0, 0, $left, $top, $width, $height, $width, $height))
throw new WideImage_GDFunctionResultException("imagecopyresampled() returned false");
}
return $new;
}
}

View File

@ -1,54 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Flip operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Flip
{
/**
* Returns a flipped image
*
* @param WideImage_Image $image
* @return WideImage_Image
*/
function execute($image)
{
$new = $image->copy();
$width = $image->getWidth();
$height = $image->getHeight();
if ($new->isTransparent())
imagefilledrectangle($new->getHandle(), 0, 0, $width, $height, $new->getTransparentColor());
for ($y = 0; $y < $height; $y++)
if (!imagecopy($new->getHandle(), $image->getHandle(), 0, $y, 0, $height - $y - 1, $width, 1))
throw new WideImage_GDFunctionResultException("imagecopy() returned false");
return $new;
}
}

View File

@ -1,67 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* GetMask operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_GetMask
{
/**
* Returns a mask
*
* @param WideImage_Image $image
* @return WideImage_Image
*/
function execute($image)
{
$width = $image->getWidth();
$height = $image->getHeight();
$mask = WideImage_TrueColorImage::create($width, $height);
$mask->setTransparentColor(-1);
$mask->alphaBlending(false);
$mask->saveAlpha(false);
for ($i = 0; $i <= 255; $i++)
$greyscale[$i] = ImageColorAllocate($mask->getHandle(), $i, $i, $i);
imagefilledrectangle($mask->getHandle(), 0, 0, $width, $height, $greyscale[255]);
$transparentColor = $image->getTransparentColor();
$alphaToGreyRatio = 255 / 127;
for ($x = 0; $x < $width; $x++)
for ($y = 0; $y < $height; $y++)
{
$color = $image->getColorAt($x, $y);
if ($color == $transparentColor)
$rgba['alpha'] = 127;
else
$rgba = $image->getColorRGB($color);
imagesetpixel($mask->getHandle(), $x, $y, $greyscale[255 - round($rgba['alpha'] * $alphaToGreyRatio)]);
}
return $mask;
}
}

View File

@ -1,78 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Merge operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Merge
{
/**
* Returns a merged image
*
* @param WideImage_Image $base
* @param WideImage_Image $overlay
* @param smart_coordinate $left
* @param smart_coordinate $top
* @param numeric $pct
* @return WideImage_Image
*/
function execute($base, $overlay, $left, $top, $pct)
{
$x = WideImage_Coordinate::fix($left, $base->getWidth(), $overlay->getWidth());
$y = WideImage_Coordinate::fix($top, $base->getHeight(), $overlay->getHeight());
$result = $base->asTrueColor();
$result->alphaBlending(true);
$result->saveAlpha(true);
if ($pct <= 0)
return $result;
if ($pct < 100)
{
if (!imagecopymerge(
$result->getHandle(),
$overlay->getHandle(),
$x, $y, 0, 0,
$overlay->getWidth(),
$overlay->getHeight(),
$pct))
throw new WideImage_GDFunctionResultException("imagecopymerge() returned false");
}
else
{
if (!imagecopy(
$result->getHandle(),
$overlay->getHandle(),
$x, $y, 0, 0,
$overlay->getWidth(),
$overlay->getHeight()))
throw new WideImage_GDFunctionResultException("imagecopy() returned false");
}
return $result;
}
}

View File

@ -1,55 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Mirror operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Mirror
{
/**
* Returns a mirrored image
*
* @param WideImage_Image $image
* @return WideImage_Image
*/
function execute($image)
{
$new = $image->copy();
$width = $image->getWidth();
$height = $image->getHeight();
if ($new->isTransparent())
imagefilledrectangle($new->getHandle(), 0, 0, $width, $height, $new->getTransparentColor());
for ($x = 0; $x < $width; $x++)
{
if (!imagecopy($new->getHandle(), $image->getHandle(), $x, 0, $width - $x - 1, 0, 1, $height))
throw new WideImage_GDFunctionResultException("imagecopy() returned false");
}
return $new;
}
}

View File

@ -1,157 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* An Exception for when an invalid fit method is passed
*
* @package Internal/Operations
*/
class WideImage_Operation_InvalidFitMethodException extends WideImage_Exception {}
/**
* An Exception for when an invalid resize dimensions are passed
*
* @package Internal/Operations
*/
class WideImage_Operation_InvalidResizeDimensionException extends WideImage_Exception {}
/**
* Resize operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Resize
{
/**
* Prepares and corrects smart coordinates
*
* @param WideImage_Image $img
* @param smart_coordinate $width
* @param smart_coordinate $height
* @param string $fit
* @return array
*/
protected function prepareDimensions($img, $width, $height, $fit)
{
if ($width === null && $height === null)
{
$width = $img->getWidth();
$height = $img->getHeight();
}
if ($width !== null)
$width = WideImage_Coordinate::fix($width, $img->getWidth());
if ($height !== null)
$height = WideImage_Coordinate::fix($height, $img->getHeight());
if ($width === null)
$width = floor($img->getWidth() * $height / $img->getHeight());
if ($height === null)
$height = floor($img->getHeight() * $width / $img->getWidth());
if ($width === 0 || $height === 0)
return array('width' => 0, 'height' => 0);
if ($fit == null)
$fit = 'inside';
$dim = array();
if ($fit == 'fill')
{
$dim['width'] = $width;
$dim['height'] = $height;
}
elseif ($fit == 'inside' || $fit == 'outside')
{
$rx = $img->getWidth() / $width;
$ry = $img->getHeight() / $height;
if ($fit == 'inside')
$ratio = ($rx > $ry) ? $rx : $ry;
else
$ratio = ($rx < $ry) ? $rx : $ry;
$dim['width'] = round($img->getWidth() / $ratio);
$dim['height'] = round($img->getHeight() / $ratio);
}
else
throw new WideImage_Operation_InvalidFitMethodException("{$fit} is not a valid resize-fit method.");
return $dim;
}
/**
* Returns a resized image
*
* @param WideImage_Image $img
* @param smart_coordinate $width
* @param smart_coordinate $height
* @param string $fit
* @param string $scale
* @return WideImage_Image
*/
function execute($img, $width, $height, $fit, $scale)
{
$dim = $this->prepareDimensions($img, $width, $height, $fit);
if (($scale === 'down' && ($dim['width'] >= $img->getWidth() && $dim['height'] >= $img->getHeight())) ||
($scale === 'up' && ($dim['width'] <= $img->getWidth() && $dim['height'] <= $img->getHeight())))
$dim = array('width' => $img->getWidth(), 'height' => $img->getHeight());
if ($dim['width'] <= 0 || $dim['height'] <= 0)
throw new WideImage_Operation_InvalidResizeDimensionException("Both dimensions must be larger than 0.");
if ($img->isTransparent() || $img instanceof WideImage_PaletteImage)
{
$new = WideImage_PaletteImage::create($dim['width'], $dim['height']);
$new->copyTransparencyFrom($img);
if (!imagecopyresized(
$new->getHandle(),
$img->getHandle(),
0, 0, 0, 0,
$new->getWidth(),
$new->getHeight(),
$img->getWidth(),
$img->getHeight()))
throw new WideImage_GDFunctionResultException("imagecopyresized() returned false");
}
else
{
$new = WideImage_TrueColorImage::create($dim['width'], $dim['height']);
$new->alphaBlending(false);
$new->saveAlpha(true);
if (!imagecopyresampled(
$new->getHandle(),
$img->getHandle(),
0, 0, 0, 0,
$new->getWidth(),
$new->getHeight(),
$img->getWidth(),
$img->getHeight()))
throw new WideImage_GDFunctionResultException("imagecopyresampled() returned false");
$new->alphaBlending(true);
}
return $new;
}
}

View File

@ -1,107 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* ResizeCanvas operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_ResizeCanvas
{
/**
* Returns an image with a resized canvas
*
* The image is filled with $color. Use $scale to determine, when to resize.
*
* @param WideImage_Image $img
* @param smart_coordinate $width
* @param smart_coordinate $height
* @param smart_coordinate $left
* @param smart_coordinate $top
* @param int $color
* @param string $scale 'up', 'down', 'any'
* @param boolean $merge
* @return WideImage_Image
*/
function execute($img, $width, $height, $left, $top, $color, $scale, $merge)
{
$new_width = WideImage_Coordinate::fix($width, $img->getWidth());
$new_height = WideImage_Coordinate::fix($height, $img->getHeight());
if ($scale == 'down')
{
$new_width = min($new_width, $img->getWidth());
$new_height = min($new_height, $img->getHeight());
}
elseif ($scale == 'up')
{
$new_width = max($new_width, $img->getWidth());
$new_height = max($new_height, $img->getHeight());
}
$new = WideImage::createTrueColorImage($new_width, $new_height);
if ($img->isTrueColor())
{
if ($color === null)
$color = $new->allocateColorAlpha(0, 0, 0, 127);
}
else
{
imagepalettecopy($new->getHandle(), $img->getHandle());
if ($img->isTransparent())
{
$new->copyTransparencyFrom($img);
$tc_rgb = $img->getTransparentColorRGB();
$t_color = $new->allocateColorAlpha($tc_rgb);
}
if ($color === null)
{
if ($img->isTransparent())
$color = $t_color;
else
$color = $new->allocateColorAlpha(255, 0, 127, 127);
imagecolortransparent($new->getHandle(), $color);
}
}
$new->fill(0, 0, $color);
$x = WideImage_Coordinate::fix($left, $new->getWidth(), $img->getWidth());
$y = WideImage_Coordinate::fix($top, $new->getHeight(), $img->getHeight());
// blending for truecolor images
if ($img->isTrueColor())
$new->alphaBlending($merge);
// not-blending for palette images
if (!$merge && !$img->isTrueColor() && isset($t_color))
$new->getCanvas()->filledRectangle($x, $y, $x + $img->getWidth(), $y + $img->getHeight(), $t_color);
$img->copyTo($new, $x, $y);
return $new;
}
}

View File

@ -1,64 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Rotate operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_Rotate
{
/**
* Returns rotated image
*
* @param WideImage_Image $image
* @param numeric $angle
* @param int $bgColor
* @param bool $ignoreTransparent
* @return WideImage_Image
*/
function execute($image, $angle, $bgColor, $ignoreTransparent)
{
$angle = -floatval($angle);
if ($angle < 0)
$angle = 360 + $angle;
$angle = $angle % 360;
if ($angle == 0)
return $image->copy();
$image = $image->asTrueColor();
if ($bgColor === null)
{
$bgColor = $image->getTransparentColor();
if ($bgColor == -1)
{
$bgColor = $image->allocateColorAlpha(255, 255, 255, 127);
imagecolortransparent($image->getHandle(), $bgColor);
}
}
return new WideImage_TrueColorImage(imagerotate($image->getHandle(), $angle, $bgColor, $ignoreTransparent));
}
}

View File

@ -1,114 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* ApplyMask operation class
*
* @package Internal/Operations
*/
class WideImage_Operation_RoundCorners
{
/**
* @param WideImage_Image $image
* @param int $radius
* @param int $color
* @param int $smoothness
* @return WideImage_Image
*/
function execute($image, $radius, $color, $smoothness, $corners)
{
if ($smoothness < 1)
$sample_ratio = 1;
elseif ($smoothness > 16)
$sample_ratio = 16;
else
$sample_ratio = $smoothness;
$corner = WideImage::createTrueColorImage($radius * $sample_ratio, $radius * $sample_ratio);
if ($color === null)
{
imagepalettecopy($corner->getHandle(), $image->getHandle());
$bg_color = $corner->allocateColor(0, 0, 0);
$corner->fill(0, 0, $bg_color);
$fg_color = $corner->allocateColor(255, 255, 255);
$corner->getCanvas()->filledEllipse($radius * $sample_ratio, $radius * $sample_ratio, $radius * 2 * $sample_ratio, $radius * 2 * $sample_ratio, $fg_color);
$corner = $corner->resize($radius, $radius);
$result = $image->asTrueColor();
$tc = $result->getTransparentColor();
if ($tc == -1)
{
$tc = $result->allocateColorAlpha(255, 255, 255, 127);
imagecolortransparent($result->getHandle(), $tc);
$result->setTransparentColor($tc);
}
if ($corners & WideImage::SIDE_TOP_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_TOP)
$result = $result->applyMask($corner, -1, -1);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_TOP_RIGHT || $corners & WideImage::SIDE_TOP || $corners & WideImage::SIDE_RIGHT)
$result = $result->applyMask($corner, $result->getWidth() - $corner->getWidth() + 1, -1, 100);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_BOTTOM_RIGHT || $corners & WideImage::SIDE_RIGHT || $corners & WideImage::SIDE_BOTTOM)
$result = $result->applyMask($corner, $result->getWidth() - $corner->getWidth() + 1, $result->getHeight() - $corner->getHeight() + 1, 100);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_BOTTOM_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_BOTTOM)
$result = $result->applyMask($corner, -1, $result->getHeight() - $corner->getHeight() + 1, 100);
return $result;
}
else
{
$bg_color = $color;
$corner->fill(0, 0, $bg_color);
$fg_color = $corner->allocateColorAlpha(127, 127, 127, 127);
$corner->getCanvas()->filledEllipse($radius * $sample_ratio, $radius * $sample_ratio, $radius * 2 * $sample_ratio, $radius * 2 * $sample_ratio, $fg_color);
$corner = $corner->resize($radius, $radius);
$result = $image->copy();
if ($corners & WideImage::SIDE_TOP_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_TOP)
$result = $result->merge($corner, -1, -1, 100);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_TOP_RIGHT || $corners & WideImage::SIDE_TOP || $corners & WideImage::SIDE_RIGHT)
$result = $result->merge($corner, $result->getWidth() - $corner->getWidth() + 1, -1, 100);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_BOTTOM_RIGHT || $corners & WideImage::SIDE_RIGHT || $corners & WideImage::SIDE_BOTTOM)
$result = $result->merge($corner, $result->getWidth() - $corner->getWidth() + 1, $result->getHeight() - $corner->getHeight() + 1, 100);
$corner = $corner->rotate(90);
if ($corners & WideImage::SIDE_BOTTOM_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_BOTTOM)
$result = $result->merge($corner, -1, $result->getHeight() - $corner->getHeight() + 1, 100);
return $result;
}
}
}

View File

@ -1,135 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internal/Operations
**/
/**
* Unsharp filter
*
* This filter was taken from http://vikjavev.no/computing/ump.php,
* the original author Torstein Hønsi. Adapted to fit better within
* the Wideimage package.
*
* @package Internal/Operations
*/
class WideImage_Operation_Unsharp {
/**
* Returns sharpened image
*
* @param WideImage_Image $image
* @param float $amount
* @param int $radius
* @param float $threshold
* @return WideImage_Image
*/
function execute($image, $amount, $radius, $threshold) {
// Attempt to calibrate the parameters to Photoshop:
if ($amount > 500) $amount = 500;
$amount = $amount * 0.016;
if ($radius > 50) $radius = 50;
$radius = $radius * 2;
if ($threshold > 255) $threshold = 255;
$radius = abs(round($radius)); // Only integers make sense.
if ($radius == 0) {
return $image;
}
// Gaussian blur matrix
$matrix = array(
array(1, 2, 1),
array(2, 4, 2),
array(1, 2, 1)
);
$blurred = $image->applyConvolution($matrix, 16, 0);
if($threshold > 0) {
// Calculate the difference between the blurred pixels and the original
// and set the pixels
for ($x = 0; $x < $image->getWidth(); $x++) {
for ($y = 0; $y < $image->getHeight(); $y++) {
$rgbOrig = $image->getRGBAt($x, $y);
$rOrig = $rgbOrig["red"];
$gOrig = $rgbOrig["green"];
$bOrig = $rgbOrig["blue"];
$rgbBlur = $blurred->getRGBAt($x, $y);
$rBlur = $rgbBlur["red"];
$gBlur = $rgbBlur["green"];
$bBlur = $rgbBlur["blue"];
// When the masked pixels differ less from the original
// than the threshold specifies, they are set to their original value.
$rNew = (abs($rOrig - $rBlur) >= $threshold)
? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig))
: $rOrig;
$gNew = (abs($gOrig - $gBlur) >= $threshold)
? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig))
: $gOrig;
$bNew = (abs($bOrig - $bBlur) >= $threshold)
? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig))
: $bOrig;
$rgbNew = array("red" => $rNew, "green" => $gNew, "blue" => $bNew, "alpha" => 0);
if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) {
$image->setRGBAt($x, $y, $rgbNew);
}
}
}
}
else {
$w = $image->getWidth();
$h = $image->getHeight();
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbOrig = $image->getRGBAt($x, $y);
$rOrig = $rgbOrig["red"];
$gOrig = $rgbOrig["green"];
$bOrig = $rgbOrig["blue"];
$rgbBlur = $blurred->getRGBAt($x, $y);
$rBlur = $rgbBlur["red"];
$gBlur = $rgbBlur["green"];
$bBlur = $rgbBlur["blue"];
$rNew = ($amount * ($rOrig - $rBlur)) + $rOrig;
if($rNew>255){$rNew=255;}
elseif($rNew<0){$rNew=0;}
$gNew = ($amount * ($gOrig - $gBlur)) + $gOrig;
if($gNew>255){$gNew=255;}
elseif($gNew<0){$gNew=0;}
$bNew = ($amount * ($bOrig - $bBlur)) + $bOrig;
if($bNew>255){$bNew=255;}
elseif($bNew<0){$bNew=0;}
$rgbNew = array("red" => $rNew, "green" => $gNew, "blue" => $bNew, "alpha" => 0);
$image->setRGBAt($x, $y, $rgbNew);
}
}
}
return $image;
}
}

View File

@ -1,57 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package Internals
**/
/**
* @package Exceptions
*/
class WideImage_UnknownImageOperationException extends WideImage_Exception {}
/**
* Operation factory
*
* @package Internals
**/
class WideImage_OperationFactory
{
static protected $cache = array();
static function get($operationName)
{
$lcname = strtolower($operationName);
if (!isset(self::$cache[$lcname]))
{
$opClassName = "WideImage_Operation_" . ucfirst($operationName);
if (!class_exists($opClassName, false))
{
$fileName = WideImage::path() . 'Operation/' . ucfirst($operationName) . '.php';
if (file_exists($fileName))
require_once $fileName;
elseif (!class_exists($opClassName))
throw new WideImage_UnknownImageOperationException("Can't load '{$operationName}' operation.");
}
self::$cache[$lcname] = new $opClassName();
}
return self::$cache[$lcname];
}
}

View File

@ -1,136 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
/**
* @package WideImage
*/
class WideImage_PaletteImage extends WideImage_Image
{
/**
* Create a palette image
*
* @param int $width
* @param int $height
* @return WideImage_PaletteImage
*/
static function create($width, $height)
{
if ($width * $height <= 0 || $width < 0)
throw new WideImage_InvalidImageDimensionException("Can't create an image with dimensions [$width, $height].");
return new WideImage_PaletteImage(imagecreate($width, $height));
}
function doCreate($width, $height)
{
return self::create($width, $height);
}
/**
* (non-PHPdoc)
* @see WideImage_Image#isTrueColor()
*/
function isTrueColor()
{
return false;
}
/**
* (non-PHPdoc)
* @see WideImage_Image#asPalette($nColors, $dither, $matchPalette)
*/
function asPalette($nColors = 255, $dither = null, $matchPalette = true)
{
return $this->copy();
}
/**
* Returns a copy of the image
*
* @param $trueColor True if the new image should be truecolor
* @return WideImage_Image
*/
protected function copyAsNew($trueColor = false)
{
$width = $this->getWidth();
$height = $this->getHeight();
if ($trueColor)
$new = WideImage_TrueColorImage::create($width, $height);
else
$new = WideImage_PaletteImage::create($width, $height);
// copy transparency of source to target
if ($this->isTransparent())
{
$rgb = $this->getTransparentColorRGB();
if (is_array($rgb))
{
$tci = $new->allocateColor($rgb['red'], $rgb['green'], $rgb['blue']);
$new->fill(0, 0, $tci);
$new->setTransparentColor($tci);
}
}
imageCopy($new->getHandle(), $this->handle, 0, 0, 0, 0, $width, $height);
return $new;
}
/**
* (non-PHPdoc)
* @see WideImage_Image#asTrueColor()
*/
function asTrueColor()
{
$width = $this->getWidth();
$height = $this->getHeight();
$new = WideImage::createTrueColorImage($width, $height);
if ($this->isTransparent())
$new->copyTransparencyFrom($this);
if (!imageCopy($new->getHandle(), $this->handle, 0, 0, 0, 0, $width, $height))
throw new WideImage_GDFunctionResultException("imagecopy() returned false");
return $new;
}
/**
* (non-PHPdoc)
* @see WideImage_Image#getChannels()
*/
function getChannels()
{
$args = func_get_args();
if (count($args) == 1 && is_array($args[0]))
$args = $args[0];
return WideImage_OperationFactory::get('CopyChannelsPalette')->execute($this, $args);
}
/**
* (non-PHPdoc)
* @see WideImage_Image#copyNoAlpha()
*/
function copyNoAlpha()
{
return WideImage_Image::loadFromString($this->asString('png'));
}
}

View File

@ -1,218 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
**/
/**
* A class for truecolor image objects
*
* @package WideImage
*/
class WideImage_TrueColorImage extends WideImage_Image
{
/**
* Creates the object
*
* @param resource $handle
*/
function __construct($handle)
{
parent::__construct($handle);
$this->alphaBlending(false);
$this->saveAlpha(true);
}
/**
* Factory method that creates a true-color image object
*
* @param int $width
* @param int $height
* @return WideImage_TrueColorImage
*/
static function create($width, $height)
{
if ($width * $height <= 0 || $width < 0)
throw new WideImage_InvalidImageDimensionException("Can't create an image with dimensions [$width, $height].");
return new WideImage_TrueColorImage(imagecreatetruecolor($width, $height));
}
function doCreate($width, $height)
{
return self::create($width, $height);
}
function isTrueColor()
{
return true;
}
/**
* Sets alpha blending mode via imagealphablending()
*
* @param bool $mode
* @return bool
*/
function alphaBlending($mode)
{
return imagealphablending($this->handle, $mode);
}
/**
* Toggle if alpha channel should be saved with the image via imagesavealpha()
*
* @param bool $on
* @return bool
*/
function saveAlpha($on)
{
return imagesavealpha($this->handle, $on);
}
/**
* Allocates a color and returns its index
*
* This method accepts either each component as an integer value,
* or an associative array that holds the color's components in keys
* 'red', 'green', 'blue', 'alpha'.
*
* @param mixed $R
* @param int $G
* @param int $B
* @param int $A
* @return int
*/
function allocateColorAlpha($R, $G = null, $B = null, $A = null)
{
if (is_array($R))
return imageColorAllocateAlpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
else
return imageColorAllocateAlpha($this->handle, $R, $G, $B, $A);
}
/**
* @see WideImage_Image#asPalette($nColors, $dither, $matchPalette)
*/
function asPalette($nColors = 255, $dither = null, $matchPalette = true)
{
$nColors = intval($nColors);
if ($nColors < 1)
$nColors = 1;
elseif ($nColors > 255)
$nColors = 255;
if ($dither === null)
$dither = $this->isTransparent();
$temp = $this->copy();
imagetruecolortopalette($temp->handle, $dither, $nColors);
if ($matchPalette == true && function_exists('imagecolormatch'))
imagecolormatch($this->handle, $temp->handle);
// The code below isn't working properly; it corrupts transparency on some palette->tc->palette conversions.
// Why is this code here?
/*
if ($this->isTransparent())
{
$trgb = $this->getTransparentColorRGB();
$tci = $temp->getClosestColor($trgb);
$temp->setTransparentColor($tci);
}
/**/
$temp->releaseHandle();
return new WideImage_PaletteImage($temp->handle);
}
/**
* Returns the index of the color that best match the given color components
*
* This method accepts either each component as an integer value,
* or an associative array that holds the color's components in keys
* 'red', 'green', 'blue', 'alpha'.
*
* @param mixed $R Red component value or an associative array
* @param int $G Green component
* @param int $B Blue component
* @param int $A Alpha component
* @return int The color index
*/
function getClosestColorAlpha($R, $G = null, $B = null, $A = null)
{
if (is_array($R))
return imagecolorclosestalpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
else
return imagecolorclosestalpha($this->handle, $R, $G, $B, $A);
}
/**
* Returns the index of the color that exactly match the given color components
*
* This method accepts either each component as an integer value,
* or an associative array that holds the color's components in keys
* 'red', 'green', 'blue', 'alpha'.
*
* @param mixed $R Red component value or an associative array
* @param int $G Green component
* @param int $B Blue component
* @param int $A Alpha component
* @return int The color index
*/
function getExactColorAlpha($R, $G = null, $B = null, $A = null)
{
if (is_array($R))
return imagecolorexactalpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
else
return imagecolorexactalpha($this->handle, $R, $G, $B, $A);
}
/**
* @see WideImage_Image#getChannels()
*/
function getChannels()
{
$args = func_get_args();
if (count($args) == 1 && is_array($args[0]))
$args = $args[0];
return WideImage_OperationFactory::get('CopyChannelsTrueColor')->execute($this, $args);
}
/**
* (non-PHPdoc)
* @see WideImage_Image#copyNoAlpha()
*/
function copyNoAlpha()
{
$prev = $this->saveAlpha(false);
$result = WideImage_Image::loadFromString($this->asString('png'));
$this->saveAlpha($prev);
//$result->releaseHandle();
return $result;
}
/**
* (non-PHPdoc)
* @see WideImage_Image#asTrueColor()
*/
function asTrueColor()
{
return $this->copy();
}
}

View File

@ -1,377 +0,0 @@
<?php
/**
* @author Gasper Kozak
* @copyright 2007-2011
This file is part of WideImage.
WideImage is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
WideImage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with WideImage; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* @package WideImage
**/
require_once WideImage::path() . 'Exception.php';
require_once WideImage::path() . 'Image.php';
require_once WideImage::path() . 'TrueColorImage.php';
require_once WideImage::path() . 'PaletteImage.php';
require_once WideImage::path() . 'Coordinate.php';
require_once WideImage::path() . 'Canvas.php';
require_once WideImage::path() . 'MapperFactory.php';
require_once WideImage::path() . 'OperationFactory.php';
require_once WideImage::path() . 'Font/TTF.php';
require_once WideImage::path() . 'Font/GDF.php';
require_once WideImage::path() . 'Font/PS.php';
/**
* @package Exceptions
*/
class WideImage_InvalidImageHandleException extends WideImage_Exception {}
/**
* @package Exceptions
*/
class WideImage_InvalidImageSourceException extends WideImage_Exception {}
/**
* @package Exceptions
*
* Class for invalid GD function calls result (for example those that return bool)
*/
class WideImage_GDFunctionResultException extends WideImage_Exception {}
/**
* The gateway class for loading images and core library functions
*
* @package WideImage
*/
class WideImage
{
const SIDE_TOP_LEFT = 1;
const SIDE_TOP = 2;
const SIDE_TOP_RIGHT = 4;
const SIDE_RIGHT = 8;
const SIDE_BOTTOM_RIGHT = 16;
const SIDE_BOTTOM = 32;
const SIDE_BOTTOM_LEFT = 64;
const SIDE_LEFT = 128;
const SIDE_ALL = 255;
/**
* @var string Path to the library base directory
*/
protected static $path = null;
/**
* Returns the library version
* @return string The library version
*/
static function version()
{
return '11.02.19';
}
/**
* Returns the path to the library
* @return string
*/
static function path()
{
if (self::$path === null)
self::$path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
return self::$path;
}
/**
* Checks whether the gd library is loaded, and throws an exception otherwise
*/
static function checkGD()
{
if (!extension_loaded('gd'))
throw new WideImage_Exception("WideImage requires the GD extension, but it's apparently not loaded.");
}
/**
* Registers a custom mapper for image loading and saving
*
* Example:
* <code>
* WideImage::registerCustomMapper('WideImage_Mapper_TGA', 'image/tga', 'tga');
* </code>
*
* @param string $mapper_class_name
* @param string $mime_type
* @param string $extension
*/
static function registerCustomMapper($mapper_class_name, $mime_type, $extension)
{
WideImage_MapperFactory::registerMapper($mapper_class_name, $mime_type, strtoupper($extension));
}
/**
* Loads an image from a file, URL, HTML input file field, binary string, or a valid image handle.
* The image format is auto-detected.
*
* Currently supported formats: PNG, GIF, JPG, BMP, TGA, GD, GD2.
*
* This function analyzes the input and decides whether to use WideImage::loadFromHandle(),
* WideImage::loadFromFile(), WideImage::loadFromUpload() or WideImage::loadFromString(),
* all of which you can also call directly to spare WideImage some guessing.
*
* Arrays are supported for upload fields; it returns an array of loaded images.
* To load only a single image from an array field, use WideImage::loadFromUpload('img', $i),
* where $i is the index of the image you want to load.
*
* <code>
* $img = WideImage::load('http://url/image.png'); // image URL
* $img = WideImage::load('/path/to/image.png'); // local file path
* $img = WideImage::load('img'); // upload field name
* $img = WideImage::load(imagecreatetruecolor(10, 10)); // a GD resource
* $img = WideImage::load($image_data); // binary string containing image data
* </code>
*
* @param mixed $source File name, url, HTML file input field name, binary string, or a GD image resource
* @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
*/
static function load($source)
{
$predictedSourceType = '';
if ($source == '')
$predictedSourceType = 'String';
// Creating image via a valid resource
if (!$predictedSourceType && self::isValidImageHandle($source))
$predictedSourceType = 'Handle';
// Check for binary string
if (!$predictedSourceType)
{
// search first $binLength bytes (at a maximum) for ord<32 characters (binary image data)
$binLength = 64;
$sourceLength = strlen($source);
$maxlen = ($sourceLength > $binLength) ? $binLength : $sourceLength;
for ($i = 0; $i < $maxlen; $i++)
if (ord($source[$i]) < 32)
{
$predictedSourceType = 'String';
break;
}
}
// Uploaded image (array uploads not supported)
if (isset($_FILES[$source]) && isset($_FILES[$source]['tmp_name']))
$predictedSourceType = 'Upload';
// Otherwise, must be a file or an URL
if (!$predictedSourceType)
$predictedSourceType = 'File';
return call_user_func(array('WideImage', 'loadFrom' . $predictedSourceType), $source);
}
/**
* Create and load an image from a file or URL. The image format is auto-detected.
*
* @param string $uri File or url
* @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
*/
static function loadFromFile($uri)
{
$data = file_get_contents($uri);
$handle = @imagecreatefromstring($data);
if (!self::isValidImageHandle($handle))
{
try
{
// try to find a mapper first
$mapper = WideImage_MapperFactory::selectMapper($uri);
if ($mapper)
$handle = $mapper->load($uri);
}
catch (WideImage_UnsupportedFormatException $e)
{
// mapper not found
}
// try all custom mappers
if (!self::isValidImageHandle($handle))
{
$custom_mappers = WideImage_MapperFactory::getCustomMappers();
foreach ($custom_mappers as $mime_type => $mapper_class)
{
$mapper = WideImage_MapperFactory::selectMapper(null, $mime_type);
$handle = $mapper->loadFromString($data);
if (self::isValidImageHandle($handle))
break;
}
}
}
if (!self::isValidImageHandle($handle))
throw new WideImage_InvalidImageSourceException("File '{$uri}' appears to be an invalid image source.");
return self::loadFromHandle($handle);
}
/**
* Create and load an image from a string. Format is auto-detected.
*
* @param string $string Binary data, i.e. from BLOB field in the database
* @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
*/
static function loadFromString($string)
{
if (strlen($string) < 128)
throw new WideImage_InvalidImageSourceException("String doesn't contain image data.");
$handle = @imagecreatefromstring($string);
if (!self::isValidImageHandle($handle))
{
$custom_mappers = WideImage_MapperFactory::getCustomMappers();
foreach ($custom_mappers as $mime_type => $mapper_class)
{
$mapper = WideImage_MapperFactory::selectMapper(null, $mime_type);
$handle = $mapper->loadFromString($string);
if (self::isValidImageHandle($handle))
break;
}
}
if (!self::isValidImageHandle($handle))
throw new WideImage_InvalidImageSourceException("String doesn't contain valid image data.");
return self::loadFromHandle($handle);
}
/**
* Create and load an image from an image handle.
*
* <b>Note:</b> the resulting image object takes ownership of the passed
* handle. When the newly-created image object is destroyed, the handle is
* destroyed too, so it's not a valid image handle anymore. In order to
* preserve the handle for use after object destruction, you have to call
* WideImage_Image::releaseHandle() on the created image instance prior to its
* destruction.
*
* <code>
* $handle = imagecreatefrompng('file.png');
* $image = WideImage::loadFromHandle($handle);
* </code>
*
* @param resource $handle A valid GD image resource
* @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
*/
static function loadFromHandle($handle)
{
if (!self::isValidImageHandle($handle))
throw new WideImage_InvalidImageSourceException("Handle is not a valid GD image resource.");
if (imageistruecolor($handle))
return new WideImage_TrueColorImage($handle);
else
return new WideImage_PaletteImage($handle);
}
/**
* This method loads a file from the $_FILES array. The image format is auto-detected.
*
* You only have to pass the field name as the parameter. For array fields, this function will
* return an array of image objects, unless you specify the $index parameter, which will
* load the desired image.
*
* @param $field_name Name of the key in $_FILES array
* @param int $index The index of the file to load (if the input field is an array)
* @return WideImage_Image The loaded image
*/
static function loadFromUpload($field_name, $index = null)
{
if (!array_key_exists($field_name, $_FILES))
throw new WideImage_InvalidImageSourceException("Upload field '{$field_name}' doesn't exist.");
if (is_array($_FILES[$field_name]['tmp_name']))
{
if (isset($_FILES[$field_name]['tmp_name'][$index]))
$filename = $_FILES[$field_name]['tmp_name'][$index];
else
{
$result = array();
foreach ($_FILES[$field_name]['tmp_name'] as $idx => $tmp_name)
$result[$idx] = self::loadFromFile($tmp_name);
return $result;
}
}
else
$filename = $_FILES[$field_name]['tmp_name'];
if (!file_exists($filename))
throw new WideImage_InvalidImageSourceException("Uploaded file doesn't exist.");
return self::loadFromFile($filename);
}
/**
* Factory method for creating a palette image
*
* @param int $width
* @param int $height
* @return WideImage_PaletteImage
*/
static function createPaletteImage($width, $height)
{
return WideImage_PaletteImage::create($width, $height);
}
/**
* Factory method for creating a true-color image
*
* @param int $width
* @param int $height
* @return WideImage_TrueColorImage
*/
static function createTrueColorImage($width, $height)
{
return WideImage_TrueColorImage::create($width, $height);
}
/**
* Check whether the given handle is a valid GD resource
*
* @param mixed $handle The variable to check
* @return bool
*/
static function isValidImageHandle($handle)
{
return (is_resource($handle) && get_resource_type($handle) == 'gd');
}
/**
* Throws exception if the handle isn't a valid GD resource
*
* @param mixed $handle The variable to check
*/
static function assertValidImageHandle($handle)
{
if (!self::isValidImageHandle($handle))
throw new WideImage_InvalidImageHandleException("{$handle} is not a valid image handle.");
}
}
WideImage::checkGD();
WideImage::registerCustomMapper('WideImage_Mapper_BMP', 'image/bmp', 'bmp');
WideImage::registerCustomMapper('WideImage_Mapper_TGA', 'image/tga', 'tga');

View File

@ -10,12 +10,12 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
@version 2.2.3
@build 22nd November, 2016
@version 2.4.6
@build 20th May, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php
@author Llewellyn van der Merwe <https://www.vdm.io/joomla-component-builder>
@author Llewellyn van der Merwe <http://vdm.bz/component-builder>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
@ -44,7 +44,10 @@ $document->addScript('components/com_componentbuilder/assets/js/admin.js');
// require helper files
JLoader::register('ComponentbuilderHelper', dirname(__FILE__) . '/helpers/componentbuilder.php');
JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php');
JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php');
// Triger the Global Admin Event
ComponentbuilderHelper::globalEvent($document);
// import joomla controller library
jimport('joomla.application.component.controller');

View File

@ -61,6 +61,19 @@
<option value="0">
COM_COMPONENTBUILDER_CONFIG_NO</option>
</field>
<!-- Percentagelanguageadd Field. Type: Number. (joomla) -->
<field
type="number"
name="percentagelanguageadd"
label="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_LABEL"
default="50"
description="COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_DESCRIPTION"
class="text_area"
required="true"
min="10"
max="100"
step="10"
/>
<!-- Spacer_hr_a Field. Type: Spacer. A None Database Field. (joomla) -->
<field type="spacer" name="spacer_hr_a" hr="true" class="spacer_hr_a" />
<field name="autorTitle"
@ -81,7 +94,7 @@
label="COM_COMPONENTBUILDER_CONFIG_AUTHOR_EMAIL_LABEL"
description="COM_COMPONENTBUILDER_CONFIG_AUTHOR_EMAIL_DESC"
size="60"
default="info@vdm.io"
default="joomla@vdm.io"
readonly="true"
class="readonly"
/>
@ -222,6 +235,116 @@
message="Error! Please add folder path here."
hint="COM_COMPONENTBUILDER_CONFIG_GIT_FOLDER_PATH_HINT"
/>
</fieldset>
<fieldset
name="company_custom_config"
label="COM_COMPONENTBUILDER_CONFIG_COMPANY">
<!-- Export_company Field. Type: Text. (joomla) -->
<field
type="text"
name="export_company"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_LABEL"
size="40"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="Error! Please add company name here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_COMPANY_HINT"
/>
<!-- Export_owner Field. Type: Text. (joomla) -->
<field
type="text"
name="export_owner"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_LABEL"
size="10"
maxlength="120"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="HTML"
message="Error! Please add owner name here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_OWNER_HINT"
/>
<!-- Export_email Field. Type: Text. (joomla) -->
<field
type="text"
name="export_email"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_LABEL"
size="40"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_DESCRIPTION"
class="text_area"
required="true"
filter="STRING"
validate="email"
message="Error! Please email address here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_EMAIL_HINT"
/>
<!-- Export_website Field. Type: Url. (joomla) -->
<field
type="url"
name="export_website"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_DESCRIPTION"
class="text_area"
required="true"
filter="url"
validated="url"
message="Error! Please add website here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_WEBSITE_HINT"
/>
<!-- Export_license Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="export_license"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_LABEL"
rows="7"
cols="10"
default="GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_DESCRIPTION"
class="text_area span12"
filter="HTML"
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_LICENSE_HINT"
required="true"
/>
<!-- Export_copyright Field. Type: Textarea. (joomla) -->
<field
type="textarea"
name="export_copyright"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_LABEL"
rows="7"
cols="10"
default="Copyright (C) 2015. All Rights Reserved"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_DESCRIPTION"
class="text_area span12"
filter="HTML"
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_COPYRIGHT_HINT"
required="true"
/>
<!-- Export_buy_link Field. Type: Url. (joomla) -->
<field
type="url"
name="export_buy_link"
label="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_LABEL"
size="60"
maxlength="150"
description="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_DESCRIPTION"
class="text_area"
required="false"
filter="url"
validated="url"
message="Error! Please add link here."
hint="COM_COMPONENTBUILDER_CONFIG_EXPORT_BUY_LINK_HINT"
/>
</fieldset>
<fieldset
name="permissions"

Some files were not shown because too many files have changed in this diff Show More