Example #1
0
 function edit()
 {
     $id = $this->_arg('league');
     if (!$id && empty($this->data)) {
         $this->Session->setFlash(sprintf(__('Invalid %s', true), __('league', true)), 'default', array('class' => 'info'));
         $this->redirect(array('action' => 'index'));
     }
     if (!empty($this->data)) {
         Configure::load("sport/{$this->data['League']['sport']}");
         $this->Configuration->loadAffiliate($this->data['League']['affiliate_id']);
         if (array_key_exists('Day', $this->data['League'])) {
             $this->data['Day'] = $this->data['League']['Day'];
         }
         $transaction = new DatabaseTransaction($this->League);
         // Division->saveAll needs to not have League data in it
         if (array_key_exists('Division', $this->data)) {
             $division = $this->data;
             unset($division['League']);
         }
         if (isset($division) && $division['Division']['schedule_type'] != 'none' && (empty($this->data['Day']) || empty($this->data['Day'][0]))) {
             $this->League->save($this->data, array('validate' => 'only'));
             $this->League->Division->saveAll($division, array('validate' => 'only'));
             $this->League->validationErrors['Day'] = sprintf(__('You must select at least one %s!', true), __('day', true));
         } else {
             if ($this->League->save($this->data) && (!isset($division) || $this->League->Division->saveAll($division))) {
                 // Any time that this is called, the division seeding might change.
                 // We just reset it here, and it will be recalculated as required elsewhere.
                 if (isset($division)) {
                     $divisions = array($this->data['Division']['id']);
                 } else {
                     $divisions = $this->League->divisions($id);
                 }
                 $this->League->Division->Team->updateAll(array('seed' => 0), array('Team.division_id' => $divisions));
                 foreach ($divisions as $division) {
                     Cache::delete("division/{$division}/standings", 'long_term');
                     Cache::delete("division/{$division}/schedule", 'long_term');
                 }
                 Cache::delete("league/{$id}/standings", 'long_term');
                 Cache::delete("league/{$id}/schedule", 'long_term');
                 $transaction->commit();
                 $this->Session->setFlash(sprintf(__('The %s has been saved', true), __('league', true)), 'default', array('class' => 'success'));
                 $this->redirect(array('action' => 'index'));
             }
         }
         $this->Session->setFlash(sprintf(__('The %s could not be saved. Please correct the errors below and try again.', true), __('league', true)), 'default', array('class' => 'warning'));
         $this->Configuration->loadAffiliate($this->League->affiliate($id));
     }
     // Very likely that we need to read existing league information for menu purposes
     $this->League->contain(array('Division' => array('Person', 'Day' => array('order' => 'day_id')), 'StatType'));
     $v = $this->League->validationErrors;
     $this->League->read(null, $id);
     $this->League->validationErrors = $v;
     if (!$this->League->data) {
         $this->Session->setFlash(sprintf(__('Invalid %s', true), __('league', true)), 'default', array('class' => 'info'));
         $this->redirect(array('action' => 'index'));
     }
     foreach (array_keys($this->League->data['Division']) as $key) {
         Division::_addNames($this->League->data['Division'][$key], $this->League->data['League']);
     }
     $this->_addLeagueMenuItems($this->League->data);
     $this->Configuration->loadAffiliate($this->League->data['League']['affiliate_id']);
     if (count($this->League->data['Division']) == 1) {
         // Adjust loaded data
         $this->League->data['Division'] = array_pop($this->League->data['Division']);
         $this->League->data['Day'] = $this->League->data['Division']['Day'];
         $this->set('league_obj', $this->_getComponent('LeagueType', $this->League->data['Division']['schedule_type'], $this));
         $this->set('is_coordinator', false);
     }
     if (empty($this->data)) {
         $this->data = $this->League->data;
         Configure::load("sport/{$this->data['League']['sport']}");
     }
     $this->set('days', $this->League->Division->Day->find('list'));
     $this->set('sport', $this->data['League']['sport']);
     $this->set('stat_types', $this->League->StatType->find('all', array('conditions' => array('sport' => $this->data['League']['sport']))));
     $this->set('affiliates', $this->_applicableAffiliates(true));
     if (Configure::read('feature.tiny_mce')) {
         $this->helpers[] = 'TinyMce.TinyMce';
     }
 }
