Completed
Push — master ( c01960...01da3a )
by David
54s
created
src/wordlift/cache/class-ttl-cache.php 2 patches
Indentation   +157 added lines, -157 removed lines patch added patch discarded remove patch
@@ -17,177 +17,177 @@
 block discarded – undo
17 17
 // @@todo: add a hook to clear the cached files now and then.
18 18
 class Ttl_Cache {
19 19
 
20
-	/**
21
-	 * The cache name.
22
-	 *
23
-	 * @var string $name The cache name.
24
-	 * @access private
25
-	 * @since 3.21.2
26
-	 */
27
-	private $name;
28
-
29
-	/**
30
-	 * The TTL of cached responses in seconds.
31
-	 *
32
-	 * @var int $ttl The TTL in seconds.
33
-	 * @access private
34
-	 * @since 3.21.2
35
-	 */
36
-	private $ttl;
37
-
38
-	/**
39
-	 * The cache dir where the cached data is written.
40
-	 *
41
-	 * @since 3.21.2
42
-	 * @access private
43
-	 * @var string $cache_dir The cache dir where the cached responses are written.
44
-	 */
45
-	private $cache_dir;
46
-
47
-	/**
48
-	 * A {@link Wordlift_Log_Service} instance.
49
-	 *
50
-	 * @var Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
51
-	 * @access private
52
-	 * @since 3.21.2
53
-	 */
54
-	private $log;
55
-
56
-	/**
57
-	 * @var array
58
-	 */
59
-	private static $caches = array();
60
-
61
-	/**
62
-	 * Create a {@link Ttl_Cache} with the specified TTL, default 900 secs.
63
-	 *
64
-	 * @param string $name The cache name.
65
-	 * @param int $ttl The cache TTL, default 900 secs.
66
-	 *
67
-	 * @since 3.21.2
68
-	 */
69
-	public function __construct( $name, $ttl = 900 ) {
70
-
71
-		$this->log = Wordlift_Log_Service::get_logger( get_class() );
72
-
73
-		$this->name = $name;
74
-		$this->ttl  = $ttl;
75
-
76
-		$this->cache_dir = self::get_cache_folder() . DIRECTORY_SEPARATOR . md5( $name );
77
-
78
-		$this->log->trace( "Creating the cache folder {$this->cache_dir}..." );
79
-		wp_mkdir_p( $this->cache_dir );
80
-
81
-		self::$caches[ $name ] = $this;
82
-
83
-	}
84
-
85
-	/**
86
-	 * Get the root cache folder.
87
-	 *
88
-	 * This is useful to introduce a cache cleaning procedure which will scan and delete older stale cache files.
89
-	 *
90
-	 * @return string The root cache folder.
91
-	 * @since 3.22.5
92
-	 */
93
-	public static function get_cache_folder() {
94
-
95
-		// Get the temp dir and add the directory separator if missing.
96
-		$temp_dir = get_temp_dir();
97
-		if ( DIRECTORY_SEPARATOR !== substr( $temp_dir, - strlen( DIRECTORY_SEPARATOR ) ) ) {
98
-			$temp_dir .= DIRECTORY_SEPARATOR;
99
-		}
100
-
101
-		return $temp_dir . 'wl.cache' . DIRECTORY_SEPARATOR . md5( home_url() );
102
-	}
103
-
104
-	/**
105
-	 * Get the cached data for the specified key.
106
-	 *
107
-	 * @param mixed $key A serializable key.
108
-	 *
109
-	 * @return mixed|null
110
-	 * @since 3.21.2
111
-	 */
112
-	public function get( $key ) {
113
-
114
-		$filename = $this->get_filename( $key );
115
-
116
-		// If the cache file exists and it's not too old, then return it.
117
-		if ( file_exists( $filename ) && $this->ttl >= time() - filemtime( $filename ) ) {
118
-			$this->log->trace( "Cache HIT.\n" );
119
-
120
-			return json_decode( file_get_contents( $filename ), true );
121
-		}
122
-
123
-		$this->log->trace( "Cache MISS, filename $filename." );
124
-
125
-		return null;
126
-	}
127
-
128
-	public function put( $key, $data ) {
129
-
130
-		$filename = $this->get_filename( $key );
131
-
132
-		// Cache.
133
-		if ( file_exists( $filename ) ) {
134
-			@unlink( $filename );
135
-		}
136
-		@file_put_contents( $filename, wp_json_encode( $data ) );
20
+    /**
21
+     * The cache name.
22
+     *
23
+     * @var string $name The cache name.
24
+     * @access private
25
+     * @since 3.21.2
26
+     */
27
+    private $name;
28
+
29
+    /**
30
+     * The TTL of cached responses in seconds.
31
+     *
32
+     * @var int $ttl The TTL in seconds.
33
+     * @access private
34
+     * @since 3.21.2
35
+     */
36
+    private $ttl;
37
+
38
+    /**
39
+     * The cache dir where the cached data is written.
40
+     *
41
+     * @since 3.21.2
42
+     * @access private
43
+     * @var string $cache_dir The cache dir where the cached responses are written.
44
+     */
45
+    private $cache_dir;
46
+
47
+    /**
48
+     * A {@link Wordlift_Log_Service} instance.
49
+     *
50
+     * @var Wordlift_Log_Service $log A {@link Wordlift_Log_Service} instance.
51
+     * @access private
52
+     * @since 3.21.2
53
+     */
54
+    private $log;
55
+
56
+    /**
57
+     * @var array
58
+     */
59
+    private static $caches = array();
60
+
61
+    /**
62
+     * Create a {@link Ttl_Cache} with the specified TTL, default 900 secs.
63
+     *
64
+     * @param string $name The cache name.
65
+     * @param int $ttl The cache TTL, default 900 secs.
66
+     *
67
+     * @since 3.21.2
68
+     */
69
+    public function __construct( $name, $ttl = 900 ) {
70
+
71
+        $this->log = Wordlift_Log_Service::get_logger( get_class() );
72
+
73
+        $this->name = $name;
74
+        $this->ttl  = $ttl;
75
+
76
+        $this->cache_dir = self::get_cache_folder() . DIRECTORY_SEPARATOR . md5( $name );
77
+
78
+        $this->log->trace( "Creating the cache folder {$this->cache_dir}..." );
79
+        wp_mkdir_p( $this->cache_dir );
80
+
81
+        self::$caches[ $name ] = $this;
82
+
83
+    }
84
+
85
+    /**
86
+     * Get the root cache folder.
87
+     *
88
+     * This is useful to introduce a cache cleaning procedure which will scan and delete older stale cache files.
89
+     *
90
+     * @return string The root cache folder.
91
+     * @since 3.22.5
92
+     */
93
+    public static function get_cache_folder() {
94
+
95
+        // Get the temp dir and add the directory separator if missing.
96
+        $temp_dir = get_temp_dir();
97
+        if ( DIRECTORY_SEPARATOR !== substr( $temp_dir, - strlen( DIRECTORY_SEPARATOR ) ) ) {
98
+            $temp_dir .= DIRECTORY_SEPARATOR;
99
+        }
100
+
101
+        return $temp_dir . 'wl.cache' . DIRECTORY_SEPARATOR . md5( home_url() );
102
+    }
103
+
104
+    /**
105
+     * Get the cached data for the specified key.
106
+     *
107
+     * @param mixed $key A serializable key.
108
+     *
109
+     * @return mixed|null
110
+     * @since 3.21.2
111
+     */
112
+    public function get( $key ) {
113
+
114
+        $filename = $this->get_filename( $key );
115
+
116
+        // If the cache file exists and it's not too old, then return it.
117
+        if ( file_exists( $filename ) && $this->ttl >= time() - filemtime( $filename ) ) {
118
+            $this->log->trace( "Cache HIT.\n" );
119
+
120
+            return json_decode( file_get_contents( $filename ), true );
121
+        }
122
+
123
+        $this->log->trace( "Cache MISS, filename $filename." );
124
+
125
+        return null;
126
+    }
127
+
128
+    public function put( $key, $data ) {
129
+
130
+        $filename = $this->get_filename( $key );
131
+
132
+        // Cache.
133
+        if ( file_exists( $filename ) ) {
134
+            @unlink( $filename );
135
+        }
136
+        @file_put_contents( $filename, wp_json_encode( $data ) );
137 137
 
138
-	}
139
-
140
-	public function delete( $key ) {
138
+    }
139
+
140
+    public function delete( $key ) {
141 141
 
142
-		$filename = $this->get_filename( $key );
142
+        $filename = $this->get_filename( $key );
143 143
 
144
-		// Delete.
145
-		if ( file_exists( $filename ) ) {
146
-			@unlink( $filename );
147
-		}
144
+        // Delete.
145
+        if ( file_exists( $filename ) ) {
146
+            @unlink( $filename );
147
+        }
148 148
 
149
-	}
149
+    }
150 150
 
151
-	public function flush() {
151
+    public function flush() {
152 152
 
153
-		$files = glob( $this->cache_dir . DIRECTORY_SEPARATOR . '*' );
154
-		foreach ( $files as $file ) { // iterate files
155
-			if ( is_file( $file ) ) {
156
-				@unlink( $file );
157
-			}
158
-		}
153
+        $files = glob( $this->cache_dir . DIRECTORY_SEPARATOR . '*' );
154
+        foreach ( $files as $file ) { // iterate files
155
+            if ( is_file( $file ) ) {
156
+                @unlink( $file );
157
+            }
158
+        }
159 159
 
160
-	}
160
+    }
161 161
 
162
-	public static function flush_all() {
162
+    public static function flush_all() {
163 163
 
164
-		/** @var Ttl_Cache $cache */
165
-		foreach ( self::$caches as $cache ) {
166
-			$cache->flush();
167
-		}
164
+        /** @var Ttl_Cache $cache */
165
+        foreach ( self::$caches as $cache ) {
166
+            $cache->flush();
167
+        }
168 168
 
169
-	}
169
+    }
170 170
 
171
-	/**
172
-	 * Get the full path for the given `$hash`. The file is not checked for its existence.
173
-	 *
174
-	 * @param string $hash A file hash.
175
-	 *
176
-	 * @return string The full path to the file.
177
-	 * @since 3.21.2
178
-	 */
179
-	private function get_path( $hash ) {
171
+    /**
172
+     * Get the full path for the given `$hash`. The file is not checked for its existence.
173
+     *
174
+     * @param string $hash A file hash.
175
+     *
176
+     * @return string The full path to the file.
177
+     * @since 3.21.2
178
+     */
179
+    private function get_path( $hash ) {
180 180
 
181
-		return $this->cache_dir . DIRECTORY_SEPARATOR . $hash;
182
-	}
181
+        return $this->cache_dir . DIRECTORY_SEPARATOR . $hash;
182
+    }
183 183
 
184
-	private function get_filename( $key ) {
184
+    private function get_filename( $key ) {
185 185
 
186
-		// Create a hash and a path to the cache file.
187
-		$hash     = md5( json_encode( $key ) );
188
-		$filename = $this->get_path( $hash );
186
+        // Create a hash and a path to the cache file.
187
+        $hash     = md5( json_encode( $key ) );
188
+        $filename = $this->get_path( $hash );
189 189
 
190
-		return $filename;
191
-	}
190
+        return $filename;
191
+    }
192 192
 
193 193
 }
