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;
}