protected function hook_postDelete() { $q = $this->_getQuery(); $q->addTable('tasks'); $q->addQuery('task_id'); $q->addWhere('task_project = ' . $this->_old_key); $tasks_to_delete = $q->loadColumn(); $q->clear(); $task = new w2p_Actions_BulkTasks(); $task->overrideDatabase($this->_query); foreach ($tasks_to_delete as $task_id) { $task->task_id = $task_id; $task->delete(); } $q->clear(); $q->addTable('files'); $q->addQuery('file_id'); $q->addWhere('file_project = ' . $this->_old_key); $files_to_delete = $q->loadColumn(); $q->clear(); $file = new CFile(); $file->overrideDatabase($this->_query); foreach ($files_to_delete as $file_id) { $file->file_id = $file_id; $file->delete(); } $q->clear(); $q->addTable('events'); $q->addQuery('event_id'); $q->addWhere('event_project = ' . $this->_old_key); $events_to_delete = $q->loadColumn(); $q->clear(); $event = new CEvent(); $event->overrideDatabase($this->_query); foreach ($events_to_delete as $event_id) { $event->event_id = $event_id; $event->delete(); } $q->clear(); // remove the project-contacts and project-departments map $q->setDelete('project_contacts'); $q->addWhere('project_id =' . $this->_old_key); $q->exec(); $q->clear(); $q->setDelete('project_departments'); $q->addWhere('project_id =' . $this->_old_key); $q->exec(); $q->clear(); $q->setDelete('tasks'); $q->addWhere('task_represents_project =' . $this->_old_key); parent::hook_preDelete(); }
public function delete() { $result = false; if ($this->_perms->checkModuleItem($this->_tbl_module, 'delete', $this->{$this->_tbl_key})) { $q = $this->_getQuery(); $q->addTable('tasks'); $q->addQuery('task_id'); $q->addWhere('task_project = ' . (int) $this->project_id); $tasks_to_delete = $q->loadColumn(); $q->clear(); $task = new CTask(); $task->overrideDatabase($this->_query); foreach ($tasks_to_delete as $task_id) { $task->task_id = $task_id; $task->delete(); } $q->clear(); $q->addTable('files'); $q->addQuery('file_id'); $q->addWhere('file_project = ' . (int) $this->project_id); $files_to_delete = $q->loadColumn(); $q->clear(); $file = new CFile(); $file->overrideDatabase($this->_query); foreach ($files_to_delete as $file_id) { $file->file_id = $file_id; $file->delete(); } $q->clear(); $q->addTable('events'); $q->addQuery('event_id'); $q->addWhere('event_project = ' . (int) $this->project_id); $events_to_delete = $q->loadColumn(); $q->clear(); $event = new CEvent(); $event->overrideDatabase($this->_query); foreach ($events_to_delete as $event_id) { $event->event_id = $event_id; $event->delete(); } $q->clear(); // remove the project-contacts and project-departments map $q->setDelete('project_contacts'); $q->addWhere('project_id =' . (int) $this->project_id); $q->exec(); $q->clear(); $q->setDelete('project_departments'); $q->addWhere('project_id =' . (int) $this->project_id); $q->exec(); $q->clear(); $q->setDelete('tasks'); $q->addWhere('task_represents_project =' . (int) $this->project_id); $q->clear(); if ($msg = parent::delete()) { return $msg; } return true; } return $result; }