Please login to merge, or discard this patch.
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -66,19 +66,19 @@  discard block
 block discarded – undo
66 66
 	 *
67 67
 	 * @since 3.21.2
68 68
 	 */
69
-	public function __construct( $name, $ttl = 900 ) {
69
+	public function __construct($name, $ttl = 900) {
70 70
 
71
-		$this->log = Wordlift_Log_Service::get_logger( get_class() );
71
+		$this->log = Wordlift_Log_Service::get_logger(get_class());
72 72
 
73 73
 		$this->name = $name;
74 74
 		$this->ttl  = $ttl;
75 75
 
76
-		$this->cache_dir = self::get_cache_folder() . DIRECTORY_SEPARATOR . md5( $name );
76
+		$this->cache_dir = self::get_cache_folder().DIRECTORY_SEPARATOR.md5($name);
77 77
 
78
-		$this->log->trace( "Creating the cache folder {$this->cache_dir}..." );
79
-		wp_mkdir_p( $this->cache_dir );
78
+		$this->log->trace("Creating the cache folder {$this->cache_dir}...");
79
+		wp_mkdir_p($this->cache_dir);
80 80
 
81
-		self::$caches[ $name ] = $this;
81
+		self::$caches[$name] = $this;
82 82
 
83 83
 	}
84 84
 
@@ -94,11 +94,11 @@  discard block
 block discarded – undo
94 94
 
95 95
 		// Get the temp dir and add the directory separator if missing.
96 96
 		$temp_dir = get_temp_dir();
97
-		if ( DIRECTORY_SEPARATOR !== substr( $temp_dir, - strlen( DIRECTORY_SEPARATOR ) ) ) {
97
+		if (DIRECTORY_SEPARATOR !== substr($temp_dir, - strlen(DIRECTORY_SEPARATOR))) {
98 98
 			$temp_dir .= DIRECTORY_SEPARATOR;
99 99
 		}
100 100
 
101
-		return $temp_dir . 'wl.cache' . DIRECTORY_SEPARATOR . md5( home_url() );
101
+		return $temp_dir.'wl.cache'.DIRECTORY_SEPARATOR.md5(home_url());
102 102
 	}
103 103
 
104 104
 	/**
@@ -109,51 +109,51 @@  discard block
 block discarded – undo
109 109
 	 * @return mixed|null
110 110
 	 * @since 3.21.2
111 111
 	 */
112
-	public function get( $key ) {
112
+	public function get($key) {
113 113
 
114
-		$filename = $this->get_filename( $key );
114
+		$filename = $this->get_filename($key);
115 115
 
116 116
 		// If the cache file exists and it's not too old, then return it.
117
-		if ( file_exists( $filename ) && $this->ttl >= time() - filemtime( $filename ) ) {
118
-			$this->log->trace( "Cache HIT.\n" );
117
+		if (file_exists($filename) && $this->ttl >= time() - filemtime($filename)) {
118
+			$this->log->trace("Cache HIT.\n");
119 119
 
120
-			return json_decode( file_get_contents( $filename ), true );
120
+			return json_decode(file_get_contents($filename), true);
121 121
 		}
122 122
 
123
-		$this->log->trace( "Cache MISS, filename $filename." );
123
+		$this->log->trace("Cache MISS, filename $filename.");
124 124
 
125 125
 		return null;
126 126
 	}
127 127
 
128
-	public function put( $key, $data ) {
128
+	public function put($key, $data) {
129 129
 
130
-		$filename = $this->get_filename( $key );
130
+		$filename = $this->get_filename($key);
131 131
 
132 132
 		// Cache.
133
-		if ( file_exists( $filename ) ) {
134
-			@unlink( $filename );
133
+		if (file_exists($filename)) {
134
+			@unlink($filename);
135 135
 		}
136
-		@file_put_contents( $filename, wp_json_encode( $data ) );
136
+		@file_put_contents($filename, wp_json_encode($data));
137 137
 
138 138
 	}
139 139
 
140
-	public function delete( $key ) {
140
+	public function delete($key) {
141 141
 
142
-		$filename = $this->get_filename( $key );
142
+		$filename = $this->get_filename($key);
143 143
 
144 144
 		// Delete.
145
-		if ( file_exists( $filename ) ) {
146
-			@unlink( $filename );
145
+		if (file_exists($filename)) {
146
+			@unlink($filename);
147 147
 		}
148 148
 
149 149
 	}
150 150
 
151 151
 	public function flush() {
152 152
 
153
-		$files = glob( $this->cache_dir . DIRECTORY_SEPARATOR . '*' );
154
-		foreach ( $files as $file ) { // iterate files
155
-			if ( is_file( $file ) ) {
156
-				@unlink( $file );
153
+		$files = glob($this->cache_dir.DIRECTORY_SEPARATOR.'*');
154
+		foreach ($files as $file) { // iterate files
155
+			if (is_file($file)) {
156
+				@unlink($file);
157 157
 			}
158 158
 		}
159 159
 
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
 	public static function flush_all() {
163 163
 
164 164
 		/** @var Ttl_Cache $cache */
165
-		foreach ( self::$caches as $cache ) {
165
+		foreach (self::$caches as $cache) {
166 166
 			$cache->flush();
167 167
 		}
168 168
 
@@ -176,16 +176,16 @@  discard block
 block discarded – undo
176 176
 	 * @return string The full path to the file.
177 177
 	 * @since 3.21.2
178 178
 	 */
179
-	private function get_path( $hash ) {
179
+	private function get_path($hash) {
180 180
 
181
-		return $this->cache_dir . DIRECTORY_SEPARATOR . $hash;
181
+		return $this->cache_dir.DIRECTORY_SEPARATOR.$hash;
182 182
 	}
183 183
 
184
-	private function get_filename( $key ) {
184
+	private function get_filename($key) {
185 185
 
186 186
 		// Create a hash and a path to the cache file.
187
-		$hash     = md5( json_encode( $key ) );
188
-		$filename = $this->get_path( $hash );
187
+		$hash     = md5(json_encode($key));
188
+		$filename = $this->get_path($hash);
189 189
 
190 190
 		return $filename;
191 191
 	}
Please login to merge, or discard this patch.
src/wordlift/dataset/class-sync-service.php 2 patches
Indentation   +244 added lines, -244 removed lines patch added patch discarded remove patch
@@ -8,251 +8,251 @@
 block discarded – undo
8 8
 use Wordlift\Object_Type_Enum;
9 9
 
10 10
 class Sync_Service {
11
-	const JSONLD_HASH = 'jsonld_hash';
12
-	const SYNCED_GMT = 'synced_gmt';
13
-
14
-	/**
15
-	 * @var \Wordlift_Log_Service
16
-	 */
17
-	private $log;
18
-
19
-	/**
20
-	 * @var Api_Service
21
-	 */
22
-	private $api_service;
23
-
24
-	/**
25
-	 * @var Jsonld_Service
26
-	 */
27
-	private $jsonld_service;
28
-
29
-	/**
30
-	 * @var Sync_Background_Process
31
-	 */
32
-	private $sync_background_process;
33
-
34
-	/**
35
-	 * The number of posts processed in one call.
36
-	 *
37
-	 * @var int The batch size.
38
-	 */
39
-	private $batch_size;
40
-
41
-	/**
42
-	 * @var Sync_Object_Adapter_Factory
43
-	 */
44
-	private $sync_object_adapter_factory;
45
-
46
-	/**
47
-	 * @var Sync_Service
48
-	 */
49
-	private static $instance;
50
-	private $entity_service;
51
-
52
-	/**
53
-	 * Constructor.
54
-	 *
55
-	 * @param Api_Service $api_service The {@link Api_Service} used to communicate with the remote APIs.
56
-	 * @param Sync_Object_Adapter_Factory $sync_object_adapter_factory
57
-	 * @param Jsonld_Service $jsonld_service
58
-	 * @param \Wordlift_Entity_Service $entity_service
59
-	 */
60
-	public function __construct( $api_service, $sync_object_adapter_factory, $jsonld_service, $entity_service ) {
61
-
62
-		$this->log = \Wordlift_Log_Service::get_logger( get_class() );
63
-
64
-		$this->api_service                 = $api_service;
65
-		$this->sync_object_adapter_factory = $sync_object_adapter_factory;
66
-		$this->jsonld_service              = $jsonld_service;
67
-		$this->entity_service              = $entity_service;
68
-		$this->batch_size                  = 10;
69
-
70
-		// You need to initialize this early, otherwise the Background Process isn't registered in AJAX calls.
11
+    const JSONLD_HASH = 'jsonld_hash';
12
+    const SYNCED_GMT = 'synced_gmt';
13
+
14
+    /**
15
+     * @var \Wordlift_Log_Service
16
+     */
17
+    private $log;
18
+
19
+    /**
20
+     * @var Api_Service
21
+     */
22
+    private $api_service;
23
+
24
+    /**
25
+     * @var Jsonld_Service
26
+     */
27
+    private $jsonld_service;
28
+
29
+    /**
30
+     * @var Sync_Background_Process
31
+     */
32
+    private $sync_background_process;
33
+
34
+    /**
35
+     * The number of posts processed in one call.
36
+     *
37
+     * @var int The batch size.
38
+     */
39
+    private $batch_size;
40
+
41
+    /**
42
+     * @var Sync_Object_Adapter_Factory
43
+     */
44
+    private $sync_object_adapter_factory;
45
+
46
+    /**
47
+     * @var Sync_Service
48
+     */
49
+    private static $instance;
50
+    private $entity_service;
51
+
52
+    /**
53
+     * Constructor.
54
+     *
55
+     * @param Api_Service $api_service The {@link Api_Service} used to communicate with the remote APIs.
56
+     * @param Sync_Object_Adapter_Factory $sync_object_adapter_factory
57
+     * @param Jsonld_Service $jsonld_service
58
+     * @param \Wordlift_Entity_Service $entity_service
59
+     */
60
+    public function __construct( $api_service, $sync_object_adapter_factory, $jsonld_service, $entity_service ) {
61
+
62
+        $this->log = \Wordlift_Log_Service::get_logger( get_class() );
63
+
64
+        $this->api_service                 = $api_service;
65
+        $this->sync_object_adapter_factory = $sync_object_adapter_factory;
66
+        $this->jsonld_service              = $jsonld_service;
67
+        $this->entity_service              = $entity_service;
68
+        $this->batch_size                  = 10;
69
+
70
+        // You need to initialize this early, otherwise the Background Process isn't registered in AJAX calls.
71 71
 //		$this->sync_background_process = new Sync_Background_Process( $this );;
72 72
 
73
-		// Exclude the JSONLD_HASH meta key from those that require a resync.
74
-		add_filter( 'wl_dataset__sync_hooks__ignored_meta_keys', function ( $args ) {
75
-			$args[] = Sync_Service::JSONLD_HASH;
76
-			$args[] = Sync_Service::SYNCED_GMT;
77
-
78
-			return $args;
79
-		} );
80
-
81
-		self::$instance = $this;
82
-	}
83
-
84
-	public static function get_instance() {
85
-		return self::$instance;
86
-	}
87
-
88
-	/**
89
-	 * @param int $type
90
-	 * @param int $object_id
91
-	 *
92
-	 * @return array|false
93
-	 * @throws Exception
94
-	 */
95
-	public function sync_one( $type, $object_id ) {
96
-
97
-		$object = $this->sync_object_adapter_factory->create( $type, $object_id );
98
-
99
-		return $this->sync_many( array( $object ) );
100
-	}
101
-
102
-	/**
103
-	 * @param $type string Post or User.
104
-	 * @param $object_id  int Post or User id
105
-	 * @param $uri string Entity uri , This needs to be supplied before deletion, if we
106
-	 * get it from meta it might not be available.
107
-	 *
108
-	 * @return bool
109
-	 */
110
-	public function delete_one( $type, $object_id, $uri ) {
111
-		// Entity URL isn't set, bail out.
112
-		if ( empty( $uri ) ) {
113
-			return false;
114
-		}
115
-
116
-		$response = $this->api_service->request(
117
-			'DELETE', sprintf( '/middleware/dataset?uri=%s', rawurlencode( $uri ) ) );
118
-
119
-
120
-		// Update the sync date in case of success, otherwise log an error.
121
-		if ( ! $response->is_success() ) {
122
-			return false;
123
-		}
124
-
125
-		/**
126
-		 * Allow 3rd parties to run additional sync work.
127
-		 */
128
-		do_action( 'wl_sync__delete_one', $type, $object_id, $uri );
129
-
130
-		return true;
131
-	}
132
-
133
-	/**
134
-	 * @param Sync_Object_Adapter[] $objects
135
-	 * @param bool $force Force synchronization even if the json-ld hash hasn't changed.
136
-	 *
137
-	 * @return bool
138
-	 * @throws Exception
139
-	 */
140
-	public function sync_many( $objects, $force = false ) {
141
-
142
-		$hashes   = array();
143
-		$payloads = array();
144
-		/** @var Sync_Object_Adapter $object */
145
-		foreach ( $objects as $object ) {
146
-			// Bail out if no payload.
147
-			$payload_as_string = $this->get_payload_as_string( $object );
148
-			if ( empty( $payload_as_string ) ) {
149
-				continue;
150
-			}
151
-			$new_hash = sha1( $payload_as_string );
152
-			$old_hash = $object->get_value( self::JSONLD_HASH );
153
-
154
-			// JSON-LD hasn't changed, bail out.
155
-			$should_sync = $force || $new_hash !== $old_hash;
156
-			if ( ! apply_filters( 'wl_dataset__sync_service__sync_item', $should_sync, $object, $payload_as_string ) ) {
157
-				continue;
158
-			}
159
-
160
-			// Collect the hashes and the payloads.
161
-			$hashes[]   = array( $object, $new_hash, $payload_as_string );
162
-			$payloads[] = $payload_as_string;
163
-		}
164
-
165
-		// Bail out if payloads are empty.
166
-		if ( empty( $payloads ) ) {
167
-			return false;
168
-		}
169
-
170
-		$blocking = apply_filters( 'wl_feature__enable__sync-blocking', false );
171
-		$response = $this->api_service->request(
172
-			'POST', '/middleware/dataset/batch',
173
-			array( 'Content-Type' => 'application/json', ),
174
-			// Put the payload in a JSON array w/o decoding/encoding again.
175
-			'[ ' . implode( ', ', $payloads ) . ' ]',
176
-			$blocking ? 60 : 0.001,
177
-			null,
178
-			array( 'blocking' => $blocking ) );
179
-
180
-		// Update the sync date in case of success, otherwise log an error.
181
-		if ( $blocking && ! $response->is_success() ) {
182
-			return false;
183
-		}
184
-
185
-		// If successful update the hashes and sync datetime.
186
-		foreach ( $hashes as $hash ) {
187
-			$object   = $hash[0];
188
-			$new_hash = $hash[1];
189
-
190
-			$object->set_values( array(
191
-				self::JSONLD_HASH => $new_hash,
192
-				self::SYNCED_GMT  => current_time( 'mysql', true ),
193
-			) );
194
-		}
195
-
196
-
197
-		/**
198
-		 * Allow 3rd parties to run additional sync work.
199
-		 */
200
-		do_action( 'wl_sync__sync_many', $hashes );
201
-
202
-		return true;
203
-	}
204
-
205
-	/**
206
-	 * @param Sync_Object_Adapter $object
207
-	 *
208
-	 * @return false|string
209
-	 * @throws Exception
210
-	 */
211
-	private function get_payload_as_string( $object ) {
212
-		$type             = $object->get_type();
213
-		$object_id        = $object->get_object_id();
214
-		$jsonld_as_string = wp_json_encode( apply_filters( 'wl_dataset__sync_service__sync_item__jsonld',
215
-			$this->jsonld_service->get( $type, $object_id ), $type, $object_id ), 64 ); // JSON_UNESCAPED_SLASHES
216
-		$uri              = $this->entity_service->get_uri( $object_id, $type );
217
-
218
-		// Entity URL isn't set, bail out.
219
-		if ( empty( $uri ) ) {
220
-			return false;
221
-		}
222
-
223
-		return wp_json_encode( array(
224
-			'uri'     => $uri,
225
-			'model'   => $jsonld_as_string,
226
-			'private' => ! $object->is_public(),
227
-		), 64 ); // JSON_UNESCAPED_SLASHES
228
-	}
229
-
230
-	/**
231
-	 * @param $post_id
232
-	 *
233
-	 * @todo Complete the delete item.
234
-	 */
235
-	public function delete_item( $post_id ) {
236
-		$uri = $this->entity_service->get_uri( $post_id, Object_Type_Enum::POST );
237
-
238
-		if ( ! isset( $uri ) ) {
239
-			return;
240
-		}
241
-
242
-		// Make a request to the remote endpoint.
243
-		$response = $this->api_service->request(
244
-			'DELETE', '/middleware/dataset?uri=' . rawurlencode( $uri ),
245
-			array( 'Content-Type' => 'application/ld+json', ) );
246
-
247
-	}
248
-
249
-	public function get_batch_size() {
250
-
251
-		return $this->batch_size;
252
-	}
253
-
254
-	public function delete_all() {
255
-		$this->api_service->request( 'DELETE', '/middleware/dataset/all' );
256
-	}
73
+        // Exclude the JSONLD_HASH meta key from those that require a resync.
74
+        add_filter( 'wl_dataset__sync_hooks__ignored_meta_keys', function ( $args ) {
75
+            $args[] = Sync_Service::JSONLD_HASH;
76
+            $args[] = Sync_Service::SYNCED_GMT;
77
+
78
+            return $args;
79
+        } );
80
+
81
+        self::$instance = $this;
82
+    }
83
+
84
+    public static function get_instance() {
85
+        return self::$instance;
86
+    }
87
+
88
+    /**
89
+     * @param int $type
90
+     * @param int $object_id
91
+     *
92
+     * @return array|false
93
+     * @throws Exception
94
+     */
95
+    public function sync_one( $type, $object_id ) {
96
+
97
+        $object = $this->sync_object_adapter_factory->create( $type, $object_id );
98
+
99
+        return $this->sync_many( array( $object ) );
100
+    }
101
+
102
+    /**
103
+     * @param $type string Post or User.
104
+     * @param $object_id  int Post or User id
105
+     * @param $uri string Entity uri , This needs to be supplied before deletion, if we
106
+     * get it from meta it might not be available.
107
+     *
108
+     * @return bool
109
+     */
110
+    public function delete_one( $type, $object_id, $uri ) {
111
+        // Entity URL isn't set, bail out.
112
+        if ( empty( $uri ) ) {
113
+            return false;
114
+        }
115
+
116
+        $response = $this->api_service->request(
117
+            'DELETE', sprintf( '/middleware/dataset?uri=%s', rawurlencode( $uri ) ) );
118
+
119
+
120
+        // Update the sync date in case of success, otherwise log an error.
121
+        if ( ! $response->is_success() ) {
122
+            return false;
123
+        }
124
+
125
+        /**
126
+         * Allow 3rd parties to run additional sync work.
127
+         */
128
+        do_action( 'wl_sync__delete_one', $type, $object_id, $uri );
129
+
130
+        return true;
131
+    }
132
+
133
+    /**
134
+     * @param Sync_Object_Adapter[] $objects
135
+     * @param bool $force Force synchronization even if the json-ld hash hasn't changed.
136
+     *
137
+     * @return bool
138
+     * @throws Exception
139
+     */
140
+    public function sync_many( $objects, $force = false ) {
141
+
142
+        $hashes   = array();
143
+        $payloads = array();
144
+        /** @var Sync_Object_Adapter $object */
145
+        foreach ( $objects as $object ) {
146
+            // Bail out if no payload.
147
+            $payload_as_string = $this->get_payload_as_string( $object );
148
+            if ( empty( $payload_as_string ) ) {
149
+                continue;
150
+            }
151
+            $new_hash = sha1( $payload_as_string );
152
+            $old_hash = $object->get_value( self::JSONLD_HASH );
153
+
154
+            // JSON-LD hasn't changed, bail out.
155
+            $should_sync = $force || $new_hash !== $old_hash;
156
+            if ( ! apply_filters( 'wl_dataset__sync_service__sync_item', $should_sync, $object, $payload_as_string ) ) {
157
+                continue;
158
+            }
159
+
160
+            // Collect the hashes and the payloads.
161
+            $hashes[]   = array( $object, $new_hash, $payload_as_string );
162
+            $payloads[] = $payload_as_string;
163
+        }
164
+
165
+        // Bail out if payloads are empty.
166
+        if ( empty( $payloads ) ) {
167
+            return false;
168
+        }
169
+
170
+        $blocking = apply_filters( 'wl_feature__enable__sync-blocking', false );
171
+        $response = $this->api_service->request(
172
+            'POST', '/middleware/dataset/batch',
173
+            array( 'Content-Type' => 'application/json', ),
174
+            // Put the payload in a JSON array w/o decoding/encoding again.
175
+            '[ ' . implode( ', ', $payloads ) . ' ]',
176
+            $blocking ? 60 : 0.001,
177
+            null,
178
+            array( 'blocking' => $blocking ) );
179
+
180
+        // Update the sync date in case of success, otherwise log an error.
181
+        if ( $blocking && ! $response->is_success() ) {
182
+            return false;
183
+        }
184
+
185
+        // If successful update the hashes and sync datetime.
186
+        foreach ( $hashes as $hash ) {
187
+            $object   = $hash[0];
188
+            $new_hash = $hash[1];
189
+
190
+            $object->set_values( array(
191
+                self::JSONLD_HASH => $new_hash,
192
+                self::SYNCED_GMT  => current_time( 'mysql', true ),
193
+            ) );
194
+        }
195
+
196
+
197
+        /**
198
+         * Allow 3rd parties to run additional sync work.
199
+         */
200
+        do_action( 'wl_sync__sync_many', $hashes );
201
+
202
+        return true;
203
+    }
204
+
205
+    /**
206
+     * @param Sync_Object_Adapter $object
207
+     *
208
+     * @return false|string
209
+     * @throws Exception
210
+     */
211
+    private function get_payload_as_string( $object ) {
212
+        $type             = $object->get_type();
213
+        $object_id        = $object->get_object_id();
214
+        $jsonld_as_string = wp_json_encode( apply_filters( 'wl_dataset__sync_service__sync_item__jsonld',
215
+            $this->jsonld_service->get( $type, $object_id ), $type, $object_id ), 64 ); // JSON_UNESCAPED_SLASHES
216
+        $uri              = $this->entity_service->get_uri( $object_id, $type );
217
+
218
+        // Entity URL isn't set, bail out.
219
+        if ( empty( $uri ) ) {
220
+            return false;
221
+        }
222
+
223
+        return wp_json_encode( array(
224
+            'uri'     => $uri,
225
+            'model'   => $jsonld_as_string,
226
+            'private' => ! $object->is_public(),
227
+        ), 64 ); // JSON_UNESCAPED_SLASHES
228
+    }
229
+
230
+    /**
231
+     * @param $post_id
232
+     *
233
+     * @todo Complete the delete item.
234
+     */
235
+    public function delete_item( $post_id ) {
236
+        $uri = $this->entity_service->get_uri( $post_id, Object_Type_Enum::POST );
237
+
238
+        if ( ! isset( $uri ) ) {
239
+            return;
240
+        }
241
+
242
+        // Make a request to the remote endpoint.
243
+        $response = $this->api_service->request(
244
+            'DELETE', '/middleware/dataset?uri=' . rawurlencode( $uri ),
245
+            array( 'Content-Type' => 'application/ld+json', ) );
246
+
247
+    }
248
+
249
+    public function get_batch_size() {
250
+
251
+        return $this->batch_size;
252
+    }
253
+
254
+    public function delete_all() {
255
+        $this->api_service->request( 'DELETE', '/middleware/dataset/all' );
256
+    }
257 257
 
258 258
 }
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -57,9 +57,9 @@  discard block
 block discarded – undo
57 57
 	 * @param Jsonld_Service $jsonld_service
58 58
 	 * @param \Wordlift_Entity_Service $entity_service
59 59
 	 */
60
-	public function __construct( $api_service, $sync_object_adapter_factory, $jsonld_service, $entity_service ) {
60
+	public function __construct($api_service, $sync_object_adapter_factory, $jsonld_service, $entity_service) {
61 61
 
62
-		$this->log = \Wordlift_Log_Service::get_logger( get_class() );
62
+		$this->log = \Wordlift_Log_Service::get_logger(get_class());
63 63
 
64 64
 		$this->api_service                 = $api_service;
65 65
 		$this->sync_object_adapter_factory = $sync_object_adapter_factory;
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
 //		$this->sync_background_process = new Sync_Background_Process( $this );;
72 72
 
73 73
 		// Exclude the JSONLD_HASH meta key from those that require a resync.
74
-		add_filter( 'wl_dataset__sync_hooks__ignored_meta_keys', function ( $args ) {
74
+		add_filter('wl_dataset__sync_hooks__ignored_meta_keys', function($args) {
75 75
 			$args[] = Sync_Service::JSONLD_HASH;
76 76
 			$args[] = Sync_Service::SYNCED_GMT;
77 77
 
@@ -92,11 +92,11 @@  discard block
 block discarded – undo
92 92
 	 * @return array|false
93 93
 	 * @throws Exception
94 94
 	 */
95
-	public function sync_one( $type, $object_id ) {
95
+	public function sync_one($type, $object_id) {
96 96
 
97
-		$object = $this->sync_object_adapter_factory->create( $type, $object_id );
97
+		$object = $this->sync_object_adapter_factory->create($type, $object_id);
98 98
 
99
-		return $this->sync_many( array( $object ) );
99
+		return $this->sync_many(array($object));
100 100
 	}
101 101
 
102 102
 	/**
@@ -107,25 +107,25 @@  discard block
 block discarded – undo
107 107
 	 *
108 108
 	 * @return bool
109 109
 	 */
110
-	public function delete_one( $type, $object_id, $uri ) {
110
+	public function delete_one($type, $object_id, $uri) {
111 111
 		// Entity URL isn't set, bail out.
112
-		if ( empty( $uri ) ) {
112
+		if (empty($uri)) {
113 113
 			return false;
114 114
 		}
115 115
 
116 116
 		$response = $this->api_service->request(
117
-			'DELETE', sprintf( '/middleware/dataset?uri=%s', rawurlencode( $uri ) ) );
117
+			'DELETE', sprintf('/middleware/dataset?uri=%s', rawurlencode($uri)) );
118 118
 
119 119
 
120 120
 		// Update the sync date in case of success, otherwise log an error.
121
-		if ( ! $response->is_success() ) {
121
+		if ( ! $response->is_success()) {
122 122
 			return false;
123 123
 		}
124 124
 
125 125
 		/**
126 126
 		 * Allow 3rd parties to run additional sync work.
127 127
 		 */
128
-		do_action( 'wl_sync__delete_one', $type, $object_id, $uri );
128
+		do_action('wl_sync__delete_one', $type, $object_id, $uri);
129 129
 
130 130
 		return true;
131 131
 	}
@@ -137,67 +137,67 @@  discard block
 block discarded – undo
137 137
 	 * @return bool
138 138
 	 * @throws Exception
139 139
 	 */
140
-	public function sync_many( $objects, $force = false ) {
140
+	public function sync_many($objects, $force = false) {
141 141
 
142 142
 		$hashes   = array();
143 143
 		$payloads = array();
144 144
 		/** @var Sync_Object_Adapter $object */
145
-		foreach ( $objects as $object ) {
145
+		foreach ($objects as $object) {
146 146
 			// Bail out if no payload.
147
-			$payload_as_string = $this->get_payload_as_string( $object );
148
-			if ( empty( $payload_as_string ) ) {
147
+			$payload_as_string = $this->get_payload_as_string($object);
148
+			if (empty($payload_as_string)) {
149 149
 				continue;
150 150
 			}
151
-			$new_hash = sha1( $payload_as_string );
152
-			$old_hash = $object->get_value( self::JSONLD_HASH );
151
+			$new_hash = sha1($payload_as_string);
152
+			$old_hash = $object->get_value(self::JSONLD_HASH);
153 153
 
154 154
 			// JSON-LD hasn't changed, bail out.
155 155
 			$should_sync = $force || $new_hash !== $old_hash;
156
-			if ( ! apply_filters( 'wl_dataset__sync_service__sync_item', $should_sync, $object, $payload_as_string ) ) {
156
+			if ( ! apply_filters('wl_dataset__sync_service__sync_item', $should_sync, $object, $payload_as_string)) {
157 157
 				continue;
158 158
 			}
159 159
 
160 160
 			// Collect the hashes and the payloads.
161
-			$hashes[]   = array( $object, $new_hash, $payload_as_string );
161
+			$hashes[]   = array($object, $new_hash, $payload_as_string);
162 162
 			$payloads[] = $payload_as_string;
163 163
 		}
164 164
 
165 165
 		// Bail out if payloads are empty.
166
-		if ( empty( $payloads ) ) {
166
+		if (empty($payloads)) {
167 167
 			return false;
168 168
 		}
169 169
 
170
-		$blocking = apply_filters( 'wl_feature__enable__sync-blocking', false );
170
+		$blocking = apply_filters('wl_feature__enable__sync-blocking', false);
171 171
 		$response = $this->api_service->request(
172 172
 			'POST', '/middleware/dataset/batch',
173
-			array( 'Content-Type' => 'application/json', ),
173
+			array('Content-Type' => 'application/json',),
174 174
 			// Put the payload in a JSON array w/o decoding/encoding again.
175
-			'[ ' . implode( ', ', $payloads ) . ' ]',
175
+			'[ '.implode(', ', $payloads).' ]',
176 176
 			$blocking ? 60 : 0.001,
177 177
 			null,
178
-			array( 'blocking' => $blocking ) );
178
+			array('blocking' => $blocking) );
179 179
 
180 180
 		// Update the sync date in case of success, otherwise log an error.
181
-		if ( $blocking && ! $response->is_success() ) {
181
+		if ($blocking && ! $response->is_success()) {
182 182
 			return false;
183 183
 		}
184 184
 
185 185
 		// If successful update the hashes and sync datetime.
186
-		foreach ( $hashes as $hash ) {
186
+		foreach ($hashes as $hash) {
187 187
 			$object   = $hash[0];
188 188
 			$new_hash = $hash[1];
189 189
 
190
-			$object->set_values( array(
190
+			$object->set_values(array(
191 191
 				self::JSONLD_HASH => $new_hash,
192
-				self::SYNCED_GMT  => current_time( 'mysql', true ),
193
-			) );
192
+				self::SYNCED_GMT  => current_time('mysql', true),
193
+			));
194 194
 		}
195 195
 
196 196
 
197 197
 		/**
198 198
 		 * Allow 3rd parties to run additional sync work.
199 199
 		 */
200
-		do_action( 'wl_sync__sync_many', $hashes );
200
+		do_action('wl_sync__sync_many', $hashes);
201 201
 
202 202
 		return true;
203 203
 	}
@@ -208,23 +208,23 @@  discard block
 block discarded – undo
208 208
 	 * @return false|string
209 209
 	 * @throws Exception
210 210
 	 */
211
-	private function get_payload_as_string( $object ) {
211
+	private function get_payload_as_string($object) {
212 212
 		$type             = $object->get_type();
213 213
 		$object_id        = $object->get_object_id();
214
-		$jsonld_as_string = wp_json_encode( apply_filters( 'wl_dataset__sync_service__sync_item__jsonld',
215
-			$this->jsonld_service->get( $type, $object_id ), $type, $object_id ), 64 ); // JSON_UNESCAPED_SLASHES
216
-		$uri              = $this->entity_service->get_uri( $object_id, $type );
214
+		$jsonld_as_string = wp_json_encode(apply_filters('wl_dataset__sync_service__sync_item__jsonld',
215
+			$this->jsonld_service->get($type, $object_id), $type, $object_id), 64); // JSON_UNESCAPED_SLASHES
216
+		$uri              = $this->entity_service->get_uri($object_id, $type);
217 217
 
218 218
 		// Entity URL isn't set, bail out.
219
-		if ( empty( $uri ) ) {
219
+		if (empty($uri)) {
220 220
 			return false;
221 221
 		}
222 222
 
223
-		return wp_json_encode( array(
223
+		return wp_json_encode(array(
224 224
 			'uri'     => $uri,
225 225
 			'model'   => $jsonld_as_string,
226 226
 			'private' => ! $object->is_public(),
227
-		), 64 ); // JSON_UNESCAPED_SLASHES
227
+		), 64); // JSON_UNESCAPED_SLASHES
228 228
 	}
229 229
 
230 230
 	/**
@@ -232,17 +232,17 @@  discard block
 block discarded – undo
232 232
 	 *
233 233
 	 * @todo Complete the delete item.
234 234
 	 */
235
-	public function delete_item( $post_id ) {
236
-		$uri = $this->entity_service->get_uri( $post_id, Object_Type_Enum::POST );
235
+	public function delete_item($post_id) {
236
+		$uri = $this->entity_service->get_uri($post_id, Object_Type_Enum::POST);
237 237
 
238
-		if ( ! isset( $uri ) ) {
238
+		if ( ! isset($uri)) {
239 239
 			return;
240 240
 		}
241 241
 
242 242
 		// Make a request to the remote endpoint.
243 243
 		$response = $this->api_service->request(
244
-			'DELETE', '/middleware/dataset?uri=' . rawurlencode( $uri ),
245
-			array( 'Content-Type' => 'application/ld+json', ) );
244
+			'DELETE', '/middleware/dataset?uri='.rawurlencode($uri),
245
+			array('Content-Type' => 'application/ld+json',) );
246 246
 
247 247
 	}
248 248
 
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
 	}
253 253
 
254 254
 	public function delete_all() {
255
-		$this->api_service->request( 'DELETE', '/middleware/dataset/all' );
255
+		$this->api_service->request('DELETE', '/middleware/dataset/all');
256 256
 	}
257 257
 
258 258
 }
Please login to merge, or discard this patch.