Here is the error message:
Warning: Cannot modify header information - headers already sent by (output started at D:\dev\web\brfcirkusprinsessan\dev\classes\NewsIte m.php:1) in D:\dev\web\brfcirkusprinsessan\dev\handlers\form_h andler.php on line 53The header location call is the line 53 in the error message. Below is the code for the NewsItem class. If I comment the usage of the NewsItem class everything works fine, so logic suggests something is wrong in the NewsItem class, but I don't see it.
The error appears even if I don't use the if statement where the NewsItem class is used.
Does anyone see the problem?
first here is the form_handler.php code which has the error on line 54
Expand|Select|Wrap|Line Numbers
- <?php
- session_start();
- require_once '../classes/Calendar.php';
- require_once '../classes/DBEasy.php';
- require_once '../classes/Email.php';
- require_once '../classes/NewsHolder.php';
- require_once '../classes/NewsItem.php';
- $widget = $_POST['widget'];
- $action = $_POST['action'];
- $db_id = $_POST['dbid'];
- $location = getenv('HTTP_REFERER');
- // *** dispatcher code ***
- //
- // calendar update
- if ( $widget == 'calendar' && $action == 'update') {
- $cal = new Calendar($db_id);
- $cal->set_title($_POST['title']);
- $cal->set_description($_POST['desc']);
- $cal->save();
- }
- else if ($action=='doemail') {
- $to = 'styrelsen@example.com';
- $sub = 'Nytt kontaktmail - ' . $_POST['sub'];
- $msg = $_POST['msg'];
- $sender = 'hemsidan@example.com';
- $sender_name = 'Hemsidans kontaktform';
- //construct($recipient, $subject,$message,$sender,$sender_name='',$recipient_name='')
- $email = new Email($to,$sub,$msg,$sender,$sender_name);
- Email::send($email);
- }
- else if ( $widget == 'newsholder' && $action == 'update') {
- $nh = new NewsHolder($db_id);
- $nh->set_title($_POST['title']);
- $nh->set_description($_POST['desc']);
- $nh->set_max_news_displayed($_POST['max_news_displayed']);
- $nh->set_max_news_message_length($_POST['max_news_message_length']);
- $nh->save();
- }
- else if ( $widget == 'newsitem' && $action == 'update') {
- $ni = new NewsItem($db_id);
- $ni->set_title($_POST['title']);
- $ni->set_message($_POST['message']);
- //TODO: add image id handling
- $ni->save();
- }
- // after updating the data model go back to referring page
- header('Location: ' . $location);
- ?>
And here's the NewsItem class
Expand|Select|Wrap|Line Numbers
- <?php
- class NewsItem {
- private $db_id;
- private $newsholder_id;
- private $author_id;
- private $creation_date;
- private $title;
- private $message;
- private $image_url;
- private $editable = false;
- private $use_lightbox_view = true;
- private $use_lightbox_edit = true;
- public function __construct($db_id=-1) {
- if ( $db_id != -1 ) {
- $this->fetch($db_id);
- if ( is_null( $this->db_id ) ) {
- // handle error
- }
- }
- }
- public function get_db_id() {
- return $this->db_id;
- }
- public function get_newsholder_id() {
- return $this->newsholder_id;
- }
- public function set_newsholder_id($newsholder_id) {
- $this->newsholder_id = $newsholder_id;
- }
- public function get_author_id() {
- return $this->author_id;
- }
- public function set_author_id($author_id) {
- $this->author_id = $author_id;
- }
- public function get_creation_date() {
- return $this->creation_date;
- }
- public function get_title() {
- return $this->title;
- }
- public function set_title($title) {
- $this->title = $title;
- }
- public function get_message() {
- return $this->message;
- }
- public function set_message($message) {
- $this->message = $message;
- }
- public function get_image_url() {
- return $this->image_url;
- }
- public function set_image_url($url) {
- $this->image_url = $url;
- }
- public function get_editable() {
- return $this->editable;
- }
- public function set_editable($editable) {
- $this->editable = $editable;
- }
- /**
- * @desc populates this NewsItem with data from the News containing the given
- * db_id;
- */
- private function fetch($db_id) {
- $tbl = 'news_items';
- $cols = array('news_item_id','news_holder_id', 'author_id', 'creation_date', 'title','message','image_url');
- $db = new DBEasy($tbl, $cols);
- $rows = $db->conditional_select(array(array('news_item_id','=','"' . $db_id .'"' )));
- //if results - add values to fields
- if ( count($rows) > 0 ) {
- $this->db_id= $rows[0]['news_item_id'];
- $this->newsholder_id = $rows[0]['news_holder_id'];
- $this->author_id= $rows[0]['author_id'];
- $this->creation_date= $rows[0]['creation_date'];
- $this->title = $rows[0]['title'];
- $this->message = $rows[0]['message'];
- $this->image_url = $rows[0]['image_url'];
- }
- }
- public function save() {
- $tbl = 'news_items';
- $cols = array('news_item_id','news_holder_id', 'author_id', 'creation_date', 'title','message','image_url');
- $value_pairs = array('news_holder_id'=>$this->newsholder_id, 'author_id'=>$this->author_id, 'creation_date'=>$this->creation_date, 'title'=>$this->title,'message'=>$this->message,'image_url'=>$this->image_url);
- $db = new DBEasy($tbl, $cols);
- //insert
- if (is_null($this->db_id) || $this->db_id == -1) {
- $success = $db->insert($value_pairs);
- }
- //update
- else {
- $success = $db->conditional_update($value_pairs, array(array( 'news_item_id','=',$this->db_id)));
- }
- }
- public function get_date($style=1) {
- if ($style == 1)
- return substr($this->creation_date, 0,10);
- else if ($style == 2) {
- return substr($this->creation_date,9,1) . '/' . substr($this->creation_date,6,2) . substr($this->creation_date, 0,4);
- }
- else if ($style == 3) {
- return substr($this->creation_date,9,1) . ' ' . self::get_month_name(substr($this->creation_date,6,2)) . ' ' . substr($this->creation_date, 0,4);
- }
- else if ($style == 4) {
- return substr($this->creation_date,9,1) . ' ' . self::get_month_name(substr($this->creation_date,6,2),true) . ' ' . substr($this->creation_date, 0,4);
- }
- }
- public static function get_month_name($nbr, $full_name= false) {
- if (!$full_name)
- $month_names = array('jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec');
- else
- $month_names = array('januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december');
- return $month_names[$nbr-1];
- }
- public function present_message($max_length = 0) {
- if ( $max_length == 0)
- return $this->message;
- $disallowed_end_arr = array(',','.','!','?','-',';',':'."'");
- if ( strlen($this->message) > $max_length ) {
- for($i = $max_length; $i > 0; $i--) {
- if ( strcmp(substr($this->message,$i,1),' ') === 0 )
- if ( strcmp(substr($this->message,($i-1),1),',' ) === 0 ) {
- return substr($this->message,0,$i-1) . '...';
- }
- else
- return substr($this->message,0,$i) . '...';
- }
- }
- else
- return $this->message;
- }
- public function render($max_length = 0) {
- if ( $this->use_lightbox_edit)
- $class = 'lbOn';
- else
- $class = '';
- $edit_link = '<a class="' . $class . '" href="adm_edit_news_item.php?ni=' . $this->db_id . '">Redigera</a>';
- $code = array();
- $code[] = '<div class="news_item" style="border:1px solid #000;margin:10px 3px;padding:0;">' ."\n";
- $code[] = '<div class="news_item_header" style="background-color:#000;border-bottom:1px solid #000;">';
- $code[] = '<h5 class="news_date" style="color:#555;font-family:verdana;font-size:10px;font-style:italic;padding: 2px 5px 2px 10px;;margin:0;text-align:right;">' . $this->get_date(4) . "</h5>";
- $code[] = '<h4 class="news_rubrik" style="color:#ddd;font-family:arial;font-size:12px;font-weight:bold;padding:2px 10px 2px 5px;margin:0;">' . $this->title . '</h4>';
- if ($this->editable)
- $code[] = '<h4 class="news_rubrik" style="color:#ddd;font-family:arial;font-size:12px;font-weight:bold;padding:2px 10px 2px 5px;margin:0;">' . $edit_link . '';
- $code[] = "</div>";
- $code[] = '<div class="news_text" style="background-color:#eee;padding: 3px 5px;">' . $this->present_message($max_length);
- //$code[] = '<div class="news_text" style="background-color:#f00;padding: 3px 5px; color:#fff;">' . $max_length;
- if ($max_length != 0 && strlen($this->message) > $max_length) {
- if ($this->use_lightbox_view)
- $class = 'lbOn';
- else
- $class = '';
- $code[] = '<br /><a class="'.$class.'" href="nyheter.php?nh=' . $this->newsholder_id . '&id=' . $this->db_id . '" title="Läs hela nyheten: ' . $this->title . '">Läs mer...</a>';
- }
- $code[] = "</div>";
- $code[] = "</div>";
- return join("\n", $code);
- }
- public function render_thumbnail_image() {
- }
- }
- ?>
Rythmic