/** * delete deletes the given entry * * @param int $cid entry-id for calendar * @return string html-string */ private function delete($cid) { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.CalendarView#page#caption#delete') . ": {$cid}"); // check rights if (Rights::check_rights($cid, 'calendar')) { // prepare return $output = ''; // smarty-templates $sConfirmation = new JudoIntranetSmarty(); $form = new HTML_QuickForm2('confirm', 'post', array('name' => 'confirm', 'action' => 'calendar.php?id=delete&cid=' . $this->get('cid'))); // add button $form->addElement('submit', 'yes', array('value' => parent::lang('class.CalendarView#delete#form#yes'))); // smarty-link $link = array('params' => '', 'href' => 'calendar.php?id=listall', 'title' => parent::lang('class.CalendarView#delete#title#cancel'), 'content' => parent::lang('class.CalendarView#delete#form#cancel')); $sConfirmation->assign('link', $link); $sConfirmation->assign('spanparams', 'id="cancel"'); $sConfirmation->assign('message', parent::lang('class.CalendarView#delete#message#confirm')); $sConfirmation->assign('form', $form); // validate if ($form->validate()) { // get calendar-object $calendar = new Calendar($cid); // disable entry $calendar->update(array('valid' => 0)); // smarty $sConfirmation->assign('message', parent::lang('class.CalendarView#delete#message#done')); $sConfirmation->assign('form', ''); // write entry try { $calendar->write_db('update'); } catch (Exception $e) { $GLOBALS['Error']->handle_error($e); return $GLOBALS['Error']->to_html($e); } } // smarty return return $sConfirmation->fetch('smarty.confirmation.tpl'); } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * decissions shows the decissions of this or all protocols * * @param int $pid entry-id for protocol * @return string html of the decissions page */ private function decisions($pid) { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.ProtocolView#page#caption#decisions')); // check rights if (Rights::check_rights($pid, 'protocol', true) || $pid == false) { // prepare template $sD = new JudoIntranetSmarty(); // check pid all or single if ($pid === false) { // get protocol ids $pids = Protocol::return_protocols(); // create protocol objects to sort $protocols = array(); foreach ($pids as $pid) { $protocols[] = new Protocol($pid); } // sort array by protocols date usort($protocols, array($this, 'callback_compare_protocols')); // walk through ids $counter = 0; foreach ($protocols as $protocol) { // assign data $data[$counter] = array('date' => $protocol->get_date('d.m.Y'), 'type' => $protocol->get_type(), 'location' => $protocol->get_location(), 'decisions' => $this->parseHtml($protocol->get_protocol(), '<p class="tmceDecision">|</p>')); // check if protocol has decisions if (count($data[$counter]['decisions']) == 0) { unset($data[$counter]); } $data = array_merge($data); // add to template $sD->assign('data', $data); // increment counter $counter++; } } else { // get protocol object $protocol = new Protocol($pid); // assign data $data[] = array('date' => $protocol->get_date('d.m.Y'), 'type' => $protocol->get_type(), 'location' => $protocol->get_location(), 'decisions' => $this->parseHtml($protocol->get_protocol(), '<p class="tmceDecision">|</p>')); // add to template $sD->assign('data', $data); } // return return $sD->fetch('smarty.protocol.showdecisions.tpl'); } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * shows the details of the entry as pdf * * @return string pdf-string */ private function topdf() { // check cid and pid given if ($this->get('cid') !== false && $this->get('pid') !== false) { // check cid and pid exists if (Calendar::check_id($this->get('cid')) && Preset::check_preset($this->get('pid'), 'calendar')) { // check if announcement has values if (Calendar::check_ann_value($this->get('cid'))) { // prepare return $return = ''; // get preset $preset = new Preset($this->get('pid'), 'calendar', $this->get('cid')); // smarty $sA = new JudoIntranetSmarty(); // get calendar $calendar = new Calendar($this->get('cid')); // prepare marker-array $announcement = array('version' => date('dmy')); // add calendar-fields to array $calendar->add_marks($announcement); // add field-names and -values to array $preset->add_marks($announcement); // smarty $sA->assign('a', $announcement); // check marks in values foreach ($announcement as $k => $v) { if (preg_match('/\\{\\$a\\..*\\}/U', $v)) { $announcement[$k] = $sA->fetch('string:' . $v); } } // smarty $sA->assign('a', $announcement); $pdf_out = $sA->fetch($preset->get_path()); // get HTML2PDF-object $pdf = new HTML2PDF('P', 'A4', 'de', true, 'UTF-8', array(0, 0, 0, 0)); // convert $pdf->writeHTML($pdf_out, false); // output $pdf_filename = $this->replace_umlaute(html_entity_decode($sA->fetch('string:' . $preset->get_filename()), ENT_XHTML, 'ISO-8859-1')); $pdf->Output($pdf_filename, 'D'); // return return $return; } else { // error $errno = $GLOBALS['Error']->error_raised('AnnNotExists', 'entry:' . $this->get('cid') . '|' . $this->get('pid'), $this->get('cid') . '|' . $this->get('pid')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // error $errno = $GLOBALS['Error']->error_raised('WrongParams', 'entry:cid_or_pid', 'cid_or_pid'); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // error $errno = $GLOBALS['Error']->error_raised('MissingParams', 'entry:cid_or_pid', 'cid_or_pid'); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * defaultContent returns the content if nothing else is given * * @return string default content as html-string */ protected function defaultContent() { // smatry-template $sD = new JudoIntranetSmarty(); $sD->assign('caption', parent::lang('class.PageView#defaultContent#text#caption')); $text[] = array('caption' => '', 'text' => parent::lang('class.PageView#defaultContent#text#content')); $sD->assign('text', $text); // return return $sD->fetch('smarty.default.content.tpl'); }
/** * logout logs the user out and sets all properties back to public access, * returns logout-message * * @return string html-string of logout-message */ public function logout() { // smarty-template $sLogout = new JudoIntranetSmarty(); // set user-properties to public access $this->set_id(0); $this->set_groups(array(0)); $this->set_loggedin(false); $this->set_login_message('class.User#login#message#default'); $this->set_userinfo(array()); // cleanup session foreach ($_SESSION as $name => $session) { // check if $_SESSION['user'] if ($name != 'user') { unset($_SESSION[$name]); } } // read config again $_SESSION['GC'] = new Config(); // logout-message // smarty $sLogout->assign('caption', parent::lang('class.User#logout#logout#caption')); $sLogout->assign('message', parent::lang('class.User#logout#logout#message')); $sLogout->assign('form', ''); // // return // smarty return $sLogout->fetch('smarty.login.tpl'); }
/** * movement returns the details of a movement-entry as html * * @param int $mid entry-id for the movement * @return string html-string with the details of the movement entry */ private function movement($mid) { // get db-object $db = Db::newDb(); // get movement details // prepare sql-statement $sql = "SELECT m.inventory_id\n\t\t\t\tFROM inventory_movement AS m\n\t\t\t\tWHERE m.id = {$mid}"; // execute $result = $db->query($sql); // fetch result list($inventory_id) = $result->fetch_array(MYSQL_NUM); // get invetory-object $inventory = new Inventory($inventory_id); // get preset $preset = $inventory->get_preset(); // get fields $fields = $preset->get_fields(); // check rights if (Rights::check_rights($inventory->get_id(), 'inventory')) { //smarty-template $sM = new JudoIntranetSmarty(); // prepare sql $sql = "SELECT m.id,m.user_id,m.action,m.date_time\n\t\t\t\t\tFROM inventory_movement AS m\n\t\t\t\t\tWHERE m.inventory_id=" . $inventory->get_id() . "\n\t\t\t\t\tORDER BY m.date_time ASC"; // execute $result = $db->query($sql); // fetch result $i = 0; $movements_data = array(); while (list($m_id, $m_user_id, $m_action, $m_date_time) = $result->fetch_array(MYSQL_NUM)) { $movements_data[$i]['id'] = $m_id; $movements_data[$i]['user_id'] = $m_user_id; $movements_data[$i]['action'] = $m_action; $movements_data[$i]['date_time'] = $m_date_time; $i++; } // get actual movement data $data = array(); for ($i = 0; $i < count($movements_data); $i++) { // check actual mid and previous if ($movements_data[$i]['id'] == $mid) { $data[0]['id'] = $movements_data[$i]['id']; $data[0]['user_id'] = $movements_data[$i]['user_id']; $data[0]['action'] = $movements_data[$i]['action']; $data[0]['date_time'] = $movements_data[$i]['date_time']; // check first if ($i != 0) { $data[1]['id'] = $movements_data[$i - 1]['id']; $data[1]['user_id'] = $movements_data[$i - 2]['user_id']; $data[1]['action'] = $movements_data[$i - 1]['action']; } } } $sM->assign('inventory', parent::lang('class.InventoryView#movement#hx#movement') . $inventory->get_name() . ' (' . $inventory->get_inventory_no() . ')'); $sM->assign('date', parent::lang('class.InventoryView#movement#hx#at') . date('d.m.Y', strtotime($data[0]['date_time']))); $back = array('href' => 'javascript:history.back(1)', 'title' => parent::lang('class.InventoryView#movement#back#title'), 'content' => parent::lang('class.InventoryView#movement#back#name')); $sM->assign('back', $back); foreach ($data as $movement) { // get user $user = new User(); $user->change_user($movement['user_id'], false, 'id'); // prepare fields $fields_out = array(); foreach ($fields as $field) { // get values $data = array('table' => 'inventory_movement', 'table_id' => $movement['id'], 'field_id' => $field->get_id()); $field->read_value($data); $fields_out[] = $field->value_to_html(); } $sM->assign('data', $fields_out); $sM->assign('user', parent::lang('class.InventoryView#movement#fields#' . $movement['action']) . ' ' . $user->get_userinfo('name')); } // return return $sM->fetch('smarty.inventory.movement.tpl'); } else { // error $errno = $GLOBALS['Error']->error_raised('NotAuthorized', $this->get('id'), $mid); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }
/** * defaults handles the administration of the default-values * * @return string html-string with the field-administration-page */ private function defaults() { // prepare content $content = ''; $rid = $this->get('rid'); // check $_GET['field'] if ($this->get('rid') !== false || $this->get('action') == 'new') { // pagecaption $this->tpl->assign('pagecaption', parent::lang('class.AdministrationView#page#caption#defaults')); // check if row exists if ($this->row_exists('defaults', $rid) || $this->get('action') == 'new') { // check $_GET['action'] if ($this->get('action') == 'new') { $content .= $this->new_row('defaults'); } elseif ($this->get('action') == 'edit') { $content .= $this->edit_row('defaults', $rid); } elseif ($this->get('action') == 'disable') { // check if row is enabled if ($this->is_valid('defaults', $rid)) { // set valid 0 $this->set_valid('defaults', $rid, 0); // list table content $content .= $this->list_table_content('defaults', $this->get('page')); } else { // give link to enable // smarty $sE = new JudoIntranetSmarty(); $sE->assign('message', parent::lang('class.AdministrationView#defaults#disable#rowNotEnabled')); $sE->assign('href', 'administration.php?id=' . $this->get('id') . '&action=enable&rid=' . $rid); $sE->assign('title', parent::lang('class.AdministrationView#defaults#disable#rowNotEnabled.enable')); $sE->assign('content', parent::lang('class.AdministrationView#defaults#disable#rowNotEnabled.enable')); $content .= $sE->fetch('smarty.admin.dis-enable.tpl'); } } elseif ($this->get('action') == 'enable') { // check if row is disabled if (!$this->is_valid('defaults', $rid)) { // set valid 1 $this->set_valid('defaults', $rid, 1); // list table content $content .= $this->list_table_content('defaults', $this->get('page')); } else { // give link to disable // smarty $sE = new JudoIntranetSmarty(); $sE->assign('message', parent::lang('class.AdministrationView#defaults#enable#rowNotDisabled')); $sE->assign('href', 'administration.php?id=' . $this->get('id') . '&action=disable&rid=' . $rid); $sE->assign('title', parent::lang('class.AdministrationView#defaults#enable#rowNotDisabled.disable')); $sE->assign('content', parent::lang('class.AdministrationView#defaults#enable#rowNotDisabled.disable')); $content .= $sE->fetch('smarty.admin.dis-enable.tpl'); } } elseif ($this->get('action') == 'delete') { $content .= $this->delete_row('defaults', $rid); } else { $content .= $this->list_table_content('defaults', $this->get('page')); } } else { $errno = $GLOBALS['Error']->error_raised('RowNotExists', $this->get('rid')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } } else { // add default content $content .= $this->list_table_content('defaults', $this->get('page')); } // smarty $this->tpl->assign('caption', parent::lang('class.AdministrationView#defaults#caption#name')); $this->tpl->assign('tablelinks', ''); // return return $content; }
/** * user controles the actions for usersettings * * @return string the html-string of usersettings-page */ private function user() { // smarty-template $sUserPasswd = new JudoIntranetSmarty(); // prepare return $return = ''; // check login if ($_SESSION['user']->get_loggedin()) { // smarty $sUserPasswd->assign('pagecaption', parent::lang('class.MainView#user#caption#general') . ' ' . $_SESSION['user']->get_userinfo('name')); // check action if ($this->get('action') == 'passwd') { // smarty $sUserPasswd->assign('section', parent::lang('class.MainView#user#caption#passwd')); // prepare form $form = new HTML_QuickForm2('passwd', 'post', array('name' => 'passwd', 'action' => 'index.php?id=user&action=passwd')); // add elementgroup $passwd = $form->addElement('group', 'password', array()); // add fields $passwd1 = $passwd->addElement('password', 'password1', array()); $passwd2 = $passwd->addElement('password', 'password2', array()); // add label $passwd->setLabel(parent::lang('class.MainView#user#passwd#label') . ':'); // submit-button $form->addSubmit('submit', array('value' => parent::lang('class.MainView#user#passwd#submitButton'))); // renderer $renderer = HTML_QuickForm2_Renderer::factory('default'); $renderer->setOption('required_note', parent::lang('class.MainView#user#form#requiredNote')); // add rules $passwd->addRule('required', parent::lang('class.MainView#user#rule#required')); $passwd->addRule('callback', parent::lang('class.MainView#user#rule#checkPasswd'), array($this, 'callback_check_passwd')); // validate if ($form->validate()) { // get values $data = $form->getValue(); // get db-object $db = Db::newDb(); // prepare sql-statement $sql = "UPDATE user\n\t\t\t\t\t\t\tSET password='******'password']['password1']) . "'\n\t\t\t\t\t\t\tWHERE id=" . $_SESSION['user']->get_id(); // execute statement $result = $db->query($sql); // smarty message $sUserPasswd->assign('message', parent::lang('class.MainView#user#validate#passwdChanged')); } else { // smarty form and return $sUserPasswd->assign('form', $form->render($renderer)); } return $sUserPasswd->fetch('smarty.user.passwd.tpl'); } else { return 'default content'; } } else { // not authorized $errno = $GLOBALS['Error']->error_raised('NotAuthorized', 'entry:' . $this->get('id'), $this->get('id')); $GLOBALS['Error']->handle_error($errno); return $GLOBALS['Error']->to_html($errno); } }