acl = CreateObject('news_admin.boacl'); $this->sonews = CreateObject('news_admin.sonews'); $this->accounts = $GLOBALS['phpgw']->accounts->get_list('groups'); $this->debug = False; if($session) { $this->read_sessiondata(); $this->use_session = True; foreach(array('start','query','sort','order','cat_id') as $var) { $this->$var = get_var($var, array('POST', 'GET'), ''); } $this->cat_id = $this->cat_id ? $this->cat_id : 'all'; $this->save_sessiondata(); } $this->catbo = createobject('phpgwapi.categories','','news_admin'); $this->cats = $this->catbo->return_array('all',0,False,'','','cat_name',True); settype($this->cats,'array'); //change this around 19 Jan 2038 03:14:07 GMT $this->unixtimestampmax = 2147483647; $this->dateformat = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; } function save_sessiondata() { $data = array( 'start' => $this->start, 'query' => $this->query, 'sort' => $this->sort, 'order' => $this->order, 'cat_id' => $this->cat_id, ); if($this->debug) { echo '
Save:'; _debug_array($data); } $GLOBALS['phpgw']->session->appsession('session_data','news_admin',$data); } function read_sessiondata() { $data = $GLOBALS['phpgw']->session->appsession('session_data','news_admin'); if($this->debug) { echo '
Read:'; _debug_array($data); } $this->start = $data['start']; $this->query = $data['query']; $this->sort = $data['sort']; $this->order = $data['order']; $this->cat_id = $data['cat_id']; } function get_newslist($cat_id, $start=0, $order='',$sort='',$limit=0,$activeonly=False) { $charset = $GLOBALS['phpgw']->translation->charset(); $cats = False; if ($cat_id == 'all') { foreach($this->cats as $cat) { if ($this->acl->is_readable($cat['id'])) { $cats[] = $cat['id']; } } } elseif($this->acl->is_readable($cat_id)) { $cats = $cat_id; } if($cats) { $news = $this->sonews->get_newslist($cats, $start,$order,$sort,$limit,$activeonly,$this->total); foreach($news as $id => $item) { $news[$id]['content'] = ($item['is_html'] ? $item['content'] : nl2br(@htmlspecialchars($item['content'],ENT_COMPAT,$charset) )); } return $news; } else { return array(); } } function get_all_public_news($limit = 5) { $charset = $GLOBALS['phpgw']->translation->charset(); $news = $this->sonews->get_all_public_news($limit); foreach($news as $id => $item) { $news[$id]['content'] = ($item['is_html'] ? $item['content'] : nl2br(@htmlspecialchars($item['content'],ENT_COMPAT,$charset) )); } return $news; } function delete($news_id) { $this->sonews->delete($news_id); } function add($news) { $enc = preg_replace('!\015\012|\015|\012!','',$news['content']); $news['content'] = $enc; return $this->acl->is_writeable($news['category']) ? $this->sonews->add($news) : false; } function edit($news) { $enc = preg_replace('!\015\012|\015|\012!','',$news['content']); $news['content'] = $enc; $oldnews = $this->sonews->get_news($news['id']); return ($this->acl->is_writeable($oldnews['category']) && $this->acl->is_writeable($news['category'])) ? $this->sonews->edit($news) : False; } function get_visibility(&$news) { $now = time(); if ($news['end'] < $now) { return lang('Never'); } else { if ($news['begin'] < $now) { if ($news['end'] == $this->unixtimestampmax) { return lang('Always'); } else { return lang('until') . date($this->dateformat,$news['end']); } } else { if ($news['end'] == $this->unixtimestampmax) { return lang('from') . date($this->dateformat,$news['begin']); } else { return lang('from') . ' ' . date($this->dateformat,$news['begin']) . ' ' . lang('until') . ' ' . date($this->dateformat,$news['end']); } } } } //return the selectboxes with calculated defaults, and change begin and end by sideaffect function get_options(&$news) { $now = time(); //always is default if (!isset($news['begin'])) { //these are only displayed values not necessarily the ones that will get stored $news['begin'] = $now; $news['end'] = $now; $from = 1; $until = 1; } //if enddate is in the past set option to never elseif ($news['end'] < $now) { $news['begin'] = $now; $news['end'] = $now; $from = 0; $until = 1; } else { if ($news['begin'] < $now) { $news['begin'] = $now; if ($news['end'] == $this->unixtimestampmax) { $news['end'] = $now; $from = 1; $until = 1; } else { $from = 0.5; $until = 0.5; } } else { if ($news['end'] == $this->unixtimestampmax) { $news['end'] = $now; $from = 0.5; $until = 1; } else { $from = 0.5; $until = 0.5; } } } $options['from'] = ''; $options['from'] .= ''; $options['from'] .= ''; $options['until'] = ''; $options['until'] .= ''; return $options; } //set the begin and end dates function set_dates($from,$until,&$news) { switch($from) { //always case 1: $news['begin'] = $news['date']; $news['end'] = $this->unixtimestampmax; break; //never case 0: $news['begin'] = 0; $news['end'] = 0; break; default: $news['begin'] = mktime(0,0,0,(int)$news['begin_m'], (int)$news['begin_d'], (int)$news['begin_y']); switch($until) { case 1: $news['end'] = $this->unixtimestampmax; break; default: $news['end'] = mktime(0,0,0,(int)$news['end_m'], (int)$news['end_d'], (int)$news['end_y']); } } } // function format_fields($fields) // { // $cat = createobject('phpgwapi.categories','news_admin'); // $item = array( // 'id' => $fields['id'], // 'date' => $GLOBALS['phpgw']->common->show_date($fields['date']), // 'subject' => $GLOBALS['phpgw']->strip_html($fields['subject']), // 'submittedby' => $fields['submittedby'], // 'content' => $fields['content'], // 'status' => lang($fields['status']), // 'cat' => $cat->id2name($fields['cat']) // ); // return $item; // } function get_news($news_id) { $news = $this->sonews->get_news($news_id); if ($this->acl->is_readable($news['category'])) { $this->total = 1; $news['content'] = ($news['is_html'] ? $news['content']: nl2br(htmlspecialchars($news['content'],ENT_COMPAT,$GLOBALS['phpgw']->translation->charset()) )); return $news; } else { return False; } } } ?>