diff --git a/controllers/components/social_component.php b/controllers/components/social_component.php index 7633519b6..8a5c77a48 100644 --- a/controllers/components/social_component.php +++ b/controllers/components/social_component.php @@ -852,12 +852,19 @@ class SocialComponent extends Component implements CrawlConstants break; } $post_id = $parent->clean($_REQUEST['post_id'], "int"); - $success=$group_model->deleteGroupItem($post_id, $user_id); + $group_item = $group_model->getGroupItem($post_id); + $success = false; + if($group_item) { + $success = + $group_model->deleteGroupItem($post_id, $user_id); + } $search_array = array( array("parent_id", "=", $just_thread, "")); $item_count = $group_model->getGroupItemCount($search_array, $user_id, -1); if($success) { + $group_model->deleteResources($group_item["GROUP_ID"], + "post".$post_id); if($item_count == 0) { unset($_REQUEST['just_thread']); } diff --git a/models/group_model.php b/models/group_model.php index 49a8c97cf..cc4f36a95 100644 --- a/models/group_model.php +++ b/models/group_model.php @@ -1133,9 +1133,11 @@ class GroupModel extends Model * * @param int $group_id group identifier of group wiki page belongs to * @param int $page_id identifier for page want folder paths for + * @param bool $create whether to create folders or not if these don't + * exist * @return array (page_folder, thumb_folder) */ - function getGroupPageResourcesFolders($group_id, $page_id) + function getGroupPageResourcesFolders($group_id, $page_id, $create = false) { $group_page_folder = crawlHash( "group" . $group_id. $page_id . AUTH_KEY); @@ -1150,6 +1152,8 @@ class GroupModel extends Model $thumb_path = "$thumb_prefix_path/$thumb_page_folder"; if(file_exists($group_path) && file_exists($thumb_path)) { return array($group_path, $thumb_path); + } else if(!$create) { + return false; } if(!file_exists(APP_DIR) && !mkdir(APP_DIR)) { return false; @@ -1277,8 +1281,8 @@ class GroupModel extends Model return $parsed_page; } /** - * Deletes a resource (image, video, etc) associated with a wiki page - * belonging to a group. + * Deletes a resource (image, video, etc) associated with a wiki page or + * group feed post belong to a group * * @param string $resource_name name of resource to delete * @param int $group_id group identifier of group wiki page belongs to @@ -1301,6 +1305,28 @@ class GroupModel extends Model } return true; } + /** + * Deletes all resources (image, video, etc) associated with a wiki page + * belonging to a group. + * + * @param int $group_id group identifier of group wiki page belongs to + * @param int $page_id identifier for page want to delete resource from + * @return bool whether the deletion was successful + */ + function deleteResources($group_id, $page_id) + { + $folders = $this->getGroupPageResourcesFolders($group_id, + $page_id); + if(!$folders) {return false; } + list($folder, $thumb_folder) = $folders; + if($folder && file_exists($folder)) { + $this->db->unlinkRecursive($folder); + } + if($thumb_folder && file_exists($thumb_folder)) { + $this->db->unlinkRecursive($thumb_folder); + } + return true; + } /** * Renames a resource (image, video, etc) associated with a wiki page * belonging to a group. @@ -1345,7 +1371,8 @@ class GroupModel extends Model function copyFileToGroupPageResource($tmp_name, $file_name, $mime_type, $group_id, $page_id) { - $folders = $this->getGroupPageResourcesFolders($group_id, $page_id); + $folders = $this->getGroupPageResourcesFolders($group_id, $page_id, + true); if(!$folders) {return false; } list($folder, $thumb_folder) = $folders; if(move_uploaded_file($tmp_name, "$folder/$file_name")) {