/** * There are 2 cases where this function can be called. * 1. When watched dir was removed * 2. When some dir was watched, but it was unmounted * * In case of 1, $userAddedWatchedDir should be true * In case of 2, $userAddedWatchedDir should be false * * When $userAddedWatchedDir is true, it will set "Watched" flag to false * otherwise, it will set "Exists" flag to true */ public function remove($userAddedWatchedDir = true) { $music_dir_id = $this->getId(); $sql = <<<SQL SELECT DISTINCT s.instance_id FROM cc_music_dirs AS md LEFT JOIN cc_files AS f ON f.directory = md.id RIGHT JOIN cc_schedule AS s ON s.file_id = f.id WHERE md.id = :musicDirId; SQL; $show_instances = Application_Common_Database::prepareAndExecute($sql, array(':musicDirId' => $music_dir_id), 'all'); // get all the files on this dir $sql = <<<SQL UPDATE cc_files SET file_exists = 'f' WHERE id IN (SELECT f.id FROM cc_music_dirs AS md LEFT JOIN cc_files AS f ON f.directory = md.id WHERE md.id = :musicDirId); SQL; $affected = Application_Common_Database::prepareAndExecute($sql, array(':musicDirId' => $music_dir_id), 'all'); // set RemovedFlag to true if ($userAddedWatchedDir) { self::setWatchedFlag(false); } else { self::setExistsFlag(false); } //$res = $this->_dir->delete(); foreach ($show_instances as $show_instance_row) { $temp_show = new Application_Model_ShowInstance($show_instance_row["instance_id"]); $temp_show->updateScheduledTime(); } Application_Model_RabbitMq::PushSchedule(); }