public function afterSave($created, $options) { // Mark the user as absent in all his games // Get characters, so we can also have the game list App::uses('Character', 'Model'); $Character = new Character(); $params = array(); $params['recursive'] = -1; $params['fields'] = array('Character.id', 'Character.game_id', 'Character.level', 'Character.default_role_id'); $params['group'] = 'game_id'; $params['conditions']['user_id'] = $this->data['Availability']['user_id']; $params['conditions']['main'] = 1; if ($characters = $Character->find('all', $params)) { App::uses('Event', 'Model'); $Event = new Event(); $Event->Behaviors->detach('Commentable'); App::uses('EventsCharacter', 'Model'); $EventsCharacter = new EventsCharacter(); foreach ($characters as $character) { // Get events for this period $params = array(); $params['recursive'] = -1; $params['fields'] = array('Event.id'); $params['conditions']['game_id'] = $character['Character']['game_id']; $params['conditions']['character_level <='] = $character['Character']['level']; $params['conditions']['time_start >='] = $this->data['Availability']['start'] . ' 00:00:00'; $params['conditions']['time_start <='] = $this->data['Availability']['end'] . ' 23:59:59'; if ($events = $Event->find('all', $params)) { foreach ($events as $event) { // If already registered to this event, update it $paramsEventsCharacter = array(); $paramsEventsCharacter['recursive'] = -1; $paramsEventsCharacter['fields'] = array('id'); $paramsEventsCharacter['conditions']['event_id'] = $event['Event']['id']; $paramsEventsCharacter['conditions']['user_id'] = $this->data['Availability']['user_id']; if ($eventCharacter = $EventsCharacter->find('first', $paramsEventsCharacter)) { $eventCharacter['EventsCharacter']['status'] = 0; $EventsCharacter->save($eventCharacter['EventsCharacter']); } else { $toSave = array(); $toSave['event_id'] = $event['Event']['id']; $toSave['user_id'] = $this->data['Availability']['user_id']; $toSave['character_id'] = $character['Character']['id']; $toSave['raids_role_id'] = $character['Character']['default_role_id']; $toSave['comment'] = $this->data['Availability']['comment']; $toSave['status'] = 0; $EventsCharacter->__add($toSave); } } } } } return true; }
public function afterSave($created, $options) { // If users are absent for this event, add them as "absent" automatically App::uses('Availability', 'Model'); $AvailabilityModel = new Availability(); $params = array(); $params['recursive'] = 1; $params['fields'] = array('Availability.id', 'Availability.user_id', 'Availability.comment'); $params['contain']['User'] = array(); $params['conditions']['start <='] = $this->data['Event']['time_start']; $params['conditions']['end >='] = $this->data['Event']['time_start']; if ($availabilities = $AvailabilityModel->find('all', $params)) { App::uses('Character', 'Model'); $CharacterModel = new Character(); foreach ($availabilities as $availability) { $params = array(); $params['recursive'] = -1; $params['fields'] = array('Character.id', 'Character.game_id', 'Character.level', 'Character.default_role_id'); $params['group'] = 'game_id'; $params['conditions']['user_id'] = $availability['Availability']['user_id']; $params['conditions']['game_id'] = $this->data['Event']['game_id']; $params['conditions']['main'] = 1; if ($characters = $CharacterModel->find('all', $params)) { App::uses('EventsCharacter', 'Model'); $EventsCharacterModel = new EventsCharacter(); foreach ($characters as $character) { // If already registered to this event, update it $paramsEventsCharacter = array(); $paramsEventsCharacter['recursive'] = -1; $paramsEventsCharacter['fields'] = array('id'); $paramsEventsCharacter['conditions']['event_id'] = $this->data['Event']['id']; $paramsEventsCharacter['conditions']['user_id'] = $availability['Availability']['user_id']; if ($eventCharacter = $EventsCharacterModel->find('first', $paramsEventsCharacter)) { $eventCharacter['EventsCharacter']['status'] = 0; $EventsCharacterModel->save($eventCharacter['EventsCharacter']); } else { $toSave = array(); $toSave['event_id'] = $this->data['Event']['id']; $toSave['user_id'] = $availability['Availability']['user_id']; $toSave['character_id'] = $character['Character']['id']; $toSave['raids_role_id'] = $character['Character']['default_role_id']; $toSave['comment'] = $availability['Availability']['comment']; $toSave['status'] = 0; $EventsCharacterModel->__add($toSave); } } } } } }
public function patchNeeded() { // bêta 2 $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='default_role_id' AND TABLE_NAME='" . Configure::read('Database.prefix') . "characters'"; if (!$this->controller->Character->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/beta-2'); } // bêta 3 $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='status' AND TABLE_NAME='" . Configure::read('Database.prefix') . "dungeons'"; if (!$this->controller->User->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/beta-3'); } // v1.1 $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='status' AND TABLE_NAME='" . Configure::read('Database.prefix') . "characters'"; if (!$this->controller->User->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.1'); } // v1.3 $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='bridge' AND TABLE_NAME='" . Configure::read('Database.prefix') . "users'"; if (!$this->controller->User->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.3'); } // v1.3.5 App::uses('EventsTemplate', 'Model'); $EventsTemplate = new EventsTemplate(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='time_invitation' AND TABLE_NAME='" . Configure::read('Database.prefix') . "events_templates'"; if (!$EventsTemplate->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.3.5'); } // v1.4 App::uses('RaidsRole', 'Model'); $RaidsRole = new RaidsRole(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='order' AND TABLE_NAME='" . Configure::read('Database.prefix') . "raids_roles'"; if (!$RaidsRole->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.4'); } // v1.4.1 App::uses('EventsCharacter', 'Model'); $EventsCharacter = new EventsCharacter(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='last_notification' AND TABLE_NAME='" . Configure::read('Database.prefix') . "events_characters'"; if (!$EventsCharacter->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.4.1'); } // v1.5 App::uses('Event', 'Model'); $Event = new Event(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='open' AND TABLE_NAME='" . Configure::read('Database.prefix') . "events'"; if (!$Event->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.5'); } // v1.5.2 App::uses('Event', 'Model'); $Event = new Event(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='time_inscription' AND TABLE_NAME='" . Configure::read('Database.prefix') . "events'"; if (!$Event->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.5.2'); } // v1.6 App::uses('User', 'Model'); $User = new User(); $sql = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND COLUMN_NAME='calendar_key' AND TABLE_NAME='" . Configure::read('Database.prefix') . "users'"; if (!$User->query($sql)) { return $this->redirectToPatch('/admin/patcher/apply/v-1.6'); } // v1.6.2 App::uses('Setting', 'Model'); $SettingModel = new Setting(); $notifications = json_decode($SettingModel->getOption('notifications'), true); if (!isset($notifications['comments'])) { return $this->redirectToPatch('/admin/patcher/apply/v-1.6.2'); } }