PluginProbe
CSS & JavaScript Toolbox / trunk
CSS & JavaScript Toolbox vtrunk
trunk 0.3 0.8 10 10.1 11 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.9.1 12 12.0 12.0.1 12.0.3 12.0.4 12.0.5 12.0.6 12.0.7 6.0 6.0.11 All 60 releases
css-javascript-toolbox / framework / extensions / package / extension.php

extension.php in CSS & JavaScript Toolbox trunk, at framework/extensions/package/extension.php

164 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 *
4 */
5
6 /**
7 *
8 */
9 abstract class CJT_Framework_Extensions_Package_Extension extends CJTHookableClass {
10
11 /**
12 * put your comment there...
13 *
14 * @var mixed
15 */
16 protected $extension;
17
18 /**
19 * put your comment there...
20 *
21 * @var mixed
22 */
23 protected $extensionClass;
24
25 /**
26 * put your comment there...
27 *
28 * @param mixed $extension
29 * @return CJT_Framework_Extensions_Package_Extension
30 */
31 public function __construct($extension) {
32 # Hold extension class
33 $this->extensionClass = get_class($this);
34 $this->extension =& $extension;
35 }
36
37 /**
38 * Uninstaller for all Package Extension
39 *
40 * @param mixed $method
41 * @param mixed $params
42 * @return CJTWordpressEvents
43 */
44 public static function __callStatic($method, $params) {
45 # Initialize
46 $packageModel = CJTModel::getInstance('package');
47 # Getting extension package class name
48 $extensionClass = basename(str_replace('_', DIRECTORY_SEPARATOR, $method));
49 # Extension state
50 $extensionState = CJT_Framework_Extensions_Package_State_Extension::create($extensionClass);
51 $extensionPackagesState = new CJT_Framework_Extensions_Package_State_Packages($extensionState->getExtensionDeDoc());
52 # Delete extension packages
53 foreach ($extensionPackagesState->getInstalledPackages() as $name => $iPack) {
54 # Remove package
55 $packageModel->delete($iPack['id']);
56 }
57 # Remove install information
58 $extensionPackagesState->clearInstallInfo();
59 $extensionState->clearInstallInfo();
60 }
61
62 /**
63 * put your comment there...
64 *
65 */
66 public function _checkInstallationState() {
67 # Initialize
68 $extensionClass = $this->extensionClass;
69 $extension =& $this->extension;
70 $extensionDeDoc =& $extension['defDoc'];
71 $extensionState = new CJT_Framework_Extensions_Package_State_Extension($extensionDeDoc);
72 # Upgrade and Install is the same both
73 # required checking the packages inside
74 # Package-Extension is a only a wrapper for packages inside!
75 if ($extensionState->getState() != CJT_Framework_Extensions_Package_State_Extension::INSTALLED) {
76 # Initialize
77 $packageFileModel = CJTModel::getInstance('package-file');
78 $packageModel = CJTModel::getInstance('package');
79 $extensionDir = WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . $extension['dir'];
80 $packagesFolderPath = $extensionDir . DIRECTORY_SEPARATOR . ((string) $extensionDeDoc->packages->attributes()->folder);
81 # Getting packages state
82 $extensionPackagesState = new CJT_Framework_Extensions_Package_State_Packages($extensionDeDoc);
83 # Check packages
84 foreach ($extensionPackagesState as $pckName => $package) {
85 # Get state
86 $pckState = $extensionPackagesState->getState();
87 # If not yet installed or requied upgrade
88 if ($pckState != CJT_Framework_Extensions_Package_State_Packages::INSTALLED) {
89 # Take action based on package installation state
90 switch ($pckState) {
91 case CJT_Framework_Extensions_Package_State_Packages::UPGRADE;
92 # Delete package
93 $packageModel->delete($package['id']);
94 break;
95 }
96 # Get package file info.
97 $packageFile = $packagesFolderPath . DIRECTORY_SEPARATOR . $package['file'];
98 # Add/Create Package
99 $packageCJTToken = $packageFileModel->parse(uniqid(), $packageFile);
100 $packageId = $packageFileModel->install($packageCJTToken);
101 # Mark as installed/created/added
102 $extensionPackagesState->packageInstalled($packageId);
103 }
104 # Remove from queue
105 $extensionPackagesState->removeOld();
106 }
107 # Packages to delete!
108 foreach ($extensionPackagesState->getDeletedPackages() as $name => $deletedPack) {
109 # Delete package
110 $packageModel->delete($deletedPack['id']);
111 }
112 # Upgrade packages state
113 $extensionPackagesState->upgrade();
114 # Upgrade extension state
115 $extensionState->upgrade($extension['defFile']);
116 # Register uninstaller
117 register_uninstall_hook($extension['pluginFile'], array(__CLASS__, "uninstall_{$extensionClass}"));
118 }
119 }
120
121 /**
122 * put your comment there...
123 *
124 */
125 public function _extensionDeactivated() {
126 # Initialize
127 $extension =& $this->extension;
128 $statePackage = new CJT_Framework_Extensions_Package_State_Packages($extension['defDoc']);
129 $extBlocks = new CJT_Framework_Extensions_Package_Blocks($statePackage);
130 # Enable all Blocks associated with extension packages
131 $extBlocks->setState(CJT_Framework_Extensions_Package_Blocks::INACTIVE);
132 }
133
134 /**
135 * put your comment there...
136 *
137 */
138 public function getInvolved() {
139 # Check installation state
140 if (CJTPlugin::getInstance()->isInstalled()) {
141 # INitialize
142 $extensionClass = $this->extensionClass;
143 $extension =& $this->extension;
144 $extensionFile = WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . $extension['dir'] . DIRECTORY_SEPARATOR . $extension['file'];
145 # Load/install extensions packages hook
146 add_action('init', array($this, '_checkInstallationState'));
147 # Deactivation hooks
148 register_deactivation_hook($extensionFile, array($this, '_extensionDeactivated'));
149 }
150 }
151
152 /**
153 * put your comment there...
154 *
155 * @param mixed $class
156 */
157 public static function getPluginExtensionClass($object) {
158 return str_replace('_Plugin', '', get_class($object));
159 }
160
161 } # End class
162
163 // Hiookable!
164 CJT_Framework_Extensions_Package_Extension::define('CJT_Framework_Extensions_Package_Extension', array('hookType' => CJTWordpressEvents::HOOK_FILTER));