本文整理汇总了PHP中e107::getEvent方法的典型用法代码示例。如果您正苦于以下问题:PHP e107::getEvent方法的具体用法?PHP e107::getEvent怎么用?PHP e107::getEvent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类e107
的用法示例。
在下文中一共展示了e107::getEvent方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: registerEvents
/**
* Register core and plugin notification events.
*/
public function registerEvents()
{
$active = e107::getConfig()->get('notify');
if (empty($active) && e_PAGE == 'notify.php') {
e107::getMessage()->addDebug('Notify is disabled!');
return false;
}
$e_event = e107::getEvent();
if (varset($this->notify_prefs['event'])) {
foreach ($this->notify_prefs['event'] as $id => $status) {
$include = null;
if ($status['class'] != e_UC_NOBODY) {
if (varset($status['include'])) {
$include = e_PLUGIN . $status['include'] . "/e_notify.php";
if (varset($status['legacy']) != 1) {
$class = $status['include'] . "_notify";
$method = $id;
$e_event->register($id, array($class, $method), $include);
} else {
$e_event->register($id, 'notify_' . $id, $include);
}
} else {
if (method_exists($this, 'notify_' . $id)) {
$e_event->register($id, array('notify', 'notify_' . $id));
} else {
$e_event->register($id, array('notify', 'generic'));
// use generic notification.
}
}
}
}
}
// e107::getEvent()->debug();
}
示例2: process
function process($source = '')
{
global $_E107, $pref;
e107::getCache()->CachePageMD5 = '_';
e107::getCache()->set('emailLastBounce', time(), TRUE, FALSE, TRUE);
$strEmail = !$source ? $this->mailRead(-1) : file_get_contents(e_HANDLER . "eml/" . $source);
if (!$strEmail) {
return;
}
$multiArray = Bouncehandler::get_the_facts($strEmail);
$head = BounceHandler::parse_head($strEmail);
$e107_userid = isset($head['X-e107-id']) ? intval($head['X-e107-id']) : $this->getHeader($strEmail, 'X-e107-id');
if ($_E107['debug']) {
require_once e_HANDLER . "mail.php";
$message = "Your Bounce Handler is working. The data of the email you sent is displayed below.<br />";
if ($e107_userid) {
$message .= "A user-id was detected in the email you sent: <b>" . $e107_userid . "</b><br />";
}
$message .= "<br />";
$message .= "<pre>" . print_r($multiArray, TRUE) . "</pre>";
$message .= "<pre>" . $strEmail . "</pre>";
sendemail($pref['siteadminemail'], SITENAME . " :: Bounce-Handler.", $message, $pref['siteadmin'], $pref['siteadminemail'], $pref['siteadmin']);
}
if ($e107_userid && $this->setUser_Bounced($e107_userid) == TRUE) {
return;
}
/* echo "<pre>";
print_r($multiArray);
echo "</pre>";
*/
foreach ($multiArray as $the) {
$the['user_id'] = $head['X-e107-id'];
$the['user_email'] = $the['recipient'];
unset($the['recipient']);
switch ($the['action']) {
case 'failed':
e107::getEvent()->trigger('email-bounce-failed', $the);
$this->setUser_Bounced($the['user_email']);
break;
case 'transient':
// $num_attempts = delivery_attempts($the['user_email']);
e107::getEvent()->trigger('email-bounce-transient', $the);
if ($num_attempts > 10) {
$this->setUser_Bounced($the['user_email'], $the['user_id']);
} else {
// insert_into_queue($the['user_email'], ($num_attempts+1));
}
break;
case 'autoreply':
e107::getEvent()->trigger('email-bounce-autoreply', $the);
// postpone($the['user_email'], '7 days');
break;
default:
//don't do anything
break;
}
}
}
示例3: install_plugin_php
function install_plugin_php($id)
{
$function = 'install';
$sql = e107::getDb();
$mes = e107::getMessage();
$mySQLprefix = MPREFIX;
// Fix for some plugin.php files.
if (is_array($id)) {
$plug = $id;
$id = $plug['plugin_id'];
} else {
$plug = $this->getinfo($id);
}
$_path = e_PLUGIN . $plug['plugin_path'] . '/';
$plug['plug_action'] = 'install';
$this->parse_plugin_php($plug['plugin_path']);
$plug_vars = $this->plug_vars;
include $_path . 'plugin.php';
$func = $eplug_folder . '_install';
if (function_exists($func)) {
$text .= call_user_func($func);
}
if (is_array($eplug_tables)) {
$result = $this->manage_tables('add', $eplug_tables);
if ($result === TRUE) {
$text .= EPL_ADLAN_19 . '<br />';
$mes->addSuccess(EPL_ADLAN_19);
} else {
$mes->addError(EPL_ADLAN_18);
}
}
/* if (is_array($eplug_prefs))
{
$this->manage_prefs('add', $eplug_prefs);
$text .= EPL_ADLAN_8.'<br />';
}*/
if (varset($plug_vars['mainPrefs'])) {
$this->XmlPrefs('core', $function, $plug_vars['mainPrefs']);
$text .= EPL_ADLAN_8 . '<br />';
}
if (is_array($eplug_array_pref)) {
foreach ($eplug_array_pref as $key => $val) {
$this->manage_plugin_prefs('add', $key, $eplug_folder, $val);
}
}
if (varset($plug_vars['siteLinks'])) {
$this->XmlSiteLinks($function, $plug_vars);
}
if (varset($plug_vars['userClasses'])) {
$this->XmlUserClasses($function, $plug_vars['userClasses']);
}
$this->manage_search('add', $eplug_folder);
$this->manage_notify('add', $eplug_folder);
$eplug_addons = $this->getAddons($eplug_folder);
$sql->update('plugin', "plugin_installflag = 1, plugin_addons = '{$eplug_addons}' WHERE plugin_id = " . (int) $id);
$p_installed = e107::getPref('plug_installed', array());
// load preference;
$p_installed[$plug['plugin_path']] = $plug['plugin_version'];
e107::getConfig('core')->setPref('plug_installed', $p_installed);
$this->rebuildUrlConfig();
e107::getConfig('core')->save();
$text .= isset($eplug_done) ? "<br />{$eplug_done}" : "<br />" . LAN_INSTALL_SUCCESSFUL;
if ($eplug_conffile) {
$text .= "<br /><a class='btn btn-primary' href='" . e_PLUGIN . $eplug_folder . "/" . $eplug_conffile . "'>" . LAN_CONFIGURE . "</a>";
}
// Event triggering after plugin installation.
$event = e107::getEvent();
$event->trigger('admin_plugin_install', $plug);
return $text;
}
示例4: submit_item
function submit_item($news, $smessages = false)
{
$tp = e107::getParser();
$sql = e107::getDb();
$admin_log = e107::getAdminLog();
$pref = e107::getPref();
$e_event = e107::getEvent();
$e107cache = e107::getCache();
$emessage = e107::getMessage();
$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_sef'])) {
$news['news_sef'] = eHelper::secureSef($news['news_sef']);
}
} else {
// first format sef...
if (empty($news['news_sef'])) {
$news['news_sef'] = eHelper::title2sef($news['news_title']);
} else {
$news['news_sef'] = eHelper::secureSef($news['news_sef']);
}
}
// ...then check it
if (empty($news['news_sef'])) {
$error = true;
$emessage->add('Validation error: News SEF URL value is required field and can\'t be empty!', E_MESSAGE_ERROR, $smessages);
} elseif ($sql->db_Count('news', '(news_id)', ($news['news_sef'] ? 'news_id<>' . intval($news['news_id']) . ' AND ' : '') . "news_sef='" . $tp->toDB($news['news_sef']) . "'")) {
$error = true;
$emessage->add('Validation error: News SEF URL is unique field - current value already in use! Please choose another SEF URL value.', 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);
}
$data = array();
//DB Array
$data['data']['news_title'] = $news['news_title'];
$data['_FIELD_TYPES']['news_title'] = 'todb';
$data['data']['news_sef'] = $news['news_sef'];
$data['_FIELD_TYPES']['news_sef'] = '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'] = 'todb';
//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_meta_keywords'] = eHelper::formatMetaKeys($news['news_meta_keywords']);
$data['_FIELD_TYPES']['news_meta_keywords'] = 'todb';
$data['data']['news_meta_description'] = eHelper::formatMetaDescription($news['news_meta_description']);
//handle bbcodes
$data['_FIELD_TYPES']['news_meta_description'] = 'todb';
if ($error) {
$data['error'] = true;
return $data;
}
// Calculate short strings for admin logging - no need to clog up the log with potentially long items
$logData = $data['data'];
if (isset($logData['news_body'])) {
$logData['news_body'] = $tp->text_truncate($tp->toDB($logData['news_body']), 300, '...');
}
if (isset($logData['news_extended'])) {
$logData['news_extended'] = $tp->text_truncate($tp->toDB($logData['news_extended']), 300, '...');
}
//XXX - Now hooks are executed only if no mysql error is found. Should it stay so? Seems sensible to me!
if ($news['news_id']) {
// 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)) {
e107::getAdminLog()->logArrayAll('NEWS_09', $logData);
$data['data']['news_id'] = $news['news_id'];
e107::getEvent()->trigger('newsupd', $data['data']);
e107::getEvent()->trigger('admin_news_updated', $data['data']);
$message = LAN_UPDATED;
$emessage->add(LAN_UPDATED, E_MESSAGE_SUCCESS, $smessages);
e107::getCache()->clear('news.php');
//FIXME - triggerHook should return array(message, message_type)
//.........这里部分代码省略.........
示例5: signup
//.........这里部分代码省略.........
if ($profile->identifier) {
$sql = e107::getDb();
$userMethods = e107::getUserSession();
$plainPwd = $userMethods->generateRandomString('************');
// auto plain passwords
// TODO - auto login name, shouldn't be used if system set to user_email login...
$userdata['user_loginname'] = $this->getProvider() . $userMethods->generateUserLogin(e107::getPref('predefinedLoginName', '_..#..#..#'));
$userdata['user_email'] = $sql->escape($profile->emailVerified ? $profile->emailVerified : $profile->email);
$userdata['user_name'] = $sql->escape($profile->displayName);
$userdata['user_login'] = $userdata['user_name'];
$userdata['user_customtitle'] = '';
// not used
$userdata['user_password'] = $userMethods->HashPassword($plainPwd, $userdata['user_loginname']);
// pwd
$userdata['user_sess'] = '';
//
$userdata['user_image'] = $profile->photoURL;
// avatar
$userdata['user_signature'] = '';
// not used
$userdata['user_hideemail'] = 1;
// hide it by default
$userdata['user_xup'] = $sql->escape($this->userId());
$pref = e107::pref('core');
if (!empty($pref['initial_user_classes'])) {
$userdata['user_class'] = $pref['initial_user_classes'];
} elseif (!empty($pref['user_new_period'])) {
$userdata['user_class'] = e_UC_NEWUSER;
} else {
$userdata['user_class'] = '';
}
// print_a($userdata);
// user_name, user_xup, user_email and user_loginname shouldn't match
$insert = !empty($userdata['user_email']) ? "OR user_email='" . $userdata['user_email'] . "' " : "";
if ($sql->count("user", "(*)", "user_xup='" . $sql->escape($this->userId()) . "' " . $insert . " OR user_loginname='{$userdata['user_loginname']}' OR user_name='{$userdata['user_name']}'")) {
// $this->login($redirectUrl); // auto-login
e107::getUser()->loginProvider($this->userId());
if ($redirectUrl) {
e107::getRedirect()->redirect($redirectUrl);
}
return false;
// throw new Exception( "Signup failed! User already exists. Please use 'login' instead.", 3);
}
if (empty($userdata['user_email']) && e107::getPref('disable_emailcheck', 0) == 0) {
throw new Exception("Signup failed! Can't access user email - registration without an email is impossible." . print_a($userdata, true), 4);
// TODO lan
}
// other fields
$now = time();
$userdata['user_id'] = null;
$userdata['user_join'] = $now;
$userdata['user_lastvisit'] = 0;
$userdata['user_currentvisit'] = 0;
$userdata['user_comments'] = 0;
$userdata['user_ip'] = e107::getIPHandler()->getIP(FALSE);
$userdata['user_ban'] = USER_VALIDATED;
$userdata['user_prefs'] = '';
$userdata['user_visits'] = 0;
$userdata['user_admin'] = 0;
$userdata['user_perms'] = '';
$userdata['user_realm'] = '';
$userdata['user_pwchange'] = $now;
$user = e107::getSystemUser(0, false);
$user->setData($userdata);
$user->getExtendedModel();
// init
//$user->setEditor(e107::getSystemUser(1, false));
$user->save(true);
// user model error
if ($user->hasError()) {
throw new Exception($user->renderMessages(), 5);
}
### Successful signup!
//$user->set('provider', $this->getProvider());
$userdata = $user->getData();
$userdata['provider'] = $this->getProvider();
// e107::getEvent()->trigger('userveri', $userdata); // Trigger New verified user.
e107::getEvent()->trigger('user_xup_signup', $userdata);
$ret = e107::getEvent()->trigger('usersupprov', $userdata);
// XXX - it's time to pass objects instead of array?
if (true === $ret) {
return $this;
}
// send email
if ($emailAfterSuccess) {
$user->set('user_password', $plainPwd)->email('signup');
}
e107::getUser()->setProvider($this);
// auto login
if ($loginAfterSuccess) {
e107::getUser()->loginProvider($this->userId());
// if not proper after-login, return true so user can see login screen
}
if ($redirectUrl) {
e107::getRedirect()->redirect($redirectUrl);
}
return true;
}
return false;
}
示例6: ListDeleteTrigger
/**
* Catch delete submit
* @param string $batch_trigger
* @return none
*/
public function ListDeleteTrigger($posted)
{
if ($this->getPosted('etrigger_cancel')) {
$this->setPosted(array());
return;
// always break on cancel!
}
$id = intval(key($posted));
if ($this->deleteConfirmScreen && !$this->getPosted('etrigger_delete_confirm')) {
// forward data to delete confirm screen
$this->setPosted('delete_confirm_value', $id);
return;
// User confirmation expected
}
$this->setTriggersEnabled(false);
$data = array();
$model = $this->getTreeModel()->getNode($id);
//FIXME - this has issues with being on a page other than the 1st.
if ($model) {
$data = $model->getData();
if ($this->beforeDelete($data, $id)) {
$eventData = array('oldData' => $data, 'id' => $id);
if ($triggerName = $this->getEventTriggerName('delete')) {
if (E107_DBG_ALLERRORS > 0) {
$this->getTreeModel()->addMessageDebug('Admin-ui Trigger fired: <b>' . $triggerName . '</b> with data ' . print_a($eventData, true));
}
if ($halt = e107::getEvent()->trigger($triggerName, $eventData)) {
$this->getTreeModel()->setMessages();
return;
}
}
$check = $this->getTreeModel()->delete($id);
if ($this->afterDelete($data, $id, $check)) {
if ($triggerName = $this->getEventTriggerName('deleted')) {
if (E107_DBG_ALLERRORS > 0) {
$this->getTreeModel()->addMessageDebug('Admin-ui Trigger fired: <b>' . $triggerName . '</b>');
//FIXME - Why doesn't this display?
}
e107::getEvent()->trigger($triggerName, $eventData);
}
$this->getTreeModel()->setMessages();
}
} else {
$this->getTreeModel()->setMessages();
// errors
}
} else {
//echo "Couldn't get Node for ID: ".$id;
// exit;
e107::getMessage()->addDebug('Model Failure Fallback in use!! ID: ' . $id . ' file: ' . __FILE__ . " line: " . __LINE__, 'default', true);
$check = $this->getTreeModel()->delete($id);
return;
}
}
示例7: renderHooks
/**
* Render Table cells from hooks.
* @param array $data
* @return string
*/
function renderHooks($data)
{
$hooks = e107::getEvent()->triggerHook($data);
$text = "";
if (!empty($hooks)) {
foreach ($hooks as $plugin => $hk) {
$text .= "\n\n<!-- Hook : {$plugin} -->\n";
if (!empty($hk)) {
foreach ($hk as $hook) {
$text .= "\t\t\t<tr>\n";
$text .= "\t\t\t<td>" . $hook['caption'] . "</td>\n";
$text .= "\t\t\t<td>" . $hook['html'] . "";
$text .= varset($hook['help']) ? "\n<span class='field-help'>" . $hook['help'] . "</span>" : "";
$text .= "</td>\n\t\t\t</tr>\n";
}
}
}
}
return $text;
}
示例8: clear
/**
* Deletes cache files. If $query is set, deletes files named {$CacheTag}*.cache.php, if not it deletes all cache files - (*.cache.php)
*
* @param string $CacheTag
* @param boolean $syscache
* @param boolean $related clear also 'nq_' and 'nomd5_' entries
* @return bool
*
*/
public function clear($CacheTag = '', $syscache = false, $related = false)
{
$file = $CacheTag ? preg_replace("#\\W#", "_", $CacheTag) . "*.cache.php" : "*.cache.php";
e107::getEvent()->triggerAdminEvent('cache_clear', "cachetag={$CacheTag}&file={$file}&syscache={$syscache}");
$ret = self::delete(e_CACHE_CONTENT, $file, $syscache);
if ($CacheTag && $related) {
self::delete(e_CACHE_CONTENT, 'nq_' . $file, $syscache);
self::delete(e_CACHE_CONTENT, 'nomd5_' . $file, $syscache);
//ecache::delete(e_CACHE_CONTENT, 'nq_'.$file, $syscache);
//ecache::delete(e_CACHE_CONTENT, 'nomd5_'.$file, $syscache);
}
return $ret;
}
示例9: submit_download
//.........这里部分代码省略.........
$dlInfo['download_sef'] = vartrue($_POST['download_sef']) ? eHelper::secureSef($_POST['download_sef']) : eHelper::title2sef($_POST['download_name']);
$dlInfo['download_keywords'] = $tp->toDB($_POST['download_keywords']);
$dlInfo['download_author'] = $tp->toDB($_POST['download_author']);
$dlInfo['download_author_email'] = $tp->toDB($_POST['download_author_email']);
$dlInfo['download_author_website'] = $tp->toDB($_POST['download_author_website']);
$dlInfo['download_category'] = intval($_POST['download_category']);
$dlInfo['download_active'] = intval($_POST['download_active']);
$dlInfo['download_thumb'] = $tp->toDB($_POST['download_thumb']);
$dlInfo['download_image'] = $tp->toDB($_POST['download_image']);
$dlInfo['download_comment'] = $tp->toDB($_POST['download_comment']);
$dlInfo['download_class'] = $tp->toDB($_POST['download_class']);
$dlInfo['download_visible'] = $tp->toDB($_POST['download_visible']);
$dlInfo['download_datestamp'] = e107::getDate()->convert($_POST['download_datestamp'], 'inputdate');
if ($_POST['update_datestamp']) {
$dlInfo['download_datestamp'] = time();
}
$mirrorStr = "";
$mirrorFlag = FALSE;
// See if any mirrors defined
// Need to check all the possible mirror names - might have deleted the first one if we're in edit mode
if (count($_POST['download_mirror_name'])) {
foreach ($_POST['download_mirror_name'] as $mn) {
if ($mn) {
$mirrorFlag = TRUE;
break;
}
}
}
if ($mirrorFlag) {
$mirrors = count($_POST['download_mirror_name']);
$mirrorArray = array();
$newMirrorArray = array();
if ($id && $sql->select('download', 'download_mirror', 'download_id = ' . $id)) {
if ($row = $sql->fetch()) {
$mirrorArray = $this->makeMirrorArray($row['download_mirror'], TRUE);
}
}
for ($a = 0; $a < $mirrors; $a++) {
$mid = trim($_POST['download_mirror_name'][$a]);
$murl = trim($_POST['download_mirror'][$a]);
$msize = trim($_POST['download_mirror_size'][$a]);
if ($mid && $murl) {
$newMirrorArray[$mid] = array('id' => $mid, 'url' => $murl, 'requests' => 0, 'filesize' => $msize);
if (DOWNLOAD_DEBUG && !$id) {
$newMirrorArray[$mid]['requests'] = intval($_POST['download_mirror_requests'][$a]);
}
}
}
// Now copy across any existing usage figures
foreach ($newMirrorArray as $k => $m) {
if (isset($mirrorArray[$k])) {
$newMirrorArray[$k]['requests'] = $mirrorArray[$k]['requests'];
}
}
$mirrorStr = $this->compressMirrorArray($newMirrorArray);
}
$dlMirrors['download_mirror'] = $mirrorStr;
$dlMirrors['download_mirror_type'] = intval($_POST['download_mirror_type']);
if ($id) {
// Process triggers before calling admin_update so trigger messages can be shown
$data = array('method' => 'update', 'table' => 'download', 'id' => $id, 'plugin' => 'download', 'function' => 'update_download');
$hooks = $e107->e_event->triggerHook($data);
$mes->add($hooks, E_MESSAGE_SUCCESS);
$updateArray = array_merge($dlInfo, $dlMirrors);
$updateArray['WHERE'] = 'download_id=' . intval($id);
$mes->addAuto($sql->db_Update('download', $updateArray), 'update', DOWLAN_2 . " (<a href='" . e_PLUGIN . "download/download.php?view." . $id . "'>" . $_POST['download_name'] . "</a>)");
$dlInfo['download_id'] = $id;
$this->downloadLog('DOWNL_06', $dlInfo, $dlMirrors);
$dlInfo['download_datestamp'] = $time;
// This is what 0.7 did, regardless of settings
unset($dlInfo['download_class']);
// Also replicating 0.7
$e_event->trigger('dlupdate', $dlInfo);
// @deprecated
e107::getEvent()->trigger('admin_download_update', $dlInfo);
} else {
if ($download_id = $sql->insert('download', array_merge($dlInfo, $dlMirrors))) {
// Process triggers before calling admin_update so trigger messages can be shown
$data = array('method' => 'create', 'table' => 'download', 'id' => $download_id, 'plugin' => 'download', 'function' => 'create_download');
$hooks = $e107->e_event->triggerHook($data);
$mes->add($hooks, E_MESSAGE_SUCCESS);
$mes->addAuto($download_id, 'insert', DOWLAN_1 . " (<a href='" . e_PLUGIN . "download/download.php?view." . $download_id . "'>" . $_POST['download_name'] . "</a>)");
$dlInfo['download_id'] = $download_id;
$this->downloadLog('DOWNL_05', $dlInfo, $dlMirrors);
$dlInfo['download_datestamp'] = $time;
// This is what 0.7 did, regardless of settings
unset($dlInfo['download_class']);
// Also replicating 0.7
$e_event->trigger("dlpost", $dlInfo);
// @deprecated
e107::getEvent()->trigger('admin_download_create', $dlInfo);
if ($_POST['remove_upload']) {
$sql->db_Update("upload", "upload_active='1' WHERE upload_id='" . $_POST['remove_id'] . "'");
$mess = "<br/>" . $_POST['download_name'] . " " . DOWLAN_104;
$mess .= "<br/><br/><a href='" . e_ADMIN . "upload.php'>" . DOWLAN_105 . "</a>";
$this->show_message($mess);
}
}
}
}
示例10: enter_comment
//.........这里部分代码省略.........
$cuser_id = 0;
$cuser_name = 'Anonymous';
// Preset as an anonymous comment
if (!$sql->select("comments", "*", "comment_comment='" . $comment . "' AND comment_item_id='" . intval($id) . "' AND comment_type='" . $tp->toDB($type, true) . "' ")) {
if ($_POST['comment']) {
if (USER == TRUE) {
$cuser_id = USERID;
$cuser_name = USERNAME;
$cuser_mail = USEREMAIL;
} elseif ($_POST['author_name'] != '') {
if ($sql2->select("user", "*", "user_name='" . $tp->toDB($_POST['author_name']) . "' ")) {
if ($sql2->select("user", "*", "user_name='" . $tp->toDB($_POST['author_name']) . "' AND user_ip='" . $tp->toDB($ip, true) . "' ")) {
//list($cuser_id, $cuser_name) = $sql2->db_Fetch();
$tmp = $sql2->fetch();
$cuser_id = $tmp['user_id'];
$cuser_name = $tmp['user_name'];
$cuser_mail = $tmp['user_email'];
} else {
define("emessage", COMLAN_310);
}
} else {
$cuser_name = $tp->toDB($author_name);
}
}
if (!defined("emessage")) {
$ip = $e107->getip();
// Store IP 'in the raw' - could be IPv4 or IPv6. Its always returned in a normalised form
$_t = time();
if ($editpid) {
$comment .= "\n[ " . COMLAN_319 . " [time=short]" . time() . "[/time] ]";
$sql->update("comments", "comment_comment='{$comment}' WHERE comment_id='" . intval($editpid) . "' ");
e107::getCache()->clear("comment");
return;
}
//FIXME - don't sanitize, pass raw data to e_event, use DB array (inner db sanitize)
$edata_li = array('comment_pid' => intval($pid), 'comment_item_id' => $id, 'comment_subject' => $subject, 'comment_author_id' => $cuser_id, 'comment_author_name' => $cuser_name, 'comment_author_email' => $tp->toDB($cuser_mail), 'comment_datestamp' => $_t, 'comment_comment' => $comment, 'comment_blocked' => $this->moderateComment($pref['comments_moderate']) ? 2 : 0, 'comment_ip' => $ip, 'comment_type' => $tp->toDB($type, true), 'comment_lock' => 0, 'comment_share' => $comment_share);
//SecretR: new event 'prepostcomment' - allow plugin hooks - e.g. Spam Check
$edata_li_hook = array_merge($edata_li, array('comment_nick' => $cuser_id . '.' . $cuser_name, 'comment_time' => $_t));
if (e107::getEvent()->trigger("prepostcomment", $edata_li_hook)) {
return false;
//3rd party code interception
}
//allow 3rd party code to modify insert data
if (is_array($edata_li_hook)) {
foreach (array_keys($edata_li) as $k) {
if (isset($edata_li_hook[$k])) {
$edata_li[$k] = $edata_li_hook[$k];
//sanitize?
continue;
}
if ($k === 'break') {
$break = $edata_li_hook[$k];
}
}
}
unset($edata_li_hook);
if (!($inserted_id = $sql->insert("comments", $edata_li))) {
//echo "<b>".COMLAN_323."</b> ".COMLAN_11;
if (e_AJAX_REQUEST) {
return "Error";
}
e107::getMessage()->addStack(COMLAN_11, 'postcomment', E_MESSAGE_ERROR);
} else {
if (USER == true) {
$sql->update("user", "user_comments=user_comments+1, user_lastpost='" . time() . "' WHERE user_id='" . USERID . "' ");
}
// Next item for backward compatibility
$edata_li["comment_nick"] = $cuser_id . '.' . $cuser_name;
$edata_li["comment_time"] = $_t;
$edata_li["comment_id"] = $inserted_id;
//Why?
/*unset($edata_li['comment_pid']);
unset($edata_li['comment_author_email']);
unset($edata_li['comment_ip']);*/
e107::getEvent()->trigger("postcomment", $edata_li);
e107::getCache()->clear("comment");
if ((empty($type) || $type == "news") && !$this->moderateComment($pref['comments_moderate'])) {
$sql->update("news", "news_comment_total=news_comment_total+1 WHERE news_id=" . intval($id));
}
//if rateindex is posted, enter the rating from this user
// if ($rateindex)
// {
// $rater->enterrating($rateindex);
// }
return $inserted_id;
// return the ID number so it can be used. true;
}
}
}
} else {
define("emessage", COMLAN_312);
}
if (defined("emessage")) {
if (e_AJAX_REQUEST) {
return emessage;
}
message_handler("ALERT", emessage);
}
return false;
}
示例11: invalidLogin
/**
* called to log the reason for a failed login.
* @param string $plugname
* @return boolean Currently always returns false - could return some other value
*/
protected function invalidLogin($username, $reason, $extra_text = '')
{
global $pref, $sql;
$doCheck = FALSE;
// Flag set if need to ban check
switch ($reason) {
case LOGIN_ABORT:
// alt_auth reject
$message = LAN_LOGIN_21;
$this->genNote($this->userIP, $username, 'Alt_auth: ' . LAN_LOGIN_14);
$this->logNote('LAN_ROLL_LOG_04', 'Alt_Auth: ' . $username);
$doCheck = true;
break;
case LOGIN_DB_ERROR:
// alt_auth couldn't add valid user
$message = LAN_LOGIN_31;
$this->genNote($username, 'Alt_auth: ' . LAN_LOGIN_30);
// $this->logNote('LAN_ROLL_LOG_04', 'Alt_Auth: '.$username); // Added in alt_auth login
$doCheck = true;
break;
case LOGIN_BAD_PW:
$message = LAN_LOGIN_21;
$this->logNote('LAN_ROLL_LOG_03', $username);
break;
case LOGIN_CHAP_FAIL:
$message = LAN_LOGIN_21;
$this->logNote('LAN_ROLL_LOG_03', 'CHAP: ' . $username);
break;
case LOGIN_BAD_USER:
$message = LAN_LOGIN_21;
$this->genNote($username, LAN_LOGIN_14);
$this->logNote('LAN_ROLL_LOG_04', $username);
$doCheck = true;
break;
case LOGIN_BAD_USERNAME:
$message = LAN_LOGIN_21;
$this->logNote('LAN_ROLL_LOG_08', $username);
break;
case LOGIN_MULTIPLE:
$message = LAN_LOGIN_24;
$this->logNote('LAN_ROLL_LOG_07', "U: {$username} IP: {$this->userIP}");
$this->genNote($username, LAN_LOGIN_16);
$doCheck = true;
break;
case LOGIN_BAD_CODE:
$message = LAN_LOGIN_23;
$this->logNote('LAN_ROLL_LOG_02', $username);
break;
case LOGIN_NOT_ACTIVATED:
$srch = array("[", "]");
$repl = array("<a href='" . e_HTTP . "signup.php?resend'>", "</a>");
$message = str_replace($srch, $repl, LAN_LOGIN_22);
$this->logNote('LAN_ROLL_LOG_05', $username);
$this->genNote($username, LAN_LOGIN_27);
$doCheck = true;
break;
case LOGIN_BLANK_FIELD:
$message = LAN_LOGIN_20;
$this->logNote('LAN_ROLL_LOG_01', $username);
break;
case LOGIN_BAD_TRIGGER:
$message = $extra_text;
$this->logNote('LAN_ROLL_LOG_06', $username);
break;
case LOGIN_BANNED:
$message = LAN_LOGIN_21;
// Just give 'incorrect login' message
$this->genNote($username, LAN_LOGIN_25);
$this->logNote('LAN_ROLL_LOG_09', $username);
break;
default:
// Something's gone wrong!
$message = LAN_LOGIN_21;
// Just give 'incorrect login' message
$this->genNote($username, LAN_LOGIN_26);
$this->logNote('LAN_ROLL_LOG_10', $username);
}
e107::getMessage()->addError($message);
if ($this->testMode === true) {
return $message;
}
define('LOGINMESSAGE', $message);
if ($doCheck) {
if ($pref['autoban'] == 1 || $pref['autoban'] == 3) {
$fails = $sql->count("generic", "(*)", "WHERE gen_ip='{$this->userIP}' AND gen_type='failed_login' ");
$failLimit = vartrue($pref['failed_login_limit'], 10);
if ($fails >= $failLimit) {
$time = time();
$description = e107::getParser()->lanVars(LAN_LOGIN_18, $failLimit);
e107::getIPHandler()->add_ban(4, $description, $this->userIP, 1);
e107::getDb()->insert("generic", "0, 'auto_banned', '" . $time . "', 0, '{$this->userIP}', '{$extra_text}', '" . LAN_LOGIN_20 . ": " . e107::getParser()->toDB($username) . ", " . LAN_LOGIN_17 . ": " . md5($ouserpass) . "' ");
e107::getEvent()->trigger('user_ban_failed_login', array('time' => $time, 'ip' => $this->userIP, 'other' => $extra_text));
}
}
}
//.........这里部分代码省略.........
示例12: AddSubmitTrigger
/**
* Quick Add user submit trigger
*/
public function AddSubmitTrigger()
{
$e107cache = e107::getCache();
$userMethods = e107::getUserSession();
$mes = e107::getMessage();
$sql = e107::getDb();
$e_event = e107::getEvent();
$admin_log = e107::getAdminLog();
if (!$_POST['ac'] == md5(ADMINPWCHANGE)) {
exit;
}
$e107cache->clear('online_menu_member_total');
$e107cache->clear('online_menu_member_newest');
$error = false;
if (isset($_POST['generateloginname'])) {
$_POST['loginname'] = $userMethods->generateUserLogin($pref['predefinedLoginName']);
}
$_POST['password2'] = $_POST['password1'] = $_POST['password'];
// Now validate everything
$allData = validatorClass::validateFields($_POST, $userMethods->userVettingInfo, true);
// Fix Display and user name
if (!check_class($pref['displayname_class'], $allData['data']['user_class'])) {
if ($allData['data']['user_name'] != $allData['data']['user_loginname']) {
$allData['data']['user_name'] = $allData['data']['user_loginname'];
$mes->addWarning(str_replace('[x]', $allData['data']['user_loginname'], USRLAN_237));
//$allData['errors']['user_name'] = ERR_FIELDS_DIFFERENT;
}
}
// Do basic validation
validatorClass::checkMandatory('user_name, user_loginname', $allData);
// Check for missing fields (email done in userValidation() )
validatorClass::dbValidateArray($allData, $userMethods->userVettingInfo, 'user', 0);
// Do basic DB-related checks
$userMethods->userValidation($allData);
// Do user-specific DB checks
if (!isset($allData['errors']['user_password'])) {
// No errors in password - keep it outside the main data array
$savePassword = $allData['data']['user_password'];
// Delete the password value in the output array
unset($allData['data']['user_password']);
}
// Restrict the scope of this
unset($_POST['password2'], $_POST['password1']);
if (count($allData['errors'])) {
$temp = validatorClass::makeErrorList($allData, 'USER_ERR_', '%n - %x - %t: %v', '<br />', $userMethods->userVettingInfo);
$mes->addError($temp);
$error = true;
}
// Always save some of the entered data - then we can redisplay on error
$user_data =& $allData['data'];
if ($error) {
$this->setParam('user_data', $user_data);
return;
}
if (varset($_POST['perms'])) {
$allData['data']['user_admin'] = 1;
$allData['data']['user_perms'] = implode('.', $_POST['perms']);
}
$user_data['user_password'] = $userMethods->HashPassword($savePassword, $user_data['user_login']);
$user_data['user_join'] = time();
if ($userMethods->needEmailPassword()) {
// Save separate password encryption for use with email address
$user_prefs = e107::getArrayStorage()->unserialize($user_data['user_prefs']);
$user_prefs['email_password'] = $userMethods->HashPassword($savePassword, $user_data['user_email']);
$user_data['user_prefs'] = e107::getArrayStorage()->serialize($user_prefs);
unset($user_prefs);
}
$userMethods->userClassUpdate($allData['data'], 'userall');
//FIXME - (SecretR) there is a better way to fix this (missing default value, sql error in strict mode - user_realm is to be deleted from DB later)
$allData['data']['user_realm'] = '';
// Set any initial classes
$userMethods->addNonDefaulted($user_data);
validatorClass::addFieldTypes($userMethods->userVettingInfo, $allData);
$userid = $sql->insert('user', $allData);
if ($userid) {
$sysuser = e107::getSystemUser(false, false);
$sysuser->setData($allData['data']);
$sysuser->setId($userid);
$user_data['user_id'] = $userid;
// Add to admin log
e107::getLog()->add('USET_02', "UName: {$user_data['user_name']}; Email: {$user_data['user_email']}", E_LOG_INFORMATIVE);
// Add to user audit trail
e107::getLog()->user_audit(USER_AUDIT_ADD_ADMIN, $user_data, 0, $user_data['user_loginname']);
e107::getEvent()->trigger('userfull', $user_data);
e107::getEvent()->trigger('admin_user_created', $user_data);
// send everything available for user data - bit sparse compared with user-generated signup
if (isset($_POST['sendconfemail'])) {
$check = false;
// Send confirmation email to user
switch ((int) $_POST['sendconfemail']) {
case 0:
// activate, don't notify
$check = -1;
break;
case 1:
// activate and send password
$check = $sysuser->email('quickadd', array('user_password' => $savePassword, 'mail_subject' => USRLAN_187 . SITENAME, 'activation_url' => USRLAN_238));
//.........这里部分代码省略.........
示例13: config
function config()
{
//global $ns, $rs, $frm, $emessage;
$ns = e107::getRender();
$frm = e107::getForm();
$mes = e107::getMessage();
$events = e107::getEvent()->coreList();
$tab = array();
foreach ($events as $k => $cat) {
$text = " <table class='table adminform'>\n \t<colgroup>\n \t\t<col class='col-label' />\n \t\t<col class='col-control' />\n \t</colgroup>";
foreach ($cat as $c => $ev) {
$text .= $this->render_event($c, $ev);
}
$text .= "</table>";
$caption = str_replace("_menu", "", ucfirst($k)) . " " . LAN_NOTIFY_01;
$tab[] = array('caption' => $caption, 'text' => $text);
}
if (!empty($this->notify_prefs['plugins'])) {
foreach ($this->notify_prefs['plugins'] as $plugin_id => $plugin_settings) {
if (is_readable(e_PLUGIN . $plugin_id . '/e_notify.php')) {
$config_category = $this->pluginConfig[$plugin_id]['category'];
$legacy = $this->pluginConfig[$plugin_id]['legacy'];
$text = "<table class='table adminform'>\n\t\t\t \t<colgroup>\n\t\t\t \t\t<col class='col-label' />\n\t\t\t \t\t<col class='col-control' />\n\t\t\t \t</colgroup>";
foreach ($this->pluginConfig[$plugin_id]['events'] as $event_id => $event_text) {
$text .= $this->render_event($event_id, $event_text, $plugin_id, $legacy);
}
$text .= "</table>\n";
$tab[] = array('caption' => $config_category, 'text' => $text);
}
}
}
$text2 = $frm->open('scanform', 'post', e_REQUEST_URL);
// <form action='".e_SELF."?results' method='post' id='scanform'>
$text2 .= $frm->tabs($tab);
$text2 .= "<div class='buttons-bar center'>" . $frm->admin_button('update', LAN_UPDATE, 'update') . "</div>";
$text2 .= $frm->close();
$ns->tablerender(NT_LAN_1, $mes->render() . $text2);
return;
// <div>".NT_LAN_2.":</div>
/*
$text = "
<form action='".e_SELF."?results' method='post' id='scanform'>
<ul class='nav nav-tabs'>
<li class='active'><a href='#core' data-toggle='tab'>Users</a></li>
<li><a href='#news' data-toggle='tab'>News</a></li>
<li><a href='#mail' data-toggle='tab'>Mail</a></li>
<li><a href='#files' data-toggle='tab'>Files</a></li>";
if(!empty($this->notify_prefs['plugins']))
{
foreach ($this -> notify_prefs['plugins'] as $id => $var)
{
$text .= "<li><a href='#notify-".$id."' data-toggle='tab'>".ucfirst($id)."</a></li>";
}
}
$text .= "
</ul>
<div class='tab-content'>
<div class='tab-pane active' id='core'>
<fieldset id='core-notify-config'>
<legend>".NU_LAN_1."</legend>
<table class='table adminform'>
<colgroup>
<col class='col-label' />
<col class='col-control' />
</colgroup>
";
$text .= $this -> render_event('usersup', NU_LAN_2);
$text .= $this -> render_event('userveri', NU_LAN_3);
$text .= $this -> render_event('login', NU_LAN_4);
$text .= $this -> render_event('logout', NU_LAN_5);
$text .= $this -> render_event('user_xup_', NU_LAN_5);
$text .= "</table></fieldset>
<fieldset id='core-notify-2'>
<legend>".NS_LAN_1."</legend>
<table class='table adminform'>
<colgroup>
<col class='col-label' />
<col class='col-control' />
</colgroup>";
$text .= $this -> render_event('flood', NS_LAN_2);
$text .= "</table></fieldset>
</div>
<div class='tab-pane' id='news'>
<fieldset id='core-notify-3'>
<legend>".NN_LAN_1."</legend>
<table class='table adminform'>
<colgroup>
<col class='col-label' />
<col class='col-control' />
</colgroup>";
//.........这里部分代码省略.........
示例14: __get
public function __get($name)
{
switch ($name) {
case 'tp':
$ret = e107::getParser();
break;
case 'sql':
$ret = e107::getDb();
break;
case 'ecache':
$ret = e107::getCache();
break;
case 'arrayStorage':
$ret = e107::getArrayStorage();
break;
case 'e_event':
$ret = e107::getEvent();
break;
case 'ns':
$ret = e107::getRender();
break;
case 'url':
$ret = e107::getUrl();
break;
case 'admin_log':
$ret = e107::getAdminLog();
break;
case 'override':
$ret = e107::getSingleton('override', e_HANDLER . 'override_class.php');
break;
case 'notify':
$ret = e107::getNotify();
break;
case 'e_online':
$ret = e107::getOnline();
break;
case 'eIPHandler':
$ret = e107::getIPHandler();
break;
case 'user_class':
$ret = e107::getUserClass();
break;
default:
trigger_error('$e107->$' . $name . ' not defined', E_USER_WARNING);
return null;
break;
}
$this->{$name} = $ret;
return $ret;
}
示例15: submit_item
function submit_item($news, $smessages = false)
{
$tp = e107::getParser();
$sql = e107::getDb();
$admin_log = e107::getAdminLog();
$pref = e107::getPref();
$e_event = e107::getEvent();
$e107cache = e107::getCache();
$emessage = e107::getMessage();
$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_sef'])) {
$news['news_sef'] = eHelper::secureSef($news['news_sef']);
}
} else {
// first format sef...
if (empty($news['news_sef'])) {
$news['news_sef'] = eHelper::title2sef($news['news_title']);
} else {
$news['news_sef'] = eHelper::secureSef($news['news_sef']);
}
}
// ...then check it
if (empty($news['news_sef'])) {
$error = true;
$emessage->add('Validation error: News SEF URL value is required field and can\'t be empty!', E_MESSAGE_ERROR, $smessages);
} elseif ($sql->db_Count('news', '(news_id)', ($news['news_sef'] ? 'news_id<>' . intval($news['news_id']) . ' AND ' : '') . "news_sef='" . $tp->toDB($news['news_sef']) . "'")) {
$error = true;
$emessage->add('Validation error: News SEF URL is unique field - current value already in use! Please choose another SEF URL value.', 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);
}
$data = array();
//DB Array
$data['data']['news_title'] = $news['news_title'];
$data['_FIELD_TYPES']['news_title'] = 'todb';
$data['data']['news_sef'] = $news['news_sef'];
$data['_FIELD_TYPES']['news_sef'] = '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'] = 'todb';
//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_meta_keywords'] = eHelper::formatMetaKeys($news['news_meta_keywords']);
$data['_FIELD_TYPES']['news_meta_keywords'] = 'todb';
$data['data']['news_meta_description'] = eHelper::formatMetaDescription($news['news_meta_description']);
//handle bbcodes
$data['_FIELD_TYPES']['news_meta_description'] = 'todb';
if ($error) {
$data['error'] = true;
return $data;
}
// Calculate short strings for admin logging - no need to clog up the log with potentially long items
$logData = $data['data'];
if (isset($logData['news_body'])) {
$logData['news_body'] = $tp->text_truncate($tp->toDB($logData['news_body']), 300, '...');
}
if (isset($logData['news_extended'])) {
$logData['news_extended'] = $tp->text_truncate($tp->toDB($logData['news_extended']), 300, '...');
}
//XXX - Now hooks are executed only if no mysql error is found. Should it stay so? Seems sensible to me!
if ($news['news_id']) {
// 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)) {
e107::getAdminLog()->logArrayAll('NEWS_09', $logData);
$data['data']['news_id'] = $news['news_id'];
e107::getEvent()->trigger('newsupd', $data['data']);
$message = LAN_NEWS_21;
$emessage->add(LAN_NEWS_21, E_MESSAGE_SUCCESS, $smessages);
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');
//.........这里部分代码省略.........