diff --git a/e107_admin/newspost.php b/e107_admin/newspost.php index 8affaab65..3cea916c6 100644 --- a/e107_admin/newspost.php +++ b/e107_admin/newspost.php @@ -271,7 +271,7 @@ class admin_newspost 'news_datestamp' => array('title' => LAN_NEWS_32, 'type' => 'datestamp', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false, 'parms' => 'mask=%A %d %B %Y'), 'category_name' => array('title' => NWSLAN_6, 'type' => 'text', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_class' => array('title' => NWSLAN_22, 'type' => 'userclass', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), - 'news_render_type' => array('title' => LAN_NEWS_49, 'type' => 'dropdown', 'width' => 'auto', 'thclass' => 'center', 'class' => null, 'nosort' => false), + 'news_render_type' => array('title' => LAN_NEWS_49, 'type' => 'number', 'width' => 'auto', 'thclass' => 'center', 'class' => null, 'nosort' => false), 'news_thumbnail' => array('title' => LAN_NEWS_22, 'type' => 'text', 'width' => 'auto', 'thclass' => '', 'class' => null, 'nosort' => false), 'news_sticky' => array('title' => LAN_NEWS_28, 'type' => 'boolean', 'width' => 'auto', 'thclass' => 'center', 'class' => 'center', 'nosort' => false), 'news_allow_comments' => array('title' => NWSLAN_15, 'type' => 'boolean', 'width' => 'auto', 'thclass' => 'center', 'class' => 'center', 'nosort' => false), @@ -465,7 +465,7 @@ class admin_newspost function show_page() { - print_a($POST); + // print_a($POST); switch ($this->getAction()) { case 'savepreset': @@ -582,7 +582,7 @@ class admin_newspost function _observe_submit_item($sub_action, $id) { // ##### Format and submit item to DB - + $ix = new news; if($_POST['news_start']) @@ -646,6 +646,9 @@ class admin_newspost $tmp = explode(chr(35), $_POST['news_author']); $_POST['news_author'] = $tmp[0]; + + + $ret = $ix->submit_item($_POST, !vartrue($_POST['create_edit_stay'])); if($ret['error']) @@ -738,36 +741,7 @@ class admin_newspost if($id) { $inserta['data']['category_id'] = $id; - //Manage rewrite - if(!empty($_POST['news_rewrite_string'])) - { - $rwinserta = array(); - $rwinserta['data']['news_rewrite_source'] = $id; - $rwinserta['_FIELD_TYPES']['news_rewrite_source'] = 'int'; - - $rwinserta['data']['news_rewrite_string'] = $_POST['news_rewrite_string']; - $rwinserta['_FIELD_TYPES']['news_rewrite_string'] = 'todb'; - - $rwinserta['data']['news_rewrite_type'] = 2; - $rwinserta['_FIELD_TYPES']['news_rewrite_type'] = 'int'; - - $rid = e107::getDb()->db_Insert('news_rewrite', $rwinserta); - $rwinserta['data']['news_rewrite_id'] = $rid; - if(e107::getDb()->getLastErrorNumber()) - { - $this->error = true; - $this->show_message('Category friendly URL string related problem detected!', E_MESSAGE_ERROR); - if(1052 == e107::getDb()->getLastErrorNumber()) - { - $this->show_message('Category friendly URL string should be unique! ', E_MESSAGE_ERROR); - } - $this->show_message('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG); - return; - } - - $this->set_rwcache($_POST['news_rewrite_string'], $rwinserta['data']); - e107::getAdminLog()->log_event('NEWS_10', $rwinserta, E_LOG_INFORMATIVE, ''); - } + //admin log now supports DB array and method chaining e107::getAdminLog()->log_event('NEWS_04', $inserta, E_LOG_INFORMATIVE, ''); @@ -813,11 +787,6 @@ class admin_newspost $this->error = true; } - if(!empty($_POST['news_rewrite_string']) && preg_match('#[^\w\pL\-]#u', $_POST['news_rewrite_string'])) - { - $this->show_message('Validation Error: Bad value for Category friendly URL', E_MESSAGE_ERROR); - $this->error = true; - } if (!$this->error) { @@ -843,70 +812,14 @@ class admin_newspost $updatea['WHERE'] = 'category_id='.$this->getId(); $inserta = array(); - $rid = isset($_POST['news_rewrite_id']) ? $_POST['news_rewrite_id'] : 0; + $rid = 0; - $inserta['data']['news_rewrite_id'] = $rid; - $inserta['_FIELD_TYPES']['news_rewrite_id'] = 'int'; - $inserta['data']['news_rewrite_source'] = $this->getId(); - $inserta['_FIELD_TYPES']['news_rewrite_source'] = 'int'; - - $inserta['data']['news_rewrite_string'] = $_POST['news_rewrite_string']; - $inserta['_FIELD_TYPES']['news_rewrite_string'] = 'todb'; - - $inserta['data']['news_rewrite_type'] = 2; - $inserta['_FIELD_TYPES']['news_rewrite_type'] = 'int'; - - $oldsef = array(); - //'news_rewrite_source='.intval($this->getId()).' AND news_rewrite_type=2' - if(e107::getDb()->db_Select('news_rewrite', '*', 'news_rewrite_id='.intval($rid))) - { - $oldsef = e107::getDb()->db_Fetch(); - } $upcheck = e107::getDb()->db_Update("news_category", $updatea); $rwupcheck = false; if($upcheck || !e107::getDb()->getLastErrorNumber()) { - //Manage rewrite - if(!empty($_POST['news_rewrite_string'])) - { - if($rid) - { - $inserta['WHERE'] = 'news_rewrite_id='.intval($rid); - $rwupcheck = e107::getDb()->db_Update('news_rewrite', $inserta); - } - else - { - $rwupcheck = e107::getDb()->db_Insert('news_rewrite', $inserta); - $inserta['data']['news_rewrite_id'] = $rwupcheck; - } - if(e107::getDb()->getLastErrorNumber()) - { - $this->error = true; - $this->setSubAction('edit'); - $this->show_message('Category friendly URL string related problem detected!', E_MESSAGE_ERROR); - if(1062 == e107::getDb()->getLastErrorNumber()) //detect duplicate mysql errnum - { - $this->show_message('Category friendly URL string should be unique! ', E_MESSAGE_ERROR); - } - $this->show_message('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG); - return; - } - } - else - { - //remove SEF if required - if($oldsef) - { - $this->clear_rwcache($oldsef['news_rewrite_string']); - e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_id='.$oldsef['news_rewrite_id']); - e107::getAdminLog()->log_event('NEWS_11', $oldsef, E_LOG_INFORMATIVE, ''); - $inserta = array( 'data' => array()); - $rwupcheck = true; - } - - } - + if ($upcheck || $rwupcheck) { //admin log now supports DB array and method chaining @@ -925,9 +838,7 @@ class admin_newspost $this->show_message(LAN_NO_CHANGE); } - if(varset($oldsef['news_rewrite_string'])) $this->clear_rwcache($oldsef['news_rewrite_string']); - if($_POST['news_rewrite_string']) $this->set_rwcache($_POST['news_rewrite_string'], $inserta['data']); - + $this->setId(0); } else @@ -1078,11 +989,8 @@ class admin_newspost else { $ordfield = 'n.news_datestamp'; - if($this->getSubAction() == 'news_rewrite_string') - { - $ordfield = "nr.news_rewrite_string"; - } - elseif($this->getSubAction() == 'user_name') + + if($this->getSubAction() == 'user_name') { $ordfield = "u.user_name"; } @@ -1112,8 +1020,8 @@ class admin_newspost ".$frm->thead($this->fields, $this->fieldpref, 'main.[FIELD].[ASC].[FROM]')." "; - $ren_type = array("default","title","other-news","other-news 2"); - + $ren_type = array("default","title","other-news","other-news 2"); // Shortened + foreach($newsarray as $row) { // PREPARE SOME DATA @@ -1122,16 +1030,13 @@ class admin_newspost $row['news_title'] = "".$e107->tp->toHTML($row['news_title'], false, 'TITLE').""; $row['category_name'] = "".$row['category_name'].""; $row['news_render_type'] = $ren_type[$row['news_render_type']]; + $row['news_allow_comments'] = !$row['news_allow_comments'] ? true : false; // old reverse logic $row['options'] = " ".ADMIN_EDIT_ICON." ".$frm->submit_image("delete[main_{$row['news_id']}]", LAN_DELETE, 'delete', NWSLAN_39." [ID: {$row['news_id']}]")." "; $row['checkboxes'] = $row['news_id']; - if(!varset($row['news_rewrite_string'])) - { - $row['news_rewrite_string'] = ''; //prevent 'Not found' message - } // AUTO RENDER $text .= $frm->renderTableRow($this->fields, $this->fieldpref, $row, 'news_id'); @@ -1319,7 +1224,7 @@ class admin_newspost $_POST['news_start'] = $row['news_start']; $_POST['news_end'] = $row['news_end']; $_POST['comment_total'] = e107::getDb()->db_Count("comments", "(*)", " WHERE comment_item_id={$row['news_id']} AND comment_type='0'"); - $_POST['news_rendertype'] = $row['news_render_type']; + $_POST['news_render_type'] = $row['news_render_type']; $_POST['news_thumbnail'] = $row['news_thumbnail']; $_POST['news_meta_keywords'] = $row['news_meta_keywords']; $_POST['news_meta_description'] = $row['news_meta_description']; @@ -1721,7 +1626,7 @@ class admin_newspost $text .= " - ".$frm->radio_multi('news_rendertype', $this->news_renderTypes, $_POST['news_rendertype'], true)." + ".$frm->radio_multi('news_render_type', $this->news_renderTypes, $_POST['news_render_type'], true)."
".NWSLAN_74."
diff --git a/e107_handlers/news_class.php b/e107_handlers/news_class.php index b81a50228..466b9c6ce 100644 --- a/e107_handlers/news_class.php +++ b/e107_handlers/news_class.php @@ -38,6 +38,7 @@ class news { //TODO - synch WIKI docs, add rewrite data to the event data function submit_item($news, $smessages = false) { + global $e107cache, $e_event, $pref, $admin_log; $tp = e107::getParser(); @@ -140,15 +141,13 @@ class news { //$vals = "news_datestamp = '".intval($news['news_datestamp'])."', ".$author_insert." news_title='".$news['news_title']."', news_body='".$news['news_body']."', news_extended='".$news['news_extended']."', news_category='".intval($news['cat_id'])."', news_allow_comments='".intval($news['news_allow_comments'])."', news_start='".intval($news['news_start'])."', news_end='".intval($news['news_end'])."', news_class='".$tp->toDB($news['news_class'])."', news_render_type='".intval($news['news_rendertype'])."' , news_summary='".$news['news_summary']."', news_thumbnail='".$tp->toDB($news['news_thumbnail'])."', news_sticky='".intval($news['news_sticky'])."' WHERE news_id='".intval($news['news_id'])."' "; if ($sql->db_Update('news', $data)) { + + e107::getAdminLog()->logArrayAll('NEWS_09', $logData); - //manage rewrites + $data['data']['news_id'] = $news['news_id']; - if('error' === $this->handleRewriteSubmit('update', $data['data'], $datarw, $smessages)) - { - $error = true; - } - + e107::getEvent()->trigger('newsupd', $data['data']); $message = LAN_NEWS_21; $emessage->add(LAN_NEWS_21, E_MESSAGE_SUCCESS, $smessages); @@ -171,21 +170,10 @@ class news { else { $data['data']['news_id'] = $news['news_id']; - $check = $this->handleRewriteSubmit('update', $data['data'], $datarw, $smessages); - if ($check === true) - { - $message = LAN_NEWS_21; - $emessage->add(LAN_NEWS_21, E_MESSAGE_SUCCESS, $smessages); - } - elseif ($check === 'error') - { - $error = true; - } - else - { - $emessage->add(LAN_NEWS_46, E_MESSAGE_INFO, $smessages); - $message = "".LAN_NEWS_46.""; - } + + $emessage->add(LAN_NEWS_46, E_MESSAGE_INFO, $smessages); + $message = "".LAN_NEWS_46.""; + //FIXME - triggerHook should return array(message, message_type) $evdata = array('method'=>'update', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item'); @@ -209,13 +197,6 @@ class news { //moved down - prevent wrong mysql_insert_id e107::getAdminLog()->logArrayAll('NEWS_08', $logData); - - //manage rewrites - if('error' === $this->handleRewriteSubmit('insert', $data['data'], $datarw, $smessages)) - { - $error = true; - } - e107::getEvent()->trigger('newspost', $data['data']); //XXX - triggerHook after trigger? @@ -295,8 +276,11 @@ class news { return $data; } + + // DEPRECATED - NOT TO BE USED. Way too many changes required to make it work. + /** - * Manage SEF URL string for current news + * Manage SEF URL string for current news // Deprecated. * FIXME - news rewrites should go to different handler * * @param string $action insert|update @@ -305,8 +289,13 @@ class news { * @param boolean $session_message [optional] default false * @return mixed true|false for data has been[not] changed; 'error' for DB error */ + /* function handleRewriteSubmit($action, $news_data, $rewrite_data, $session_message = false) { + return TRUE; + + // Deprecated. + $rewrite_data['data']['news_rewrite_source'] = $news_data['news_id']; $rewrite_data['_FIELD_TYPES']['news_rewrite_source'] = 'int'; @@ -400,10 +389,13 @@ class news { return 'error'; break; } + return false; } +*/ + /* public static function retrieveRewriteString($news_id, $type = 1) { //XXX - Best way we have now, discuss @@ -447,7 +439,8 @@ class news { return (isset(self::$_rewrite_map[$type][$news_id]) ? self::$_rewrite_map[$type][$news_id] : ''); } - + + public static function retrieveRewriteData($sefstr, $force = true) { //check runtime cache @@ -481,7 +474,8 @@ class news { return self::$_rewrite_data[$sefstr]; } - +*/ + /* public static function getRewriteCache($sefstr, $toArray = true) { $sefstr = md5($sefstr); @@ -507,7 +501,8 @@ class news { if(is_array($data)) $data = e107::getArrayStorage()->WriteArray($data, false); ecache::set_sys("news_sefurl".$sefstr, $data, true); } - + */ + function render_newsitem($news, $mode = 'default', $n_restrict = '', $NEWS_TEMPLATE = '', $param = array()) { global $NEWSSTYLE, $NEWSLISTSTYLE; @@ -1143,20 +1138,8 @@ class e_news_category_tree extends e_model return $this; } - $sef = (e107::getUrl()->getProfileId('news') !== 'main'); - if($sef) - { - $qry = " - SELECT nc.*, ncr.news_rewrite_string AS category_rewrite_string, ncr.news_rewrite_id AS category_rewrite_id FROM #news_category AS nc - LEFT JOIN #news_rewrite AS ncr ON nc.category_id=ncr.news_rewrite_source AND ncr.news_rewrite_type=2 - ORDER BY nc.category_order ASC - "; - } - else - { - $qry = "SELECT * FROM #news_category ORDER BY category_order ASC"; - } - + $qry = "SELECT * FROM #news_category ORDER BY category_order ASC"; + $tree = array(); $sql = e107::getDb(); $sql->db_Mark_Time('news_category_tree'); @@ -1186,23 +1169,9 @@ class e_news_category_tree extends e_model return $this; } - $sef = (e107::getUrl()->getProfileId('news') !== 'main'); $nobody_regexp = "'(^|,)(".str_replace(",", "|", e_UC_NOBODY).")(,|$)'"; $time = time(); - if($sef) - { - $qry = " - SELECT COUNT(n.news_id) AS category_news_count, nc.*, ncr.news_rewrite_string AS category_rewrite_string, ncr.news_rewrite_id AS category_rewrite_id FROM #news_category AS nc - LEFT JOIN #news_rewrite AS ncr ON nc.category_id=ncr.news_rewrite_source AND ncr.news_rewrite_type=2 - LEFT JOIN #news AS n ON n.news_category=nc.category_id - WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") - AND n.news_start < ".$time." AND (n.news_end=0 || n.news_end>".$time.") - GROUP BY nc.category_id - ORDER BY nc.category_order ASC - "; - } - else - { + $qry = " SELECT COUNT(n.news_id) AS category_news_count, nc.* FROM #news_category AS nc LEFT JOIN #news AS n ON n.news_category=nc.category_id @@ -1211,7 +1180,7 @@ class e_news_category_tree extends e_model GROUP BY nc.category_id ORDER BY nc.category_order ASC "; - } + $tree = array(); $sql = e107::getDb();