table = Database::get_main_table(TABLE_PROMOTION); } /** * Gets all promotions by career id * @param int career id * @return array results */ public function get_all_promotions_by_career_id($career_id) { return Database::select('*', $this->table, array('where'=>array('career_id = ?'=>$career_id))); } public function get_status_list() { return array(PROMOTION_STATUS_ACTIVE => get_lang('Active'), PROMOTION_STATUS_INACTIVE => get_lang('Inactive')); } /** * Displays the title + grid * @return string html code */ function display() { // action links echo '
'; echo ''.Display::return_icon('back.png',get_lang('Back')).get_lang('Back').''; echo ''.Display::return_icon('filenew.gif',get_lang('Add')).get_lang('Add').''; echo '
'; echo Display::grid_html('promotions'); } /** * Update all session status by promotion * @param int promotion id * @param int status (1, 0) */ public function update_all_sessions_status_by_promotion_id($promotion_id, $status) { require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php'; $session_list = SessionManager::get_all_sessions_by_promotion($promotion_id); if (!empty($session_list)) { foreach($session_list as $item) { SessionManager::set_session_status($item['id'], $status); } } } /** * Returns a Form validator Obj * @todo the form should be auto generated * @param string url * @param string header name * @return obj form validator obj */ function return_form($url, $action = 'add') { $form = new FormValidator('promotion', 'post', $url); // Settting the form elements $header = get_lang('Add'); if ($action == 'edit') { $header = get_lang('Modify'); } $form->addElement('header', '', $header); $form->addElement('hidden', 'id', intval($_GET['id'])); $form->addElement('text', 'name', get_lang('Name'), array('size' => '70','id' => 'name')); $form->add_html_editor('description', get_lang('Description'), false, false, array('Width' => '95%', 'Height' => '250')); $career = new Career(); $careers = $career->get_all(); $career_list = array(); foreach($careers as $item) { $career_list[$item['id']] = $item['name']; } $form->addElement('select', 'career_id', get_lang('Career'), $career_list); $status_list = $this->get_status_list(); $form->addElement('select', 'status', get_lang('Status'), $status_list); if ($action == 'edit') { $form->addElement('text', 'created_at', get_lang('CreatedAt')); $form->freeze('created_at'); } $form->addElement('style_submit_button', 'submit', get_lang('Modify'), 'class="save"'); // Setting the defaults $defaults = $this->get($_GET['id']); $defaults['created_at'] = api_convert_and_format_date($defaults['created_at']); $defaults['updated_at'] = api_convert_and_format_date($defaults['updated_at']); $form->setDefaults($defaults); // Setting the rules $form->addRule('name', '
'.get_lang('ThisFieldIsRequired'), 'required'); return $form; } /** * Copies the promotion to a new one * @param integer Promotion ID * @param integer Career ID, in case we want to change it * @return integer New promotion ID on success, false on failure */ public function copy($id, $career_id = null) { $promotion = $this->get($id); $new = array(); foreach ($promotion as $key => $val) { switch ($key) { case 'id': case 'updated_at': break; case 'name': $val .= ' '.get_lang('Copy'); $new[$key] = $val; break; case 'created_at': $val = api_get_utc_datetime(); $new[$key] = $val; break; case 'career_id': if (!empty($career_id)) { $val = (int)$career_id; } $new[$key] = $val; default: $new[$key] = $val; break; } } $pid = $this->save($new); //Now also copy each session of the promotion as a new session and register it inside the promotion require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php'; $session_list = SessionManager::get_all_sessions_by_promotion($id); if (!empty($session_list)) { foreach($session_list as $item) { $sid = SessionManager::copy_session($item['id'], true, true); if ($sid != 0) { SessionManager::suscribe_sessions_to_promotion($pid,array($sid)); } } } return $pid; } }