Skip to content

Commit 8e4fa7a

Browse files
authored
Merge pull request #2 from VersoBit/dev-v1.0.0a2
Release v1.0.0a2
2 parents 85e82f1 + fe9328f commit 8e4fa7a

10 files changed

+90
-5
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace VersoBit\ResourceThreads\XFRM\Service\ResourceItem;
4+
5+
class Delete extends XFCP_Delete
6+
{
7+
public function delete($type, $reason = '')
8+
{
9+
$result = parent::delete($type, $reason = '');
10+
11+
$resource = $this->resource;
12+
13+
$this->deleteDiscussionThread($resource);
14+
15+
return $result;
16+
}
17+
18+
protected function deleteDiscussionThread($resource)
19+
{
20+
// Delete resource's associated discussion thread if was unapproved
21+
if($resource->Discussion->discussion_state == 'moderated'){
22+
/** @var \XF\Service\Thread\Deleter $threadDeleter */
23+
$threadDeleter = $this->service('XF:Thread\Deleter', $resource->Discussion);
24+
$threadDeleter->delete('soft', \XF::phrase('xfrm_resource').' deleted');
25+
}
26+
}
27+
}

XFRM/Service/ResourceUpdate/Approve.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ protected function onApprove()
1616
protected function approveDiscussionThreadPost($update)
1717
{
1818
// TODO: find more solid way of finding the update's post in discussion thread
19+
$updateUrl = '%resources/'. strtolower($update->title) .'.'. $update->Resource->resource_id .'/update/'. $update->resource_update_id .'/%';
1920
$post = \XF::finder('XF:Post')->where([
2021
'thread_id' => $update->Resource->discussion_thread_id,
21-
'post_date' => $update->post_date,
22-
'user_id' => $update->Resource->user_id
22+
'user_id' => $update->Resource->user_id,
23+
['message', 'LIKE', $updateUrl]
2324
])->fetchOne();
2425

2526
// Approve resource update's associated post if unapproved
26-
if($post->message_state == 'moderated'){
27+
if($post AND $post->message_state == 'moderated'){
2728
/** @var \XF\Service\Post\Approver $postApprover */
2829
$postApprover = \XF::service('XF:Post\Approver', $post);
2930
$postApprover->approve();
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace VersoBit\ResourceThreads\XFRM\Service\ResourceUpdate;
4+
5+
class Delete extends XFCP_Delete
6+
{
7+
public function delete($type, $reason = '')
8+
{
9+
$result = parent::delete($type, $reason = '');
10+
11+
$update = $this->update;
12+
13+
$this->deleteDiscussionThreadPost($update);
14+
15+
return $result;
16+
}
17+
18+
protected function deleteDiscussionThreadPost($update)
19+
{
20+
// TODO: find more solid way of finding the update's post in discussion thread
21+
$updateUrl = '%resources/'. strtolower($update->title) .'.'. $update->Resource->resource_id .'/update/'. $update->resource_update_id .'/%';
22+
$post = \XF::finder('XF:Post')->where([
23+
'thread_id' => $update->Resource->discussion_thread_id,
24+
'user_id' => $update->Resource->user_id,
25+
['message', 'LIKE', $updateUrl]
26+
])->fetchOne();
27+
28+
// Delete resource update's post if was unapproved
29+
if($post->message_state == 'moderated'){
30+
/** @var \XF\Service\Post\Deleter $postDeleter */
31+
$postDeleter = $this->service('XF:Post\Deleter', $post);
32+
$postDeleter->delete('soft', \XF::phrase('xfrm_resource_update').' deleted');
33+
}
34+
}
35+
}

_data/class_extensions.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<class_extensions>
33
<extension from_class="XFRM\Service\ResourceItem\Approve" to_class="VersoBit\ResourceThreads\XFRM\Service\ResourceItem\Approve" execute_order="10" active="1"/>
4+
<extension from_class="XFRM\Service\ResourceItem\Delete" to_class="VersoBit\ResourceThreads\XFRM\Service\ResourceItem\Delete" execute_order="10" active="1"/>
45
<extension from_class="XFRM\Service\ResourceUpdate\Approve" to_class="VersoBit\ResourceThreads\XFRM\Service\ResourceUpdate\Approve" execute_order="10" active="1"/>
6+
<extension from_class="XFRM\Service\ResourceUpdate\Delete" to_class="VersoBit\ResourceThreads\XFRM\Service\ResourceUpdate\Delete" execute_order="10" active="1"/>
57
</class_extensions>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"from_class": "XFRM\\Service\\ResourceItem\\Delete",
3+
"to_class": "VersoBit\\ResourceThreads\\XFRM\\Service\\ResourceItem\\Delete",
4+
"execute_order": 10,
5+
"active": true
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"from_class": "XFRM\\Service\\ResourceUpdate\\Delete",
3+
"to_class": "VersoBit\\ResourceThreads\\XFRM\\Service\\ResourceUpdate\\Delete",
4+
"execute_order": 10,
5+
"active": true
6+
}

_output/class_extensions/_metadata.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22
"XFRM-Service-ResourceItem-Approve_VersoBit-ResourceThreads-XFRM-Service-ResourceItem-Approve.json": {
33
"hash": "cdfaed7d91dfcfaf74f6b212e3d99163"
44
},
5+
"XFRM-Service-ResourceItem-Delete_VersoBit-ResourceThreads-XFRM-Service-ResourceItem-Delete.json": {
6+
"hash": "1f67763978dcd836228611359811d33d"
7+
},
58
"XFRM-Service-ResourceUpdate-Approve_VersoBit-ResourceThreads-XFRM-Service-ResourceUpdate-Approve.json": {
69
"hash": "e29932c9936103688bbc6ec3f8b40c07"
10+
},
11+
"XFRM-Service-ResourceUpdate-Delete_VersoBit-ResourceThreads-XFRM-Service-ResourceUpdate-Delete.json": {
12+
"hash": "0aaf2bbb43c667649945ed12a0f72082"
713
}
814
}

_output/extension_hint.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
namespace VersoBit\ResourceThreads\XFRM\Service\ResourceItem
77
{
88
class XFCP_Approve extends \XFRM\Service\ResourceItem\Approve {}
9+
class XFCP_Delete extends \XFRM\Service\ResourceItem\Delete {}
910
}
1011

1112
namespace VersoBit\ResourceThreads\XFRM\Service\ResourceUpdate
1213
{
1314
class XFCP_Approve extends \XFRM\Service\ResourceUpdate\Approve {}
15+
class XFCP_Delete extends \XFRM\Service\ResourceUpdate\Delete {}
1416
}
58 KB
Binary file not shown.

addon.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"legacy_addon_id": "",
33
"title": "[VersoBit] Resource Threads",
44
"description": "Automatically approves/deletes threads upon resource approval/deletion.",
5-
"version_id": 1000011,
6-
"version_string": "1.0.0a1",
5+
"version_id": 1000012,
6+
"version_string": "1.0.0a2",
77
"dev": "VersoBit",
88
"dev_url": "https://versobit.dev",
99
"faq_url": "",

0 commit comments

Comments
 (0)