jdt 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. data/.gitignore +6 -0
  2. data/.rspec +2 -0
  3. data/CHANGELOG.md +1 -0
  4. data/Gemfile +9 -0
  5. data/Gemfile.lock +64 -0
  6. data/LICENSE +7 -0
  7. data/README.md +101 -0
  8. data/Rakefile +2 -0
  9. data/bin/jdt +16 -0
  10. data/features/build.feature +0 -0
  11. data/features/manifest.feature +25 -0
  12. data/features/new.feature +97 -0
  13. data/features/release.feature +47 -0
  14. data/features/status.feature +22 -0
  15. data/features/step_definitions/my_steps.rb +37 -0
  16. data/features/support/env.rb +7 -0
  17. data/features/support/setup.rb +2 -0
  18. data/features/validate.feature +0 -0
  19. data/features/version.feature +9 -0
  20. data/jdt.gemspec +25 -0
  21. data/lib/jdt/cli.rb +34 -0
  22. data/lib/jdt/commands/build.rb +28 -0
  23. data/lib/jdt/commands/bump.rb +37 -0
  24. data/lib/jdt/commands/install.rb +20 -0
  25. data/lib/jdt/commands/new.rb +31 -0
  26. data/lib/jdt/commands/pretty_print.rb +16 -0
  27. data/lib/jdt/commands/secure.rb +19 -0
  28. data/lib/jdt/commands/status.rb +21 -0
  29. data/lib/jdt/commands/validate.rb +35 -0
  30. data/lib/jdt/commands/version.rb +18 -0
  31. data/lib/jdt/generator/generator.rb +262 -0
  32. data/lib/jdt/generator/templates/access.xml.erb +10 -0
  33. data/lib/jdt/generator/templates/component/admin/access.xml.erb +0 -0
  34. data/lib/jdt/generator/templates/component/admin/com_name.erb +0 -0
  35. data/lib/jdt/generator/templates/component/admin/config.xml.erb +0 -0
  36. data/lib/jdt/generator/templates/component/admin/controller.erb +0 -0
  37. data/lib/jdt/generator/templates/component/admin/views/view_name/tmpl/default.erb +0 -0
  38. data/lib/jdt/generator/templates/component/admin/views/view_name/view.html.erb +0 -0
  39. data/lib/jdt/generator/templates/component/index.html.erb +1 -0
  40. data/lib/jdt/generator/templates/component/manifest.xml.erb +46 -0
  41. data/lib/jdt/generator/templates/component/script.php.erb +66 -0
  42. data/lib/jdt/generator/templates/component/site/com_name.php.erb +15 -0
  43. data/lib/jdt/generator/templates/component/site/controller.php.erb +14 -0
  44. data/lib/jdt/generator/templates/component/site/models/com_model_name.erb +0 -0
  45. data/lib/jdt/generator/templates/component/site/views/view_name/tmpl/default.php.erb +0 -0
  46. data/lib/jdt/generator/templates/component/site/views/view_name/tmpl/default.xml.erb +0 -0
  47. data/lib/jdt/generator/templates/component/site/views/view_name/view.html.erb +0 -0
  48. data/lib/jdt/generator/templates/config.xml.erb +6 -0
  49. data/lib/jdt/generator/templates/controller.php.erb +13 -0
  50. data/lib/jdt/generator/templates/dummy_html.erb +1 -0
  51. data/lib/jdt/generator/templates/entry.erb +15 -0
  52. data/lib/jdt/generator/templates/manifest.xml.erb +59 -0
  53. data/lib/jdt/generator/templates/module/helper.php.erb +14 -0
  54. data/lib/jdt/generator/templates/module/manifest.xml.erb +16 -0
  55. data/lib/jdt/generator/templates/module/mod_name.php.erb +10 -0
  56. data/lib/jdt/generator/templates/module/tmpl/default.php.erb +3 -0
  57. data/lib/jdt/generator/templates/plugin/main.php.erb +0 -0
  58. data/lib/jdt/generator/templates/plugin/manifest.xml.erb +16 -0
  59. data/lib/jdt/generator/templates/script.php.erb +66 -0
  60. data/lib/jdt/generator.rb +1 -0
  61. data/lib/jdt/manifest/attributes.rb +77 -0
  62. data/lib/jdt/manifest/build.rb +106 -0
  63. data/lib/jdt/manifest/bump.rb +40 -0
  64. data/lib/jdt/manifest/find.rb +58 -0
  65. data/lib/jdt/manifest/library_manifest.rb +19 -0
  66. data/lib/jdt/manifest/manifest.rb +29 -0
  67. data/lib/jdt/manifest/referenced.rb +96 -0
  68. data/lib/jdt/manifest/schemas/library.xsd +80 -0
  69. data/lib/jdt/manifest/schemas/manifest.xsd +32 -0
  70. data/lib/jdt/manifest/secure.rb +39 -0
  71. data/lib/jdt/manifest/validation.rb +121 -0
  72. data/lib/jdt/manifest/xslts/pretty_print.xsl +46 -0
  73. data/lib/jdt/manifest.rb +9 -0
  74. data/lib/jdt/version.rb +3 -0
  75. data/lib/jdt.rb +0 -0
  76. data/lib/not_yet_added/deploy.rb +54 -0
  77. data/lib/not_yet_added/xampp.rb +82 -0
  78. data/spec/jdt/generator/generator_spec.rb +55 -0
  79. data/spec/jdt/manifest/data/example_library/.gitignore +1 -0
  80. data/spec/jdt/manifest/data/example_library/ActiveRecord.php +3 -0
  81. data/spec/jdt/manifest/data/example_library/JoomlaActiveRecord.php +56 -0
  82. data/spec/jdt/manifest/data/example_library/JoomlaConfig.php +42 -0
  83. data/spec/jdt/manifest/data/example_library/README.md +51 -0
  84. data/spec/jdt/manifest/data/example_library/dist/asdf.txt +0 -0
  85. data/spec/jdt/manifest/data/example_library/manifest.xml +22 -0
  86. data/spec/jdt/manifest/data/library.xml +33 -0
  87. data/spec/jdt/manifest/data/library_error.xml +23 -0
  88. data/spec/jdt/manifest/data/library_minimum.xml +11 -0
  89. data/spec/jdt/manifest/data/manifest.xml +4 -0
  90. data/spec/jdt/manifest/example_library_spec.rb +27 -0
  91. data/spec/jdt/manifest/finder_spec.rb +58 -0
  92. data/spec/jdt/manifest/library_manifest_spec.rb +17 -0
  93. data/spec/jdt/manifest/manifest_spec.rb +68 -0
  94. data/spec/jdt/manifest/referenced_spec.rb +28 -0
  95. data/spec/jdt/manifest/secure_spec.rb +42 -0
  96. data/spec/jdt/manifest/validation_spec.rb +45 -0
  97. data/spec/jdt/version_spec.rb +9 -0
  98. metadata +211 -0
