/**
  * Run the module
  */
 function run()
 {
     $sites = $this->_get_sites();
     if (empty($sites)) {
         echo '<p>You must have editing access to at least one live Reason site for this module to work</p>' . "\n";
         return;
     }
     $users = $this->_get_users();
     if (empty($users)) {
         echo '<p>No users available.</p>' . "\n";
         return;
     }
     echo '<div id="reviewChangesModule">' . "\n";
     $d = new disco();
     $d->add_element('start_date', 'textdate', array('prepopulate' => true, 'year_max' => carl_date('Y'), 'year_min' => '1000'));
     $d->add_required('start_date');
     $d->add_element('end_date', 'textdate', array('year_max' => carl_date('Y'), 'year_min' => '1000'));
     $d->add_comments('end_date', form_comment('If no end date given, changes will be shown for just the start date'));
     $d->add_element('type', 'select', array('options' => $this->_prep_for_disco($this->_get_types())));
     if (!empty($this->admin_page->request['type_id'])) {
         $d->set_value('type', $this->admin_page->request['type_id']);
     }
     $d->add_element('site', 'select', array('options' => $this->_prep_for_disco($sites)));
     if (!empty($this->admin_page->request['site_id'])) {
         $d->set_value('site', $this->admin_page->request['site_id']);
     }
     $d->add_element('user', 'select', array('options' => $this->_prep_for_disco($users)));
     if (!empty($this->admin_page->request['user'])) {
         $d->set_value('user', $this->admin_page->request['user']);
     }
     $d->add_element('sort', 'select', array('options' => array('DESC' => 'Descending', 'ASC' => 'Ascending')));
     $d->set_actions(array('review' => 'Review'));
     $d->run();
     if ($d->successfully_submitted()) {
         $end_date = $d->get_value('end_date') ? $d->get_value('end_date') : $d->get_value('start_date');
         if ($end_date < $d->get_value('start_date')) {
             echo 'Please pick a end date on or after the start date.';
         } else {
             echo $this->_get_changes_markup($d->get_value('start_date'), $end_date, $d->get_value('type'), $d->get_value('site'), $d->get_value('user'), $d->get_value('sort'));
         }
     }
     echo '</div>' . "\n";
 }
 function set_disco_obj($types)
 {
     $d = new disco();
     $types = array();
     foreach ($this->types as $type) {
         $types = $types + array($type->get_value('id') => $type->get_value('name'));
     }
     $d->add_element('types', 'select_multiple', array('options' => $types));
     $d->set_display_name('types', 'Types to search:');
     $d->set_comments('types', form_comment('<a id="select_all" href="#all">Select all</a>'));
     $d->add_element('max', 'radio_inline_no_sort', array('options' => array('yes' => 'Yes', 'no' => 'No')));
     $d->set_display_name('max', 'Limit number of orphans to find:');
     $d->set_comments('max', form_comment('Searching for all orphaned entities can take a while. Limiting the number to find speeds the search.'));
     $d->set_value('max', 'yes');
     $d->add_element('max_num', 'text', array('size' => '5'));
     $d->set_display_name('max_num', 'Maximum number:');
     $d->set_value('max_num', '50');
     $d->add_element('cur_module', 'hidden');
     $d->set_value('cur_module', 'OrphanManager');
     $d->add_required('types', 'max');
     $d->add_element('mode', 'hidden');
     $d->set_value('mode', 'manager');
     $d->set_actions(array('run' => 'Find Orphaned Entities'));
     function check_phase_callback(&$disco)
     {
         if ($disco->successfully_submitted()) {
             $disco->show_form = false;
         }
     }
     $d->add_callback('check_phase_callback', 'where_to');
     $this->d = $d;
 }