PluginProbe
FluentSnippets – High-Performance Code Snippets, Header & Footer Code, Custom CSS & PHP Code Manager / 1.2.1
FluentSnippets – High-Performance Code Snippets, Header & Footer Code, Custom CSS & PHP Code Manager v1.2.1
10.56 1.2.1 10 10.1 10.2 10.3 10.31 10.32 10.33 10.34 10.50 10.51 10.52 10.53 10.55 9.0 9.0.1 9.4 trunk 1.0.0 1.1 1.2
easy-code-manager / framework / extensions / package / extension.php

extension.php in FluentSnippets – High-Performance Code Snippets, Header & Footer Code, Custom CSS & PHP Code Manager 1.2.1, 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 = ABSPATH . PLUGINDIR . 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 = ABSPATH . PLUGINDIR . 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));