@@ -0,0 +1,39 @@
1
+ require "thor"
2
+
3
+ module Jdt
4
+
5
+ class Manifest
6
+
7
+ def secure
8
+
9
+ end
10
+
11
+ end
12
+
13
+ class IndexCreater
14
+ include Thor::Actions
15
+
16
+ def initialize (path)
17
+ @path = path
18
+ end
19
+
20
+ def create_index
21
+ create_index_recursive(@path)
22
+ end
23
+
24
+ private
25
+
26
+ def create_index_recursive (path)
27
+ template('/templates/component/index.html.erb', "#{path}/index.html")
28
+ Dir.chdir("#{path}") do
29
+ Dir.glob("*").each do |dir|
30
+ if File.directory?(dir)
31
+ create_index_recursive("#{path}/#{dir}")
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,121 @@
1
+ require "nokogiri"
2
+
3
+ module Jdt
4
+
5
+ class Manifest
6
+
7
+ attr_accessor :errors, :warnings
8
+
9
+ def valid?
10
+ syntax_valid? and semantics_valid?
11
+ end
12
+
13
+ def errors
14
+ if(not @errors)
15
+ @errors = []
16
+ end
17
+ @errors
18
+ end
19
+
20
+ def warnings
21
+ if(not @warnings)
22
+ @warnings = []
23
+ end
24
+ @warnings
25
+ end
26
+
27
+ private
28
+
29
+ def syntax_valid?
30
+ ManifestSchemaValidator.new(self).valid?
31
+ end
32
+
33
+ def semantics_valid?
34
+ # todo change this
35
+ true
36
+ end
37
+
38
+ end
39
+
40
+ class ManifestSchemaValidator
41
+
42
+ SCHEMAS_FOLDER = "#{File.dirname(__FILE__)}/schemas"
43
+
44
+ SCHEMAS = {:manifest => "#{SCHEMAS_FOLDER}/manifest.xsd",
45
+ :library => "#{SCHEMAS_FOLDER}/library.xsd",
46
+ :plugin => "#{SCHEMAS_FOLDER}/plugin.xsd",
47
+ :module => "#{SCHEMAS_FOLDER}/module.xsd",
48
+ :component => "#{SCHEMAS_FOLDER}/component.xsd",
49
+ :template => "#{SCHEMAS_FOLDER}/template.xsd",
50
+ :language => "#{SCHEMAS_FOLDER}/language.xsd",
51
+ :package => "#{SCHEMAS_FOLDER}/package.xsd"}
52
+
53
+ attr_accessor :manifest
54
+
55
+ def initialize(manifest)
56
+ @manifest = manifest
57
+ end
58
+
59
+ def valid?
60
+ validate_manifest and validate_specific
61
+ end
62
+
63
+ private
64
+
65
+ def validate_manifest
66
+ validate_against_schema(SCHEMAS[:manifest])
67
+ end
68
+
69
+ def validate_specific
70
+ validate_against_schema(SCHEMAS[manifest.ext_type.to_sym])
71
+ end
72
+
73
+ def validate_against_schema(schema)
74
+ xsd = Nokogiri::XML::Schema(File.read(schema))
75
+
76
+ xsd.validate(manifest.doc).each do |error|
77
+ @manifest.errors << error.message
78
+ end
79
+
80
+ @manifest.errors.empty?
81
+ end
82
+
83
+ end
84
+
85
+ class ManifestValidator
86
+
87
+ attr_accessor :manifest
88
+
89
+ def initialize(manifest)
90
+ @manifest = manifest
91
+ end
92
+
93
+ # Validates the manifest
94
+ #
95
+ # @return bool true if valid, false otherwise
96
+ def valid?
97
+
98
+ # ERROR when specified files and folders do not exist
99
+
100
+ # ERROR when optional metadata field is missing (version, author, ...)
101
+ # WARNING when metadata is missing
102
+
103
+ # evaluate the validation result
104
+ @manifest.errors.empty?
105
+ end
106
+
107
+ def validate_file_existence(file)
108
+ if (not File.exist?(file))
109
+ manifest.errors << "File #{file} does not exist, but should"
110
+ end
111
+ end
112
+
113
+ def validate_directory_existence(dir)
114
+ if (not Dir.exist?(file))
115
+ manifest.errors << "File #{file} does not exist, but should"
116
+ end
117
+ end
118
+
119
+ end
120
+
121
+ end
@@ -0,0 +1,46 @@
1
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
+ <xsl:output method="xml" encoding="ISO-8859-1"/>
3
+ <xsl:param name="indent-increment" select="' '"/>
4
+
5
+ <xsl:template name="newline">
6
+ <xsl:text disable-output-escaping="yes">
7
+ </xsl:text>
8
+ </xsl:template>
9
+
10
+ <xsl:template match="comment() | processing-instruction()">
11
+ <xsl:param name="indent" select="''"/>
12
+ <xsl:call-template name="newline"/>
13
+ <xsl:value-of select="$indent"/>
14
+ <xsl:copy/>
15
+ </xsl:template>
16
+
17
+ <xsl:template match="text()">
18
+ <xsl:param name="indent" select="''"/>
19
+ <xsl:call-template name="newline"/>
20
+ <xsl:value-of select="$indent"/>
21
+ <xsl:value-of select="normalize-space(.)"/>
22
+ </xsl:template>
23
+
24
+ <xsl:template match="text()[normalize-space(.)='']"/>
25
+
26
+ <xsl:template match="*">
27
+ <xsl:param name="indent" select="''"/>
28
+ <xsl:call-template name="newline"/>
29
+ <xsl:value-of select="$indent"/>
30
+ <xsl:choose>
31
+ <xsl:when test="count(child::*) > 0">
32
+ <xsl:copy>
33
+ <xsl:copy-of select="@*"/>
34
+ <xsl:apply-templates select="*|text()">
35
+ <xsl:with-param name="indent" select="concat ($indent, $indent-increment)"/>
36
+ </xsl:apply-templates>
37
+ <xsl:call-template name="newline"/>
38
+ <xsl:value-of select="$indent"/>
39
+ </xsl:copy>
40
+ </xsl:when>
41
+ <xsl:otherwise>
42
+ <xsl:copy-of select="."/>
43
+ </xsl:otherwise>
44
+ </xsl:choose>
45
+ </xsl:template>
46
+ </xsl:stylesheet>
@@ -0,0 +1,9 @@
1
+ require "jdt/manifest/attributes"
2
+ require "jdt/manifest/build"
3
+ require "jdt/manifest/bump"
4
+ require "jdt/manifest/find"
5
+ require "jdt/manifest/library_manifest"
6
+ require "jdt/manifest/manifest"
7
+ require "jdt/manifest/referenced"
8
+ require "jdt/manifest/secure"
9
+ require "jdt/manifest/validation"
@@ -0,0 +1,3 @@
1
+ module Jdt
2
+ VERSION = "0.0.2"
3
+ end
data/lib/jdt.rb ADDED
File without changes
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'nokogiri'
3
+ require 'mechanize'
4
+
5
+ HOMEPAGE = "http://127.0.0.1/joomla"
6
+ ADMIN = "#{HOMEPAGE}/administrator"
7
+ INSTALLER = "#{ADMIN}/index.php?option=com_installer"
8
+
9
+ agent = Mechanize.new
10
+
11
+ joomla_admin_page = agent.get("#{ADMIN}")
12
+
13
+ # puts joomla_admin_page.forms.first.inspect
14
+ login_form = joomla_admin_page.forms.first
15
+ login_form.field_with(:name => "username").value = "admin"
16
+ login_form.field_with(:name => "passwd").value = "spec"
17
+
18
+ logged_in_admin_page = agent.submit(login_form)
19
+ joomla_install_page = agent.get("#{INSTALLER}")
20
+
21
+ puts joomla_install_page.body
22
+
23
+ install_form = joomla_install_page.forms.first
24
+ puts install_form.inspect
25
+ puts install_form.file_uploads.first.file_name = "com_hello.zip"
26
+
27
+ installed_feedback = agent.submit(install_form)
28
+
29
+ pp installed_feedback
30
+ puts installed_feedback.body
31
+
32
+
33
+ # check if retrieved page exists
34
+ # check if retrieved page is joomla page
35
+ # check if correct form is presented
36
+ # all required fields are available
37
+
38
+ # login and check if the log in worked
39
+ # show error message in case of error
40
+
41
+ # submit install form
42
+ # get output of installation and output it on the console
43
+ # in case of error, mark it as such and give output
44
+
45
+
46
+
47
+
48
+
49
+ # uninstall
50
+
51
+
52
+ # sync locally
53
+ # module, plugin, template, library -> simple, only copy to directory
54
+ # component -> complex
@@ -0,0 +1,82 @@
1
+ require 'thor'
2
+
3
+ class Xampp < Thor
4
+ include Thor::Actions
5
+
6
+ desc "configure","configure server settings"
7
+ def configure
8
+
9
+ # TODO change to extension root directory
10
+ config_file = ".jdt/config.xml"
11
+
12
+ if(!File.exists?(config_file))
13
+ # create config file
14
+ create_file(config_file,"configuration file")
15
+ end
16
+
17
+ # get xampp path
18
+ # TODO what is returned when nothing is entered
19
+ xampp_path = ask("Enter fully qualified xampp path (default: C:\\xampp):")
20
+
21
+ # set xampp path default value if it has not been set
22
+ if(xampp_path == "")
23
+ xampp_path = "c:\\xampp"
24
+ end
25
+
26
+ # store information
27
+ file = File.open(config_file,"rw")
28
+ Nokogiri::XML(file)
29
+
30
+ file.close
31
+
32
+
33
+
34
+ "xampp_path: #{xampp_path}"
35
+
36
+ end
37
+
38
+
39
+ desc "start_server","start apache and mysql server"
40
+ def start_server
41
+ system("cd #{Config::PATH}")
42
+ system("#{Config::PATH}/apache_start.bat")
43
+ system("#{Config::PATH}/mysql_start.bat")
44
+ end
45
+
46
+ desc "stop_server", "stops apache and mysql server"
47
+ def stop_server
48
+ system("#{Config::PATH}/apache_stop.bat")
49
+ system("#{Config::PATH}/mysql_stop.bat")
50
+ end
51
+
52
+ desc "restart","restart apache and mysql server"
53
+ def restart
54
+ stop_server
55
+ start_server
56
+ end
57
+
58
+ desc "php_ini","show php.ini"
59
+ def php_ini
60
+ File.open("#{Config::PATH}/php/php.ini").each_line do |line|
61
+ puts line
62
+ end
63
+ end
64
+
65
+ desc "path","show path to xampp"
66
+ def path
67
+ puts "Path is #{Config::PATH}"
68
+ end
69
+
70
+ =begin
71
+ desc "phpmyadmin","open phpmyadmin in browser"
72
+ def phpmyadmin
73
+ system("#{Config::BROWSER} http://localhost/phpMyAdmin")
74
+ end
75
+
76
+ desc "web","open web in browser"
77
+ def web
78
+ system("#{Config::BROWSER} http://localhost/")
79
+ end
80
+ =end
81
+
82
+ end
@@ -0,0 +1,55 @@
1
+ require "rspec"
2
+ require "tmpdir"
3
+
4
+
5
+ require "jdt/generator"
6
+
7
+ describe Jdt::LibraryGenerator do
8
+
9
+ it "should do generate a library" do
10
+
11
+ generator = Jdt::LibraryGenerator.new("test")
12
+ generator.type.should eq("library")
13
+ generator.type_short.should eq("lib")
14
+ generator.name.should eq("test")
15
+ generator.prefixed_name.should eq("lib_test")
16
+ generator.folder.should eq("./lib_test")
17
+
18
+ Dir.tmpdir do |dir|
19
+
20
+ generator.location = dir
21
+ generator.folder.should eq("#{dir}/lib_test")
22
+
23
+ generator.generate
24
+
25
+ File.exists?("#{dir}/lib_test/manifest.xml").should eq(true)
26
+ end
27
+
28
+ end
29
+ end
30
+
31
+ describe Jdt::ComponentGenerator do
32
+
33
+ it "should generate a component" do
34
+
35
+ generator = Jdt::ComponentGenerator.new("test")
36
+ generator.type.should eq("component")
37
+ generator.type_short.should eq("com")
38
+ generator.name.should eq("test")
39
+ generator.prefixed_name.should eq("com_test")
40
+ generator.folder.should eq("./com_test")
41
+
42
+ Dir.tmpdir do |dir|
43
+
44
+ generator.location = dir
45
+ generator.folder.should eq("#{dir}/com_test")
46
+
47
+ generator.generate
48
+
49
+ File.exists?("#{dir}/com_test/manifest.xml").should eq(true)
50
+ File.directory?("#{dir}/com_test/site").should eq(true)
51
+ File.directory?("#{dir}/com_test/admin").should eq(true)
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,3 @@
1
+ <?php
2
+
3
+ require "dist/ActiveRecord.php";
@@ -0,0 +1,56 @@
1
+ <?php
2
+ if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300)
3
+ die('PHP ActiveRecord requires PHP 5.3 or higher');
4
+
5
+ define('PHP_ACTIVERECORD_VERSION_ID', '1.0');
6
+
7
+ require 'dist/lib/Singleton.php';
8
+ require 'dist/lib/Config.php';
9
+ require 'dist/lib/Utils.php';
10
+ require 'dist/lib/DateTime.php';
11
+ require 'dist/lib/Model.php';
12
+ require 'dist/lib/Table.php';
13
+ require 'dist/lib/ConnectionManager.php';
14
+ require 'dist/lib/Connection.php';
15
+ require 'dist/lib/SQLBuilder.php';
16
+ require 'dist/lib/Reflections.php';
17
+ require 'dist/lib/Inflector.php';
18
+ require 'dist/lib/CallBack.php';
19
+ require 'dist/lib/Exceptions.php';
20
+ require 'JoomlaConfig.php';
21
+
22
+ spl_autoload_register('activerecord_autoload');
23
+
24
+ function activerecord_autoload($class_name)
25
+ {
26
+ // iterate over all directories and search within each of them
27
+ $paths = ActiveRecord\JoomlaConfig::instance()->get_model_directories();
28
+
29
+ foreach ($paths as $path) {
30
+ $root = realpath(isset($path) ? $path : '.');
31
+
32
+ if (($namespaces = ActiveRecord\get_namespaces($class_name))) {
33
+ $class_name = array_pop($namespaces);
34
+ $directories = array();
35
+
36
+ foreach ($namespaces as $directory)
37
+ $directories[] = $directory;
38
+
39
+ $root .= DIRECTORY_SEPARATOR . implode($directories, DIRECTORY_SEPARATOR);
40
+ }
41
+
42
+ $file = "$root/$class_name.php";
43
+
44
+ if (file_exists($file)) {
45
+ require $file;
46
+
47
+ // cancel function as file has been found
48
+ return;
49
+ }
50
+
51
+ }
52
+
53
+
54
+ }
55
+
56
+ ?>
@@ -0,0 +1,42 @@
1
+ <?php
2
+
3
+ namespace ActiveRecord;
4
+
5
+ class JoomlaConfig extends Config
6
+ {
7
+
8
+ private $model_directories = array();
9
+
10
+ public function set_model_directory($dir)
11
+ {
12
+ parent::set_model_directory($dir);
13
+
14
+ // add model path to array of model paths
15
+ array_push($this->model_directories, $dir);
16
+ }
17
+
18
+
19
+ public function get_model_directories()
20
+ {
21
+ return $this->model_directories;
22
+ }
23
+
24
+ public function set_joomla_connection($connection_type = "production")
25
+ {
26
+ // get config from Joomla
27
+ $config = new JConfig();
28
+
29
+ // extract values from Joomla
30
+ $username = $config->user;
31
+ $password = $config->password;
32
+ $host = $config->host;
33
+ $database = $config->db;
34
+
35
+ // compute connection string for ActiveRecord
36
+ $connection = "mysql://$username:$password@$host/$database";
37
+
38
+ // set connection string
39
+ $this->set_connections(array($connection_type => $connection));
40
+ }
41
+
42
+ }
@@ -0,0 +1,51 @@
1
+ # Joomla Library of PHP ActiveRecord
2
+
3
+ This project enwraps the PHP ActiveRecord 1.0 within a Joomla 1.7 Library for easy usage within the CMS Joomla!
4
+
5
+ ## Usage
6
+
7
+ ### Plain PHP ActiveRecord
8
+
9
+ If you want to use the plain ActiveRecord implementation, you have to import them using
10
+
11
+ jimport('activerecord.ActiveRecord');
12
+
13
+ Then, you can use them directly by following the documentation of PHP ActiveRecord.
14
+
15
+ ### Enhanced PHP ActiveRecord (especially for Joomla!)
16
+
17
+ There are some additions and special constructs available for Joomla! components that easens the development. A list of them is stated below:
18
+
19
+ * ActiveRecord can automatically obtain the database credentials and configure itself using the standard Joomla! database
20
+ * Multiple model directories are supported so that every component, module, etc. can use the same ActiveRecord instance but different model locations to ensure encapsulation without performance issues.
21
+
22
+ To load JoomlaActiveRecord in your Joomla Component, just leverage this line:
23
+
24
+ jimport('activerecord.JoomlaActiveRecord');
25
+
26
+ Then, you can use the additional functionality within the configuration:
27
+
28
+ ActiveRecord\JoomlaConfig::initialize(function($cfg){
29
+ // multiple directories are also supported
30
+ $cfg->set_model_directory(JPATH_COMPONENT_ADMINISTRATOR . '/domain/.');
31
+ $cfg->set_model_directory(JPATH_COMPONENT . '/domain/.');
32
+
33
+ // uses the database connection from the Joomla configuration
34
+ $cfg->set_joomla_connection('development');
35
+ });
36
+
37
+ Please note: The configuration is a singleton. Thus, each plugin, module and component can initialize the configuration on its own and this will not result into a performance issue.
38
+
39
+ Additionally, you can call the function set_model_directory for every directory you want to add to the data mapper!
40
+
41
+ Notes:
42
+ * If you use namespaces, you can prevent a auto class loading issue.
43
+ *
44
+
45
+ ## PHP ActiveRecord
46
+
47
+ PHP ActiveRecord is a PHP implementation of the famous ActiveRecord data pattern. More information can be found on the following links:
48
+
49
+ * The official homepage of PHP ActiveRecord: [[http://www.phpactiverecord.org/]]
50
+ * The github project of PHP ActiveRecord: [[https://github.com/kla/php-activerecord]]
51
+ * Explanation of the ActiveRecord pattern: [[http://en.wikipedia.org/wiki/Active_record_pattern]]
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0"?>
2
+ <extension method="upgrade" type="library" version="1.7.0">
3
+
4
+ <name>activerecord</name>
5
+ <libraryname>activerecord</libraryname>
6
+
7
+ <version>2.1.1</version>
8
+ <creationDate>August 2011</creationDate>
9
+ <homepage>https://www.github.com/simonharrer/activerecord</homepage>
10
+
11
+ <author>Simon Harrer</author>
12
+ <authorEmail>simon.harrer@feki.de</authorEmail>
13
+ <authorUrl>http://www.feki.de</authorUrl>
14
+
15
+ <files>
16
+ <filename>JoomlaConfig.php</filename>
17
+ <filename>JoomlaActiveRecord.php</filename>
18
+ <filename>README.md</filename>
19
+ <folder>dist</folder>
20
+ </files>
21
+
22
+ </extension>
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <extension type="library" version="1.7.0" method="upgrade">
3
+
4
+ <name>activerecord</name>
5
+ <description>desc text</description>
6
+ <libraryname>activerecord</libraryname>
7
+
8
+ <version>1.0.0</version>
9
+ <creationDate>August 2011</creationDate>
10
+ <homepage>https://www.github.com/simonharrer/activerecord</homepage>
11
+
12
+ <author>Simon Harrer</author>
13
+ <authorEmail>simon.harrer@feki.de</authorEmail>
14
+ <authorUrl>http://www.feki.de</authorUrl>
15
+
16
+ <license>licsence text</license>
17
+ <copyright>copyright text</copyright>
18
+
19
+ <files>
20
+ <filename>JoomlaConfig.php</filename>
21
+ <filename>JoomlaActiveRecord.php</filename>
22
+ <filename>README.md</filename>
23
+ <folder>dist</folder>
24
+ </files>
25
+
26
+ <scriptfile>example.script.php</scriptfile>
27
+
28
+ <updateservers>
29
+ <server type="extension" priority="1" name="Extension Update Site">http://example.com/extension.xml</server>
30
+ <server type="collection" priority="2" name="Collection Update Site">http://example.com/collection.xml</server>
31
+ </updateservers>
32
+
33
+ </extension>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <extension type="library" version="1.7.0" method="upgrade">
3
+
4
+ <name>activerecord</name>
5
+
6
+ <version>1.0</version>
7
+ <creationDate>August 2011</creationDate>
8
+ <homepage>https://www.github.com/simonharrer/activerecord</homepage>
9
+
10
+ <author>Simon Harrer</author>
11
+ <authorEmail>simon.harrer@feki.de</authorEmail>
12
+ <authorUrl>http://www.feki.de</authorUrl>
13
+
14
+ <test>asdf</test>
15
+
16
+ <scriptfile>example.script.php</scriptfile>
17
+
18
+ <updateservers>
19
+ <server type="extension" priority="1" name="Extension Update Site">http://example.com/extension.xml</server>
20
+ <server type="collection" priority="2" name="Collection Update Site">http://example.com/collection.xml</server>
21
+ </updateservers>
22
+
23
+ </extension>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <extension type="library" version="1.7.0" method="upgrade">
3
+
4
+ <name>activerecord</name>
5
+ <libraryname>activerecord</libraryname>
6
+
7
+ <files>
8
+ <filename>JoomlaConfig.php</filename>
9
+ </files>
10
+
11
+ </extension>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <extension type="library" version="1.7.0" method="upgrade">
3
+
4
+ </extension>