3
3
* Class for the base update
4
4
*
5
5
* @package Cherry_Base_Update
6
- * @subpackage Bace_Update
6
+ * @subpackage Base_Update
7
7
* @author Cherry Team <[email protected] >
8
8
* @copyright Copyright (c) 2012 - 2015, Cherry Team
9
9
* @link http://www.cherryframework.com/
@@ -25,70 +25,53 @@ class Cherry_Base_Update {
25
25
protected $ api = array (
26
26
'version ' => '' ,
27
27
'slug ' => '' ,
28
- 'hub_url ' => 'https://github.com/ ' ,
29
- 'api_url ' => 'https://api.github.com/repos/ ' ,
28
+ 'cloud_url ' => 'https://cloud.cherryframework.com/cherry-update/ ' ,
30
29
'product_name ' => 'CherryFramework ' ,
31
- 'repository_name ' => '' ,
32
- 'brunch_name ' => 'master ' ,
33
- 'important_release ' => '-imp ' ,
34
- 'alpha_release ' => '-alpha ' , //To alpha update need constant CHERRY_ALPHA_UPDATE - true
35
- 'beta_release ' => '-beta ' , //To beta update need constant CHERRY_BETA_UPDATE - true
36
- 'sslverify ' => true
30
+ 'repository_name ' => ''
37
31
);
38
32
39
33
protected function base_init ( $ attr = array () ){
40
- $ this ->api = array_merge ( $ this ->api , $ attr );
41
34
42
- add_filter ( 'upgrader_source_selection ' , array ( $ this , 'rename_github_folder ' ), 11 , 3 );
35
+ $ this ->api = array_merge ( $ this ->api , $ attr );
36
+
43
37
}
44
38
45
39
protected function check_update () {
46
- $ query = $ this -> api [ 'api_url ' ] . $ this -> api [ 'product_name ' ] . '/ ' . $ this -> api [ 'repository_name ' ] . '/tags ' ;
47
- $ response = $ this -> remote_query ( $ query );
48
- $ new_version = false ;
49
- $ url = '' ;
50
- $ package = '' ;
51
-
52
- if ( $ response ){
53
-
54
- $ response = array_reverse ( $ response );
55
- $ last_update = count ( $ response )-1 ;
56
- $ current_version = $ this -> api [ 'version ' ];
57
-
58
- foreach ($ response as $ key => $ update ) {
59
-
60
- $ get_new_version = strtolower ( $ update ->name );
61
- $ update_label = preg_replace ( '/[v]?[\d\.]+[v]?/ ' , '' , $ get_new_version );
62
- $ get_new_version = preg_replace ( '/[^\d\.]/ ' , '' , $ get_new_version );
63
-
64
- $ this -> api [ 'details_url ' ] = 'https://github.com/ ' . $ this -> api [ 'product_name ' ] . '/ ' . $ this -> api [ 'slug ' ] . '/releases/tag/ ' . $ update ->name ;
65
- $ package = $ update ->zipball_url ;
66
-
67
- if ( version_compare ( $ get_new_version , $ current_version ) > 0 && strpos ( $ update_label , $ this -> api [ 'important_release ' ] ) !== false ){
68
-
69
- $ new_version = $ get_new_version ;
70
- break ;
71
- }
40
+ $ args = array (
41
+ 'user-agent ' => 'WordPress ' ,
42
+ 'github_repository ' => $ this ->api [ 'product_name ' ] . '/ ' . $ this ->api [ 'repository_name ' ],
43
+ 'current_version ' => $ this ->api [ 'version ' ],
44
+ 'up_query_limit ' => false ,
45
+ 'get_alpha ' => false ,
46
+ 'get_beta ' => false
47
+ );
72
48
73
- if ( version_compare ( $ get_new_version , $ current_version ) > 0 && $ key === $ last_update ){
49
+ if ( defined ( 'CHERRY_ALPHA_UPDATE ' ) ){
50
+ $ args [ 'get_alpha ' ] = true ;
51
+ }
74
52
75
- if ($ update_label !== $ this -> api [ ' alpha_release ' ] && $ update_label !== $ this -> api [ ' beta_release ' ]
76
- || $ update_label === $ this -> api [ 'alpha_release ' ] && @ constant ( ' CHERRY_ALPHA_UPDATE ' ) == true
77
- || $ update_label === $ this -> api [ ' beta_release ' ] && @ constant ( ' CHERRY_BETA_UPDATE ' ) == true ){
53
+ if ( defined ( ' CHERRY_BETA_UPDATE ' ) ){
54
+ $ args [ 'get_beta ' ] = true ;
55
+ }
78
56
79
- $ new_version = $ get_new_version ;
57
+ if ( defined ( 'CHERRY_UP_QUERY_LIMIT ' ) ){
58
+ $ args [ 'up_query_limit ' ] = true ;
59
+ }
80
60
81
- }
82
- break ;
83
- }
84
- }
61
+ $ response = $ this -> remote_query ( $ args );
85
62
86
- return array ( 'version ' => $ new_version , 'package ' => $ package );
63
+ if ( $ response && $ response !=='not_update ' ){
64
+ $ this ->api [ 'details_url ' ] = $ response ->details_url ;
65
+ return array ( 'version ' => $ response ->new_version , 'package ' => $ response ->package );
87
66
}
67
+
68
+ return array ( 'version ' => false );
88
69
}
89
70
90
- protected function remote_query ( $ query ) {
91
- $ response = wp_remote_get ( $ query , array ( 'sslverify ' => $ this -> api [ 'sslverify ' ] , 'user-agent ' => $ this -> api [ 'product_name ' ] ) );
71
+ protected function remote_query ( $ args ) {
72
+ $ query = add_query_arg ( $ args , $ this ->api ['cloud_url ' ] );
73
+
74
+ $ response = wp_remote_get ( $ query );
92
75
93
76
if ( is_wp_error ( $ response ) || wp_remote_retrieve_response_code ( $ response ) != '200 ' ) {
94
77
return false ;
@@ -100,12 +83,9 @@ protected function remote_query( $query ) {
100
83
}
101
84
102
85
public function rename_github_folder ( $ upgrate_dir , $ remote_dir , $ skin_upgrader ){
103
- $ skin_theme = isset ($ skin_upgrader ->skin ->theme ) ? $ skin_upgrader ->skin ->theme : '' ;
104
- $ skin_plugin = isset ($ skin_upgrader ->skin ->plugin ) ? $ skin_upgrader ->skin ->plugin : '' ;
105
-
106
- if ( $ skin_theme === $ this -> api [ 'slug ' ] || $ skin_plugin === $ this -> api [ 'slug ' ] ){
86
+ if ( strpos ( $ upgrate_dir , $ this ->api [ 'slug ' ] ) !== false ){
107
87
$ upgrate_dir_path = pathinfo ( $ upgrate_dir );
108
- $ new_upgrate_dir = trailingslashit ( $ upgrate_dir_path [ 'dirname ' ] ) . trailingslashit ( $ this -> api [ 'slug ' ] );
88
+ $ new_upgrate_dir = trailingslashit ( $ upgrate_dir_path [ 'dirname ' ] ) . trailingslashit ( $ this -> api [ 'slug ' ] );
109
89
110
90
rename ( $ upgrate_dir , $ new_upgrate_dir );
111
91
0 commit comments