diff --git a/e107_admin/newspost.php b/e107_admin/newspost.php
index 1b4e8502b..ef170bcac 100644
--- a/e107_admin/newspost.php
+++ b/e107_admin/newspost.php
@@ -9,8 +9,8 @@
* News Administration
*
* $Source: /cvs_backup/e107_0.8/e107_admin/newspost.php,v $
- * $Revision: 1.50 $
- * $Date: 2009-09-10 19:15:43 $
+ * $Revision: 1.51 $
+ * $Date: 2009-09-12 18:25:41 $
* $Author: secretr $
*/
require_once("../class2.php");
@@ -68,14 +68,44 @@ function headerjs()
'Helper': true,
'AdminMenu': false
}
+
+ //custom expand
+ Element.addMethods( {
+ newsDescToggle: function(element) {
+ element = \$(element);
+ if(!element.visible())
+ element.fxToggle();
+
+ return element;
+ },
+
+ newsScrollToMe: function(element) {
+ element = \$(element);
+ new Effect.ScrollTo(element);
+ return element;
+ },
+
+ newsUpdateButtonSpan: function(element, str, swapClass) {
+ element = \$(element);
+ if(swapClass) {
+ var swapO = swapClass.split('::');
+ element.removeClassName(swapO[0]).addClassName(swapO[1]);
+ }
+
+ if(element.down('span')) {
+ element.down('span').update(str);
+ }
+ return element;
+ }
+ });
//fix form action if needed
document.observe('dom:loaded', function() {
- if($('core-newspost-create-form')) {
- $('core-newspost-create-form').observe('submit', function(event) {
+ if(\$('core-newspost-create-form')) {
+ \$('core-newspost-create-form').observe('submit', function(event) {
var form = event.element();
action = form.readAttribute('action') + document.location.hash;
- //if($('create-edit-stay-1') && $('create-edit-stay-1').checked)
+ //if(\$('create-edit-stay-1') && \$('create-edit-stay-1').checked)
form.writeAttribute('action', action);
});
}
@@ -89,8 +119,53 @@ function headerjs()
{
$ret .= "
";
}
@@ -174,6 +249,8 @@ class admin_newspost
global $user_pref;
$this->parseRequest($qry);
+ require_once(e_HANDLER."cache_handler.php");
+ require_once(e_HANDLER."news_class.php");
require_once(e_HANDLER."calendar/calendar_class.php");
$this->_cal = new DHTML_Calendar(true);
@@ -273,10 +350,26 @@ class admin_newspost
function clear_cache()
{
- $e107 = &e107::getInstance();
- $e107->ecache->clear("news.php");
- $e107->ecache->clear("othernews");
- $e107->ecache->clear("othernews2");
+ $ecache = e107::getCache();
+ $ecache->clear("news.php");
+ $ecache->clear("othernews");
+ $ecache->clear("othernews2");
+ return $this;
+ }
+
+ function clear_rwcache($sefstr = '')
+ {
+ /*if($sefstr) $sefstr = md5($sefstr);
+ ecache::clear_sys("news_sefurl".$sefstr);*/
+ news::clearRewriteCache($sefstr);
+ }
+
+ function set_rwcache($sefstr, $data)
+ {
+ /**$sefstr = md5($sefstr);
+ if(is_array($data)) $data = e107::getArrayStorage()->WriteArray($data, false);
+ ecache::set_sys("news_sefurl".$sefstr, $data, true);*/
+ news::setRewriteCache($sefstr, $data);
}
function ajax_observer()
@@ -318,6 +411,10 @@ class admin_newspost
{
$this->_observe_update_category();
}
+ elseif(isset($_POST['multi_update_category']))
+ {
+ $this->_observe_multi_create_category();
+ }
elseif(isset($_POST['save_prefs']))
{
$this->_observe_save_prefs();
@@ -376,20 +473,28 @@ class admin_newspost
function _observe_delete()
{
global $admin_log;
-
+ //FIXME - SEF URL cache
$tmp = array_keys($_POST['delete']);
list($delete, $del_id) = explode("_", $tmp[0]);
$del_id = intval($del_id);
if(!$del_id) return false;
- $e107 = &e107::getInstance();
+ $e107 = e107::getInstance();
switch ($delete) {
case 'main':
+ //clear rewrite cache
+ if(e107::getDb()->db_Select('news_rewrite', 'news_rewrite_id, news_rewrite_string', 'news_rewrite_source='.$del_id.' AND news_rewrite_type=1'))
+ {
+ $tmp = e107::getDb()->db_Fetch();
+ e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_id='.$tmp['news_rewrite_id']);
+ $this->clear_rwcache($tmp['news_rewrite_string']);
+ unset($tmp);
+ }
if ($e107->sql->db_Count('news','(*)',"WHERE news_id={$del_id}"))
{
- $e107->e_event->trigger("newsdel", $del_id);
+ e107::getEvent()->trigger("newsdel", $del_id);
if($e107->sql->db_Delete("news", "news_id={$del_id}"))
{
$admin_log->log_event('NEWS_01',$del_id,E_LOG_INFORMATIVE,'');
@@ -405,21 +510,33 @@ class admin_newspost
break;
case 'category':
+ //clear rewrite cache
+ if(e107::getDb()->db_Select('news_rewrite', 'news_rewrite_id, news_rewrite_string', 'news_rewrite_source='.$del_id.' AND news_rewrite_type=2'))
+ {
+ $tmp = e107::getDb()->db_Fetch();
+ e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_id='.$tmp['news_rewrite_id']);
+ $this->clear_rwcache($tmp['news_rewrite_string']);
+ unset($tmp);
+ }
+ if ($e107->sql->db_Count('news_category','(*)',"WHERE category_id={$del_id}"))
+ {
+ e107::getEvent()->trigger("newscatdel", $del_id);
if ($e107->sql->db_Delete("news_category", "category_id={$del_id}"))
{
$admin_log->log_event('NEWS_02',$del_id,E_LOG_INFORMATIVE,'');
$this->show_message(NWSLAN_33." #".$del_id." ".NWSLAN_32, E_MESSAGE_SUCCESS);
$this->clear_cache();
}
+ }
break;
case 'sn':
- if ($e107->sql->db_Delete("submitnews", "submitnews_id={$del_id}"))
- {
- $admin_log->log_event('NEWS_03',$del_id,E_LOG_INFORMATIVE,'');
- $this->show_message(NWSLAN_34." #".$del_id." ".NWSLAN_32);
- $this->clear_cache();
- }
+ if ($e107->sql->db_Delete("submitnews", "submitnews_id={$del_id}"))
+ {
+ $admin_log->log_event('NEWS_03',$del_id,E_LOG_INFORMATIVE,'');
+ $this->show_message(NWSLAN_34." #".$del_id." ".NWSLAN_32);
+ $this->clear_cache();
+ }
break;
default:
@@ -432,11 +549,7 @@ class admin_newspost
function _observe_submit_item($sub_action, $id)
{
// ##### Format and submit item to DB
- global $admin_log;
- $e107 = &e107::getInstance();
-
- require_once(e_HANDLER."news_class.php");
$ix = new news;
if($_POST['news_start'])
@@ -480,13 +593,14 @@ class admin_newspost
}
else
{
- $e107->sql->db_Update('submitnews', "submitnews_auth=1 WHERE submitnews_id ={$id}");
- $admin_log->log_event('NEWS_07',$id,E_LOG_INFORMATIVE,'');
+ e107::getDb()->db_Update('submitnews', "submitnews_auth=1 WHERE submitnews_id ={$id}");
+ e107::getAdminLog()->log_event('NEWS_07', $id, E_LOG_INFORMATIVE,'');
}
- if (!$_POST['cat_id'])
+ if (!isset($_POST['cat_id']))
{
- $_POST['cat_id'] = 1;
+ $_POST['cat_id'] = 0;
}
+ $_POST['news_category'] = $_POST['cat_id'];
if(isset($_POST['news_thumbnail']))
{
@@ -496,7 +610,13 @@ class admin_newspost
$tmp = explode(chr(35), $_POST['news_author']);
$_POST['news_author'] = $tmp[0];
- $ret = $ix->submit_item($_POST, !varsettrue($_POST['create_edit_stay']));
+ $ret = $ix->submit_item($_POST, !vartrue($_POST['create_edit_stay']));
+ if($ret['error'])
+ {
+ eMessage::getInstance()->mergeWithSession(); //merge with session messages
+ eMessage::getInstance()->add(($id ? LAN_UPDATED_FAILED : LAN_CREATED_FAILED), E_MESSAGE_ERROR);
+ return false;
+ }
$this->clear_cache();
if(isset($_POST['create_edit_stay']) && !empty($_POST['create_edit_stay']))
@@ -537,7 +657,7 @@ class admin_newspost
if (!$this->error)
{
$inserta = array();
- /* Why?
+ /* Why? Categoty Icon is not required field
if (empty($_POST['category_icon']))
{
$handle = opendir(e_IMAGE."icons");
@@ -570,7 +690,6 @@ class admin_newspost
$inserta['data']['category_manager'] = $_POST['category_manager'];
$inserta['_FIELD_TYPES']['category_manager'] = 'int';
- if(isset($_POST['category_order'])) $_POST['category_order'] = 0;
$inserta['data']['category_order'] = $_POST['category_order'];
$inserta['_FIELD_TYPES']['category_order'] = 'int';
@@ -581,32 +700,29 @@ class admin_newspost
//Manage rewrite
if(!empty($_POST['news_rewrite_string']))
{
- $rinserta = array();
- $rinserta['data']['news_rewrite_source'] = $id;
- $rinserta['_FIELD_TYPES']['news_rewrite_source'] = 'int';
+ $rwinserta = array();
+ $rwinserta['data']['news_rewrite_source'] = $id;
+ $rwinserta['_FIELD_TYPES']['news_rewrite_source'] = 'int';
- $rinserta['data']['news_rewrite_string'] = $_POST['news_rewrite_string'];
- $rinserta['_FIELD_TYPES']['news_rewrite_string'] = 'todb';
+ $rwinserta['data']['news_rewrite_string'] = $_POST['news_rewrite_string'];
+ $rwinserta['_FIELD_TYPES']['news_rewrite_string'] = 'todb';
- $rinserta['data']['news_rewrite_type'] = 2;
- $rinserta['_FIELD_TYPES']['news_rewrite_type'] = 'int';
+ $rwinserta['data']['news_rewrite_type'] = 2;
+ $rwinserta['_FIELD_TYPES']['news_rewrite_type'] = 'int';
- e107::getDb()->db_Insert('news_rewrite', $rinserta);
- if(e107::getDb()->mySQLlastErrNum)
+ e107::getDb()->db_Insert('news_rewrite', $rwinserta);
+ if(e107::getDb()->getLastErrorNumber())
{
$this->error = true;
- $this->show_message('Category friendly URL sting related problem detected!', E_MESSAGE_ERROR);
- if(1052 == e107::getDb()->mySQLlastErrNum)
+ $this->show_message('Category friendly URL string related problem detected!', E_MESSAGE_ERROR);
+ if(1052 == e107::getDb()->getLastErrorNumber())
{
- $this->show_message('Category friendly URL should be unique! ', E_MESSAGE_ERROR);
+ $this->show_message('Category friendly URL string should be unique! ', E_MESSAGE_ERROR);
}
- $this->show_message('mySQL error #'.e107::getDb()->mySQLlastErrNum.': '.e107::getDb()->mySQLlastErrText, E_MESSAGE_DEBUG);
+ $this->show_message('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG);
return;
}
- }
- else
- {
- e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_source='.$id);
+ $this->set_rwcache($_POST['news_rewrite_string'], $rwinserta['data']);
}
//admin log now supports DB array and method chaining
@@ -614,19 +730,22 @@ class admin_newspost
unset($inserta['data']['category_meta_description']); //too long for logging?
e107::getAdminLog()
->log_event('NEWS_04', $inserta, E_LOG_INFORMATIVE, '')
- ->log_event('NEWS_04', $rinserta, E_LOG_INFORMATIVE, ''); //XXX fix lan for SEF string log or just don't log it?
+ ->log_event('NEWS_04', $rwinserta, E_LOG_INFORMATIVE, ''); //XXX fix lan for SEF string log or just don't log it?
$this->show_message(NWSLAN_35, E_MESSAGE_SUCCESS);
$this->clear_cache();
+
+ //TODO - add to WIKI docs
+ e107::getEvent()->trigger("newscatpost", array_merge($inserta['data'], $rwinserta['data']));
}
else
{
//debug + error message
- if(e107::getDb()->mySQLlastErrNum)
+ if(e107::getDb()->getLastErrorNumber())
{
$this->error = true;
$this->show_message('mySQL Error detected!', E_MESSAGE_ERROR);
- eMessage::getInstance()->addS('mySQL error #'.e107::getDb()->mySQLlastErrNum.': '.e107::getDb()->mySQLlastErrText, E_MESSAGE_DEBUG);
+ eMessage::getInstance()->addS('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG);
}
}
}
@@ -672,82 +791,121 @@ class admin_newspost
$updatea['data']['category_manager'] = $_POST['category_manager'];
$updatea['_FIELD_TYPES']['category_manager'] = 'int';
-
- if(isset($_POST['category_order'])) $_POST['category_order'] = 0;
+
$updatea['data']['category_order'] = $_POST['category_order'];
$updatea['_FIELD_TYPES']['category_order'] = 'int';
$updatea['WHERE'] = 'category_id='.$this->getId();
- if(e107::getDb()->db_Update("news_category", $updatea) || !e107::getDb()->mySQLlastErrNum)
+ $inserta = array();
+ $rid = isset($_POST['news_rewrite_id']) ? $_POST['news_rewrite_id'] : 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';
+
+ $upcheck = e107::getDb()->db_Update("news_category", $updatea);
+ $rwupcheck = false;
+ if($upcheck || !e107::getDb()->getLastErrorNumber())
{
//Manage rewrite
if(!empty($_POST['news_rewrite_string']))
{
- $inserta = array();
-
- $inserta['data']['news_rewrite_id'] = isset($_POST['news_rewrite_id']) ? $_POST['news_rewrite_id'] : 0;
- $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';
-
- $tmp = e107::getDb()->db_Replace('news_rewrite', $inserta);
- if(e107::getDb()->mySQLlastErrNum)
+ 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);
+ }
+ if(e107::getDb()->getLastErrorNumber())
{
$this->error = true;
$this->setSubAction('edit');
- $this->show_message('Category friendly URL sting related problem detected!', E_MESSAGE_ERROR);
- if(1052 == e107::getDb()->mySQLlastErrNum)
+ $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 should be unique! ', E_MESSAGE_ERROR);
+ $this->show_message('Category friendly URL string should be unique! ', E_MESSAGE_ERROR);
}
- $this->show_message('mySQL error #'.e107::getDb()->mySQLlastErrNum.': '.e107::getDb()->mySQLlastErrText, E_MESSAGE_DEBUG);
+ $this->show_message('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG);
return;
}
-
- if(!$tmp) $this->show_message(LAN_NO_CHANGE);
- else $this->show_message(NWSLAN_36, E_MESSAGE_SUCCESS);
+
+ if ($upcheck || $rwupcheck)
+ {
+ $this->show_message(NWSLAN_36, E_MESSAGE_SUCCESS);
+ $this->set_rwcache($_POST['news_rewrite_string'], $inserta['data']);
+ //TODO - add to WIKI docs
+ e107::getEvent()->trigger("newscatupd", array_merge($updatea['data'], $inserta['data']));
+ return;
+ }
+ $this->show_message(LAN_NO_CHANGE);
return;
}
else
{
- e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_source='.$this->getId());
+ //remove SEF if required
+ if(e107::getDb()->db_Select('news_rewrite', 'news_rewrite_id, news_rewrite_string', 'news_rewrite_source='.$this->getId().' AND news_rewrite_type=2'))
+ {
+ $tmp = e107::getDb()->db_Fetch();
+ e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_id='.$tmp['news_rewrite_id']);
+ $this->clear_rwcache($tmp['news_rewrite_string']);
+ unset($tmp);
+ $inserta = array( 'data' => array());
+ $rwupcheck = true;
+ }
+
}
- //admin log now supports DB array and method chaining
- //$_POST['category_name'].', '.$_POST['category_icon']
- unset($updatea['data']['category_meta_description']); //too long for logging?
- e107::getAdminLog()
- ->log_event('NEWS_04', $updatea, E_LOG_INFORMATIVE, '')
- ->log_event('NEWS_04', $rinserta, E_LOG_INFORMATIVE, ''); //XXX fix lan for SEF string log or just don't log it?
+ if ($upcheck || $rwupcheck)
+ {
+ //admin log now supports DB array and method chaining
+ if($upcheck) e107::getAdminLog()->log_event('NEWS_04', $updatea['data'], E_LOG_INFORMATIVE, '');
+ if($rwupcheck) e107::getAdminLog()->log_event('NEWS_04', $inserta['data'], E_LOG_INFORMATIVE, ''); //XXX fix lan for SEF string log or just don't log it?
+
+ $this->show_message(NWSLAN_36, E_MESSAGE_SUCCESS);
+ $this->clear_cache();
- $this->show_message(NWSLAN_36, E_MESSAGE_SUCCESS);
- $this->clear_cache();
+ //TODO - add to WIKI docs
+ e107::getEvent()->trigger("newscatupd", array_merge($updatea['data'], $inserta['data']));
+ }
+ else
+ {
+ $this->show_message(LAN_NO_CHANGE);
+ }
$this->setId(0);
}
else
{
- //debug + error message
- //if(e107::getDb()->mySQLlastErrNum)
- //{
- $this->error = true;
- $this->setSubAction('edit');
- $this->show_message('mySQL Error detected!', E_MESSAGE_ERROR);
- $this->show_message('#'.e107::getDb()->mySQLlastErrNum.': '.e107::getDb()->mySQLlastErrText, E_MESSAGE_DEBUG);
- return;
- //}
- //$this->show_message(LAN_NO_CHANGE);
- //$this->setId(0);
+ $this->error = true;
+ $this->setSubAction('edit');
+ $this->show_message('mySQL Error detected!', E_MESSAGE_ERROR);
+ $this->show_message('#'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG);
+ return;
}
}
}
+
+ function _observe_multi_create_category()
+ {
+ $cnt = 0;
+ foreach ($_POST['multi_category_manager'] as $cid => $val)
+ {
+ $order = $_POST['multi_category_order'][$cid];
+ $cnt += (int) e107::getDb()->db_Update('news_category', 'category_manager='.intval($val).', category_order='.intval($order).' WHERE category_id='.intval($cid));
+ }
+ if($cnt) eMessage::getInstance()->add(LAN_UPDATED, E_MESSAGE_SUCCESS);
+ }
function _observe_save_prefs()
{
@@ -970,30 +1128,45 @@ class admin_newspost
function _pre_create()
{
- if($this->getSubAction() == "edit" && !$_POST['preview'] && !$_POST['submit_news'])
+ if($this->getSubAction() == "edit" && !$_POST['preview'])
{
- $e107 = &e107::getInstance();
- if($e107->sql->db_Select("news", "*", "news_id='".$this->getId()."'"))
+ if(!isset($_POST['submit_news']))
{
- $row = $e107->sql->db_Fetch();
-
- $_POST['news_title'] = $row['news_title'];
- $_POST['data'] = $row['news_body'];
- $_POST['news_author'] = $row['news_author'];
- $_POST['news_extended'] = $row['news_extended'];
- $_POST['news_allow_comments'] = $row['news_allow_comments'];
- $_POST['news_class'] = $row['news_class'];
- $_POST['news_summary'] = $row['news_summary'];
- $_POST['news_sticky'] = $row['news_sticky'];
- $_POST['news_datestamp'] = ($_POST['news_datestamp']) ? $_POST['news_datestamp'] : $row['news_datestamp'];
-
- $_POST['cat_id'] = $row['news_category'];
- $_POST['news_start'] = $row['news_start'];
- $_POST['news_end'] = $row['news_end'];
- $_POST['comment_total'] = $e107->sql->db_Count("comments", "(*)", " WHERE comment_item_id={$row['news_id']} AND comment_type='0'");
- $_POST['news_rendertype'] = $row['news_render_type'];
- $_POST['news_thumbnail'] = $row['news_thumbnail'];
+ if(e107::getDb()->db_Select('news', '*', 'news_id='.intval($this->getId())))
+ {
+ $row = e107::getDb()->db_Fetch();
+
+ $_POST['news_title'] = $row['news_title'];
+ $_POST['data'] = $row['news_body'];
+ $_POST['news_author'] = $row['news_author'];
+ $_POST['news_extended'] = $row['news_extended'];
+ $_POST['news_allow_comments'] = $row['news_allow_comments'];
+ $_POST['news_class'] = $row['news_class'];
+ $_POST['news_summary'] = $row['news_summary'];
+ $_POST['news_sticky'] = $row['news_sticky'];
+ $_POST['news_datestamp'] = ($_POST['news_datestamp']) ? $_POST['news_datestamp'] : $row['news_datestamp'];
+
+ $_POST['cat_id'] = $row['news_category'];
+ $_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_thumbnail'] = $row['news_thumbnail'];
+ $_POST['news_meta_keywords'] = $row['news_meta_keywords'];
+ $_POST['news_meta_description'] = $row['news_meta_description'];
+ }
}
+
+ $row = array();
+ if(e107::getDb()->db_Select('news_rewrite', '*', 'news_rewrite_source='.intval($this->getId()).' AND news_rewrite_type=1'))
+ {
+ $row = e107::getDb()->db_Fetch();
+ }
+
+ $_POST['news_rewrite_id'] = varset($row['news_rewrite_id'], 0);
+ $_POST['news_rewrite_source'] = $this->getId();
+ $_POST['news_rewrite_string'] = isset($_POST['news_rewrite_string']) ? $_POST['news_rewrite_string'] : varset($row['news_rewrite_string'], '');
+ $_POST['news_rewrite_type'] = 1;
}
}
@@ -1017,14 +1190,16 @@ class admin_newspost
$sub_action = $this->getSubAction();
$id = $this->getSubAction() != 'sn' && $this->getSubAction() != 'upload' ? $this->getId() : 0;
- $e107 = &e107::getInstance();
+ $e107 = e107::getInstance();
+ $tp = e107::getParser();
+ $sql = e107::getDb();
if ($sub_action == "sn" && !varset($_POST['preview']))
{
- if ($e107->sql->db_Select("submitnews", "*", "submitnews_id=".$this->getId(), TRUE))
+ if ($sql->db_Select("submitnews", "*", "submitnews_id=".$this->getId(), TRUE))
{
//list($id, $submitnews_name, $submitnews_email, $_POST['news_title'], $submitnews_category, $_POST['data'], $submitnews_datestamp, $submitnews_ip, $submitnews_auth, $submitnews_file) = $sql->db_Fetch();
- $row = $e107->sql->db_Fetch();
+ $row = $sql->db_Fetch();
$_POST['news_title'] = $row['submitnews_title'];
$_POST['data'] = $row['submitnews_item'];
$_POST['cat_id'] = $row['submitnews_category'];
@@ -1047,8 +1222,8 @@ class admin_newspost
if ($sub_action == "upload" && !varset($_POST['preview']))
{
- if ($e107->sql->db_Select('upload', '*', "upload_id=".$this->getId())) {
- $row = $e107->sql->db_Fetch();
+ if ($sql->db_Select('upload', '*', "upload_id=".$this->getId())) {
+ $row = $sql->db_Fetch();
$post_author_id = substr($row['upload_poster'], 0, strpos($row['upload_poster'], "."));
$post_author_name = substr($row['upload_poster'], (strpos($row['upload_poster'], ".")+1));
$match = array();
@@ -1063,6 +1238,7 @@ class admin_newspost
@@ -1288,8 +1467,39 @@ class admin_newspost
";
+
+ //BEGIN SEO block
+ $text .= "
+
+ ";
- //Begin Options block
+ //BEGIN Options block
$text .= "
+
+ ".$this->show_categoriy_list()."
+
";
+
+
+ $emessage = &eMessage::getInstance();
+ $e107->ns->tablerender(NWSLAN_46a, $emessage->render().$text);
+ }
+
+ function show_categoriy_list()
+ {
+ require_once(e_HANDLER."form_handler.php");
+ $frm = new e_form(false);
+
//FIXME - lan
- $text .= "
+ $text = "
+
+
+
";
- $emessage = &eMessage::getInstance();
- $e107->ns->tablerender(NWSLAN_46a, $emessage->render().$text);
+
+ return $text;
}
- function _optrange($num , $zero = true)
+ function _optrange($num, $zero = true)
{
$tmp = range(0, $num < 0 ? 0 : $num);
if(!$zero) unset($tmp[0]);
@@ -1809,12 +2076,10 @@ class admin_newspost
function ajax_exec_pref_archnum()
{
- global $pref;
-
require_once(e_HANDLER."form_handler.php");
$frm = new e_form();
- echo $frm->selectbox('newsposts_archive', $this->_optrange(intval($this->getSubAction()) - 1), intval($pref['newsposts_archive']), 'class=tbox&tabindex='.intval($this->getId()));
+ echo $frm->selectbox('newsposts_archive', $this->_optrange(intval($this->getSubAction()) - 1), intval(e107::getPref('newsposts_archive')), 'class=tbox&tabindex='.intval($this->getId()));
}
diff --git a/e107_admin/sql/core_sql.php b/e107_admin/sql/core_sql.php
index c46cb3b3d..b41bf18f4 100644
--- a/e107_admin/sql/core_sql.php
+++ b/e107_admin/sql/core_sql.php
@@ -9,8 +9,8 @@
* Core SQL
*
* $Source: /cvs_backup/e107_0.8/e107_admin/sql/core_sql.php,v $
- * $Revision: 1.23 $
- * $Date: 2009-09-10 19:15:43 $
+ * $Revision: 1.24 $
+ * $Date: 2009-09-12 18:25:41 $
* $Author: secretr $
*/
@@ -358,7 +358,7 @@ CREATE TABLE news_rewrite (
news_rewrite_string varchar(255) NOT NULL default '',
news_rewrite_type tinyint(1) unsigned NOT NULL default '1',
PRIMARY KEY (news_rewrite_id),
- UNIQUE KEY news_rewrite_string_type (news_rewrite_string,news_rewrite_type),
+ UNIQUE KEY news_rewrite_string (news_rewrite_string),
UNIQUE KEY news_rewrite_source_type (news_rewrite_source,news_rewrite_type)
) TYPE=MyISAM;
# --------------------------------------------------------
diff --git a/e107_files/jslib/e107.js.php b/e107_files/jslib/e107.js.php
index a9389dab7..b7428c28f 100644
--- a/e107_files/jslib/e107.js.php
+++ b/e107_files/jslib/e107.js.php
@@ -8,9 +8,9 @@
* e107 Javascript API
*
* $Source: /cvs_backup/e107_0.8/e107_files/jslib/e107.js.php,v $
- * $Revision: 1.34 $
- * $Date: 2009-08-14 23:22:36 $
- * $Author: bugrain $
+ * $Revision: 1.35 $
+ * $Date: 2009-09-12 18:25:41 $
+ * $Author: secretr $
*
*/
@@ -99,7 +99,7 @@ var e107Registry = {
e_IMAGE_PACK: '',
e_PLUGIN: '',
e_FILE: '',
- e_ADMIN: '',
+ e_ADMIN: '',
e_THEME: '',
THEME: ''
},
@@ -532,7 +532,7 @@ var e107Base = {
return data;
},
- parseLan: function(str) {
+ parseLan: function(str) {
return String(str).interpolate(this.getLanVars());
},
diff --git a/e107_handlers/news_class.php b/e107_handlers/news_class.php
index 38270c857..363fb61fe 100644
--- a/e107_handlers/news_class.php
+++ b/e107_handlers/news_class.php
@@ -9,8 +9,8 @@
* News handler
*
* $Source: /cvs_backup/e107_0.8/e107_handlers/news_class.php,v $
- * $Revision: 1.19 $
- * $Date: 2009-09-10 19:15:42 $
+ * $Revision: 1.20 $
+ * $Date: 2009-09-12 18:25:41 $
* $Author: secretr $
*/
@@ -341,84 +341,217 @@ class e_news_tree extends e_model
class news {
+ //FIXME - LANs
+ //TODO - synch WIKI docs, add rewrite data to the event data
function submit_item($news, $smessages = false)
{
- global $sql, $tp, $e107cache, $e_event, $pref, $admin_log;
- if (!is_object($tp)) $tp = new e_parse;
- if (!is_object($sql)) $sql = new db;
+ global $e107cache, $e_event, $pref, $admin_log;
+
+ $tp = e107::getParser();
+ $sql = e107::getDb();
+
require_once (e_HANDLER."message_handler.php");
- $emessage = &eMessage::getInstance();
+ $emessage = eMessage::getInstance();
+
+ $error = false;
+ if(empty($news['news_title']))
+ {
+ $error = true;
+ $emessage->add('Validation error: News title can\'t be empty!', E_MESSAGE_ERROR, $smessages);
+ }
+
+ if(empty($news['news_category']))
+ {
+ $error = true;
+ $emessage->add('Validation error: News category can\'t be empty!', E_MESSAGE_ERROR, $smessages);
+ }
+
- $news['news_title'] = $tp->toDB($news['news_title']);
- $news['news_body'] = $tp->toDB($news['data']);
- $news['news_extended'] = $tp->toDB($news['news_extended']);
- $news['news_summary'] = $tp->toDB($news['news_summary']);
- $news['news_userid'] = ($news['news_userid']) ? $news['news_userid'] : USERID;
- if(!isset($news['news_sticky'])) {$news['news_sticky'] = 0;}
- $author_insert = ($news['news_author'] == 0) ? "news_author = '".USERID."'," : "news_author = '".intval($news['news_author'])."', ";
- $news['news_author'] = ($news['news_author']) ? $news['news_author'] : USERID;
-
- $data = array();
+ $data = array();
+ //DB Array
+ $data['data']['news_title'] = $news['news_title'];
+ $data['_FIELD_TYPES']['news_title'] = 'todb';
+
+ $data['data']['news_body'] = $news['news_body'];
+ $data['_FIELD_TYPES']['news_body'] = 'todb';
+
+ $data['data']['news_extended'] = $news['news_extended'];
+ $data['_FIELD_TYPES']['news_extended'] = 'todb';
+
+ $data['data']['news_datestamp'] = $news['news_datestamp'];
+ $data['_FIELD_TYPES']['news_datestamp'] = 'int';
+
+ $data['data']['news_author'] = $news['news_author'] ? $news['news_author'] : USERID;
+ $data['_FIELD_TYPES']['news_author'] = 'int';
+
+ $data['data']['news_category'] = $news['news_category'];
+ $data['_FIELD_TYPES']['news_category'] = 'int';
+
+ $data['data']['news_allow_comments'] = $news['news_allow_comments'];
+ $data['_FIELD_TYPES']['news_allow_comments'] = 'int';
+
+ $data['data']['news_start'] = $news['news_start'];
+ $data['_FIELD_TYPES']['news_start'] = 'int';
+
+ $data['data']['news_end'] = $news['news_end'];
+ $data['_FIELD_TYPES']['news_end'] = 'int';
+
+ $data['data']['news_class'] = $news['news_class'];
+ $data['_FIELD_TYPES']['news_class'] = 'todb';
+
+ $data['data']['news_render_type'] = $news['news_render_type'];
+ $data['_FIELD_TYPES']['news_render_type'] = 'int';
+
+ $data['data']['news_render_type'] = $news['news_render_type'];
+ $data['_FIELD_TYPES']['news_render_type'] = 'int';
+
+ //news_comment_total
+
+ $data['data']['news_summary'] = $news['news_summary'];
+ $data['_FIELD_TYPES']['news_summary'] = 'todb';
+
+ $data['data']['news_thumbnail'] = $news['news_thumbnail'];
+ $data['_FIELD_TYPES']['news_thumbnail'] = 'todb';
+
+ $data['data']['news_sticky'] = $news['news_sticky'];
+ $data['_FIELD_TYPES']['news_sticky'] = 'int';
+
+ $data['data']['news_summary'] = $news['news_summary'];
+ $data['_FIELD_TYPES']['news_summary'] = 'todb';
+
+ $data['data']['news_thumbnail'] = $news['news_thumbnail'];
+ $data['_FIELD_TYPES']['news_thumbnail'] = 'todb';
+
+ $data['data']['news_sticky'] = $news['news_sticky'];
+ $data['_FIELD_TYPES']['news_sticky'] = 'int';
+
+ $data['data']['news_meta_keywords'] = $news['news_meta_keywords'];
+ $data['_FIELD_TYPES']['news_meta_keywords'] = 'todb';
+
+ $data['data']['news_meta_description'] = strip_tags($tp->toHTML($news['news_meta_description'], true)); //handle bbcodes
+ $data['_FIELD_TYPES']['news_meta_description'] = 'todb';
+
+ $datarw = array();
+ $datarw['data']['news_rewrite_id'] = intval($news['news_rewrite_id']);
+ $datarw['_FIELD_TYPES']['news_rewrite_id'] = 'int';
+ $datarw['data']['news_rewrite_string'] = trim($news['news_rewrite_string']);
+ $datarw['_FIELD_TYPES']['news_rewrite_string'] = 'todb';
+ $datarw['data']['news_rewrite_type'] = 1;
+ $datarw['_FIELD_TYPES']['news_rewrite_type'] = 'int';
+
+ if($error)
+ {
+ $data['error'] = true;
+ return $data;
+ }
+
+ //XXX - Now hooks are executed only if no mysql error is found. Should it stay so?
if ($news['news_id'])
- { // Updating existing item
- $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', $vals))
+ {
+ // Updating existing item
+ $data['WHERE'] = 'news_id='.intval($news['news_id']);
+
+ //$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))
{
- $admin_log->logArrayAll('NEWS_09', $news);
- $e_event -> trigger('newsupd', $news);
+ e107::getAdminLog()->logArrayAll('NEWS_09', $data['data']);
+
+ //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);
- $e107cache -> clear('news.php');
+ e107::getCache()->clear('news.php');
+
+
+
+ //FIXME - triggerHook should return array(message, message_type)
+ $evdata = array('method'=>'update', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
+ $emessage->add(e107::getEvent()->triggerHook($evdata), E_MESSAGE_INFO, $smessages);
}
else
{
if($sql->getLastErrorNumber())
{
+ $error = true;
$emessage->add(LAN_NEWS_5, E_MESSAGE_ERROR, $smessages);
$message = "".LAN_NEWS_5."";
}
else
{
- $emessage->add(LAN_NEWS_46, E_MESSAGE_INFO, $smessages);
- $message = "".LAN_NEWS_46."";
+ $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."";
+ }
+
+ //FIXME - triggerHook should return array(message, message_type)
+ $evdata = array('method'=>'update', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
+ $emessage->add(e107::getEvent()->triggerHook($evdata), E_MESSAGE_INFO, $smessages);
}
}
-
- $data = array('method'=>'update', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
- //$message .= $e_event->triggerHook($data);
- $emessage->add($e_event->triggerHook($data), E_MESSAGE_INFO, $smessages);
}
else
- { // Adding item
- if ($news['news_id'] = $sql ->db_Insert('news', "0, '".$news['news_title']."', '".$news['news_body']."', '".$news['news_extended']."', ".intval($news['news_datestamp']).", ".intval($news['news_author']).", '".intval($news['cat_id'])."', '".intval($news['news_allow_comments'])."', '".intval($news['news_start'])."', '".intval($news['news_end'])."', '".$tp->toDB($news['news_class'])."', '".intval($news['news_rendertype'])."', '0' , '".$news['news_summary']."', '".$tp->toDB($news['news_thumbnail'])."', '".intval($news['news_sticky'])."' "))
+ {
+ // Adding item
+ $data['data']['news_id'] = $sql->db_Insert('news', $data);
+ $news['news_id'] = $data['data']['news_id'];
+ //$news['news_id'] = $sql ->db_Insert('news', "0, '".$news['news_title']."', '".$news['news_body']."', '".$news['news_extended']."', ".intval($news['news_datestamp']).", ".intval($news['news_author']).", '".intval($news['cat_id'])."', '".intval($news['news_allow_comments'])."', '".intval($news['news_start'])."', '".intval($news['news_end'])."', '".$tp->toDB($news['news_class'])."', '".intval($news['news_rendertype'])."', '0' , '".$news['news_summary']."', '".$tp->toDB($news['news_thumbnail'])."', '".intval($news['news_sticky'])."' ")
+ if ($data['data']['news_id'])
{
-
+ //
$message = LAN_NEWS_6;
$emessage->add(LAN_NEWS_6, E_MESSAGE_SUCCESS, $smessages);
- $e107cache -> clear('news.php');
-// $id = mysql_insert_id();
- $data = array('method'=>'create', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
+ e107::getCache()->clear('news.php');
//moved down - prevent wrong mysql_insert_id
- $admin_log->logArrayAll('NEWS_08', $news);
- $e_event -> trigger('newspost', $news);
+ e107::getAdminLog()->logArrayAll('NEWS_08', $data['data']);
- $emessage->add($e_event->triggerHook($data), E_MESSAGE_INFO, $smessages);
+ //manage rewrites
+ if('error' === $this->handleRewriteSubmit('insert', $data['data'], $datarw, $smessages))
+ {
+ $error = true;
+ }
+
+ e107::getEvent()->trigger('newspost', $data['data']);
+
+ //XXX - triggetHook after trigger?
+ $evdata = array('method'=>'create', 'table'=>'news', 'id'=>$data['data']['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
+ $emessage->add($e_event->triggerHook($evdata), E_MESSAGE_INFO, $smessages);
}
else
{
+ $error = true;
$message = "".LAN_NEWS_7."";
$emessage->add(LAN_NEWS_7, E_MESSAGE_ERROR, $smessages);
}
}
- /* trackback */
- if($pref['trackbackEnabled'])
+ /* FIXME - trackback should be hooked! */
+ if($news['news_id'] && $pref['trackbackEnabled'])
{
- $excerpt = substr($news['news_body'], 0, 100)."...";
+
+ $excerpt = e107::getParser()->text_truncate(strip_tags(e107::getParser()->post_toHTML($news['news_body'])), 100, '...');
+
// $id=mysql_insert_id();
- $permLink = $e107->base_path."comment.php?comment.news.{$news['news_id']}";
+ $permLink = $e107->base_path."comment.php?comment.news.".intval($news['news_id']);
require_once(e_PLUGIN."trackback/trackbackClass.php");
$trackback = new trackbackClass();
@@ -428,22 +561,22 @@ class news {
$urlArray = explode("\n", $_POST['trackback_urls']);
foreach($urlArray as $pingurl)
{
- if(!$error = $trackback -> sendTrackback($permLink, $pingurl, $news['news_title'], $excerpt))
+ if(!$terror = $trackback->sendTrackback($permLink, $pingurl, $news['news_title'], $excerpt))
{
$message .= "
successfully pinged {$pingurl}.";
$emessage->add("Successfully pinged {$pingurl}.", E_MESSAGE_SUCCESS, $smessages);
}
else
{
- $message .= "
was unable to ping {$pingurl}
[ Error message returned was : '{$error}'. ]";
- $emessage->add("was unable to ping {$pingurl}
[ Error message returned was : '{$error}'. ]", E_MESSAGE_ERROR, $smessages);
+ $message .= "
was unable to ping {$pingurl}
[ Error message returned was : '{$terror}'. ]";
+ $emessage->add("was unable to ping {$pingurl}
[ Error message returned was : '{$terror}'. ]", E_MESSAGE_ERROR, $smessages);
}
}
}
if(isset($_POST['pingback_urls']))
{
- if ($urlArray = $trackback -> getPingUrls($news['news_body']))
+ if ($urlArray = $trackback->getPingUrls($news['news_body'])) //FIXME - missing method!!!
{
foreach($urlArray as $pingurl)
{
@@ -472,8 +605,115 @@ class news {
//return $message;
$data['message'] = $message;
+ $data['error'] = $error;
return $data;
}
+
+ /**
+ * Manage SEF URL string for current news
+ * FIXME - news rewrites should go to different handler
+ *
+ * @param string $action insert|update
+ * @param array $news_data XXX - could be changed to news_id only (integer)
+ * @param array $rewrite_data
+ * @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)
+ {
+ $rewrite_data['data']['news_rewrite_source'] = $news_data['news_id'];
+ $rewrite_data['_FIELD_TYPES']['news_rewrite_source'] = 'int';
+
+ //Delete if required
+ if (empty($rewrite_data['data']['news_rewrite_string']))
+ {
+ if(e107::getDb()->db_Select('news_rewrite', 'news_rewrite_id,news_rewrite_string', 'news_rewrite_source='.intval($rewrite_data['data']['news_rewrite_source']).' AND news_rewrite_type='.intval($rewrite_data['data']['news_rewrite_type'])))
+ {
+ $check = e107::getDb()->db_Fetch();
+ self::clearRewriteCache($check['news_rewrite_string']);
+ e107::getDb()->db_Delete('news_rewrite', 'news_rewrite_id='.$check['news_rewrite_id']);
+ return true;
+ }
+
+ return false;
+ }
+
+ switch($action)
+ {
+ case 'insert':
+ $rewrite_data['data']['news_rewrite_id'] = 0;
+ if($rewrite_data['data']['news_rewrite_id'] = e107::getDb()->db_Insert('news_rewrite', $rewrite_data))
+ {
+ self::setRewriteCache($rewrite_data['data']['news_rewrite_string'], $rewrite_data['data']);
+ return true;
+ }
+ eMessage::getInstance()->add('Friendly URL string related problem detected!', E_MESSAGE_ERROR, $session_message);
+ if(1062 == e107::getDb()->getLastErrorNumber()) //detect duplicate mysql errnum
+ {
+ eMessage::getInstance()->add('Friendly URL should be unique! ', E_MESSAGE_ERROR, $session_message);
+ }
+ eMessage::getInstance()->add('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG, $session_message);
+ return 'error';
+ break;
+
+ case 'update':
+ $id = intval($rewrite_data['data']['news_rewrite_id']);
+ unset($rewrite_data['data']['news_rewrite_id']);
+ if($id)
+ {
+ $rewrite_data['WHERE'] = 'news_rewrite_id='.$id;
+ if(e107::getDb()->db_Update('news_rewrite', $rewrite_data))
+ {
+ $rewrite_data['data']['news_rewrite_id'] = $id;
+ self::setRewriteCache($rewrite_data['data']['news_rewrite_string'], $rewrite_data['data']);
+ return true;
+ }
+ elseif (e107::getDb()->getLastErrorNumber())
+ {
+ eMessage::getInstance()->add('Friendly URL string related problem detected!', E_MESSAGE_ERROR, $session_message);
+ if(1062 == e107::getDb()->getLastErrorNumber()) //detect duplicate mysql errnum
+ {
+ eMessage::getInstance()->add('Friendly URL string should be unique! ', E_MESSAGE_ERROR, $session_message);
+ }
+ eMessage::getInstance()->add('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG, $session_message);
+ return 'error';
+ }
+
+ return false;
+ }
+
+ $rewrite_data['data']['news_rewrite_id'] = 0;
+ if($rewrite_data['data']['news_rewrite_id'] = e107::getDb()->db_Insert('news_rewrite', $rewrite_data))
+ {
+ self::setRewriteCache($rewrite_data['data']['news_rewrite_string'], $rewrite_data['data']);
+ return true;
+ }
+
+ eMessage::getInstance()->add('Friendly URL string related problem detected!', E_MESSAGE_ERROR, $session_message);
+ if(1062 == e107::getDb()->getLastErrorNumber()) //detect duplicate mysql errnum
+ {
+ eMessage::getInstance()->add('Friendly URL string should be unique! ', E_MESSAGE_ERROR, $session_message);
+ }
+ eMessage::getInstance()->add('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), E_MESSAGE_DEBUG, $session_message);
+ return 'error';
+ break;
+ }
+
+ return false;
+ }
+
+ public static function clearRewriteCache($sefstr = '')
+ {
+ if($sefstr) $sefstr = md5($sefstr);
+ ecache::clear_sys("news_sefurl".$sefstr);
+ }
+
+ public static function setRewriteCache($sefstr, $data)
+ {
+ $sefstr = md5($sefstr);
+ 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='')
{