Skip to content

Commit b10d479

Browse files
committed
Release 4.2.0
1 parent 0bd9272 commit b10d479

File tree

10 files changed

+155
-16
lines changed

10 files changed

+155
-16
lines changed

actions/market/save.php

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
$entity = get_entity($guid);
1919
if ($entity instanceof \ElggMarket && $entity->canEdit()) {
2020
$post = $entity;
21+
$new_post = false;
2122
} else {
2223
return elgg_error_response(elgg_echo('market:error:post_not_found'));
2324
}

classes/Market/MarketFile.php

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Market;
4+
5+
class MarketFile extends \ElggFile {
6+
7+
const SUBTYPE = 'market_file';
8+
9+
/**
10+
* @inheritdoc
11+
*/
12+
protected function initializeAttributes() {
13+
parent::initializeAttributes();
14+
15+
$this->attributes['subtype'] = self::SUBTYPE;
16+
}
17+
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
/**
3+
* River
4+
* @author Nikolai Shcherbin
5+
* @package Plugin
6+
* @license GNU Affero General Public License version 3
7+
* @copyright (c) Nikolai Shcherbin 2019
8+
* @link https://wzm.me
9+
**/
10+
namespace Market\Upgrades;
11+
12+
use Elgg\Database\Select;
13+
use Elgg\Database\Update;
14+
use Elgg\Upgrade\AsynchronousUpgrade;
15+
use Elgg\Upgrade\Result;
16+
17+
class MigrateMarketFiles implements AsynchronousUpgrade {
18+
/**
19+
* Version of the upgrade
20+
*
21+
* @return int
22+
*/
23+
public function getVersion(): int {
24+
return 2023011200;
25+
}
26+
27+
/**
28+
* Should the run() method receive an offset representing all processed items?
29+
*
30+
* @return bool
31+
*/
32+
public function needsIncrementOffset(): bool {
33+
return false;
34+
}
35+
36+
/**
37+
* Should this upgrade be skipped?
38+
*
39+
* @return bool
40+
*/
41+
public function shouldBeSkipped(): bool {
42+
return empty($this->countItems());
43+
}
44+
45+
/**
46+
* The total number of items to process in the upgrade
47+
*
48+
* @return int
49+
*/
50+
public function countItems(): int {
51+
return elgg_call(ELGG_SHOW_DISABLED_ENTITIES, function () {
52+
return elgg_count_entities([
53+
'type' => 'object',
54+
'subtype' => 'file',
55+
'metadata_name_value_pairs' => [
56+
[
57+
'name' => 'origin',
58+
'value' => 'market',
59+
],
60+
],
61+
]);
62+
});
63+
}
64+
65+
/**
66+
* Runs upgrade on a single batch of items
67+
*
68+
* @param Result $result Result of the batch (this must be returned)
69+
* @param int $offset Number to skip when processing
70+
*
71+
* @return Result Instance of \Elgg\Upgrade\Result
72+
*/
73+
public function run(Result $result, $offset): Result {
74+
$select = Select::fromTable('metadata', 'md');
75+
$select->select('entity_guid')
76+
->where($select->compare('md.name', '=', 'origin', ELGG_VALUE_STRING))
77+
->andWhere($select->compare('md.value', '=', 'market', ELGG_VALUE_STRING));
78+
79+
$guids = _elgg_services()->db->getData($select, function($row) {
80+
return (int) $row->entity_guid;
81+
});
82+
83+
if (!empty($guids)) {
84+
$update = Update::table('entities');
85+
$update->set('subtype', '"market_file"')
86+
->where('subtype = "file"')
87+
->andWhere($update->compare('guid', 'in', $guids, ELGG_VALUE_GUID));
88+
89+
_elgg_services()->db->updateData($update);
90+
}
91+
92+
$result->addSuccesses(count($guids));
93+
94+
return $result;
95+
}
96+
97+
}

classes/wZm/Dropzone/Actions.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace wZm\Dropzone;
44

55
use Elgg\Hook;
6-
use \Symfony\Component\HttpFoundation\File\UploadedFile;
6+
use Symfony\Component\HttpFoundation\File\UploadedFile;
77

88
class Actions {
99

classes/wZm/Dropzone/DropzoneService.php

+10-9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use ElggFile;
77
use Symfony\Component\HttpFoundation\File\Exception\FileException;
88
use Symfony\Component\HttpFoundation\File\UploadedFile;
9+
use Market\MarketFile;
910

1011
class DropzoneService {
1112

@@ -20,7 +21,7 @@ public function handleUploads(Request $request) {
2021

2122
$subtype = $request->getParam('subtype');
2223
if (!$subtype) {
23-
$subtype = 'file';
24+
$subtype = 'market_file';
2425
}
2526

2627
$uploads = $this->saveUploadedFiles('dropzone', [
@@ -38,7 +39,7 @@ public function handleUploads(Request $request) {
3839
$messages = [];
3940
$success = true;
4041

41-
if ($upload->error) {
42+
if (isset($upload->error)) {
4243
$messages[] = $upload->error;
4344
$success = false;
4445
$guid = false;
@@ -96,20 +97,20 @@ protected function getUploadedFiles($input_name) {
9697
* @param string $input_name Form input name
9798
* @param array $attributes File attributes
9899
*
99-
* @return ElggFile[]
100+
* @return MarketFile[]
100101
*/
101-
protected function saveUploadedFiles($input_name, array $attributes = []) {
102+
protected function saveUploadedFiles(string $input_name, array $attributes = []) {
102103

103104
$files = [];
104105

105106
$uploaded_files = $this->getUploadedFiles($input_name);
106107

107-
$subtype = elgg_extract('subtype', $attributes, 'file', false);
108+
$subtype = elgg_extract('subtype', $attributes, 'market_file', false);
108109
unset($attributes['subtype']);
109110

110111
$class = elgg_get_entity_class('object', $subtype);
111-
if (!$class || !class_exists($class) || !is_subclass_of($class, ElggFile::class)) {
112-
$class = ElggFile::class;
112+
if (!$class || !class_exists($class) || !is_subclass_of($class, MarketFile::class)) {
113+
$class = MarketFile::class;
113114
}
114115

115116
foreach ($uploaded_files as $upload) {
@@ -133,8 +134,8 @@ protected function saveUploadedFiles($input_name, array $attributes = []) {
133134
}
134135

135136
$file = new $class();
136-
/* @var $file ElggFile */
137-
$file->subtype = $subtype;
137+
/* @var $file MarketFile */
138+
$file->setSubtype($subtype);
138139
foreach ($attributes as $key => $value) {
139140
$file->$key = $value;
140141
}

classes/wZm/Dropzone/UploadAction.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
namespace wZm\Dropzone;
44

5-
use Elgg\Http\ResponseBuilder;
6-
use Elgg\Request;
7-
85
class UploadAction {
96

107
/**
@@ -13,7 +10,7 @@ class UploadAction {
1310
* @param Request $request Request
1411
* @return ResponseBuilder
1512
*/
16-
public function __invoke(Request $request) {
13+
public function __invoke(\Elgg\Request $request) {
1714

1815
$svc = elgg()->dropzone;
1916
/* @var $svc \wZm\DropzoneService */

elgg-plugin.php

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
return [
1111
'plugin' => [
1212
'name' => 'Market',
13-
'version' => '4.1.1',
13+
'version' => '4.2.0',
1414
],
1515

1616
'bootstrap' => \Market\Bootstrap::class,
@@ -26,6 +26,16 @@
2626
'likable' => true,
2727
],
2828
],
29+
[
30+
'type' => 'object',
31+
'subtype' => 'market_file',
32+
'class' => \Market\MarketFile::class,
33+
'capabilities' => [
34+
'commentable' => false,
35+
'searchable' => false,
36+
'likable' => false,
37+
],
38+
],
2939
//Dropzone
3040
[
3141
'type' => 'object',
@@ -219,4 +229,8 @@
219229
'market_expire' => '0',
220230
'market_terms_enable' => false,
221231
],
232+
233+
'upgrades' => [
234+
\Market\Upgrades\MigrateMarketFiles::class,
235+
],
222236
];

languages/en.php

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
'item:object:market' => 'Market ad',
3131
'market:none:found' => 'No market ad found',
3232

33+
'item:object:market_file' => 'Market files',
34+
'collection:object:market_file' => "Market file",
35+
3336
'add:object:market' => "Create new ad",
3437
'market:read' => "View ad",
3538
'market:mark:sold' => 'Mark as Sold',
@@ -175,6 +178,10 @@
175178
'market:custom:select' => "Item condition",
176179
'market:custom:text' => "Condition",
177180

181+
// Upgrades
182+
'market:upgrade:2023011200:title' => 'Migrate files to market files',
183+
'market:upgrade:2023011200:description' => 'ElggFile will be update on MarketFile',
184+
178185
//DROPZONE
179186
'item:object:temp_file_upload' => 'Dropzone temp file',
180187
'collection:object:temp_file_upload' => 'Dropzone temp file',

views/default/forms/market/save.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@
189189
'max' => 25,
190190
'multiple' => true,
191191
'action' => elgg_normalize_url('action/dropzone/upload'),
192-
'subtype' => 'file',
192+
'subtype' => 'market_file',
193193
'container_guid' => elgg_get_logged_in_user_guid(),
194194
]);
195195

views/default/object/market/profile.php

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
}
2424

2525
//buttons
26+
$mark_status = false;
27+
2628
if ($entity->owner_guid == elgg_get_logged_in_user_guid() || $entity->canEdit()) {
2729
if($entity->status != 'sold'){
2830
$href = elgg_generate_action_url('market/sold', [
@@ -45,6 +47,8 @@
4547
]);
4648
}
4749

50+
$send_message = false;
51+
4852
if ((bool) elgg_get_plugin_setting('market_pmbutton', 'market')) {
4953
if ($entity->owner_guid != elgg_get_logged_in_user_guid() && $entity->status != 'sold' && elgg_is_active_plugin('messages')) {
5054
$send_message = elgg_view('output/url', [

0 commit comments

Comments
 (0)