Microweber\Providers\Content\ContentManagerHelpers::delete PHP Method

delete() public method

public delete ( $data )
    public function delete($data)
    {
        $to_trash = true;
        $to_untrash = false;
        if (!is_array($data)) {
            $del_data = array();
            $del_data['id'] = intval($data);
            $data = $del_data;
            $to_trash = false;
        }
        if (isset($data['forever']) or isset($data['delete_forever'])) {
            $to_trash = false;
        }
        if (isset($data['undelete'])) {
            $to_trash = true;
            $to_untrash = true;
        }
        $del_ids = array();
        if (isset($data['id'])) {
            $c_id = intval($data['id']);
            $del_ids[] = $c_id;
            if ($to_trash == false) {
                $this->app->database_manager->delete_by_id('content', $c_id);
            }
        }
        $this->app->event_manager->trigger('content.before.delete', $data);
        if (isset($data['ids']) and is_array($data['ids'])) {
            foreach ($data['ids'] as $value) {
                $c_id = intval($value);
                $del_ids[] = $c_id;
                if ($to_trash == false) {
                    $this->app->database_manager->delete_by_id('content', $c_id);
                }
            }
        }
        if (!empty($del_ids)) {
            DB::transaction(function () use($del_ids, $to_untrash, $to_trash) {
                foreach ($del_ids as $value) {
                    $c_id = intval($value);
                    if ($to_untrash == true) {
                        DB::table($this->tables['content'])->whereId($c_id)->whereIsDeleted(1)->update(['is_deleted' => 0]);
                        DB::table($this->tables['content'])->whereParent($c_id)->whereIsDeleted(1)->update(['is_deleted' => 0]);
                        if (isset($this->tables['categories'])) {
                            DB::table($this->tables['categories'])->whereRelId($c_id)->whereRelType('content')->whereIsDeleted(1)->update(['is_deleted' => 0]);
                        }
                    } elseif ($to_trash == false) {
                        DB::table($this->tables['content'])->whereParent($c_id)->update(['parent' => 0]);
                        $this->app->database_manager->delete_by_id('menus', $c_id, 'content_id');
                        if (isset($this->tables['media'])) {
                            $delete_in_table = $this->tables['media'];
                            $delete_in_table = $this->app->database_manager->real_table_name($delete_in_table);
                            $q = "DELETE FROM {$delete_in_table} WHERE rel_id={$c_id}  AND  rel_type='content'  ";
                            $this->app->database_manager->q($q);
                        }
                        if (isset($this->tables['categories'])) {
                            $delete_in_table = $this->tables['categories'];
                            $delete_in_table = $this->app->database_manager->real_table_name($delete_in_table);
                            $q = "DELETE FROM {$delete_in_table} WHERE rel_id={$c_id}  AND  rel_type='content'  ";
                            $this->app->database_manager->q($q);
                        }
                        if (isset($this->tables['categories_items'])) {
                            $delete_in_table = $this->tables['categories_items'];
                            $delete_in_table = $this->app->database_manager->real_table_name($delete_in_table);
                            $q = "DELETE FROM {$delete_in_table} WHERE rel_id={$c_id}  AND  rel_type='content'  ";
                            $this->app->database_manager->q($q);
                        }
                        if (isset($this->tables['custom_fields'])) {
                            $delete_in_table = $this->tables['custom_fields'];
                            $delete_in_table = $this->app->database_manager->real_table_name($delete_in_table);
                            $q = "DELETE FROM {$delete_in_table} WHERE rel_id={$c_id}  AND  rel_type='content'  ";
                            $this->app->database_manager->q($q);
                        }
                        if (isset($this->tables['content_data'])) {
                            $delete_in_table = $this->tables['content_data'];
                            $delete_in_table = $this->app->database_manager->real_table_name($delete_in_table);
                            $q = "DELETE FROM {$delete_in_table} WHERE content_id={$c_id}    ";
                            $this->app->database_manager->q($q);
                        }
                    } else {
                        DB::table($this->tables['content'])->whereId($c_id)->update(['is_deleted' => 1]);
                        DB::table($this->tables['content'])->whereParent($c_id)->update(['is_deleted' => 1]);
                        if (isset($this->tables['categories'])) {
                            DB::table($this->tables['categories'])->whereRelId($c_id)->whereRelType('content')->update(['is_deleted' => 1]);
                        }
                    }
                    $this->app->cache_manager->delete('content/' . $c_id);
                }
            });
        }
        $this->app->cache_manager->delete('menus');
        $this->app->cache_manager->delete('content');
        $this->app->cache_manager->delete('categories/global');
        $this->app->cache_manager->delete('content/global');
        return $del_ids;
    }