Example #2
0
 /**
  * Add all the links for a division to the menu.
  */
 function _addDivisionMenuItems($division, $league, $id = null, $name = null)
 {
     Configure::load("sport/{$league['sport']}");
     if ($id) {
         $path = array(__('Leagues', true), $name);
     } else {
         $path = array(__('Leagues', true));
     }
     if (!array_key_exists('league_name', $division)) {
         Division::_addNames($division, $league);
     }
     $is_coordinator = in_array($division['id'], $this->UserCache->read('DivisionIDs'));
     $is_manager = $this->is_manager && in_array($league['affiliate_id'], $this->UserCache->read('ManagedAffiliateIDs'));
     if (array_key_exists('Division', $league)) {
         $division_count = count($league['Division']);
     } else {
         $division_count = $this->requestAction(array('controller' => 'leagues', 'action' => 'division_count'), array('named' => array('league' => $league['id'])));
     }
     if ($division_count == 1) {
         $this->_addMenuItem($division['league_name'], array('controller' => 'leagues', 'action' => 'view', 'league' => $league['id']), $path);
         $path[] = $division['league_name'];
     } else {
         $this->_addMenuItem($league['name'], array('controller' => 'leagues', 'action' => 'view', 'league' => $league['id']), $path);
         $path[] = $league['name'];
         if (!empty($division['name'])) {
             $this->_addMenuItem($division['name'], array('controller' => 'divisions', 'action' => 'view', 'division' => $division['id']), $path);
             $path[] = $division['name'];
         }
     }
     $this->_addMenuItem(__('Schedule', true), array('controller' => 'divisions', 'action' => 'schedule', 'division' => $division['id']), $path);
     $this->_addMenuItem(__('Standings', true), array('controller' => 'divisions', 'action' => 'standings', 'division' => $division['id']), $path);
     if ($this->is_logged_in) {
         if ($division['schedule_type'] != 'competition') {
             $this->_addMenuItem(__('Scores', true), array('controller' => 'divisions', 'action' => 'scores', 'division' => $division['id']), $path);
         }
         if (League::hasStats($league)) {
             $this->_addMenuItem(__('Stats', true), array('controller' => 'divisions', 'action' => 'stats', 'division' => $division['id']), $path);
         }
     }
     if ($this->is_admin || $is_manager || $is_coordinator) {
         $this->_addMenuItem(__('Add Games', true), array('controller' => 'schedules', 'action' => 'add', 'division' => $division['id']), array_merge($path, array('Schedule')));
         if ($division['schedule_type'] != 'competition') {
             $this->_addMenuItem(__('Approve scores', true), array('controller' => 'divisions', 'action' => 'approve_scores', 'division' => $division['id']), $path);
         }
         if ($division_count == 1) {
             $this->_addMenuItem(__('Edit', true), array('controller' => 'leagues', 'action' => 'edit', 'league' => $league['id']), $path);
         } else {
             $this->_addMenuItem(__('Edit', true), array('controller' => 'divisions', 'action' => 'edit', 'division' => $division['id']), $path);
         }
         $this->_addMenuItem(sprintf(__('%s distribution', true), __(Configure::read('sport.field_cap'), true)), array('controller' => 'divisions', 'action' => 'fields', 'division' => $division['id']), $path);
         $this->_addMenuItem(sprintf(__('%s availability', true), __(Configure::read('sport.field_cap'), true)), array('controller' => 'divisions', 'action' => 'slots', 'division' => $division['id']), $path);
         $this->_addMenuItem(__('Status report', true), array('controller' => 'divisions', 'action' => 'status', 'division' => $division['id']), $path);
         if (Configure::read('scoring.allstars') && $division['allstars'] != 'never') {
             $this->_addMenuItem(__('All stars', true), array('controller' => 'divisions', 'action' => 'allstars', 'division' => $division['id']), $path);
         }
         $this->_addMenuItem(__('Captain emails', true), array('controller' => 'divisions', 'action' => 'emails', 'division' => $division['id']), $path);
         if (League::hasSpirit($league)) {
             $this->_addMenuItem(__('Spirit Report', true), array('controller' => 'divisions', 'action' => 'spirit', 'division' => $division['id']), $path);
             $this->_addMenuItem(__('Download', true), array('controller' => 'divisions', 'action' => 'spirit', 'division' => $division['id'], 'ext' => 'csv'), array_merge($path, array('Spirit Report')));
         }
         $this->_addMenuItem(__('Adjust seeds', true), array('controller' => 'divisions', 'action' => 'seeds', 'division' => $division['id']), $path);
     }
     if ($this->is_admin) {
         $this->_addMenuItem(__('Add coordinator', true), array('controller' => 'divisions', 'action' => 'add_coordinator', 'division' => $division['id']), $path);
     }
     // Some items are only applicable depending on league configuration
     if (!empty($division['schedule_type'])) {
         $league_obj = $this->_getComponent('LeagueType', $division['schedule_type'], $this);
         $league_obj->addMenuItems($division, $path, $is_coordinator || $is_manager);
     }
 }