@@ -139,10 +139,36 @@ public function __construct( $basefile ) {
139139 $ install = get_option ( $ this ->get_key () . '_install ' , 0 );
140140 if ( 0 === $ install ) {
141141 $ install = time ();
142+ /**
143+ * Action to be triggered when the product is first activated.
144+ *
145+ * @param string $basefile The basefile of the product.
146+ */
147+ do_action ( 'themeisle_sdk_first_activation ' , $ basefile );
148+
142149 update_option ( $ this ->get_key () . '_install ' , time () );
143150 }
144151 $ this ->install = $ install ;
145152 self ::$ cached_products [ crc32 ( $ basefile ) ] = $ this ;
153+ $ current_version = get_option ( $ this ->slug . '_version ' , '' );
154+
155+ if ( $ current_version !== $ this ->version && wp_cache_get ( "{$ this ->slug }_version_upgrade " ) === false ) {
156+ // Set the cache lock to avoid multiple calls.
157+ wp_cache_set ( "{$ this ->slug }_version_upgrade " , true , HOUR_IN_SECONDS );
158+ /**
159+ * Action to be triggered when the product is updated.
160+ *
161+ * @param string $current_version The current version of the product.
162+ * @param string $new_version The new version of the product.
163+ * @param string $basefile The basefile of the product.
164+ */
165+ do_action ( "themeisle_sdk_update_ {$ this ->slug }" , $ current_version , $ this ->version , $ basefile );
166+
167+ // Update the version of the product.
168+ update_option ( "{$ this ->slug }_version " , $ this ->version );
169+ // Delete the cache lock.
170+ wp_cache_delete ( "{$ this ->slug }_version_upgrade " );
171+ }
146172 }
147173
148174 /**
0 commit comments